Defining the iommu property as an integer opens the door for confusion (Is it an index or a switch?). Fix this by converting it to a bit property that can be on or off, nothing else. Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> --- hw/device-assignment.c | 7 ++++--- hw/device-assignment.h | 6 +++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/hw/device-assignment.c b/hw/device-assignment.c index 2605bd1..349e864 100644 --- a/hw/device-assignment.c +++ b/hw/device-assignment.c @@ -902,7 +902,7 @@ static int assign_device(AssignedDevice *dev) #ifdef KVM_CAP_IOMMU /* We always enable the IOMMU unless disabled on the command line */ - if (dev->use_iommu) { + if (dev->features & ASSIGNED_DEVICE_USE_IOMMU_MASK) { if (!kvm_check_extension(kvm_state, KVM_CAP_IOMMU)) { fprintf(stderr, "No IOMMU found. Unable to assign device \"%s\"\n", dev->dev.qdev.id); @@ -911,7 +911,7 @@ static int assign_device(AssignedDevice *dev) assigned_dev_data.flags |= KVM_DEV_ASSIGN_ENABLE_IOMMU; } #else - dev->use_iommu = 0; + dev->features &= ~ASSIGNED_DEVICE_USE_IOMMU_MASK; #endif r = kvm_assign_pci_device(kvm_context, &assigned_dev_data); @@ -1538,7 +1538,8 @@ static PCIDeviceInfo assign_info = { .config_write = assigned_dev_pci_write_config, .qdev.props = (Property[]) { DEFINE_PROP("host", AssignedDevice, host, qdev_prop_hostaddr, PCIHostDevice), - DEFINE_PROP_UINT32("iommu", AssignedDevice, use_iommu, 1), + DEFINE_PROP_BIT("iommu", AssignedDevice, features, + ASSIGNED_DEVICE_USE_IOMMU_BIT, true), DEFINE_PROP_STRING("configfd", AssignedDevice, configfd_name), DEFINE_PROP_END_OF_LIST(), }, diff --git a/hw/device-assignment.h b/hw/device-assignment.h index 2f5fa17..4eb5835 100644 --- a/hw/device-assignment.h +++ b/hw/device-assignment.h @@ -74,10 +74,14 @@ typedef struct { PCIRegion *region; } AssignedDevRegion; +#define ASSIGNED_DEVICE_USE_IOMMU_BIT 0 + +#define ASSIGNED_DEVICE_USE_IOMMU_MASK (1 << ASSIGNED_DEVICE_USE_IOMMU_BIT) + typedef struct AssignedDevice { PCIDevice dev; PCIHostDevice host; - uint32_t use_iommu; + uint32_t features; int intpin; uint8_t debug_flags; AssignedDevRegion v_addrs[PCI_NUM_REGIONS - 1]; -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html