|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-3.4-testing] VT-d: prevent dom0 to use VT-d HW
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1254409055 -3600
# Node ID 7eaa798200f679148fbd9d74b3fd958b5f8b7079
# Parent a5251bffea427aad74592065dc7fff99fe74f5ce
VT-d: prevent dom0 to use VT-d HW
pv-ops dom0 contains Linux upstream VT-d driver, and will go to enable
it when VT-d is set in kernel config file. It should not enable VT-d
in dom0.
Currently it already zaps ACPI DMAR signature to prevents dom0 using
VT-d HW when VT-d is enabled for Xen. But when VT-d is not enabled for
Xen, and VT-d is set in pv-ops kernel config file, pv-ops dom0 will go
to enable it. This will results in pv-ops dom0 booting failure. This
patch prevents dom0 to use VT-d HW whether VT-d is enabled or disabled
for Xen.
Signed-off-by: Weidong Han <weidong.han@xxxxxxxxx>
xen-unstable changeset: 20181:1c406a505fc0
xen-unstable date: Tue Sep 08 15:10:31 2009 +0100
---
xen/drivers/passthrough/vtd/dmar.c | 15 +++++++++------
1 files changed, 9 insertions(+), 6 deletions(-)
diff -r a5251bffea42 -r 7eaa798200f6 xen/drivers/passthrough/vtd/dmar.c
--- a/xen/drivers/passthrough/vtd/dmar.c Thu Oct 01 15:57:05 2009 +0100
+++ b/xen/drivers/passthrough/vtd/dmar.c Thu Oct 01 15:57:35 2009 +0100
@@ -471,6 +471,12 @@ static int __init acpi_parse_dmar(struct
dmar = (struct acpi_table_dmar *)table;
+ if ( !iommu_enabled )
+ {
+ ret = -EINVAL;
+ goto out;
+ }
+
if ( !dmar->width )
{
dprintk(XENLOG_WARNING VTDPREFIX, "Zero: Invalid DMAR width\n");
@@ -513,9 +519,6 @@ static int __init acpi_parse_dmar(struct
entry_header = ((void *)entry_header + entry_header->length);
}
- /* Zap APCI DMAR signature to prevent dom0 using vt-d HW. */
- dmar->header.signature[0] = '\0';
-
if ( ret )
{
if ( force_iommu )
@@ -529,6 +532,9 @@ static int __init acpi_parse_dmar(struct
}
}
+out:
+ /* Zap ACPI DMAR signature to prevent dom0 using vt-d HW. */
+ dmar->header.signature[0] = '\0';
return ret;
}
@@ -549,9 +555,6 @@ int acpi_dmar_init(void)
if ( force_iommu )
iommu_enabled = 1;
- if ( !iommu_enabled )
- goto fail;
-
rc = parse_dmar_table(acpi_parse_dmar);
if ( rc )
goto fail;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-3.4-testing] VT-d: prevent dom0 to use VT-d HW,
Xen patchbot-3.4-testing <=
|
|
|
|
|