intel_iommu, amd_iommu: allow UNMAP notifiers
x86 vIOMMUs still lack of a complete IOMMU notifier mechanism. Before that is achieved, let's open a door for vhost DMAR support, which only requires cache invalidations (UNMAP operations). Meanwhile, convert hw_error() to error_report() and exit(1), to make the error messages cleaner and obvious (no CPU registers will be dumped). Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <1474606948-14391-4-git-send-email-peterx@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5bf3d31903
commit
a3276f786c
@ -21,6 +21,7 @@
|
||||
*/
|
||||
#include "qemu/osdep.h"
|
||||
#include "hw/i386/amd_iommu.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "trace.h"
|
||||
|
||||
/* used AMD-Vi MMIO registers */
|
||||
@ -1072,9 +1073,12 @@ static void amdvi_iommu_notify_flag_changed(MemoryRegion *iommu,
|
||||
{
|
||||
AMDVIAddressSpace *as = container_of(iommu, AMDVIAddressSpace, iommu);
|
||||
|
||||
hw_error("device %02x.%02x.%x requires iommu notifier which is not "
|
||||
"currently supported", as->bus_num, PCI_SLOT(as->devfn),
|
||||
PCI_FUNC(as->devfn));
|
||||
if (new & IOMMU_NOTIFIER_MAP) {
|
||||
error_report("device %02x.%02x.%x requires iommu notifier which is not "
|
||||
"currently supported", as->bus_num, PCI_SLOT(as->devfn),
|
||||
PCI_FUNC(as->devfn));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
static void amdvi_init(AMDVIState *s)
|
||||
|
@ -1980,10 +1980,14 @@ static void vtd_iommu_notify_flag_changed(MemoryRegion *iommu,
|
||||
{
|
||||
VTDAddressSpace *vtd_as = container_of(iommu, VTDAddressSpace, iommu);
|
||||
|
||||
hw_error("Device at bus %s addr %02x.%d requires iommu notifier which "
|
||||
"is currently not supported by intel-iommu emulation",
|
||||
vtd_as->bus->qbus.name, PCI_SLOT(vtd_as->devfn),
|
||||
PCI_FUNC(vtd_as->devfn));
|
||||
if (new & IOMMU_NOTIFIER_MAP) {
|
||||
error_report("Device at bus %s addr %02x.%d requires iommu "
|
||||
"notifier which is currently not supported by "
|
||||
"intel-iommu emulation",
|
||||
vtd_as->bus->qbus.name, PCI_SLOT(vtd_as->devfn),
|
||||
PCI_FUNC(vtd_as->devfn));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
static const VMStateDescription vtd_vmstate = {
|
||||
|
Loading…
Reference in New Issue
Block a user