1. 23 11月, 2012 1 次提交
  2. 21 11月, 2012 3 次提交
    • R
      ACPI / platform: Initialize ACPI handles of platform devices in advance · 863f9f30
      Rafael J. Wysocki 提交于
      The current platform device creation and registration code in
      acpi_create_platform_device() is quite convoluted.  This function
      takes an ACPI device node as an argument and eventually calls
      platform_device_register_resndata() to create and register a
      platform device object on the basis of the information contained
      in that code.  However, it doesn't associate the new platform
      device with the ACPI node directly, but instead it relies on
      acpi_platform_notify(), called from within device_add(), to find
      that ACPI node again with the help of acpi_platform_find_device()
      and acpi_platform_match() and then attach the new platform device
      to it.  This causes an additional ACPI namespace walk to happen and
      is clearly suboptimal.
      
      Use the observation that it is now possible to initialize the ACPI
      handle of a device before calling device_add() for it to make this
      code more straightforward.  Namely, add a new field to struct
      platform_device_info allowing us to pass the ACPI handle of interest
      to platform_device_register_full(), which will then use it to
      initialize the new device's ACPI handle before registering it.
      This will cause acpi_platform_notify() to use the ACPI handle from
      the device structure directly instead of using the .find_device()
      routine provided by the device's bus type.  In consequence,
      acpi_platform_bus, acpi_platform_find_device(), and
      acpi_platform_match() are not necessary any more, so remove them.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Reviewed-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      863f9f30
    • R
      ACPI / driver core: Introduce struct acpi_dev_node and related macros · 95f8a082
      Rafael J. Wysocki 提交于
      To avoid adding an ACPI handle pointer to struct device on
      architectures that don't use ACPI, or generally when CONFIG_ACPI is
      not set, in which cases that pointer is useless, define struct
      acpi_dev_node that will contain the handle pointer if CONFIG_ACPI is
      set and will be empty otherwise and use it to represent the ACPI
      device node field in struct device.
      
      In addition to that define macros for reading and setting the ACPI
      handle of a device that don't generate code when CONFIG_ACPI is
      unset.  Modify the ACPI subsystem to use those macros instead of
      referring to the given device's ACPI handle directly.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Reviewed-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      95f8a082
    • R
      ACPI: Allow ACPI handles of devices to be initialized in advance · f3fd0c8a
      Rafael J. Wysocki 提交于
      Currently, the ACPI handles of devices are initialized from within
      device_add(), by acpi_bind_one() called from acpi_platform_notify()
      which first uses the .find_device() routine provided by the device's
      bus type to find the matching device node in the ACPI namespace.
      This is a source of some computational overhead and, moreover, the
      correctness of the result depends on the implementation of
      .find_device() which is known to fail occasionally for some bus types
      (e.g. PCI).  In some cases, however, the corresponding ACPI device
      node is known already before calling device_add() for the given
      struct device object and the whole .find_device() dance in
      acpi_platform_notify() is then simply unnecessary.
      
      For this reason, make it possible to initialize the ACPI handles of
      devices before calling device_add() for them.  Modify
      acpi_platform_notify() to call acpi_bind_one() in advance to check
      the device's existing ACPI handle and skip the .find_device()
      search if that is successful.  Change acpi_bind_one() accordingly.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Reviewed-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      f3fd0c8a
  3. 17 11月, 2012 1 次提交
  4. 15 11月, 2012 8 次提交
  5. 03 11月, 2012 1 次提交
  6. 26 10月, 2012 1 次提交
  7. 23 10月, 2012 1 次提交
  8. 17 10月, 2012 1 次提交
  9. 09 10月, 2012 1 次提交
  10. 07 10月, 2012 4 次提交
    • L
      ACPI: Add new sysfs interface to export device description · d1efe3c3
      Lance Ortiz 提交于
      Add support to export the device description obtained from the ACPI _STR
      method, if one exists for a device, to user-space via a sysfs interface.
      This new interface provides a standard and platform neutral way for users
      to obtain the description text stored in the ACPI _STR method.  If no
      _STR method exists for the device, no sysfs 'description' file will be
      created.  The 'description' file will be located in the /sys/devices/
      directory using the device's path.
      
      /sys/device/<bus>/<bridge path>/<device path>.../firmware_node/description
      
      Example:
      
      /sys/devices/pci0000:00/0000:00.07.0/0000:0e:00.0/firmware_node/description
      
      It can also be located using the ACPI device path, for example:
      
      /sys/devices/LNXSYSTM:00/device:00/ACPI0004:00/PNP0A08:00/device:13/device:15/description
      /sys/devices/LNXSYSTM:00/device:00/ACPI0004:00/ACPI0004:01/ACPI0007:02/description
      
      Execute the 'cat' command on the 'description' file to obtain the
      description string for that device.
      
      This patch also includes documentation describing how the new sysfs
      interface works
      
      Changes from v1-v2 based on comments by Len Brown and Fengguang Wu
      * Removed output "No Description" and leaving a NULL attribute if the
      _STR method failed to evaluate.
      
      * In acpi_device_remove_files() removed the redundent check of
      dev->pnp.str_obj before calling free.  This check triggered a message
      from smatch.
      Signed-off-by: NLance Ortiz <lance.ortiz@hp.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      d1efe3c3
    • F
      ACPI: Harden acpi_table_parse_entries() against BIOS bug · 369d913b
      Fenghua Yu 提交于
      Parsing acpi table entries may fall into an infinite loop on a buggy BIOS
      which has entry length=0 in acpi table.
      
      Instead of kernel hang with few failure clue which leads to heavy lifting debug
      effort, this patch hardens kernel boot by booting into non NUMA mode. The debug
      info left in log buffer helps people identify the issue.
      Signed-off-by: NFenghua Yu <fenghua.yu@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      369d913b
    • F
      ACPI: EC: Add a quirk for CLEVO M720T/M730T laptop · 67bfa9b6
      Feng Tang 提交于
      By enlarging the GPE storm threshold back to 20, that laptop's
      EC works fine with interrupt mode instead of polling mode.
      
      https://bugzilla.kernel.org/show_bug.cgi?id=45151Reported-and-Tested-by: NFrancesco <trentini@dei.unipd.it>
      Signed-off-by: NFeng Tang <feng.tang@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      cc: stable@vger.kernel.org
      67bfa9b6
    • F
      ACPI: EC: Make the GPE storm threshold a module parameter · a520d52e
      Feng Tang 提交于
      The Linux EC driver includes a mechanism to detect GPE storms,
      and switch from interrupt-mode to polling mode.  However, polling
      mode sometimes doesn't work, so the workaround is problematic.
      Also, different systems seem to need the threshold for detecting
      the GPE storm at different levels.
      
      ACPI_EC_STORM_THRESHOLD was initially 20 when it's created, and
      was changed to 8 in 2.6.28 commit 06cf7d3c "ACPI: EC: lower interrupt storm
      threshold" to fix kernel bug 11892 by forcing the laptop in that bug to
      work in polling mode. However in bug 45151, it works fine in interrupt
      mode if we lift the threshold back to 20.
      
      This patch makes the threshold a module parameter so that user has a
      flexible option to debug/workaround this issue.
      
      The default is unchanged.
      
      This is also a preparation patch to fix specific systems:
      	https://bugzilla.kernel.org/show_bug.cgi?id=45151Signed-off-by: NFeng Tang <feng.tang@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      cc: stable@vger.kernel.org
      a520d52e
  11. 30 9月, 2012 1 次提交
  12. 25 9月, 2012 8 次提交
  13. 24 9月, 2012 4 次提交
  14. 22 9月, 2012 5 次提交