1. 18 4月, 2013 1 次提交
  2. 15 1月, 2013 2 次提交
    • B
      PCI: shpchp: Use per-slot workqueues to avoid deadlock · f652e7d2
      Bjorn Helgaas 提交于
      When we have an SHPC-capable bridge with a second SHPC-capable bridge
      below it, pushing the upstream bridge's attention button causes a
      deadlock.
      
      The deadlock happens because we use the shpchp_wq workqueue to run
      shpchp_pushbutton_thread(), which uses shpchp_disable_slot() to remove
      devices below the upstream bridge.  When we remove the downstream bridge,
      we call shpc_remove(), the shpchp driver's .remove() method.  That calls
      flush_workqueue(shpchp_wq), which deadlocks because the
      shpchp_pushbutton_thread() work item is still running.
      
      This patch avoids the deadlock by creating a workqueue for every slot
      and removing the single shared workqueue.
      
      Here's the call path that leads to the deadlock:
      
        shpchp_queue_pushbutton_work
          queue_work(shpchp_wq)		# shpchp_pushbutton_thread
          ...
      
        shpchp_pushbutton_thread
          shpchp_disable_slot
            remove_board
              shpchp_unconfigure_device
                pci_stop_and_remove_bus_device
                  ...
                    shpc_remove		# shpchp driver .remove method
                      hpc_release_ctlr
                        cleanup_slots
                          flush_workqueue(shpchp_wq)
      
      This change is based on code inspection, since we don't have hardware
      with this topology.
      Based-on-patch-by: NYijing Wang <wangyijing@huawei.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: stable@vger.kernel.org
      f652e7d2
    • B
      PCI: shpchp: Handle push button event asynchronously · d347e758
      Bjorn Helgaas 提交于
      Use non-ordered workqueue for attention button events.
      
      Attention button events on each slot can be handled asynchronously. So
      we should use non-ordered workqueue. This patch also removes ordered
      workqueue in shpchp as a result.
      
      486b10b9 ("PCI: pciehp: Handle push button event asynchronously") made
      the same change to pciehp.  I split this out from a patch by Yijing Wang
      <wangyijing@huawei.com> so we fix one thing at a time and to make the
      shpchp history correspond more closely with the pciehp history.
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      d347e758
  3. 13 1月, 2012 1 次提交
  4. 18 10月, 2010 1 次提交
    • T
      shpchp: update workqueue usage · e24dcbef
      Tejun Heo 提交于
      * Rename shpchp_wq to shpchp_ordered_wq and add non-ordered shpchp_wq
        which is used instead of the system workqueue.  This is to remove
        the use of flush_scheduled_work() which is deprecated and scheduled
        for removal.
      
      * With cmwq in place, there's no point in creating workqueues lazily.
        Create both shpchp_wq and shpchp_ordered_wq upfront.
      
      * Include workqueue.h from shpchp.h.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      e24dcbef
  5. 23 2月, 2010 1 次提交
  6. 17 12月, 2009 1 次提交
  7. 15 9月, 2009 2 次提交
  8. 20 3月, 2009 1 次提交
  9. 24 10月, 2008 2 次提交
  10. 23 10月, 2008 1 次提交
  11. 11 6月, 2008 1 次提交
    • K
      shpchp: check firmware before taking control · ac9c052d
      Kenji Kaneshige 提交于
      Fix the following problems of shpchp driver about getting hotplug
      control from firmware.
      
        - The shpchp driver must not control the hotplug controller if it
          fails to get control from the firmware. But current shpchp
          controls the hotplug controller regardless the result, because it
          doesn't check the return value of get_hp_hw_control_from_firmware().
      
        - Current shpchp driver doesn't support _OSC.
      
      The pciehp driver already have the code for evaluating _OSC and OSHP
      and shpchp and pciehp can share it. So this patch move that code from
      pciehp to acpi_pcihp.c.
      Signed-off-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      ac9c052d
  12. 21 4月, 2008 1 次提交
  13. 03 5月, 2007 1 次提交
  14. 08 2月, 2007 1 次提交
  15. 21 12月, 2006 3 次提交
  16. 22 11月, 2006 1 次提交
  17. 19 10月, 2006 2 次提交
  18. 27 9月, 2006 1 次提交
  19. 20 6月, 2006 2 次提交
  20. 24 3月, 2006 13 次提交
  21. 01 2月, 2006 1 次提交
    • K
      [PATCH] PCI Hotplug: shpchp: AMD POGO errata fix · 53044f35
      Keck, David 提交于
      This patch fixes the AMD POGO errata on the hotplug controller where the
      platform will lock up or reboot if PERR/SERR generation is enabled and a
      slot is sent an enable command.  This fix disables PERR/SERR generation
      before a slot is sent the enable command by first saving related
      registers, turning off SERR/PERR generation, enabling the slot, then
      restoring the registers.
      Signed-off-by: NDavid Keck <david.keck@amd.com>
      Cc: Kristen Accardi <kristen.c.accardi@intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      53044f35