1. 12 5月, 2013 2 次提交
  2. 08 5月, 2013 3 次提交
  3. 02 5月, 2013 1 次提交
  4. 26 4月, 2013 1 次提交
  5. 25 4月, 2013 1 次提交
    • A
      ACPI: video: correct acpi_video_bus_add error processing · 91e13aa3
      Aaron Lu 提交于
      acpi_video_bus_get_devices() may fail due to some video output device
      doesn't have the _ADR method, and in this case, the error processing
      is to simply free the video structure in acpi_video_bus_add(), while
      leaving those already registered video output devices in the wild,
      which means for some video output device, we have already registered
      a backlight interface and installed a notification handler for it.
      So it can happen when user is using this system, on hotkey pressing,
      the notification handler will send a keycode through a non-existing
      input device, causing kernel freeze.
      
      To solve this problem, free all those already registered video output
      devices once something goes wrong in acpi_video_bus_get_devices(), so
      that no wild backlight interfaces and notification handlers exist.
      
      References: https://bugzilla.kernel.org/show_bug.cgi?id=51731
      Reported-and-tested-by: <i-tek@web.de>
      Signed-off-by: NAaron Lu <aaron.lu@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      91e13aa3
  6. 24 4月, 2013 1 次提交
  7. 23 4月, 2013 1 次提交
  8. 22 4月, 2013 1 次提交
  9. 17 4月, 2013 1 次提交
  10. 13 4月, 2013 1 次提交
  11. 12 4月, 2013 11 次提交
  12. 10 4月, 2013 1 次提交
    • A
      procfs: new helper - PDE_DATA(inode) · d9dda78b
      Al Viro 提交于
      The only part of proc_dir_entry the code outside of fs/proc
      really cares about is PDE(inode)->data.  Provide a helper
      for that; static inline for now, eventually will be moved
      to fs/proc, along with the knowledge of struct proc_dir_entry
      layout.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      d9dda78b
  13. 08 4月, 2013 1 次提交
  14. 03 4月, 2013 2 次提交
    • T
      ACPI / BGRT: Don't let users configure BGRT on non X86 systems · e66cd537
      Tony Luck 提交于
      Fengguang Wu's 0-Day kernel build testing backend found the
      following build error for an allmodconfig build on ia64:
      
         drivers/built-in.o: In function `show_yoffset':
      >> bgrt.c:(.text+0xe5a71): undefined reference to `bgrt_tab'
      >> bgrt.c:(.text+0xe5a91): undefined reference to `bgrt_tab'
         drivers/built-in.o: In function `show_xoffset':
      >> bgrt.c:(.text+0xe5b51): undefined reference to `bgrt_tab'
      >> bgrt.c:(.text+0xe5b71): undefined reference to `bgrt_tab'
         drivers/built-in.o: In function `show_type':
      >> bgrt.c:(.text+0xe5c31): undefined reference to `bgrt_tab'
         drivers/built-in.o:bgrt.c:(.text+0xe5c51): more undefined references to `bgrt_tab' follow
         drivers/built-in.o: In function `bgrt_init':
         bgrt.c:(.init.text+0x8931): undefined reference to `bgrt_image'
         bgrt.c:(.init.text+0x8932): undefined reference to `bgrt_image_size'
         bgrt.c:(.init.text+0x8950): undefined reference to `bgrt_image'
         bgrt.c:(.init.text+0x8960): undefined reference to `bgrt_image_size'
      
      The problem is that all these undefined names are provided by
      arch/x86/platform/efi/efi-bgrt.c - which is obviously not available
      to the ia64 build.
      
      It doesn't seem useful to provide the BGRT support for Itanium
      (many systems are headless and have no graphics at all). So
      just don't let users configure this driver on non-X86 machines.
      Reported-by: NFengguang Wu <fengguang.wu@intel.com>
      Acked-by: NH. Peter Anvin <hpa@zytor.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      e66cd537
    • B
      Revert "PCI/ACPI: Request _OSC control before scanning PCI root bus" · b8178f13
      Bjorn Helgaas 提交于
      This reverts commit 8c33f51d.
      
      Conflicts:
      	drivers/acpi/pci_root.c
      
      This commit broke some pre-1.1 PCIe devices by leaving them with
      ASPM enabled.  Previously, we had disabled ASPM on these devices
      because many of them don't implement it correctly (per 149e1637).
      
      Requesting _OSC control early means that aspm_disabled may be set
      before we scan the PCI bus and configure link ASPM state.  But the
      ASPM configuration currently skips the check for pre-PCIe 1.1 devices
      when aspm_disabled is set, like this:
      
          acpi_pci_root_add
            acpi_pci_osc_support
              if (flags != base_flags)
                pcie_no_aspm
                  aspm_disabled = 1
            pci_acpi_scan_root
              ...
                pcie_aspm_init_link_state
                  pcie_aspm_sanity_check
                    if (!aspm_disabled)
                      /* check for pre-PCIe 1.1 device */
      
      Therefore, setting aspm_disabled early means that we leave ASPM enabled
      on these pre-PCIe 1.1 devices, which is a regression for some devices.
      
      The best fix would be to clean up the ASPM init so we can evaluate
      _OSC before scanning the bug (that way boot-time and hot-add discovery
      will work the same), but that requires significant rework.
      
      For now, we'll just revert the _OSC change as the lowest-risk fix.
      
      Reference: https://bugzilla.kernel.org/show_bug.cgi?id=55211Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: NYinghai Lu <yinghai@kernel.org>
      CC: stable@vger.kernel.org	# v3.8+
      b8178f13
  15. 02 4月, 2013 2 次提交
    • A
      cpuidle / ACPI: recover percpu ACPI processor cstate · 6240a10d
      Alex Shi 提交于
      Commit ac3ebafa "ACPI / idle: remove usage of the statedata"
      changed the percpu processor cstate to a unified cstate in ACPI idle.
      That caused all our NHM boxes to boot hang or panic.
      
      2178751 Task dump for CPU 1:
      	2178752 swapper/1       R  running task     6736     0      1 0x00000000
      	2178753  ffff8801e8029dc8 ffffffff8101cf96 ffff8801e8029e28 ffffffff813d294b
      	2178754  0000000000000f99 0000000000000003 00000000003cf654 0000000025c17d03
      	2178755  ffff8801e8029e38 ffff8801e74fc000 00000002590dc5c4 ffffffff8163cdb0
      	2178756 Call Trace:
      	2178757  [<ffffffff8101cf96>] ? acpi_processor_ffh_cstate_enter+0x2d/0x2f
      	2178758  [<ffffffff813d294b>] acpi_idle_enter_bm+0x1b1/0x236
      	2178759  [<ffffffff8163cdb0>] ? disable_cpuidle+0x10/0x10
      	2178760  [<ffffffff8163cdc2>] cpuidle_enter+0x12/0x14
      	2178761  [<ffffffff8163d286>] cpuidle_wrap_enter+0x2f/0x6d
      	2178762  [<ffffffff8163d2d4>] cpuidle_enter_tk+0x10/0x12
      	2178763  [<ffffffff8163cdd6>] cpuidle_enter_state+0x12/0x3a
      	2178764  [<ffffffff8163d4a7>] cpuidle_idle_call+0xe8/0x161
      	2178765  [<ffffffff81008d99>] cpu_idle+0x5e/0xa4
      	2178766  [<ffffffff8174c6c1>] start_secondary+0x1a9/0x1ad
      	2178767 Task dump for CPU 2:
      
      In fact, the ACPI idle is based on the assumption of difference percpu
      cstate structures that are necessary for the implementation to work
      cprrectly.  A unique acpi_processor_cx is not sifficient by far.
      
      This patch is just a quick fix re-introducing the percpu cstates.
      
      If someone really wants to unify the ACPI cstates, please make sure
      that the whole software infrastructure is changed and take hardware
      as well as many different kinds of BIOS settings into account.
      
      [rjw: Changelog]
      Reported-by: NLKP project <lkp@linux.intel.com>
      Reported-by: NXie ChanglongX <changlongx.xie@intel.com>
      Tested-by: NYinghai Lu <yinghai@kernel.org>
      Signed-off-by: NAlex Shi <alex.shi@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      6240a10d
    • R
      ACPI / I2C: Use parent's ACPI_HANDLE() in acpi_i2c_register_devices() · b34bb1ee
      Rafael J. Wysocki 提交于
      The ACPI handle of struct i2c_adapter's dev member should not be
      set, because this causes that struct i2c_adapter to be associated
      with the ACPI device node corresponding to its parent as the
      second "physical_device", which is incorrect (this happens during
      the registration of struct i2c_adapter).  Consequently,
      acpi_i2c_register_devices() should use the ACPI handle of the
      parent of the struct i2c_adapter it is called for rather than the
      struct i2c_adapter's ACPI handle (which should be NULL).
      
      Make that happen and modify the i2c-designware-platdrv driver,
      which currently is the only driver for ACPI-enumerated I2C
      controller chips, not to set the ACPI handle for the
      struct i2c_adapter it creates.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Reviewed-by: NAaron Lu <aaron.lu@intel.com>
      Acked-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Acked-by: NWolfram Sang <wsa@the-dreams.de>
      b34bb1ee
  16. 30 3月, 2013 1 次提交
    • Y
      PCI / ACPI: Don't query OSC support with all possible controls · 545d6e18
      Yinghai Lu 提交于
      Found problem on system that firmware that could handle pci aer.
      Firmware get error reporting after pci injecting error, before os boots.
      But after os boots, firmware can not get report anymore, even pci=noaer
      is passed.
      
      Root cause: BIOS _OSC has problem with query bit checking.
      It turns out that BIOS vendor is copying example code from ACPI Spec.
      In ACPI Spec 5.0, page 290:
      
      	If (Not(And(CDW1,1))) // Query flag clear?
      	{	// Disable GPEs for features granted native control.
      		If (And(CTRL,0x01)) // Hot plug control granted?
      		{
      			Store(0,HPCE) // clear the hot plug SCI enable bit
      			Store(1,HPCS) // clear the hot plug SCI status bit
      		}
      	...
      	}
      
      When Query flag is set, And(CDW1,1) will be 1, Not(1) will return 0xfffffffe.
      So it will get into code path that should be for control set only.
      BIOS acpi code should be changed to "If (LEqual(And(CDW1,1), 0)))"
      
      Current kernel code is using _OSC query to notify firmware about support
      from OS and then use _OSC to set control bits.
      During query support, current code is using all possible controls.
      So will execute code that should be only for control set stage.
      
      That will have problem when pci=noaer or aer firmware_first is used.
      As firmware have that control set for os aer already in query support stage,
      but later will not os aer handling.
      
      We should avoid passing all possible controls, just use osc_control_set
      instead.
      That should workaround BIOS bugs with affected systems on the field
      as more bios vendors are copying sample code from ACPI spec.
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      Cc: stable@vger.kernel.org
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      545d6e18
  17. 27 3月, 2013 3 次提交
  18. 26 3月, 2013 2 次提交
  19. 25 3月, 2013 4 次提交
    • R
      ACPI / PM: Fix potential problem in acpi_device_get_power() · 75eb2d13
      Rafael J. Wysocki 提交于
      Theoretically, in some situations acpi_device_get_power() may return
      an incorrect result, because the settings of the power resources
      depended on by the device may indicate a power state shallower than
      the actual power state of the device.
      
      Say that two devices, A and B, depend on two power resources, X and
      Y, in such a way that _PR0 for both A and B list both X and Y and
      _PR3 for both A and B list power resource Y alone.  Also suppose
      that _PS0 and _PS3 are present for both A and B.  Then, if devices
      A and B are initially in D0, power resources X and Y are initially
      "on" and their reference counters are equal to 2.  To put device A
      into power state D3hot the kernel will decrement the reference
      counter of power resource X, but that power resource won't be turned
      off, because it is still in use by device B (its reference counter is
      equal to 1).  Next, _PS3 will be executed for device A.  Afterward
      the configuration of the power resources will indicate that device
      A is in power state D0 (both X and Y are "on"), but in fact it is
      in D3hot (because _PS3 has been executed for it).
      
      In that situation, if acpi_device_get_power() is called to get the
      power state of device A, it will first execute _PSC for it which
      should return 3.  That will cause acpi_device_get_power() to run
      acpi_power_get_inferred_state() for device A and the resultant power
      state will be D0, which is incorrect.
      
      To fix that change acpi_device_get_power() to first execute
      acpi_power_get_inferred_state() for the given device (if it
      depends on power resources) and to evaluate _PSC for it subsequently,
      so that the result inferred from the power resources configuration
      can be amended by the _PSC return value.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Reviewed-by: NAaron Lu <aaron.lu@intel.com>
      75eb2d13
    • Y
      ACPI / memhotplug: Remove info->failed bit · fd4655c2
      Yasuaki Ishimatsu 提交于
      acpi_memory_info has enabled bit and failed bit for controlling memory
      hotplug. But we don't need to keep both bits.
      
      The patch removes acpi_memory_info->failed bit.
      Signed-off-by: Nyasuaki ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Acked-by: NToshi Kani <toshi.kani@hp.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      fd4655c2
    • Y
      ACPI / memhotplug: set info->enabled for memory present at boot time · bb49d82d
      Yasuaki Ishimatsu 提交于
      At http://marc.info/?l=linux-acpi&m=135769405622667&w=2 thread,
      Toshi Kani mentioned as follows:
      
      "I have a question about the change you made in commit 65479472 in
      acpi_memhotplug.c.  This change seems to require that
      acpi_memory_enable_device() calls add_memory() to add all memory ranges
      represented by memory device objects at boot-time, and keep the results
      be used for hot-remove.
      
      If I understand it right, this add_memory() call fails with EEXIST at
      boot-time since all memory ranges should have been added from EFI memory
      table (or e820) already.  This results all memory ranges be marked as !
      enabled & !failed.  I think this means that we cannot hot-delete any
      memory ranges presented at boot-time since acpi_memory_remove_memory()
      only calls remove_memory() when the enabled flag is set.  Is that
      correct?"
      
      Above mention is correct. Thus even if memory device supports hotplug,
      memory presented at boot-time cannot be hot removed since the memory
      device's acpi_memory_info->enabled is always 0.
      
      This patch changes to set 1 to "acpi_memory_info->enabled" of memory
      device presented at boot-time for hot removing the memory device.
      Signed-off-by: NYasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Acked-by: NToshi Kani <toshi.kani@hp.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      bb49d82d
    • D
      ACPI / video: Fix applying indexed initial brightness value. · 994fa63c
      Danny Baumann 提交于
      The value initially read via _BQC also needs to be offset by 2 to
      compensate for the first 2 special items in _BCL. Introduce a helper
      function that does the BQC-value-to-level conversion in order to not
      needlessly duplicate code.
      Signed-off-by: NDanny Baumann <dannybaumann@web.de>
      Reviewed-by: NAaron Lu <aaron.lu@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      994fa63c