]> Git Repo - linux.git/commitdiff
Merge tag 'pm-5.7-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
authorLinus Torvalds <[email protected]>
Mon, 6 Apr 2020 17:14:39 +0000 (10:14 -0700)
committerLinus Torvalds <[email protected]>
Mon, 6 Apr 2020 17:14:39 +0000 (10:14 -0700)
Pull more power management updates from Rafael Wysocki:
 "Additional power management updates.

  These fix a corner-case suspend-to-idle wakeup issue on systems where
  the ACPI SCI is shared with another wakeup source, add a kernel
  command line option to set pm_debug_messages via the kernel command
  line, add a document desctibing system-wide suspend and resume code
  flows, modify cpufreq Kconfig to choose schedutil as the preferred
  governor by default in a couple of cases and do some assorted
  cleanups.

  Specifics:

   - Fix corner-case suspend-to-idle wakeup issue on systems where the
     ACPI SCI is shared with another wakeup source (Hans de Goede).

   - Add document describing system-wide suspend and resume code flows
     to the admin guide (Rafael Wysocki).

   - Add kernel command line option to set pm_debug_messages (Chen Yu).

   - Choose schedutil as the preferred scaling governor by default on
     ARM big.LITTLE systems and on x86 systems using the intel_pstate
     driver in the passive mode (Linus Walleij, Rafael Wysocki).

   - Drop racy and redundant checks from the PM core's device_prepare()
     routine (Rafael Wysocki).

   - Make resume from hibernation take the hibernation_restore() return
     value into account (Dexuan Cui)"

* tag 'pm-5.7-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  platform/x86: intel_int0002_vgpio: Use acpi_register_wakeup_handler()
  ACPI: PM: Add acpi_[un]register_wakeup_handler()
  Documentation: PM: sleep: Document system-wide suspend code flows
  cpufreq: Select schedutil when using big.LITTLE
  PM: sleep: Add pm_debug_messages kernel command line option
  PM: sleep: core: Drop racy and redundant checks from device_prepare()
  PM: hibernate: Propagate the return value of hibernation_restore()
  cpufreq: intel_pstate: Select schedutil as the default governor

1  2 
Documentation/admin-guide/kernel-parameters.txt
drivers/platform/x86/intel_int0002_vgpio.c
include/linux/acpi.h

index 4d5a4fe227036a06ccfcb05141476111e99fe871,df2c2b97f417449ad7ea280b86d0276a11273e51..c78b463f5f79804e14d8ad334276bbd0eac54a35
                        Default value is set via a kernel config option.
                        Value can be changed at runtime via
                                /sys/fs/selinux/checkreqprot.
 +                      Setting checkreqprot to 1 is deprecated.
  
        cio_ignore=     [S390]
                        See Documentation/s390/common_io.rst for details.
                        [X86,PV_OPS] Disable paravirtualized VMware scheduler
                        clock and use the default one.
  
 -      no-steal-acc    [X86,KVM,ARM64] Disable paravirtualized steal time
 +      no-steal-acc    [X86,PV_OPS,ARM64] Disable paravirtualized steal time
                        accounting. steal time is computed, but won't
                        influence scheduler behaviour
  
                        Override pmtimer IOPort with a hex value.
                        e.g. pmtmr=0x508
  
