<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/pci, branch v2.6.32</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v2.6.32</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v2.6.32'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2009-11-19T21:42:02Z</updated>
<entry>
<title>Fix handling of the HP/Acer 'DMAR at zero' BIOS error for machines with &lt;4GiB RAM.</title>
<updated>2009-11-19T21:42:02Z</updated>
<author>
<name>David Woodhouse</name>
<email>dwmw2@infradead.org</email>
</author>
<published>2009-11-19T02:18:44Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5854d9c8d18359b1fc2f23c0ef2d51dd53281bd6'/>
<id>urn:sha1:5854d9c8d18359b1fc2f23c0ef2d51dd53281bd6</id>
<content type='text'>
Commit 86cf898e1d0fca245173980e3897580db38569a8 ("intel-iommu: Check for
'DMAR at zero' BIOS error earlier.") was supposed to work by pretending
not to detect an IOMMU if it was actually being reported by the BIOS at
physical address zero.

However, the intel_iommu_init() function is called unconditionally, as
are the corresponding functions for other IOMMU hardware.

So the patch only worked if you have RAM above the 4GiB boundary. It
caused swiotlb to be initialised when no IOMMU was detected during early
boot, and thus the later IOMMU init would refuse to run.

But if you have less RAM than that, swiotlb wouldn't get set up and the
IOMMU _would_ still end up being initialised, even though we never
claimed to detect it.

This patch also sets the dmar_disabled flag when the error is detected
during the initial detection phase -- so that the later call to
intel_iommu_init() will return without doing anything, regardless of
whether swiotlb is used or not.

Signed-off-by: David Woodhouse &lt;David.Woodhouse@intel.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge git://git.infradead.org/users/dwmw2/iommu-2.6.32</title>
<updated>2009-11-14T21:05:27Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2009-11-14T21:05:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=a9366e61b03f55a6e009e687ad10e706714c9907'/>
<id>urn:sha1:a9366e61b03f55a6e009e687ad10e706714c9907</id>
<content type='text'>
* git://git.infradead.org/users/dwmw2/iommu-2.6.32:
  intel-iommu: Support PCIe hot-plug
  intel-iommu: Obey coherent_dma_mask for alloc_coherent on passthrough
  intel-iommu: Check for 'DMAR at zero' BIOS error earlier.
</content>
</entry>
<entry>
<title>intel-iommu: Support PCIe hot-plug</title>
<updated>2009-11-12T02:28:45Z</updated>
<author>
<name>Fenghua Yu</name>
<email>fenghua.yu@intel.com</email>
</author>
<published>2009-11-11T15:23:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=99dcadede42f8898d4c963ef69192ef4b9b76ba8'/>
<id>urn:sha1:99dcadede42f8898d4c963ef69192ef4b9b76ba8</id>
<content type='text'>
To support PCIe hot plug in IOMMU, we register a notifier to respond to device
change action.

When the notifier gets BUS_NOTIFY_UNBOUND_DRIVER, it removes the device
from its DMAR domain.

A hot added device will be added into an IOMMU domain when it first does IOMMU
op. So there is no need to add more code for hot add.

Without the patch, after a hot-remove, a hot-added device on the same
slot will not work.

Signed-off-by: Fenghua Yu &lt;fenghua.yu@intel.com&gt;
Tested-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: David Woodhouse &lt;David.Woodhouse@intel.com&gt;
</content>
</entry>
<entry>
<title>intel-iommu: Obey coherent_dma_mask for alloc_coherent on passthrough</title>
<updated>2009-11-12T02:10:34Z</updated>
<author>
<name>Alex Williamson</name>
<email>alex.williamson@hp.com</email>
</author>
<published>2009-11-04T22:59:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=e8bb910d1bbc65e7081e73aab4b3a3dd8630332c'/>
<id>urn:sha1:e8bb910d1bbc65e7081e73aab4b3a3dd8630332c</id>
<content type='text'>
The model for IOMMU passthrough is that decent devices that can cope
with DMA to all of memory get passthrough; crappy devices with a limited
dma_mask don't -- they get to use the IOMMU anyway.

This is done on the basis that IOMMU passthrough is usually wanted for
performance reasons, and it's only the decent PCI devices that you
really care about performance for, while the crappy 32-bit ones like
your USB controller can just use the IOMMU and you won't really care.

Unfortunately, the check for this was only looking at dev-&gt;dma_mask, not
at dev-&gt;coherent_dma_mask. And some devices have a 32-bit
coherent_dma_mask even though they have a full 64-bit dma_mask.

Even more unfortunately, fixing that simple oversight would upset
certain broken HP devices. Not only do they have a 32-bit
coherent_dma_mask, but they also have a tendency to do stray DMA to
unmapped addresses. And then they die when they take the DMA fault they
so richly deserve.

So if we do the 'correct' fix, it'll mean that affected users have to
disable IOMMU support completely on "a large percentage of servers from
a major vendor."

Personally, I have little sympathy -- given that this is the _same_
'major vendor' who is shipping machines which claim to have IOMMU
support but have obviously never _once_ booted a VT-d capable OS to do
any form of QA. But strictly speaking, it _would_ be a regression even
though it only ever worked by fluke.

For 2.6.33, we'll come up with a quirk which gives swiotlb support
for this particular device, and other devices with an inadequate
coherent_dma_mask will just get normal IOMMU mapping.

The simplest fix for 2.6.32, though, is just to jump through some hoops
to try to allocate coherent DMA memory for such devices in a place that
they can reach. We'd use dma_generic_alloc_coherent() for this if it
existed on IA64.

Signed-off-by: Alex Williamson &lt;alex.williamson@hp.com&gt;
Signed-off-by: David Woodhouse &lt;David.Woodhouse@intel.com&gt;
</content>
</entry>
<entry>
<title>intel-iommu: Check for 'DMAR at zero' BIOS error earlier.</title>
<updated>2009-11-09T22:15:15Z</updated>
<author>
<name>David Woodhouse</name>
<email>David.Woodhouse@intel.com</email>
</author>
<published>2009-11-09T22:15:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=86cf898e1d0fca245173980e3897580db38569a8'/>
<id>urn:sha1:86cf898e1d0fca245173980e3897580db38569a8</id>
<content type='text'>
Chris Wright has some patches which let us fall back to swiotlb nicely
if IOMMU initialisation fails. But those are a bit much for 2.6.32.

Instead, let's shift the check for the biggest problem, the HP and Acer
BIOS bug which reports a DMAR at physical address zero. That one can
actually be checked much earlier -- before we even admit to having
detected an IOMMU in the first place. So the swiotlb init goes ahead as
we want.

Signed-off-by: David Woodhouse &lt;David.Woodhouse@intel.com&gt;
</content>
</entry>
<entry>
<title>PCI ASPM: fix oops on root port removal</title>
<updated>2009-11-06T22:01:23Z</updated>
<author>
<name>Kenji Kaneshige</name>
<email>kaneshige.kenji@jp.fujitsu.com</email>
</author>
<published>2009-11-06T07:22:44Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=761434a318a64bf521f8abcc920e1d9837640fa2'/>
<id>urn:sha1:761434a318a64bf521f8abcc920e1d9837640fa2</id>
<content type='text'>
Fix the following BUG_ON() problem reported by Alex Chiang.

This problem happened when removing PCIe root port using PCI logical
hotplug operation.

The immediate cause of this problem is that the pointer to invalid
data structure is passed to pcie_update_aspm_capable() by
pcie_aspm_exit_link_state(). When pcie_aspm_exit_link_state() received
a pointer to root port link, it unconfigures the root port link and
frees its data structure at first. At this point, there are not links
to configure under the root port and the data structure for root port
link is already freed. So pcie_aspm_exit_link_state() must not call
pcie_update_aspm_capable() and pcie_config_aspm_path().

This patch fixes the problem by changing pcie_aspm_exit_link_state()
not to call pcie_update_aspm_capable() and pcie_config_aspm_path() if
the specified link is root port link.

------------[ cut here ]------------
kernel BUG at drivers/pci/pcie/aspm.c:606!
invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
last sysfs file: /sys/devices/pci0000:40/0000:40:13.0/remove
CPU 1
Modules linked in: shpchp
Pid: 9345, comm: sysfsd Not tainted 2.6.32-rc5 #98 ProLiant DL785 G6
RIP: 0010:[&lt;ffffffff811df69b&gt;]  [&lt;ffffffff811df69b&gt;] pcie_update_aspm_capable+0x15/0xbe
RSP: 0018:ffff88082a2f5ca0  EFLAGS: 00010202
RAX: 0000000000000e77 RBX: ffff88182cc3e000 RCX: ffff88082a33d006
RDX: 0000000000000001 RSI: ffffffff811dff4a RDI: ffff88182cc3e000
RBP: ffff88082a2f5cc0 R08: ffff88182cc3e000 R09: 0000000000000000
R10: ffff88182fc00180 R11: ffff88182fc00198 R12: ffff88182cc3e000
R13: 0000000000000000 R14: ffff88182cc3e000 R15: ffff88082a2f5e20
FS:  00007f259a64b6f0(0000) GS:ffff880864600000(0000) knlGS:0000000000000000
CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: 00007feb53f73da0 CR3: 000000102cc94000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process sysfsd (pid: 9345, threadinfo ffff88082a2f4000, task ffff88082a33cf00)
Stack:
 ffff88182cc3e000 ffff88182cc3e000 0000000000000000 ffff88082a33cf00
&lt;0&gt; ffff88082a2f5cf0 ffffffff811dff52 ffff88082a2f5cf0 ffff88082c525168
&lt;0&gt; ffff88402c9fd2f8 ffff88402c9fd2f8 ffff88082a2f5d20 ffffffff811d7db2
Call Trace:
 [&lt;ffffffff811dff52&gt;] pcie_aspm_exit_link_state+0xf5/0x11e
 [&lt;ffffffff811d7db2&gt;] pci_stop_bus_device+0x76/0x7e
 [&lt;ffffffff811d7d67&gt;] pci_stop_bus_device+0x2b/0x7e
 [&lt;ffffffff811d7e4f&gt;] pci_remove_bus_device+0x15/0xb9
 [&lt;ffffffff811dcb8c&gt;] remove_callback+0x29/0x3a
 [&lt;ffffffff81135aeb&gt;] sysfs_schedule_callback_work+0x15/0x6d
 [&lt;ffffffff81072790&gt;] worker_thread+0x19d/0x298
 [&lt;ffffffff8107273b&gt;] ? worker_thread+0x148/0x298
 [&lt;ffffffff81135ad6&gt;] ? sysfs_schedule_callback_work+0x0/0x6d
 [&lt;ffffffff810765c0&gt;] ? autoremove_wake_function+0x0/0x38
 [&lt;ffffffff810725f3&gt;] ? worker_thread+0x0/0x298
 [&lt;ffffffff8107629e&gt;] kthread+0x7d/0x85
 [&lt;ffffffff8102eafa&gt;] child_rip+0xa/0x20
 [&lt;ffffffff8102e4bc&gt;] ? restore_args+0x0/0x30
 [&lt;ffffffff81076221&gt;] ? kthread+0x0/0x85
 [&lt;ffffffff8102eaf0&gt;] ? child_rip+0x0/0x20
Code: 89 e5 8a 50 48 31 c0 c0 ea 03 83 e2 07 e8 b2 de fe ff c9 48 98 c3 55 48 89 e5 41 56 49 89 fe 41 55 41 54 53 48 83 7f 10 00 74 04 &lt;0f&gt; 0b eb fe 48 8b 05 da 7d 63 00 4c 8d 60 e8 4c 89 e1 eb 24 4c
RIP  [&lt;ffffffff811df69b&gt;] pcie_update_aspm_capable+0x15/0xbe
 RSP &lt;ffff88082a2f5ca0&gt;
---[ end trace 6ae0f65bdeab8555 ]---

Reported-by: Alex Chiang &lt;achiang@hp.com&gt;
Signed-off-by: Kenji Kaneshige &lt;kaneshige.kenji@jp.fujitsu.com&gt;
Tested-by: Alex Chiang &lt;achiang@hp.com&gt;
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
</entry>
<entry>
<title>Revert "PCI: get larger bridge ranges when space is available"</title>
<updated>2009-10-27T16:39:18Z</updated>
<author>
<name>Jesse Barnes</name>
<email>jbarnes@virtuousgeek.org</email>
</author>
<published>2009-10-27T16:39:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=55a1098476619d5d8f4cdae7240ea759274dead7'/>
<id>urn:sha1:55a1098476619d5d8f4cdae7240ea759274dead7</id>
<content type='text'>
This reverts commit 308cf8e13f42f476dfd6552aeff58fdc0788e566.  This
patch had trouble with transparent bridges, among other things.  A more
readable and correct version should land in 2.6.33.

Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
</content>
</entry>
<entry>
<title>ahci / atiixp / pci quirks: rename AMD SB900 into Hudson-2</title>
<updated>2009-10-16T10:21:20Z</updated>
<author>
<name>Shane Huang</name>
<email>shane.huang@amd.com</email>
</author>
<published>2009-10-13T03:14:00Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5deab536654f95345ea11e8ec6ed5c778df348b5'/>
<id>urn:sha1:5deab536654f95345ea11e8ec6ed5c778df348b5</id>
<content type='text'>
This patch renames the code name SB900 into Hudson-2

Signed-off-by: Shane Huang &lt;shane.huang@amd.com&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@redhat.com&gt;
</content>
</entry>
<entry>
<title>headers: Fix build after &lt;linux/sched.h&gt; removal</title>
<updated>2009-10-13T17:20:16Z</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2009-10-12T14:22:46Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=86ae13b006e48959981248493efd3ff4b2828b3d'/>
<id>urn:sha1:86ae13b006e48959981248493efd3ff4b2828b3d</id>
<content type='text'>
Commit d43c36dc6b357fa1806800f18aa30123c747a6d1 ("headers: remove
sched.h from interrupt.h") left some build errors in some configurations
due to drivers having depended on getting header files "accidentally".

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
[ Combined several one-liners from Ingo into one single patch  - Linus ]
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge git://git.infradead.org/~dwmw2/iommu-2.6.32</title>
<updated>2009-10-13T17:04:40Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2009-10-13T17:04:40Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=80fa680d22c11912a0be84b8139422eba1327322'/>
<id>urn:sha1:80fa680d22c11912a0be84b8139422eba1327322</id>
<content type='text'>
* git://git.infradead.org/~dwmw2/iommu-2.6.32:
  x86: Move pci_iommu_init to rootfs_initcall()
  Run pci_apply_final_quirks() sooner.
  Mark pci_apply_final_quirks() __init rather than __devinit
  Rename pci_init() to pci_apply_final_quirks(), move it to quirks.c
  intel-iommu: Yet another BIOS workaround: Isoch DMAR unit with no TLB space
  intel-iommu: Decode (and ignore) RHSA entries
  intel-iommu: Make "Unknown DMAR structure" message more informative
</content>
</entry>
</feed>
