On 29/03/2019 09:15, Jan Beulich wrote: >>>> On 28.03.19 at 18:50, <andrew.coop...@citrix.com> wrote: >> On 28/03/2019 14:54, Jan Beulich wrote: >>> --- a/xen/drivers/passthrough/x86/iommu.c >>> +++ b/xen/drivers/passthrough/x86/iommu.c >>> @@ -26,6 +26,19 @@ >>> const struct iommu_init_ops *__initdata iommu_init_ops; >>> struct iommu_ops __read_mostly iommu_ops; >>> >>> +int __init iommu_hardware_setup(void) >>> +{ >>> + if ( !iommu_init_ops ) >>> + return -ENODEV; >>> + >>> + if ( !iommu_ops.init ) >>> + iommu_ops = *iommu_init_ops->ops; >>> + else >>> + ASSERT(iommu_ops.init == iommu_init_ops->ops->init); >> What is this ASSERT() intended to catch? We pass through this function >> exactly once, making the else path dead. > iommu_ops may have got set already during x2APIC IR enabling (see > patch 6).
In which case a /* x2apic setup may have previously initialised the IOMMU ops. */ or similar would do nicely, to explain this logic. With that, Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com> ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel