Re: [PATCH 1/2] x86/amd-iommu: enable iommu before attaching devices

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Vivek Goyal
Date: Monday, April 5, 2010 - 7:17 am

On Sat, Apr 03, 2010 at 07:38:36PM +0200, Joerg Roedel wrote:

And by default valid PTEs are not present (except for some unity mappings
as specified by ACPI tables), so we will end the transaction with
IO_PAGE_FAULT? I am assuming that we will not set unity mappings for
kernel reserved area and so either an in-flight DMA will not be allowed
and IO_PAGE_FAULT will be logged or it will be allowed to some unity
mapping which is not mapped to kdump kernel area hence no corruption of
capture kernel?


Ok, so in case of pass through, I think one just needs to make sure that
don't use iommu=pt in second kernel if one did not use iommu=pt in first kernel.
Otherwise you can redirect the the in-flight DMAs in second kernel to an
entirely unintended physical memory.


So following seems to be the summary.

- Don't disable AMD IOMMU after crash in machine_crash_shutdown(), because
  disabling it can direct in-flight DMAs to unintended physical meory
  areas and can corrupt other data structures.

- Once the iommu is enabled in second kernel, most likely in-flight DMAs
  will end with IO_PAGE_FAULT (iommu!=pt). Only selective unity mapping
  areas will be setup based on ACPI tables and these should be BIOS region
  and should not overlap with kdump reserved memory. iommu=pt should also
  be safe if iommu=pt was used in first kernel also.  

- Only small window where in-flight DMA can corrupt things is when we
  are initializing iommu in second kernel. (We first disable iommu and then
  enable it back). During this small period translation will be disabled and
  some IO can go to unintended address. And there does not seem to be any easy
  way to plug this hole.

Have I got it right?
 
Thanks
Vivek
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH] amd iommu: force flush of iommu prior during s ..., Eric W. Biederman, (Wed Mar 31, 11:43 am)
Re: [PATCH] amd iommu: force flush of iommu prior during s ..., Eric W. Biederman, (Wed Mar 31, 11:57 am)
Re: [PATCH] amd iommu: force flush of iommu prior during s ..., Eric W. Biederman, (Wed Mar 31, 12:51 pm)
Re: [PATCH] amd iommu: force flush of iommu prior during s ..., Eric W. Biederman, (Wed Mar 31, 9:04 pm)
Re: [PATCH 1/2] x86/amd-iommu: enable iommu before attachi ..., Vivek Goyal, (Mon Apr 5, 7:17 am)