Kaynağa Gözat

AMD IOMMU: enable device isolation per default

Impact: makes device isolation the default for AMD IOMMU

Some device drivers showed double-free bugs of DMA memory while testing
them with AMD IOMMU. If all devices share the same protection domain
this can lead to data corruption and data loss. Prevent this by putting
each device into its own protection domain per default.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Joerg Roedel 16 yıl önce
ebeveyn
işleme
3ce1f93c6d

+ 1 - 1
Documentation/kernel-parameters.txt

@@ -294,7 +294,7 @@ and is between 256 and 4096 characters. It is defined in the file
 			Possible values are:
 			Possible values are:
 			isolate - enable device isolation (each device, as far
 			isolate - enable device isolation (each device, as far
 			          as possible, will get its own protection
 			          as possible, will get its own protection
-			          domain)
+			          domain) [default]
 			share - put every device behind one IOMMU into the
 			share - put every device behind one IOMMU into the
 				same protection domain
 				same protection domain
 			fullflush - enable flushing of IO/TLB entries when
 			fullflush - enable flushing of IO/TLB entries when

+ 1 - 1
arch/x86/kernel/amd_iommu_init.c

@@ -121,7 +121,7 @@ u16 amd_iommu_last_bdf;			/* largest PCI device id we have
 LIST_HEAD(amd_iommu_unity_map);		/* a list of required unity mappings
 LIST_HEAD(amd_iommu_unity_map);		/* a list of required unity mappings
 					   we find in ACPI */
 					   we find in ACPI */
 unsigned amd_iommu_aperture_order = 26; /* size of aperture in power of 2 */
 unsigned amd_iommu_aperture_order = 26; /* size of aperture in power of 2 */
-int amd_iommu_isolate;			/* if 1, device isolation is enabled */
+int amd_iommu_isolate = 1;		/* if 1, device isolation is enabled */
 bool amd_iommu_unmap_flush;		/* if true, flush on every unmap */
 bool amd_iommu_unmap_flush;		/* if true, flush on every unmap */
 
 
 LIST_HEAD(amd_iommu_list);		/* list of all AMD IOMMUs in the
 LIST_HEAD(amd_iommu_list);		/* list of all AMD IOMMUs in the