[SRU][B/C/D] iommu/amd: Reserve and correctly set exclusion range in iova-domain
jeffrey.lane at canonical.com
Fri Jun 7 17:34:28 UTC 2019
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.
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
More information about the kernel-team