On Thu, Mar 21, 2019 at 08:26:20PM +0000, Andrew Cooper wrote: > It turns out that this code was previously dead. > > c/s dcf41790 " x86/mmcfg/drhd: Move acpi_mmcfg_init() call before calling > acpi_parse_dmar()" resulted in PCI segment 0 now having been initialised > enough for acpi_parse_one_drhd() to not take the > > /* Skip checking if segment is not accessible yet. */ > > path unconditionally. However, some systems have DMAR tables which list > devices which are disabled by user choice (in particular, Dell PowerEdge R740 > with I/O AT DMA disabled), and turning off all IOMMU functionality in this > case is entirely unhelpful behaviour. > > Leave the warning which identifies the problematic devices, but drop the > remaining logic. This leaves the system in better overall state, and working > in the same way that it did in previous releases. > > Reported-by: Igor Druzhinin <igor.druzhi...@citrix.com> > Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com>
Reviewed-by: Roger Pau Monné <roger....@citrix.com> I think this is a more sane behavior. > - if ( invalid_cnt ) > - { > - if ( iommu_workaround_bios_bug && > - invalid_cnt == dmaru->scope.devices_cnt ) > - { > - printk(XENLOG_WARNING VTDPREFIX > - " Workaround BIOS bug: ignoring DRHD (no devices in > its scope are PCI discoverable)\n"); > - > - scope_devices_free(&dmaru->scope); > - iommu_free(dmaru); > - xfree(dmaru); > - } > - else > - { > - printk(XENLOG_WARNING VTDPREFIX > - " DRHD is invalid (some devices in its scope are not > PCI discoverable)\n"); > - printk(XENLOG_WARNING VTDPREFIX > - " Try \"iommu=force\" or > \"iommu=workaround_bios_bug\" if you really want VT-d\n"); > - ret = -EINVAL; > - } The workaround_bios_bug option seems quite pointless anyway, it only prevents propagating the error to the caller if all the devices in the DMAR scope are non-existent, or else the DMAR won't be registered and an error would be returned to the caller. Thanks, Roger. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel