[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |