<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/git/stable/linux.git/drivers/iommu, branch linux-3.15.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<id>https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=linux-3.15.y</id>
<link rel='self' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=linux-3.15.y'/>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/'/>
<updated>2014-07-09T18:21:29+00:00</updated>
<entry>
<title>iommu/vt-d: fix bug in handling multiple RMRRs for the same PCI device</title>
<updated>2014-07-09T18:21:29+00:00</updated>
<author>
<name>Jiang Liu</name>
<email>jiang.liu@linux.intel.com</email>
</author>
<published>2014-06-20T07:08:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4577406902e10e66d35e1961623d718cad69c848'/>
<id>urn:sha1:4577406902e10e66d35e1961623d718cad69c848</id>
<content type='text'>
commit 27e249501ca06a3010519c306206cc402b61b5ab upstream.

Function dmar_iommu_notify_scope_dev() makes a wrong assumption that
there's one RMRR for each PCI device at most, which causes DMA failure
on some HP platforms. So enhance dmar_iommu_notify_scope_dev() to
handle multiple RMRRs for the same PCI device.

Fixbug: https://bugzilla.novell.com/show_bug.cgi?id=879482

Reported-by: Tom Mingarelli &lt;thomas.mingarelli@hp.com&gt;
Tested-by: Linda Knippers &lt;linda.knippers@hp.com&gt;
Signed-off-by: Jiang Liu &lt;jiang.liu@linux.intel.com&gt;
Signed-off-by: Joerg Roedel &lt;jroedel@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>iommu/amd: fix enabling exclusion range for an exact device</title>
<updated>2014-05-13T10:33:12+00:00</updated>
<author>
<name>Su Friendy</name>
<email>friendy.su@sony.com.cn</email>
</author>
<published>2014-05-07T05:54:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2c16c9fdacbbf3bd8ff6390e12c5d28b3f2c78ac'/>
<id>urn:sha1:2c16c9fdacbbf3bd8ff6390e12c5d28b3f2c78ac</id>
<content type='text'>
set_device_exclusion_range(u16 devid, struct ivmd_header *m) enables
exclusion range for ONE device. IOMMU does not translate the access
to the exclusion range from the device.

The device is specified by input argument 'devid'. But 'devid' is not
passed to the actual set function set_dev_entry_bit(), instead
'm-&gt;devid' is passed. 'm-&gt;devid' does not specify the exact device
which needs enable the exclusion range. 'm-&gt;devid' represents DeviceID
field of IVMD, which has different meaning depends on IVMD type.

The caller init_exclusion_range() sets 'devid' for ONE device. When
m-&gt;type is equal to ACPI_IVMD_TYPE_ALL or ACPI_IVMD_TYPE_RANGE,
'm-&gt;devid' is not equal to 'devid'.

This patch fixes 'm-&gt;devid' to 'devid'.

Signed-off-by: Su Friendy &lt;friendy.su@sony.com.cn&gt;
Signed-off-by: Tamori Masahiro &lt;Masahiro.Tamori@jp.sony.com&gt;
Signed-off-by: Joerg Roedel &lt;joro@8bytes.org&gt;
</content>
</entry>
<entry>
<title>iommu/amd: Take mmap_sem when calling get_user_pages</title>
<updated>2014-05-13T10:33:11+00:00</updated>
<author>
<name>Jay Cornwall</name>
<email>jay.cornwall@amd.com</email>
</author>
<published>2014-04-28T22:27:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4378d99295fae5fd42b0ed1a3eeef2a1684e0c17'/>
<id>urn:sha1:4378d99295fae5fd42b0ed1a3eeef2a1684e0c17</id>
<content type='text'>
get_user_pages requires caller to hold a read lock on mmap_sem.

Signed-off-by: Jay Cornwall &lt;jay.cornwall@amd.com&gt;
Signed-off-by: Suravee Suthikulpanit &lt;suravee.suthikulpanit@amd.com&gt;
Signed-off-by: Joerg Roedel &lt;joro@8bytes.org&gt;
</content>
</entry>
<entry>
<title>iommu/amd: Fix interrupt remapping for aliased devices</title>
<updated>2014-05-13T10:33:11+00:00</updated>
<author>
<name>Alex Williamson</name>
<email>alex.williamson@redhat.com</email>
</author>
<published>2014-04-22T16:08:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e028a9e6b8a637af09ac4114083280df4a7045f1'/>
<id>urn:sha1:e028a9e6b8a637af09ac4114083280df4a7045f1</id>
<content type='text'>
An apparent cut and paste error prevents the correct flags from being
set on the alias device resulting in MSI on conventional PCI devices
failing to work.  This also produces error events from the IOMMU like:

AMD-Vi: Event logged [INVALID_DEVICE_REQUEST device=00:14.4 address=0x000000fdf8000000 flags=0x0a00]

Where 14.4 is a PCIe-to-PCI bridge with a device behind it trying to
use MSI interrupts.

Signed-off-by: Alex Williamson &lt;alex.williamson@redhat.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Joerg Roedel &lt;joro@8bytes.org&gt;
</content>
</entry>
<entry>
<title>Merge git://git.infradead.org/iommu-2.6 into iommu/fixes</title>
<updated>2014-04-16T14:09:40+00:00</updated>
<author>
<name>Joerg Roedel</name>
<email>joro@8bytes.org</email>
</author>
<published>2014-04-16T14:09:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=3426cb3d3578eab55ec231e0ce4dfc12ec3abc1f'/>
<id>urn:sha1:3426cb3d3578eab55ec231e0ce4dfc12ec3abc1f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>iommu/arm-smmu: fix panic in arm_smmu_alloc_init_pte</title>
<updated>2014-04-15T11:23:11+00:00</updated>
<author>
<name>Bin Wang</name>
<email>binw@marvell.com</email>
</author>
<published>2014-03-21T10:06:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=aca1bc4595c5757f01167ab5bfef2a4f8edfcf4f'/>
<id>urn:sha1:aca1bc4595c5757f01167ab5bfef2a4f8edfcf4f</id>
<content type='text'>
kernel panic happened when iommu_unmap a buffer larger than 2MB,
more than expected pmd entries got “invalidated”, due to a wrong range
passed to arm_smmu_alloc_init_pte. it was likely a typo, now we fix
it, passing the correct "end" address to arm_smmu_alloc_init_pte.

Signed-off-by: Bin Wang &lt;binw@marvell.com&gt;
Signed-off-by: Will Deacon &lt;will.deacon@arm.com&gt;
</content>
</entry>
<entry>
<title>iommu/arm-smmu: Return 0 on unmap failure</title>
<updated>2014-04-15T11:19:33+00:00</updated>
<author>
<name>Laurent Pinchart</name>
<email>laurent.pinchart+renesas@ideasonboard.com</email>
</author>
<published>2014-02-28T15:37:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=16c50dcfc4c186ed09a4d80fbd511492d024a1c5'/>
<id>urn:sha1:16c50dcfc4c186ed09a4d80fbd511492d024a1c5</id>
<content type='text'>
The IOMMU core expects the unmap operation to return the number of bytes
that have been unmapped or 0 on failure, a negative return value being
treated like a number of bytes.

Signed-off-by: Laurent Pinchart &lt;laurent.pinchart+renesas@ideasonboard.com&gt;
Signed-off-by: Will Deacon &lt;will.deacon@arm.com&gt;
</content>
</entry>
<entry>
<title>iommu/vt-d: fix bug in matching PCI devices with DRHD/RMRR descriptors</title>
<updated>2014-04-15T05:11:58+00:00</updated>
<author>
<name>Jiang Liu</name>
<email>jiang.liu@linux.intel.com</email>
</author>
<published>2014-04-15T02:35:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=5ae0566a0fffa09a77ac5996e3854fe91cd87167'/>
<id>urn:sha1:5ae0566a0fffa09a77ac5996e3854fe91cd87167</id>
<content type='text'>
Commit "59ce0515cdaf iommu/vt-d: Update DRHD/RMRR/ATSR device scope
caches when PCI hotplug happens" introduces a bug, which fails to
match PCI devices with DMAR device scope entries if PCI path array
in the entry has more than one level.

For example, it fails to handle
[1D2h 0466   1]      Device Scope Entry Type : 01
[1D3h 0467   1]                 Entry Length : 0A
[1D4h 0468   2]                     Reserved : 0000
[1D6h 0470   1]               Enumeration ID : 00
[1D7h 0471   1]               PCI Bus Number : 00
[1D8h 0472   2]                     PCI Path : 1C,04
[1DAh 0474   2]                     PCI Path : 00,02

And cause DMA failure on HP DL980 as:
DMAR:[fault reason 02] Present bit in context entry is clear
dmar: DRHD: handling fault status reg 602
dmar: DMAR:[DMA Read] Request device [02:00.2] fault addr 7f61e000

Reported-and-tested-by: Davidlohr Bueso &lt;davidlohr@hp.com&gt;
Signed-off-by: Jiang Liu &lt;jiang.liu@linux.intel.com&gt;
Signed-off-by: David Woodhouse &lt;David.Woodhouse@intel.com&gt;
</content>
</entry>
<entry>
<title>iommu/vt-d: Fix get_domain_for_dev() handling of upstream PCIe bridges</title>
<updated>2014-04-15T05:01:30+00:00</updated>
<author>
<name>David Woodhouse</name>
<email>David.Woodhouse@intel.com</email>
</author>
<published>2014-04-15T05:01:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=9f05d3fb644bf178c169d9c70dcfe360e3a006ae'/>
<id>urn:sha1:9f05d3fb644bf178c169d9c70dcfe360e3a006ae</id>
<content type='text'>
Commit 146922ec79 ("iommu/vt-d: Make get_domain_for_dev() take struct
device") introduced new variables bridge_bus and bridge_devfn to
identify the upstream PCIe to PCI bridge responsible for the given
target device. Leaving the original bus/devfn variables to identify
the target device itself, now that it is no longer assumed to be PCI
and we can no longer trivially find that information.

However, the patch failed to correctly use the new variables in all
cases; instead using the as-yet-uninitialised 'bus' and 'devfn'
variables.

Reported-by: Alex Williamson &lt;alex.williamson@redhat.com&gt;
Signed-off-by: David Woodhouse &lt;David.Woodhouse@intel.com&gt;
</content>
</entry>
<entry>
<title>iommu/vt-d: fix memory leakage caused by commit ea8ea46</title>
<updated>2014-04-13T12:07:56+00:00</updated>
<author>
<name>Jiang Liu</name>
<email>jiang.liu@linux.intel.com</email>
</author>
<published>2014-04-09T02:20:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=adeb25905c644350baf1f446bcd856517e58060e'/>
<id>urn:sha1:adeb25905c644350baf1f446bcd856517e58060e</id>
<content type='text'>
Commit ea8ea46 "iommu/vt-d: Clean up and fix page table clear/free
behaviour" introduces possible leakage of DMA page tables due to:
        for (pte = page_address(pg); !first_pte_in_page(pte); pte++) {
                if (dma_pte_present(pte) &amp;&amp; !dma_pte_superpage(pte))
                        freelist = dma_pte_list_pagetables(domain, level - 1,
                                                           pte, freelist);
        }

For the first pte in a page, first_pte_in_page(pte) will always be true,
thus dma_pte_list_pagetables() will never be called and leak DMA page
tables if level is bigger than 1.

Signed-off-by: Jiang Liu &lt;jiang.liu@linux.intel.com&gt;
Signed-off-by: David Woodhouse &lt;David.Woodhouse@intel.com&gt;
</content>
</entry>
</feed>