+       pm_debug_messages       [SUSPEND,KNL]
+                       Enable suspend/resume debug messages during boot up.
        pnp.debug=1     [PNP]
                        Enable PNP debug messages (depends on the
                        CONFIG_PNP_DEBUG_MESSAGES option).  Change at run-time
                        before loading.
                        See Documentation/admin-guide/blockdev/ramdisk.rst.
  
 +      prot_virt=      [S390] enable hosting protected virtual machines
 +                      isolated from the hypervisor (if hardware supports
 +                      that).
 +                      Format: <bool>
 +
        psi=            [KNL] Enable or disable pressure stall information
                        tracking.
                        Format: <bool>
                        Set threshold of queued RCU callbacks below which
                        batch limiting is re-enabled.
  
 +      rcutree.qovld= [KNL]
 +                      Set threshold of queued RCU callbacks beyond which
 +                      RCU's force-quiescent-state scan will aggressively
 +                      enlist help from cond_resched() and sched IPIs to
 +                      help CPUs more quickly reach quiescent states.
 +                      Set to less than zero to make this be set based
 +                      on rcutree.qhimark at boot time and to zero to
 +                      disable more aggressive help enlistment.
 +
        rcutree.rcu_idle_gp_delay= [KNL]
                        Set wakeup interval for idle CPUs that have
                        RCU callbacks (RCU_FAST_NO_HZ=y).
        rcupdate.rcu_cpu_stall_suppress= [KNL]
                        Suppress RCU CPU stall warning messages.
  
 +      rcupdate.rcu_cpu_stall_suppress_at_boot= [KNL]
 +                      Suppress RCU CPU stall warning messages and
 +                      rcutorture writer stall warnings that occur
 +                      during early boot, that is, during the time
 +                      before the init task is spawned.
 +
        rcupdate.rcu_cpu_stall_timeout= [KNL]
                        Set timeout for RCU CPU stall warning messages.
  
                        incurs a small amount of overhead in the scheduler
                        but is useful for debugging and performance tuning.
  
 +      sched_thermal_decay_shift=
 +                      [KNL, SMP] Set a decay shift for scheduler thermal
 +                      pressure signal. Thermal pressure signal follows the
 +                      default decay period of other scheduler pelt
 +                      signals(usually 32 ms but configurable). Setting
 +                      sched_thermal_decay_shift will left shift the decay
 +                      period for the thermal pressure signal by the shift
 +                      value.
 +                      i.e. with the default pelt decay period of 32 ms
 +                      sched_thermal_decay_shift   thermal pressure decay pr
 +                              1                       64 ms
 +                              2                       128 ms
 +                      and so on.
 +                      Format: integer between 0 and 10
 +                      Default is 0.
 +
        skew_tick=      [KNL] Offset the periodic timer tick per cpu to mitigate
                        xtime_lock contention on larger systems, and/or RCU lock
                        contention on all systems with CONFIG_MAXSMP set.
        spia_pedr=
        spia_peddr=
  
 +      split_lock_detect=
 +                      [X86] Enable split lock detection
 +
 +                      When enabled (and if hardware support is present), atomic
 +                      instructions that access data across cache line
 +                      boundaries will result in an alignment check exception.
 +
 +                      off     - not enabled
 +
 +                      warn    - the kernel will emit rate limited warnings
 +                                about applications triggering the #AC
 +                                exception. This mode is the default on CPUs
 +                                that supports split lock detection.
 +
 +                      fatal   - the kernel will send SIGBUS to applications
 +                                that trigger the #AC exception.
 +
 +                      If an #AC exception is hit in the kernel or in
 +                      firmware (i.e. not while executing in user mode)
 +                      the kernel will oops in either "warn" or "fatal"
 +                      mode.
 +
        srcutree.counter_wrap_check [KNL]
                        Specifies how frequently to check for
                        grace-period sequence counter wrap for the
                        topology updates sent by the hypervisor to this
                        LPAR.
  
 +      torture.disable_onoff_at_boot= [KNL]
 +                      Prevent the CPU-hotplug component of torturing
 +                      until after init has spawned.
 +
        tp720=          [HW,PS2]
  
        tpm_suspend_pcr=[HW,TPM]
index 7b23efc46a4352658772c2c3189cc022cf579363,55f088f535e26a5fecd1a2fdc85cf240f23b93cf..289c6655d425d4a549cbe294212289777a697e27
@@@ -127,6 -127,14 +127,14 @@@ static irqreturn_t int0002_irq(int irq
        return IRQ_HANDLED;
  }
  
