[SRU][B/C/D] iommu/amd: Reserve and correctly set exclusion range in iova-domain

Jeff Lane jeffrey.lane at canonical.com
Fri Jun 7 17:34:28 UTC 2019

BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1823037

If a device has an exclusion range specified in the IVRS table, this region 
needs to be reserved in the iova-domain of that device. This hasn't happened 
until now and can cause data corruption on data transfered with these devices.

The exlcusion range limit register needs to contain the base-address of the 
last page that is part of the range, as bits 0-11 of this register are treated 
as 0xfff by the hardware for comparisons.

So correctly set the exclusion range in the hardware to the last page which is 
_in_ the range.

This was tested by Dell for 24+ hours with positive test results. Testing 
involved creating multiple directories with a million files each and then 
another script was used across 3-5 threads copying files from one location 
to another.  Prior to using test kernels with these patches applied, the system
would fail within 1 - 2 hours consistently.

[Regression Risk]
Low,this adds memory protection to the driver and has already been applied 
upstream and patched test kernels for all three releases have been tested by 
Dell for 24 hours with no failures noted.

Patches cleanly apply to Bionic, Cosmic and Disco. Bionic and Cosmic require 
both patches, but Disco only requires the second patch (Set exclusion rage 
correctly) as the first patch was already picked up in a previous SRU 
(LP: #1830934)

More information about the kernel-team mailing list