1. 22 2月, 2016 2 次提交
    • S
      ACPI / sleep: move acpi_processor_sleep to sleep.c · 504997cf
      Sudeep Holla 提交于
      acpi_processor_sleep is neither related nor used by CPUIdle framework.
      It's used in system suspend/resume path as a syscore operation. It makes
      more sense to move it to acpi/sleep.c where all the S-state transition
      (a.k.a. Linux system suspend/hiberate) related code are present.
      
      Also make it depend on CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT so that
      it's not compiled on architecture like ARM64 where S-states are not
      yet defined in ACPI.
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      504997cf
    • S
      ACPI / processor : add support for ACPI0010 processor container · db62fda3
      Sudeep Holla 提交于
      ACPI 6.0 adds support for optional processor container device which may
      contain child objects that are either processor devices or other processor
      containers. This allows representing hierarchical processor topologies.
      
      It is declared using the _HID of ACPI0010. It is an abstract container
      used to represent CPU topology and should not be used to hotplug
      purposes.
      
      If no matching handler is found for a device in acpi_scan_attach_handler,
      acpi_bus_attach does a default enumeration for those devices with valid
      HID in the acpi namespace. This patch adds a scan handler for these ACPI
      processor containers to avoid default that enumeration and ensures the
      platform devices are not created for them.
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      db62fda3
  2. 13 10月, 2015 1 次提交
  3. 25 8月, 2015 2 次提交
    • A
      ACPI: Decouple ACPI idle and ACPI processor drivers · 5f05586c
      Ashwin Chaugule 提交于
      This patch introduces a new Kconfig symbol, ACPI_PROCESSOR_IDLE,
      which is auto selected by architectures which support the ACPI
      based C states for CPU Idle management.
      
      The processor_idle driver in its present form contains declarations
      specific to X86 and IA64. Since there are no reasonable defaults
      for other architectures e.g. ARM64, the driver is selected only for
      X86 or IA64.
      
      This helps in decoupling the ACPI processor_driver from the ACPI
      processor_idle driver which is useful for the upcoming alternative
      patchwork for controlling CPU Performance (CPPC) and CPU Idle (LPI).
      Signed-off-by: NAshwin Chaugule <ashwin.chaugule@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      5f05586c
    • A
      ACPI: Split out ACPI PSS from ACPI Processor driver · 239708a3
      Ashwin Chaugule 提交于
      The ACPI processor driver is currently tied too closely
      to the ACPI P-states (PSS) and other related constructs
      for controlling CPU performance.
      
      The newer ACPI specification (v5.1 onwards) introduces
      alternative methods to PSS. These new mechanisms are
      described within each ACPI Processor object and so they
      need to be scanned whenever a new Processor object is detected.
      This patch introduces a new Kconfig symbol to allow for
      finer configurability among the two options for controlling
      performance states. There is no change in functionality and
      the option is auto-selected by the architectures which support it.
      
      A future commit will introduce support for CPPC: A newer method of
      controlling CPU performance. The OS is not expected to support
      CPPC and PSS at the same time, so the Kconfig option lets us make
      the two mutually exclusive at compile time.
      Signed-off-by: NAshwin Chaugule <ashwin.chaugule@linaro.org>
      [ rjw: Changelog ]
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      239708a3
  4. 23 7月, 2015 1 次提交
  5. 26 3月, 2015 1 次提交
  6. 06 1月, 2015 1 次提交
    • H
      ACPI / processor: Convert apic_id to phys_id to make it arch agnostic · af8f3f51
      Hanjun Guo 提交于
      apic_id in MADT table is the CPU hardware id which identify
      it self in the system for x86 and ia64, OSPM will use it for
      SMP init to map APIC ID to logical cpu number in the early
      boot, when the DSDT/SSDT (ACPI namespace) is scanned later, the
      ACPI processor driver is probed and the driver will use acpi_id
      in DSDT to get the apic_id, then map to the logical cpu number
      which is needed by the processor driver.
      
      Before ACPI 5.0, only x86 and ia64 were supported in ACPI spec,
      so apic_id is used both in arch code and ACPI core which is
      pretty fine. Since ACPI 5.0, ARM is supported by ACPI and
      APIC is not available on ARM, this will confuse people when
      apic_id is both used by x86 and ARM in one function.
      
      So convert apic_id to phys_id (which is the original meaning)
      in ACPI processor dirver to make it arch agnostic, but leave the
      arch dependent code unchanged, no functional change.
      Signed-off-by: NHanjun Guo <hanjun.guo@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      af8f3f51
  7. 26 11月, 2014 1 次提交
  8. 12 11月, 2014 1 次提交
  9. 17 6月, 2014 1 次提交
  10. 30 10月, 2013 1 次提交
    • R
      ACPI / processor: Do not request ACPI cpufreq module directly · 34411a69
      Rafael J. Wysocki 提交于
      Function acpi_processor_load_module() used by the ACPI processor
      driver can only really work if the acpi-cpufreq module is available
      when acpi_processor_start() is executed which usually is not the case
      for systems loading the processor driver module from an initramfs.
      
      Moreover, that used to be a hackish workaround for module autoloading
      issues, but udev loads acpi-cpufreq just fine nowadays, so that
      function isn't really necessary any more.  For this reason, drop
      acpi_processor_load_module() entirely.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      34411a69
  11. 24 9月, 2013 1 次提交
  12. 12 5月, 2013 2 次提交
    • R
      ACPI / processor: Use common hotplug infrastructure · ac212b69
      Rafael J. Wysocki 提交于
      Split the ACPI processor driver into two parts, one that is
      non-modular, resides in the ACPI core and handles the enumeration
      and hotplug of processors and one that implements the rest of the
      existing processor driver functionality.
      
      The non-modular part uses an ACPI scan handler object to enumerate
      processors on the basis of information provided by the ACPI namespace
      and to hook up with the common ACPI hotplug infrastructure.  It also
      populates the ACPI handle of each processor device having a
      corresponding object in the ACPI namespace, which allows the driver
      proper to bind to those devices, and makes the driver bind to them
      if it is readily available (i.e. loaded) when the scan handler's
      .attach() routine is running.
      
      There are a few reasons to make this change.
      
      First, switching the ACPI processor driver to using the common ACPI
      hotplug infrastructure reduces code duplication and size considerably,
      even though a new file is created along with a header comment etc.
      
      Second, since the common hotplug code attempts to offline devices
      before starting the (non-reversible) removal procedure, it will abort
      (and possibly roll back) hot-remove operations involving processors
      if cpu_down() returns an error code for one of them instead of
      continuing them blindly (if /sys/firmware/acpi/hotplug/force_remove
      is unset).  That is a more desirable behavior than what the current
      code does.
      
      Finally, the separation of the scan/hotplug part from the driver
      proper makes it possible to simplify the driver's .remove() routine,
      because it doesn't need to worry about the possible cleanup related
      to processor removal any more (the scan/hotplug part is responsible
      for that now) and can handle device removal and driver removal
      symmetricaly (i.e. as appropriate).
      
      Some user-visible changes in sysfs are made (for example, the
      'sysdev' link from the ACPI device node to the processor device's
      directory is gone and a 'physical_node' link is present instead
      and a corresponding 'firmware_node' is present in the processor
      device's directory, the processor driver is now visible under
      /sys/bus/cpu/drivers/ and bound to the processor device), but
      that shouldn't affect the functionality that users care about
      (frequency scaling, C-states and thermal management).
      
      Tested on my venerable Toshiba Portege R500.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Reviewed-by: NToshi Kani <toshi.kani@hp.com>
      ac212b69
    • R
      ACPI / PM: Move processor suspend/resume to syscore_ops · 0a3b15ac
      Rafael J. Wysocki 提交于
      The system suspend routine of the ACPI processor driver saves
      the BUS_MASTER_RLD register and its resume routine restores it.
      However, there can be only one such register in the system and it
      really should be saved after non-boot CPUs have been offlined and
      restored before they are put back online during resume.
      
      For this reason, move the saving and restoration of BUS_MASTER_RLD
      to syscore suspend and syscore resume, respectively, and drop the no
      longer necessary suspend/resume callbacks from the ACPI processor
      driver.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      0a3b15ac
  13. 06 3月, 2013 1 次提交
    • K
      acpi: Export the acpi_processor_get_performance_info · c705c78c
      Konrad Rzeszutek Wilk 提交于
      The git commit d5aaffa9
      (cpufreq: handle cpufreq being disabled for all exported function)
      tightens the cpufreq API by returning errors when disable_cpufreq()
      had been called.
      
      The problem we are hitting is that the module xen-acpi-processor which
      uses the ACPI's functions: acpi_processor_register_performance,
      acpi_processor_preregister_performance, and acpi_processor_notify_smm
      fails at acpi_processor_register_performance with -22.
      
      Note that earlier during bootup in arch/x86/xen/setup.c there is also
      an call to cpufreq's API: disable_cpufreq().
      
      This is b/c we want the Linux kernel to parse the ACPI data, but leave
      the cpufreq decisions to the hypervisor.
      
      In v3.9 all the checks that d5aaffa9
      added are now hit and the calls to cpufreq_register_notifier will now
      fail. This means that acpi_processor_ppc_init ends up printing:
      
      "Warning: Processor Platform Limit not supported"
      
      and the acpi_processor_ppc_status is not set.
      
      The repercussions of that is that the call to
      acpi_processor_register_performance fails right away at:
      
      	if (!(acpi_processor_ppc_status & PPC_REGISTERED))
      
      and we don't progress any further on parsing and extracting the _P*
      objects.
      
      The only reason the Xen code called that function was b/c it was
      exported and the only way to gather the P-states. But we can also
      just make acpi_processor_get_performance_info be exported and not
      use acpi_processor_register_performance. This patch does so.
      Acked-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      c705c78c
  14. 18 9月, 2012 1 次提交
    • D
      cpuidle / ACPI : move cpuidle_device field out of the acpi_processor_power structure · 3d339dcb
      Daniel Lezcano 提交于
      Currently we have the cpuidle_device field in the acpi_processor_power structure.
      This adds a dependency between processor.h and cpuidle.h
      
      Although it is not a real problem, removing this dependency has the benefit of
      separating a bit more the cpuidle code from the rest of the acpi code.
      Also, the compilation should be a bit improved because we do no longer
      include cpuidle.h in processor.h. The preprocessor was generating 30418 loc
      and with this patch it generates 30256 loc for processor_thermal.c, a file
      which is not concerned at all by cpuidle, like processor_perflib.c and
      processor_throttling.c.
      
      That may sound ridiculous, but "small streams make big rivers" :P
      
      This patch moves this field into a static global per cpu variable like what is
      done in the intel_idle driver.
      Signed-off-by: NDaniel Lezcano <daniel.lezcano@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      3d339dcb
  15. 16 9月, 2012 1 次提交
  16. 05 9月, 2012 1 次提交
  17. 18 7月, 2012 3 次提交
  18. 01 7月, 2012 2 次提交
  19. 27 1月, 2012 1 次提交
  20. 20 1月, 2012 1 次提交
  21. 07 11月, 2011 1 次提交
  22. 17 7月, 2011 1 次提交
  23. 29 5月, 2011 1 次提交
  24. 11 1月, 2011 1 次提交
  25. 15 8月, 2010 1 次提交
  26. 23 7月, 2010 1 次提交
  27. 22 5月, 2010 1 次提交
  28. 15 3月, 2010 2 次提交
  29. 17 2月, 2010 1 次提交
    • T
      percpu: add __percpu sparse annotations to what's left · a29d8b8e
      Tejun Heo 提交于
      Add __percpu sparse annotations to places which didn't make it in one
      of the previous patches.  All converions are trivial.
      
      These annotations are to make sparse consider percpu variables to be
      in a different address space and warn if accessed without going
      through percpu accessors.  This patch doesn't affect normal builds.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NBorislav Petkov <borislav.petkov@amd.com>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Huang Ying <ying.huang@intel.com>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Neil Brown <neilb@suse.de>
      a29d8b8e
  30. 28 1月, 2010 1 次提交
  31. 22 12月, 2009 3 次提交