+ static bool int0002_check_wake(void *data)
+ {
+       u32 gpe_sts_reg;
+       gpe_sts_reg = inl(GPE0A_STS_PORT);
+       return (gpe_sts_reg & GPE0A_PME_B0_STS_BIT);
+ }
  static struct irq_chip int0002_byt_irqchip = {
        .name                   = DRV_NAME,
        .irq_ack                = int0002_irq_ack,
@@@ -148,8 -156,8 +156,8 @@@ static struct irq_chip int0002_cht_irqc
  };
  
  static const struct x86_cpu_id int0002_cpu_ids[] = {
 -      INTEL_CPU_FAM6(ATOM_SILVERMONT, int0002_byt_irqchip),   /* Valleyview, Bay Trail  */
 -      INTEL_CPU_FAM6(ATOM_AIRMONT, int0002_cht_irqchip),      /* Braswell, Cherry Trail */
 +      X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT,     &int0002_byt_irqchip),
 +      X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT,        &int0002_cht_irqchip),
        {}
  };
  
@@@ -220,6 -228,7 +228,7 @@@ static int int0002_probe(struct platfor
                return ret;
        }
  
+       acpi_register_wakeup_handler(irq, int0002_check_wake, NULL);
        device_init_wakeup(dev, true);
        return 0;
  }
  static int int0002_remove(struct platform_device *pdev)
  {
        device_init_wakeup(&pdev->dev, false);
+       acpi_unregister_wakeup_handler(int0002_check_wake, NULL);
        return 0;
  }
  
diff --combined include/linux/acpi.h
index b7d3caf6f20527d4be50475322ffff19bc2e1a44,efac0f9c01a291d8feac6056e9cb390de49d6b0c..9f70b7807d53cc4c1890bdab29213655b456664e
@@@ -488,6 -488,11 +488,11 @@@ void __init acpi_nvs_nosave_s3(void)
  void __init acpi_sleep_no_blacklist(void);
  #endif /* CONFIG_PM_SLEEP */
  
+ int acpi_register_wakeup_handler(
+       int wake_irq, bool (*wakeup)(void *context), void *context);
+ void acpi_unregister_wakeup_handler(
+       bool (*wakeup)(void *context), void *context);
  struct acpi_osc_context {
        char *uuid_str;                 /* UUID string */
        int rev;
@@@ -530,9 -535,8 +535,9 @@@ extern bool osc_pc_lpi_support_confirme
  #define OSC_PCI_CLOCK_PM_SUPPORT              0x00000004
  #define OSC_PCI_SEGMENT_GROUPS_SUPPORT                0x00000008
  #define OSC_PCI_MSI_SUPPORT                   0x00000010
 +#define OSC_PCI_EDR_SUPPORT                   0x00000080
  #define OSC_PCI_HPX_TYPE_3_SUPPORT            0x00000100
 -#define OSC_PCI_SUPPORT_MASKS                 0x0000011f
 +#define OSC_PCI_SUPPORT_MASKS                 0x0000019f
  
  /* PCI Host Bridge _OSC: Capabilities DWORD 3: Control Field */
  #define OSC_PCI_EXPRESS_NATIVE_HP_CONTROL     0x00000001
  #define OSC_PCI_EXPRESS_AER_CONTROL           0x00000008
  #define OSC_PCI_EXPRESS_CAPABILITY_CONTROL    0x00000010
  #define OSC_PCI_EXPRESS_LTR_CONTROL           0x00000020
 -#define OSC_PCI_CONTROL_MASKS                 0x0000003f
 +#define OSC_PCI_EXPRESS_DPC_CONTROL           0x00000080
 +#define OSC_PCI_CONTROL_MASKS                 0x000000bf
  
  #define ACPI_GSB_ACCESS_ATTRIB_QUICK          0x00000002
  #define ACPI_GSB_ACCESS_ATTRIB_SEND_RCV         0x00000004
This page took 0.102496 seconds and 4 git commands to generate.