<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/pci/pcie, branch v3.0.72</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>PCI: Allow pcie_aspm=force even when FADT indicates it is unsupported</title>
<updated>2013-01-28T04:46:28+00:00</updated>
<author>
<name>Colin Ian King</name>
<email>colin.king@canonical.com</email>
</author>
<published>2012-11-27T14:09:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ef3319d2624e24085982336facc71b414c134f4a'/>
<id>ef3319d2624e24085982336facc71b414c134f4a</id>
<content type='text'>
commit 9e16721498b0c3d3ebfa0b503c63d35c0a4c0642 upstream.

Right now using pcie_aspm=force will not enable ASPM if the FADT indicates
ASPM is unsupported.  However, the semantics of force should probably allow
for this, especially as they did before 3c076351c4 ("PCI: Rework ASPM
disable code")

This patch just skips the clearing of any ASPM setup that the firmware has
carried out on this bus if pcie_aspm=force is being used.

Reference: http://bugs.launchpad.net/bugs/962038
Signed-off-by: Colin Ian King &lt;colin.king@canonical.com&gt;
Signed-off-by: Bjorn Helgaas &lt;bhelgaas@google.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 9e16721498b0c3d3ebfa0b503c63d35c0a4c0642 upstream.

Right now using pcie_aspm=force will not enable ASPM if the FADT indicates
ASPM is unsupported.  However, the semantics of force should probably allow
for this, especially as they did before 3c076351c4 ("PCI: Rework ASPM
disable code")

This patch just skips the clearing of any ASPM setup that the firmware has
carried out on this bus if pcie_aspm=force is being used.

Reference: http://bugs.launchpad.net/bugs/962038
Signed-off-by: Colin Ian King &lt;colin.king@canonical.com&gt;
Signed-off-by: Bjorn Helgaas &lt;bhelgaas@google.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>ASPM: Fix pcie devices with non-pcie children</title>
<updated>2012-04-02T16:27:22+00:00</updated>
<author>
<name>Matthew Garrett</name>
<email>mjg@redhat.com</email>
</author>
<published>2012-03-27T14:17:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=85969df4a914d0a0f57c72df1765a43e8fc563c8'/>
<id>85969df4a914d0a0f57c72df1765a43e8fc563c8</id>
<content type='text'>
commit c9651e70ad0aa499814817cbf3cc1d0b806ed3a1 upstream.

Since 3.2.12 and 3.3, some systems are failing to boot with a BUG_ON.
Some other systems using the pata_jmicron driver fail to boot because no
disks are detected.  Passing pcie_aspm=force on the kernel command line
works around it.

The cause: commit 4949be16822e ("PCI: ignore pre-1.1 ASPM quirking when
ASPM is disabled") changed the behaviour of pcie_aspm_sanity_check() to
always return 0 if aspm is disabled, in order to avoid cases where we
changed ASPM state on pre-PCIe 1.1 devices.

This skipped the secondary function of pcie_aspm_sanity_check which was
to avoid us enabling ASPM on devices that had non-PCIe children, causing
trouble later on.  Move the aspm_disabled check so we continue to honour
that scenario.

Addresses https://bugzilla.kernel.org/show_bug.cgi?id=42979 and
          http://bugs.debian.org/665420

Reported-by: Romain Francoise &lt;romain@orebokech.com&gt; # kernel panic
Reported-by: Chris Holland &lt;bandidoirlandes@gmail.com&gt; # disk detection trouble
Signed-off-by: Matthew Garrett &lt;mjg@redhat.com&gt;
Tested-by: Hatem Masmoudi &lt;hatem.masmoudi@gmail.com&gt; # Dell Latitude E5520
Tested-by: janek &lt;jan0x6c@gmail.com&gt; # pata_jmicron with JMB362/JMB363
[jn: with more symptoms in log message]
Signed-off-by: Jonathan Nieder &lt;jrnieder@gmail.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit c9651e70ad0aa499814817cbf3cc1d0b806ed3a1 upstream.

Since 3.2.12 and 3.3, some systems are failing to boot with a BUG_ON.
Some other systems using the pata_jmicron driver fail to boot because no
disks are detected.  Passing pcie_aspm=force on the kernel command line
works around it.

The cause: commit 4949be16822e ("PCI: ignore pre-1.1 ASPM quirking when
ASPM is disabled") changed the behaviour of pcie_aspm_sanity_check() to
always return 0 if aspm is disabled, in order to avoid cases where we
changed ASPM state on pre-PCIe 1.1 devices.

This skipped the secondary function of pcie_aspm_sanity_check which was
to avoid us enabling ASPM on devices that had non-PCIe children, causing
trouble later on.  Move the aspm_disabled check so we continue to honour
that scenario.

Addresses https://bugzilla.kernel.org/show_bug.cgi?id=42979 and
          http://bugs.debian.org/665420

Reported-by: Romain Francoise &lt;romain@orebokech.com&gt; # kernel panic
Reported-by: Chris Holland &lt;bandidoirlandes@gmail.com&gt; # disk detection trouble
Signed-off-by: Matthew Garrett &lt;mjg@redhat.com&gt;
Tested-by: Hatem Masmoudi &lt;hatem.masmoudi@gmail.com&gt; # Dell Latitude E5520
Tested-by: janek &lt;jan0x6c@gmail.com&gt; # pata_jmicron with JMB362/JMB363
[jn: with more symptoms in log message]
Signed-off-by: Jonathan Nieder &lt;jrnieder@gmail.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>PCI: ignore pre-1.1 ASPM quirking when ASPM is disabled</title>
<updated>2012-03-19T15:57:43+00:00</updated>
<author>
<name>Matthew Garrett</name>
<email>mjg@redhat.com</email>
</author>
<published>2012-03-06T18:41:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9217bfbbade56ef9dfee88773c2105e619028fa1'/>
<id>9217bfbbade56ef9dfee88773c2105e619028fa1</id>
<content type='text'>
commit 4949be16822e92a18ea0cc1616319926628092ee upstream.

Right now we won't touch ASPM state if ASPM is disabled, except in the case
where we find a device that appears to be too old to reliably support ASPM.
Right now we'll clear it in that case, which is almost certainly the wrong
thing to do. The easiest way around this is just to disable the blacklisting
when ASPM is disabled.

Signed-off-by: Matthew Garrett &lt;mjg@redhat.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 4949be16822e92a18ea0cc1616319926628092ee upstream.

Right now we won't touch ASPM state if ASPM is disabled, except in the case
where we find a device that appears to be too old to reliably support ASPM.
Right now we'll clear it in that case, which is almost certainly the wrong
thing to do. The easiest way around this is just to disable the blacklisting
when ASPM is disabled.

Signed-off-by: Matthew Garrett &lt;mjg@redhat.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>PCI: Rework ASPM disable code</title>
<updated>2012-02-06T17:24:01+00:00</updated>
<author>
<name>Matthew Garrett</name>
<email>mjg@redhat.com</email>
</author>
<published>2011-11-10T21:38:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6cac12dfab9c57a4f76821412224b226a9b08dff'/>
<id>6cac12dfab9c57a4f76821412224b226a9b08dff</id>
<content type='text'>
commit 3c076351c4027a56d5005a39a0b518a4ba393ce2 upstream.

Right now we forcibly clear ASPM state on all devices if the BIOS indicates
that the feature isn't supported. Based on the Microsoft presentation
"PCI Express In Depth for Windows Vista and Beyond", I'm starting to think
that this may be an error. The implication is that unless the platform
grants full control via _OSC, Windows will not touch any PCIe features -
including ASPM. In that case clearing ASPM state would be an error unless
the platform has granted us that control.

This patch reworks the ASPM disabling code such that the actual clearing
of state is triggered by a successful handoff of PCIe control to the OS.
The general ASPM code undergoes some changes in order to ensure that the
ability to clear the bits isn't overridden by ASPM having already been
disabled. Further, this theoretically now allows for situations where
only a subset of PCIe roots hand over control, leaving the others in the
BIOS state.

It's difficult to know for sure that this is the right thing to do -
there's zero public documentation on the interaction between all of these
components. But enough vendors enable ASPM on platforms and then set this
bit that it seems likely that they're expecting the OS to leave them alone.

Measured to save around 5W on an idle Thinkpad X220.

Signed-off-by: Matthew Garrett &lt;mjg@redhat.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 3c076351c4027a56d5005a39a0b518a4ba393ce2 upstream.

Right now we forcibly clear ASPM state on all devices if the BIOS indicates
that the feature isn't supported. Based on the Microsoft presentation
"PCI Express In Depth for Windows Vista and Beyond", I'm starting to think
that this may be an error. The implication is that unless the platform
grants full control via _OSC, Windows will not touch any PCIe features -
including ASPM. In that case clearing ASPM state would be an error unless
the platform has granted us that control.

This patch reworks the ASPM disabling code such that the actual clearing
of state is triggered by a successful handoff of PCIe control to the OS.
The general ASPM code undergoes some changes in order to ensure that the
ability to clear the bits isn't overridden by ASPM having already been
disabled. Further, this theoretically now allows for situations where
only a subset of PCIe roots hand over control, leaving the others in the
BIOS state.

It's difficult to know for sure that this is the right thing to do -
there's zero public documentation on the interaction between all of these
components. But enough vendors enable ASPM on platforms and then set this
bit that it seems likely that they're expecting the OS to leave them alone.

Measured to save around 5W on an idle Thinkpad X220.

Signed-off-by: Matthew Garrett &lt;mjg@redhat.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>PCI: remove unused AER functions</title>
<updated>2011-05-21T19:17:14+00:00</updated>
<author>
<name>Chen Gong</name>
<email>gong.chen@linux.intel.com</email>
</author>
<published>2011-05-20T05:36:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cbfddd20937ed890ce7027fa08a7c84e977128cf'/>
<id>cbfddd20937ed890ce7027fa08a7c84e977128cf</id>
<content type='text'>
In the commit 28eb5f2, aer_osc_setup is removed but corresponding
definiton information in the aerdrv.h is missed.

Acked-by: Rafael J. Wysocki &lt;rjw@sisk.pl&gt;
Signed-off-by: Chen Gong &lt;gong.chen@linux.intel.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the commit 28eb5f2, aer_osc_setup is removed but corresponding
definiton information in the aerdrv.h is missed.

Acked-by: Rafael J. Wysocki &lt;rjw@sisk.pl&gt;
Signed-off-by: Chen Gong &lt;gong.chen@linux.intel.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PCI/e1000e: Add and use pci_disable_link_state_locked()</title>
<updated>2011-05-21T19:16:44+00:00</updated>
<author>
<name>Yinghai Lu</name>
<email>yinghai@kernel.org</email>
</author>
<published>2011-05-13T00:11:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9f728f53dd70396f3183d2f0861022259471824b'/>
<id>9f728f53dd70396f3183d2f0861022259471824b</id>
<content type='text'>
Need to use it in _e1000e_disable_aspm.  This routine is used for error
recovery, where the pci_bus_sem is already held, and we don't want
pci_disable_link_state to try to take it again.  So add a locked variant
for use in cases like this.

Found lock up:

[ 2374.654557] kworker/32:1    D ffff881027f6b0f0     0  6075      2 0x00000000
[ 2374.654816]  ffff88503f099a68 0000000000000046 ffff88503f098000 0000000000004000
[ 2374.654837]  00000000001d1ec0 ffff88503f099fd8 00000000001d1ec0 ffff88503f099fd8
[ 2374.654860]  0000000000004000 00000000001d1ec0 ffff88503dcc8000 ffff88503f090000
[ 2374.654880] Call Trace:
[ 2374.654898]  [&lt;ffffffff810b1302&gt;] ? __lock_acquired+0x3a/0x224
[ 2374.654914]  [&lt;ffffffff81c2b59c&gt;] ? _raw_spin_unlock_irq+0x30/0x36
[ 2374.654925]  [&lt;ffffffff810b069d&gt;] ? trace_hardirqs_on_caller+0x1f/0x178
[ 2374.654936]  [&lt;ffffffff81c2ab24&gt;] rwsem_down_failed_common+0xd3/0x103
[ 2374.654945]  [&lt;ffffffff810b158f&gt;] ? __lock_contended+0x3a/0x2a2
[ 2374.654955]  [&lt;ffffffff81c2ab7b&gt;] rwsem_down_read_failed+0x12/0x14
[ 2374.654967]  [&lt;ffffffff813371e4&gt;] call_rwsem_down_read_failed+0x14/0x30
[ 2374.654981]  [&lt;ffffffff8135df20&gt;] ? pci_disable_link_state+0x5f/0xf5
[ 2374.654990]  [&lt;ffffffff81c2a0e6&gt;] ? down_read+0x7e/0x91
[ 2374.654999]  [&lt;ffffffff8135df20&gt;] ? pci_disable_link_state+0x5f/0xf5
[ 2374.655008]  [&lt;ffffffff8135df20&gt;] pci_disable_link_state+0x5f/0xf5
[ 2374.655024]  [&lt;ffffffff81661796&gt;] e1000e_disable_aspm+0x55/0x5a
[ 2374.655037]  [&lt;ffffffff816677eb&gt;] e1000_io_slot_reset+0x59/0xea
[ 2374.655048]  [&lt;ffffffff8135fe0d&gt;] ? report_mmio_enabled+0x5d/0x5d
[ 2374.655057]  [&lt;ffffffff8135fe3b&gt;] report_slot_reset+0x2e/0x5d
[ 2374.655072]  [&lt;ffffffff8135369e&gt;] pci_walk_bus+0x8a/0xb7
[ 2374.655081]  [&lt;ffffffff8135fe0d&gt;] ? report_mmio_enabled+0x5d/0x5d
[ 2374.655091]  [&lt;ffffffff813603be&gt;] broadcast_error_message+0xa4/0xb2
[ 2374.655101]  [&lt;ffffffff81352c71&gt;] ? pci_bus_read_config_dword+0x72/0x80
[ 2374.655110]  [&lt;ffffffff813606df&gt;] do_recovery+0x9e/0xf9
[ 2374.655120]  [&lt;ffffffff81360786&gt;] handle_error_source+0x4c/0x51
[ 2374.655129]  [&lt;ffffffff81360974&gt;] aer_isr_one_error+0x1e9/0x21a
[ 2374.655138]  [&lt;ffffffff81360a6c&gt;] aer_isr+0xc7/0xcc
[ 2374.655147]  [&lt;ffffffff813609a5&gt;] ? aer_isr_one_error+0x21a/0x21a
[ 2374.655159]  [&lt;ffffffff81096d9f&gt;] process_one_work+0x237/0x3ec
[ 2374.655168]  [&lt;ffffffff81096d10&gt;] ? process_one_work+0x1a8/0x3ec
[ 2374.655178]  [&lt;ffffffff8109728d&gt;] worker_thread+0x17c/0x240
[ 2374.655186]  [&lt;ffffffff810b0803&gt;] ? trace_hardirqs_on+0xd/0xf
[ 2374.655196]  [&lt;ffffffff81097111&gt;] ? manage_workers+0xab/0xab
[ 2374.655209]  [&lt;ffffffff8109c8ed&gt;] kthread+0xa0/0xa8
[ 2374.655223]  [&lt;ffffffff81c332d4&gt;] kernel_thread_helper+0x4/0x10
[ 2374.655232]  [&lt;ffffffff81c2b880&gt;] ? retint_restore_args+0xe/0xe
[ 2374.655243]  [&lt;ffffffff8109c84d&gt;] ? __init_kthread_worker+0x5b/0x5b
[ 2374.655252]  [&lt;ffffffff81c332d0&gt;] ? gs_change+0xb/0xb

when aer happens,
pci_walk_bus already have down_read(&amp;pci_bus_sem)...
then report_slot_reset
        ==&gt; e1000_io_slot_reset
                ==&gt; e1000e_disable_aspm
                        ==&gt; pci_disable_link_state...

We can not use pci_disable_link_state, and it will try to hold pci_bus_sem again.

Try to have __pci_disable_link_state that will not need to hold pci_bus_sem.

-v2: change name to pci_disable_link_state_locked() according to Jesse.

[jbarnes: make sure new function is exported for modules]

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Need to use it in _e1000e_disable_aspm.  This routine is used for error
recovery, where the pci_bus_sem is already held, and we don't want
pci_disable_link_state to try to take it again.  So add a locked variant
for use in cases like this.

Found lock up:

[ 2374.654557] kworker/32:1    D ffff881027f6b0f0     0  6075      2 0x00000000
[ 2374.654816]  ffff88503f099a68 0000000000000046 ffff88503f098000 0000000000004000
[ 2374.654837]  00000000001d1ec0 ffff88503f099fd8 00000000001d1ec0 ffff88503f099fd8
[ 2374.654860]  0000000000004000 00000000001d1ec0 ffff88503dcc8000 ffff88503f090000
[ 2374.654880] Call Trace:
[ 2374.654898]  [&lt;ffffffff810b1302&gt;] ? __lock_acquired+0x3a/0x224
[ 2374.654914]  [&lt;ffffffff81c2b59c&gt;] ? _raw_spin_unlock_irq+0x30/0x36
[ 2374.654925]  [&lt;ffffffff810b069d&gt;] ? trace_hardirqs_on_caller+0x1f/0x178
[ 2374.654936]  [&lt;ffffffff81c2ab24&gt;] rwsem_down_failed_common+0xd3/0x103
[ 2374.654945]  [&lt;ffffffff810b158f&gt;] ? __lock_contended+0x3a/0x2a2
[ 2374.654955]  [&lt;ffffffff81c2ab7b&gt;] rwsem_down_read_failed+0x12/0x14
[ 2374.654967]  [&lt;ffffffff813371e4&gt;] call_rwsem_down_read_failed+0x14/0x30
[ 2374.654981]  [&lt;ffffffff8135df20&gt;] ? pci_disable_link_state+0x5f/0xf5
[ 2374.654990]  [&lt;ffffffff81c2a0e6&gt;] ? down_read+0x7e/0x91
[ 2374.654999]  [&lt;ffffffff8135df20&gt;] ? pci_disable_link_state+0x5f/0xf5
[ 2374.655008]  [&lt;ffffffff8135df20&gt;] pci_disable_link_state+0x5f/0xf5
[ 2374.655024]  [&lt;ffffffff81661796&gt;] e1000e_disable_aspm+0x55/0x5a
[ 2374.655037]  [&lt;ffffffff816677eb&gt;] e1000_io_slot_reset+0x59/0xea
[ 2374.655048]  [&lt;ffffffff8135fe0d&gt;] ? report_mmio_enabled+0x5d/0x5d
[ 2374.655057]  [&lt;ffffffff8135fe3b&gt;] report_slot_reset+0x2e/0x5d
[ 2374.655072]  [&lt;ffffffff8135369e&gt;] pci_walk_bus+0x8a/0xb7
[ 2374.655081]  [&lt;ffffffff8135fe0d&gt;] ? report_mmio_enabled+0x5d/0x5d
[ 2374.655091]  [&lt;ffffffff813603be&gt;] broadcast_error_message+0xa4/0xb2
[ 2374.655101]  [&lt;ffffffff81352c71&gt;] ? pci_bus_read_config_dword+0x72/0x80
[ 2374.655110]  [&lt;ffffffff813606df&gt;] do_recovery+0x9e/0xf9
[ 2374.655120]  [&lt;ffffffff81360786&gt;] handle_error_source+0x4c/0x51
[ 2374.655129]  [&lt;ffffffff81360974&gt;] aer_isr_one_error+0x1e9/0x21a
[ 2374.655138]  [&lt;ffffffff81360a6c&gt;] aer_isr+0xc7/0xcc
[ 2374.655147]  [&lt;ffffffff813609a5&gt;] ? aer_isr_one_error+0x21a/0x21a
[ 2374.655159]  [&lt;ffffffff81096d9f&gt;] process_one_work+0x237/0x3ec
[ 2374.655168]  [&lt;ffffffff81096d10&gt;] ? process_one_work+0x1a8/0x3ec
[ 2374.655178]  [&lt;ffffffff8109728d&gt;] worker_thread+0x17c/0x240
[ 2374.655186]  [&lt;ffffffff810b0803&gt;] ? trace_hardirqs_on+0xd/0xf
[ 2374.655196]  [&lt;ffffffff81097111&gt;] ? manage_workers+0xab/0xab
[ 2374.655209]  [&lt;ffffffff8109c8ed&gt;] kthread+0xa0/0xa8
[ 2374.655223]  [&lt;ffffffff81c332d4&gt;] kernel_thread_helper+0x4/0x10
[ 2374.655232]  [&lt;ffffffff81c2b880&gt;] ? retint_restore_args+0xe/0xe
[ 2374.655243]  [&lt;ffffffff8109c84d&gt;] ? __init_kthread_worker+0x5b/0x5b
[ 2374.655252]  [&lt;ffffffff81c332d0&gt;] ? gs_change+0xb/0xb

when aer happens,
pci_walk_bus already have down_read(&amp;pci_bus_sem)...
then report_slot_reset
        ==&gt; e1000_io_slot_reset
                ==&gt; e1000e_disable_aspm
                        ==&gt; pci_disable_link_state...

We can not use pci_disable_link_state, and it will try to hold pci_bus_sem again.

Try to have __pci_disable_link_state that will not need to hold pci_bus_sem.

-v2: change name to pci_disable_link_state_locked() according to Jesse.

[jbarnes: make sure new function is exported for modules]

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PCI: Fix uninitialized variable bug in AER injection code</title>
<updated>2011-05-10T22:43:30+00:00</updated>
<author>
<name>Wanlong Gao</name>
<email>wanlong.gao@gmail.com</email>
</author>
<published>2011-04-04T09:12:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=40294d8f14384780a61a2dea8c92a231176ae301'/>
<id>40294d8f14384780a61a2dea8c92a231176ae301</id>
<content type='text'>
If it was preempted, and the variable aer_mask_override is changed
after the spin_unlock_irqrestore it will write an uninitialized
variable by the pci_write_config_dword() function.

Signed-off-by: Wanlong Gao &lt;wanlong.gao@gmail.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If it was preempted, and the variable aer_mask_override is changed
after the spin_unlock_irqrestore it will write an uninitialized
variable by the pci_write_config_dword() function.

Signed-off-by: Wanlong Gao &lt;wanlong.gao@gmail.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PCI: Enable ASPM state clearing regardless of policy</title>
<updated>2011-05-10T22:43:28+00:00</updated>
<author>
<name>Alex Williamson</name>
<email>alex.williamson@redhat.com</email>
</author>
<published>2011-03-10T18:54:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3504e47ffca5ed3f9e2cc7d37b428fbf1e00ad1b'/>
<id>3504e47ffca5ed3f9e2cc7d37b428fbf1e00ad1b</id>
<content type='text'>
Commit 2f671e2d allowed us to clear ASPM state when the FADT
tells us it isn't supported, but we don't put this into effect
if the aspm_policy is set to POLICY_POWERSAVE.  Enable the
state to be cleared regardless of policy.

Signed-off-by: Alex Williamson &lt;alex.williamson@redhat.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit 2f671e2d allowed us to clear ASPM state when the FADT
tells us it isn't supported, but we don't put this into effect
if the aspm_policy is set to POLICY_POWERSAVE.  Enable the
state to be cleared regardless of policy.

Signed-off-by: Alex Williamson &lt;alex.williamson@redhat.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6</title>
<updated>2011-03-26T04:01:43+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-03-26T04:01:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5aafdea448fb86412a6f8e46df518c1545d32436'/>
<id>5aafdea448fb86412a6f8e46df518c1545d32436</id>
<content type='text'>
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:
  PCI: Disable ASPM when _OSC control is not granted for PCIe services
  PCI: Changing ASPM policy, via /sys, to POWERSAVE could cause NMIs
  PCI: PCIe links may not get configured for ASPM under POWERSAVE mode
  PCI/ACPI: Report ASPM support to BIOS if not disabled from command line
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:
  PCI: Disable ASPM when _OSC control is not granted for PCIe services
  PCI: Changing ASPM policy, via /sys, to POWERSAVE could cause NMIs
  PCI: PCIe links may not get configured for ASPM under POWERSAVE mode
  PCI/ACPI: Report ASPM support to BIOS if not disabled from command line
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'linus' into release</title>
<updated>2011-03-23T06:34:54+00:00</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2011-03-23T06:34:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=02e2407858fd62053bf60349c0e72cd1c7a4a60e'/>
<id>02e2407858fd62053bf60349c0e72cd1c7a4a60e</id>
<content type='text'>
Conflicts:
	arch/x86/kernel/acpi/sleep.c

Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	arch/x86/kernel/acpi/sleep.c

Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
