aboutsummaryrefslogtreecommitdiffstats
path: root/xen/drivers/passthrough/vtd/dmar.c
diff options
context:
space:
mode:
Diffstat (limited to 'xen/drivers/passthrough/vtd/dmar.c')
-rw-r--r--xen/drivers/passthrough/vtd/dmar.c10
1 files changed, 8 insertions, 2 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;