aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xen/drivers/passthrough/vtd/dmar.c10
-rw-r--r--xen/include/acpi/actbl2.h1
2 files changed, 8 insertions, 3 deletions
diff --git a/xen/drivers/passthrough/vtd/dmar.c b/xen/drivers/passthrough/vtd/dmar.c
index a88f46b5b3..464c14a38f 100644
--- a/xen/drivers/passthrough/vtd/dmar.c
+++ b/xen/drivers/passthrough/vtd/dmar.c
@@ -255,8 +255,7 @@ static int __init scope_device_count(const void *start, const void *end)
while ( start < end )
{
scope = start;
- if ( (scope->length < MIN_SCOPE_LEN) ||
- (scope->entry_type >= ACPI_DMAR_SCOPE_TYPE_RESERVED) )
+ if ( scope->length < MIN_SCOPE_LEN )
{
dprintk(XENLOG_WARNING VTDPREFIX, "Invalid device scope.\n");
return -EINVAL;
@@ -367,6 +366,13 @@ static int __init acpi_parse_dev_scope(
}
break;
+
+ default:
+ if ( iommu_verbose )
+ printk(XENLOG_WARNING VTDPREFIX "Unknown scope type %#x\n",
+ acpi_scope->entry_type);
+ start += acpi_scope->length;
+ continue;
}
scope->devices[didx++] = PCI_BDF(bus, path->dev, path->fn);
start += acpi_scope->length;
diff --git a/xen/include/acpi/actbl2.h b/xen/include/acpi/actbl2.h
index a28226ab11..87bc6b3f56 100644
--- a/xen/include/acpi/actbl2.h
+++ b/xen/include/acpi/actbl2.h
@@ -303,7 +303,6 @@ enum acpi_dmar_scope_type {
ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
ACPI_DMAR_SCOPE_TYPE_HPET = 4,
- ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */
};
struct acpi_dmar_pci_path {