<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/pci/hotplug/shpchp.h, branch linux-3.2.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.2.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.2.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2013-02-06T04:33:33Z</updated>
<entry>
<title>PCI: shpchp: Use per-slot workqueues to avoid deadlock</title>
<updated>2013-02-06T04:33:33Z</updated>
<author>
<name>Bjorn Helgaas</name>
</author>
<published>2013-01-11T19:21:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0d36c06afe8ac3510ebdd21eb023077cb28efde6'/>
<id>urn:sha1:0d36c06afe8ac3510ebdd21eb023077cb28efde6</id>
<content type='text'>
commit f652e7d2916fe2fcf9e7d709aa5b7476b431e2dd upstream.

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: Yijing Wang &lt;wangyijing@huawei.com&gt;
Signed-off-by: Bjorn Helgaas &lt;bhelgaas@google.com&gt;
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>PCI: shpchp: Handle push button event asynchronously</title>
<updated>2013-02-06T04:33:33Z</updated>
<author>
<name>Bjorn Helgaas</name>
</author>
<published>2013-01-11T19:07:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0809b51bdf57a2e813ccb06ac9ff01c01b341885'/>
<id>urn:sha1:0809b51bdf57a2e813ccb06ac9ff01c01b341885</id>
<content type='text'>
commit d347e75847c1fb299c97736638f45e6ea39702d4 upstream.

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.

486b10b9f4 ("PCI: pciehp: Handle push button event asynchronously") made
the same change to pciehp.  I split this out from a patch by Yijing Wang
&lt;wangyijing@huawei.com&gt; so we fix one thing at a time and to make the
shpchp history correspond more closely with the pciehp history.

Signed-off-by: Bjorn Helgaas &lt;bhelgaas@google.com&gt;
CC: Kenji Kaneshige &lt;kaneshige.kenji@jp.fujitsu.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>shpchp: update workqueue usage</title>
<updated>2010-10-18T06:33:02Z</updated>
<author>
<name>Tejun Heo</name>
</author>
<published>2010-10-18T06:33:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e24dcbef93dbbf529fbedfc6ce8ab22d2cef35f0'/>
<id>urn:sha1:e24dcbef93dbbf529fbedfc6ce8ab22d2cef35f0</id>
<content type='text'>
* 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: Tejun Heo &lt;tj@kernel.org&gt;
Acked-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
</entry>
<entry>
<title>PCI: Make current and maximum bus speeds part of the PCI core</title>
<updated>2010-02-23T00:15:17Z</updated>
<author>
<name>Matthew Wilcox</name>
</author>
<published>2009-12-13T13:11:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3749c51ac6c1560aa1cb1520066bed84c6f8152a'/>
<id>urn:sha1:3749c51ac6c1560aa1cb1520066bed84c6f8152a</id>
<content type='text'>
Move the max_bus_speed and cur_bus_speed into the pci_bus.  Expose the
values through the PCI slot driver instead of the hotplug slot driver.
Update all the hotplug drivers to use the pci_bus instead of their own
data structures.

Signed-off-by: Matthew Wilcox &lt;willy@linux.intel.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
</entry>
<entry>
<title>PCI: change PCI nomenclature in drivers/pci/ (comment changes)</title>
<updated>2009-12-16T21:37:53Z</updated>
<author>
<name>Stefan Assmann</name>
</author>
<published>2009-12-03T11:49:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=45e829ea412760d2404d7dfc42528df46aedbf62'/>
<id>urn:sha1:45e829ea412760d2404d7dfc42528df46aedbf62</id>
<content type='text'>
Changing occurrences of variants of PCI-X and PCIe to the PCI-SIG
terms listed in the "Trademark and Logo Usage Guidelines".
http://www.pcisig.com/developers/procedures/logos/Trademark_and_Logo_Usage_Guidelines_updated_112206.pdf

Patch is limited to drivers/pci/ and changes concern comments only.

Signed-off-by: Stefan Assmann &lt;sassmann@redhat.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
</entry>
<entry>
<title>PCI hotplug: shpchp: use generic pci_configure_slot()</title>
<updated>2009-09-15T00:39:11Z</updated>
<author>
<name>Bjorn Helgaas</name>
</author>
<published>2009-09-14T22:35:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=11876e52e9148bf923795d6fcf8abed7f3662aaa'/>
<id>urn:sha1:11876e52e9148bf923795d6fcf8abed7f3662aaa</id>
<content type='text'>
Use the generic pci_configure_slot() rather than the SHPC-specific
program_fw_provided_values().

Unlike the previous SHPC-specific code, pci_configure_slot() programs PCIe
settings when an _HPX method provides them, so if it's possible to have an
SHPC-managed PCIe device, it can now be configured.

Signed-off-by: Bjorn Helgaas &lt;bjorn.helgaas@hp.com&gt;
Reviewed-by: Kenji Kaneshige &lt;kaneshige.kenji@jp.fujitsu.com&gt;
Acked-by: Kenji Kaneshige &lt;kaneshige.kenji@jp.fujitsu.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
</entry>
<entry>
<title>PCI hotplug: clean up acpi_get_hp_params_from_firmware() interface</title>
<updated>2009-09-15T00:38:26Z</updated>
<author>
<name>Bjorn Helgaas</name>
</author>
<published>2009-09-14T22:35:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6a29172ba90e49c046245610caff9848307bfd6a'/>
<id>urn:sha1:6a29172ba90e49c046245610caff9848307bfd6a</id>
<content type='text'>
This patch makes acpi_get_hp_params_from_firmware() take a
pci_dev rather than a pci_bus and makes it return a standard
int errno rather than acpi_status.

Signed-off-by: Bjorn Helgaas &lt;bjorn.helgaas@hp.com&gt;
Reviewed-by: Kenji Kaneshige &lt;kaneshige.kenji@jp.fujitsu.com&gt;
Acked-by: Kenji Kaneshige &lt;kaneshige.kenji@jp.fujitsu.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
</entry>
<entry>
<title>PCI: add missing KERN_* constants to printks</title>
<updated>2009-03-20T02:29:27Z</updated>
<author>
<name>Frank Seidel</name>
</author>
<published>2009-02-06T09:23:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1c35b8e538cb6259accb215099cdb673310cad84'/>
<id>urn:sha1:1c35b8e538cb6259accb215099cdb673310cad84</id>
<content type='text'>
According to kerneljanitors todo list all printk calls (beginning
a new line) should have an according KERN_* constant.
Those are the missing pieces here for the pci subsystem.

Signed-off-by: Frank Seidel &lt;frank@f-seidel.de&gt;
Reviewed-by: Kenji Kaneshige &lt;kaneshige.kenji@jp.fujitsu.com&gt;
Tested-by: Kenji Kaneshige &lt;kaneshige.kenji@jp.fujitsu.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
</entry>
<entry>
<title>PCI hotplug: shpchp: message refinement</title>
<updated>2008-10-23T23:14:00Z</updated>
<author>
<name>Taku Izumi</name>
</author>
<published>2008-10-23T02:54:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=be7bce250a88fbbb5a67204eb148bce8b798780a'/>
<id>urn:sha1:be7bce250a88fbbb5a67204eb148bce8b798780a</id>
<content type='text'>
This patch refines messages in shpchp module.  The main changes are as
follows:

 - remove the trailing "."
 - remove __func__ as much as possible
 - capitalize the first letter of messages
 - show PCI device address including its domain

Signed-off-by: Taku Izumi &lt;izumi.taku@jp.fujitsu.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
</entry>
<entry>
<title>PCI hotplug: shpchp: replace printk with dev_printk</title>
<updated>2008-10-23T23:11:50Z</updated>
<author>
<name>Taku Izumi</name>
</author>
<published>2008-10-23T02:52:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f98ca311f3a32e2adc229fecd6bf732db07fcca3'/>
<id>urn:sha1:f98ca311f3a32e2adc229fecd6bf732db07fcca3</id>
<content type='text'>
This patch replaces printks within shpchp module with dev_printks.

Signed-off-by: Taku Izumi &lt;izumi.taku@jp.fujitsu.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
</entry>
</feed>
