diff options
Diffstat (limited to 'xen/drivers/passthrough/vtd/dmar.c')
-rw-r--r-- | xen/drivers/passthrough/vtd/dmar.c | 10 |
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; |