|
|
9ae3a8 |
From 38023d511ff6770e4ff1d2a4e3fdcc3820a45b3f Mon Sep 17 00:00:00 2001
|
|
|
9ae3a8 |
From: Alex Williamson <alex.williamson@redhat.com>
|
|
|
9ae3a8 |
Date: Fri, 29 Sep 2017 21:45:08 +0200
|
|
|
9ae3a8 |
Subject: [PATCH 08/27] hw/vfio/pci: use name field in format strings
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
RH-Author: Alex Williamson <alex.williamson@redhat.com>
|
|
|
9ae3a8 |
Message-id: <20170929214508.16765.18033.stgit@gimli.home>
|
|
|
9ae3a8 |
Patchwork-id: 76766
|
|
|
9ae3a8 |
O-Subject: [RHEL-7.5 qemu-kvm PATCH 08/16] hw/vfio/pci: use name field in format strings
|
|
|
9ae3a8 |
Bugzilla: 1494181
|
|
|
9ae3a8 |
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Auger Eric <eric.auger@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
From: Eric Auger <eric.auger@linaro.org>
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Upstream: df92ee444884ba66b5cc95e3ff3d5579f89ed4aa
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Signed-off-by: Eric Auger <eric.auger@linaro.org>
|
|
|
9ae3a8 |
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
|
|
|
9ae3a8 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
9ae3a8 |
---
|
|
|
9ae3a8 |
hw/misc/vfio.c | 193 ++++++++++++++++++++-------------------------------------
|
|
|
9ae3a8 |
1 file changed, 68 insertions(+), 125 deletions(-)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
|
|
|
9ae3a8 |
index 92414b9..0d88313 100644
|
|
|
9ae3a8 |
--- a/hw/misc/vfio.c
|
|
|
9ae3a8 |
+++ b/hw/misc/vfio.c
|
|
|
9ae3a8 |
@@ -375,8 +375,7 @@ static void vfio_intx_interrupt(void *opaque)
|
|
|
9ae3a8 |
return;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) Pin %c\n", __func__, vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function,
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) Pin %c\n", __func__, vdev->vbasedev.name,
|
|
|
9ae3a8 |
'A' + vdev->intx.pin);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vdev->intx.pending = true;
|
|
|
9ae3a8 |
@@ -396,8 +395,7 @@ static void vfio_eoi(VFIODevice *vbasedev)
|
|
|
9ae3a8 |
return;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) EOI\n", __func__, vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) EOI\n", __func__, vbasedev->name);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vdev->intx.pending = false;
|
|
|
9ae3a8 |
qemu_set_irq(vdev->pdev.irq[vdev->intx.pin], 0);
|
|
|
9ae3a8 |
@@ -466,9 +464,7 @@ static void vfio_enable_intx_kvm(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vdev->intx.kvm_accel = true;
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) KVM INTx accel enabled\n",
|
|
|
9ae3a8 |
- __func__, vdev->host.domain, vdev->host.bus,
|
|
|
9ae3a8 |
- vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) KVM INTx accel enabled\n", __func__, vdev->vbasedev.name);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
return;
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
@@ -520,9 +516,7 @@ static void vfio_disable_intx_kvm(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
/* If we've missed an event, let it re-fire through QEMU */
|
|
|
9ae3a8 |
vfio_unmask_single_irqindex(&vdev->vbasedev, VFIO_PCI_INTX_IRQ_INDEX);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) KVM INTx accel disabled\n",
|
|
|
9ae3a8 |
- __func__, vdev->host.domain, vdev->host.bus,
|
|
|
9ae3a8 |
- vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) KVM INTx accel disabled\n", __func__, vdev->vbasedev.name);
|
|
|
9ae3a8 |
#endif
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
@@ -541,9 +535,8 @@ static void vfio_update_irq(PCIDevice *pdev)
|
|
|
9ae3a8 |
return; /* Nothing changed */
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) IRQ moved %d -> %d\n", __func__,
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, vdev->intx.route.irq, route.irq);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) IRQ moved %d -> %d\n", __func__,
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, vdev->intx.route.irq, route.irq);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vfio_disable_intx_kvm(vdev);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
@@ -618,8 +611,7 @@ static int vfio_enable_intx(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vdev->interrupt = VFIO_INT_INTx;
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x)\n", __func__, vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s)\n", __func__, vdev->vbasedev.name);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
return 0;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
@@ -641,8 +633,7 @@ static void vfio_disable_intx(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vdev->interrupt = VFIO_INT_NONE;
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x)\n", __func__, vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s)\n", __func__, vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
@@ -669,9 +660,8 @@ static void vfio_msi_interrupt(void *opaque)
|
|
|
9ae3a8 |
abort();
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) vector %d 0x%"PRIx64"/0x%x\n", __func__,
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, nr, msg.address, msg.data);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) vector %d 0x%"PRIx64"/0x%x\n", __func__,
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, nr, msg.address, msg.data);
|
|
|
9ae3a8 |
#endif
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
if (vdev->interrupt == VFIO_INT_MSIX) {
|
|
|
9ae3a8 |
@@ -778,9 +768,7 @@ static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr,
|
|
|
9ae3a8 |
VFIOMSIVector *vector;
|
|
|
9ae3a8 |
int ret;
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) vector %d used\n", __func__,
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, nr);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) vector %d used\n", __func__, vdev->vbasedev.name, nr);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vector = &vdev->msi_vectors[nr];
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
@@ -866,9 +854,7 @@ static void vfio_msix_vector_release(PCIDevice *pdev, unsigned int nr)
|
|
|
9ae3a8 |
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev);
|
|
|
9ae3a8 |
VFIOMSIVector *vector = &vdev->msi_vectors[nr];
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) vector %d released\n", __func__,
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, nr);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) vector %d released\n", __func__, vdev->vbasedev.name, nr);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
* There are still old guests that mask and unmask vectors on every
|
|
|
9ae3a8 |
@@ -931,8 +917,7 @@ static void vfio_enable_msix(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
error_report("vfio: msix_set_vector_notifiers failed");
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x)\n", __func__, vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s)\n", __func__, vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
static void vfio_enable_msi(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
@@ -1008,9 +993,8 @@ retry:
|
|
|
9ae3a8 |
return;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) Enabled %d MSI vectors\n", __func__,
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, vdev->nr_vectors);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) Enabled %d MSI vectors\n", __func__,
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, vdev->nr_vectors);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
static void vfio_disable_msi_common(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
@@ -1060,8 +1044,7 @@ static void vfio_disable_msix(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vfio_disable_msi_common(vdev);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x)\n", __func__, vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s)\n", __func__, vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
static void vfio_disable_msi(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
@@ -1069,8 +1052,7 @@ static void vfio_disable_msi(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
vfio_disable_irqindex(&vdev->vbasedev, VFIO_PCI_MSI_IRQ_INDEX);
|
|
|
9ae3a8 |
vfio_disable_msi_common(vdev);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x)\n", __func__, vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s)\n", __func__, vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
static void vfio_update_msi(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
@@ -1206,8 +1188,7 @@ static void vfio_pci_load_rom(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
return;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("Device %04x:%02x:%02x.%x ROM:\n", vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("Device %s ROM:\n", vdev->vbasedev.name);
|
|
|
9ae3a8 |
DPRINTF(" size: 0x%lx, offset: 0x%lx, flags: 0x%lx\n",
|
|
|
9ae3a8 |
(unsigned long)reg_info.size, (unsigned long)reg_info.offset,
|
|
|
9ae3a8 |
(unsigned long)reg_info.flags);
|
|
|
9ae3a8 |
@@ -1218,9 +1199,7 @@ static void vfio_pci_load_rom(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
if (!vdev->rom_size) {
|
|
|
9ae3a8 |
vdev->rom_read_failed = true;
|
|
|
9ae3a8 |
error_report("vfio-pci: Cannot read device rom at "
|
|
|
9ae3a8 |
- "%04x:%02x:%02x.%x\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ "%s\n", vdev->vbasedev.name);
|
|
|
9ae3a8 |
error_printf("Device option ROM contents are probably invalid "
|
|
|
9ae3a8 |
"(check dmesg).\nSkip option ROM probe with rombar=0, "
|
|
|
9ae3a8 |
"or load from file with romfile=\n");
|
|
|
9ae3a8 |
@@ -1261,9 +1240,8 @@ static uint64_t vfio_rom_read(void *opaque, hwaddr addr, unsigned size)
|
|
|
9ae3a8 |
memcpy(&val, vdev->rom + addr,
|
|
|
9ae3a8 |
(addr < vdev->rom_size) ? MIN(size, vdev->rom_size - addr) : 0);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x, 0x%"HWADDR_PRIx", 0x%x) = 0x%"PRIx64"\n",
|
|
|
9ae3a8 |
- __func__, vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, addr, size, val);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s, 0x%"HWADDR_PRIx", 0x%x) = 0x%"PRIx64"\n",
|
|
|
9ae3a8 |
+ __func__, vdev->vbasedev.name, addr, size, val);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
return val;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
@@ -1360,8 +1338,7 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%04x:%02x:%02x.%x ROM size 0x%x\n", vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function, size);
|
|
|
9ae3a8 |
+ DPRINTF("%s ROM size 0x%x\n", vdev->vbasedev.name, size);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
snprintf(name, sizeof(name), "vfio[%04x:%02x:%02x.%x].rom",
|
|
|
9ae3a8 |
vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
@@ -1496,10 +1473,9 @@ static uint64_t vfio_generic_window_quirk_read(void *opaque,
|
|
|
9ae3a8 |
data = vfio_pci_read_config(&vdev->pdev,
|
|
|
9ae3a8 |
quirk->data.address_val + offset, size);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s read(%04x:%02x:%02x.%x:BAR%d+0x%"HWADDR_PRIx", %d) = 0x%"
|
|
|
9ae3a8 |
- PRIx64"\n", memory_region_name(&quirk->mem), vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function,
|
|
|
9ae3a8 |
- quirk->data.bar, addr, size, data);
|
|
|
9ae3a8 |
+ DPRINTF("%s read(%s:BAR%d+0x%"HWADDR_PRIx", %d) = 0x%"
|
|
|
9ae3a8 |
+ PRIx64"\n", memory_region_name(&quirk->mem),
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, quirk->data.bar, addr, size, data);
|
|
|
9ae3a8 |
} else {
|
|
|
9ae3a8 |
data = vfio_region_read(&vdev->bars[quirk->data.bar].region,
|
|
|
9ae3a8 |
addr + quirk->data.base_offset, size);
|
|
|
9ae3a8 |
@@ -1545,10 +1521,9 @@ static void vfio_generic_window_quirk_write(void *opaque, hwaddr addr,
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vfio_pci_write_config(&vdev->pdev,
|
|
|
9ae3a8 |
quirk->data.address_val + offset, data, size);
|
|
|
9ae3a8 |
- DPRINTF("%s write(%04x:%02x:%02x.%x:BAR%d+0x%"HWADDR_PRIx", 0x%"
|
|
|
9ae3a8 |
+ DPRINTF("%s write(%s:BAR%d+0x%"HWADDR_PRIx", 0x%"
|
|
|
9ae3a8 |
PRIx64", %d)\n", memory_region_name(&quirk->mem),
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, quirk->data.bar, addr, data, size);
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, quirk->data.bar, addr, data, size);
|
|
|
9ae3a8 |
return;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
@@ -1581,10 +1556,9 @@ static uint64_t vfio_generic_quirk_read(void *opaque,
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
data = vfio_pci_read_config(&vdev->pdev, addr - offset, size);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s read(%04x:%02x:%02x.%x:BAR%d+0x%"HWADDR_PRIx", %d) = 0x%"
|
|
|
9ae3a8 |
- PRIx64"\n", memory_region_name(&quirk->mem), vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function,
|
|
|
9ae3a8 |
- quirk->data.bar, addr + base, size, data);
|
|
|
9ae3a8 |
+ DPRINTF("%s read(%s:BAR%d+0x%"HWADDR_PRIx", %d) = 0x%"
|
|
|
9ae3a8 |
+ PRIx64"\n", memory_region_name(&quirk->mem),
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, quirk->data.bar, addr + base, size, data);
|
|
|
9ae3a8 |
} else {
|
|
|
9ae3a8 |
data = vfio_region_read(&vdev->bars[quirk->data.bar].region,
|
|
|
9ae3a8 |
addr + base, size);
|
|
|
9ae3a8 |
@@ -1611,10 +1585,9 @@ static void vfio_generic_quirk_write(void *opaque, hwaddr addr,
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vfio_pci_write_config(&vdev->pdev, addr - offset, data, size);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s write(%04x:%02x:%02x.%x:BAR%d+0x%"HWADDR_PRIx", 0x%"
|
|
|
9ae3a8 |
+ DPRINTF("%s write(%s:BAR%d+0x%"HWADDR_PRIx", 0x%"
|
|
|
9ae3a8 |
PRIx64", %d)\n", memory_region_name(&quirk->mem),
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, quirk->data.bar, addr + base, data, size);
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, quirk->data.bar, addr + base, data, size);
|
|
|
9ae3a8 |
} else {
|
|
|
9ae3a8 |
vfio_region_write(&vdev->bars[quirk->data.bar].region,
|
|
|
9ae3a8 |
addr + base, data, size);
|
|
|
9ae3a8 |
@@ -1685,9 +1658,8 @@ static void vfio_vga_probe_ati_3c3_quirk(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
QLIST_INSERT_HEAD(&vdev->vga.region[QEMU_PCI_VGA_IO_HI].quirks,
|
|
|
9ae3a8 |
quirk, next);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("Enabled ATI/AMD quirk 0x3c3 BAR4for device %04x:%02x:%02x.%x\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("Enabled ATI/AMD quirk 0x3c3 BAR4for device %s\n",
|
|
|
9ae3a8 |
+ vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
@@ -1728,9 +1700,8 @@ static void vfio_probe_ati_bar4_window_quirk(VFIOPCIDevice *vdev, int nr)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, quirk, next);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("Enabled ATI/AMD BAR4 window quirk for device %04x:%02x:%02x.%x\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("Enabled ATI/AMD BAR4 window quirk for device %s\n",
|
|
|
9ae3a8 |
+ vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
@@ -1763,9 +1734,8 @@ static void vfio_probe_ati_bar2_4000_quirk(VFIOPCIDevice *vdev, int nr)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, quirk, next);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("Enabled ATI/AMD BAR2 0x4000 quirk for device %04x:%02x:%02x.%x\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("Enabled ATI/AMD BAR2 0x4000 quirk for device %s\n",
|
|
|
9ae3a8 |
+ vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
@@ -1898,9 +1868,8 @@ static void vfio_vga_probe_nvidia_3d0_quirk(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
QLIST_INSERT_HEAD(&vdev->vga.region[QEMU_PCI_VGA_IO_HI].quirks,
|
|
|
9ae3a8 |
quirk, next);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("Enabled NVIDIA VGA 0x3d0 quirk for device %04x:%02x:%02x.%x\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("Enabled NVIDIA VGA 0x3d0 quirk for device %s\n",
|
|
|
9ae3a8 |
+ vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
@@ -1989,9 +1958,8 @@ static void vfio_probe_nvidia_bar5_window_quirk(VFIOPCIDevice *vdev, int nr)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, quirk, next);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("Enabled NVIDIA BAR5 window quirk for device %04x:%02x:%02x.%x\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("Enabled NVIDIA BAR5 window quirk for device %s\n",
|
|
|
9ae3a8 |
+ vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
@@ -2029,9 +1997,8 @@ static void vfio_probe_nvidia_bar0_88000_quirk(VFIOPCIDevice *vdev, int nr)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, quirk, next);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("Enabled NVIDIA BAR0 0x88000 quirk for device %04x:%02x:%02x.%x\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("Enabled NVIDIA BAR0 0x88000 quirk for device %s\n",
|
|
|
9ae3a8 |
+ vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
@@ -2068,9 +2035,8 @@ static void vfio_probe_nvidia_bar0_1800_quirk(VFIOPCIDevice *vdev, int nr)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, quirk, next);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("Enabled NVIDIA BAR0 0x1800 quirk for device %04x:%02x:%02x.%x\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("Enabled NVIDIA BAR0 0x1800 quirk for device %s\n",
|
|
|
9ae3a8 |
+ vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
@@ -2156,9 +2122,8 @@ static uint32_t vfio_pci_read_config(PCIDevice *pdev, uint32_t addr, int len)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
val = (emu_val & emu_bits) | (phys_val & ~emu_bits);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x, @0x%x, len=0x%x) %x\n", __func__,
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, addr, len, val);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s, @0x%x, len=0x%x) %x\n", __func__,
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, addr, len, val);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
return val;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
@@ -2169,9 +2134,8 @@ static void vfio_pci_write_config(PCIDevice *pdev, uint32_t addr,
|
|
|
9ae3a8 |
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev);
|
|
|
9ae3a8 |
uint32_t val_le = cpu_to_le32(val);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x, @0x%x, 0x%x, len=0x%x)\n", __func__,
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, addr, val, len);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s, @0x%x, 0x%x, len=0x%x)\n", __func__,
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, addr, val, len);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/* Write everything to VFIO, let it filter out what we can't write */
|
|
|
9ae3a8 |
if (pwrite(vdev->vbasedev.fd, &val_le, len, vdev->config_offset + addr)
|
|
|
9ae3a8 |
@@ -2421,8 +2385,7 @@ static int vfio_setup_msi(VFIOPCIDevice *vdev, int pos)
|
|
|
9ae3a8 |
msi_maskbit = !!(ctrl & PCI_MSI_FLAGS_MASKBIT);
|
|
|
9ae3a8 |
entries = 1 << ((ctrl & PCI_MSI_FLAGS_QMASK) >> 1);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%04x:%02x:%02x.%x PCI MSI CAP @0x%x\n", vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function, pos);
|
|
|
9ae3a8 |
+ DPRINTF("%s PCI MSI CAP @0x%x\n", vdev->vbasedev.name, pos);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
ret = msi_init(&vdev->pdev, pos, entries, msi_64bit, msi_maskbit);
|
|
|
9ae3a8 |
if (ret < 0) {
|
|
|
9ae3a8 |
@@ -2483,10 +2446,8 @@ static int vfio_early_setup_msix(VFIOPCIDevice *vdev)
|
|
|
9ae3a8 |
vdev->msix->pba_offset = pba & ~PCI_MSIX_FLAGS_BIRMASK;
|
|
|
9ae3a8 |
vdev->msix->entries = (ctrl & PCI_MSIX_FLAGS_QSIZE) + 1;
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%04x:%02x:%02x.%x "
|
|
|
9ae3a8 |
- "PCI MSI-X CAP @0x%x, BAR %d, offset 0x%x, entries %d\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, pos, vdev->msix->table_bar,
|
|
|
9ae3a8 |
+ DPRINTF("%s PCI MSI-X CAP @0x%x, BAR %d, offset 0x%x, entries %d\n",
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, pos, vdev->msix->table_bar,
|
|
|
9ae3a8 |
vdev->msix->table_offset, vdev->msix->entries);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/*
|
|
|
9ae3a8 |
@@ -2895,9 +2856,7 @@ static void vfio_check_pcie_flr(VFIOPCIDevice *vdev, uint8_t pos)
|
|
|
9ae3a8 |
uint32_t cap = pci_get_long(vdev->pdev.config + pos + PCI_EXP_DEVCAP);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
if (cap & PCI_EXP_DEVCAP_FLR) {
|
|
|
9ae3a8 |
- DPRINTF("%04x:%02x:%02x.%x Supports FLR via PCIe cap\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s Supports FLR via PCIe cap\n", vdev->vbasedev.name);
|
|
|
9ae3a8 |
vdev->has_flr = true;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
@@ -2907,9 +2866,7 @@ static void vfio_check_pm_reset(VFIOPCIDevice *vdev, uint8_t pos)
|
|
|
9ae3a8 |
uint16_t csr = pci_get_word(vdev->pdev.config + pos + PCI_PM_CTRL);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
if (!(csr & PCI_PM_CTRL_NO_SOFT_RESET)) {
|
|
|
9ae3a8 |
- DPRINTF("%04x:%02x:%02x.%x Supports PM reset\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s Supports PM reset\n", vdev->vbasedev.name);
|
|
|
9ae3a8 |
vdev->has_pm_reset = true;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
@@ -2919,9 +2876,7 @@ static void vfio_check_af_flr(VFIOPCIDevice *vdev, uint8_t pos)
|
|
|
9ae3a8 |
uint8_t cap = pci_get_byte(vdev->pdev.config + pos + PCI_AF_CAP);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
if ((cap & PCI_AF_CAP_TP) && (cap & PCI_AF_CAP_FLR)) {
|
|
|
9ae3a8 |
- DPRINTF("%04x:%02x:%02x.%x Supports FLR via AF cap\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s Supports FLR via AF cap\n", vdev->vbasedev.name);
|
|
|
9ae3a8 |
vdev->has_flr = true;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
@@ -3072,8 +3027,7 @@ static int vfio_pci_hot_reset(VFIOPCIDevice *vdev, bool single)
|
|
|
9ae3a8 |
int ret, i, count;
|
|
|
9ae3a8 |
bool multi = false;
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) %s\n", __func__, vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function,
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) %s\n", __func__, vdev->vbasedev.name,
|
|
|
9ae3a8 |
single ? "one" : "multi");
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vfio_pci_pre_reset(vdev);
|
|
|
9ae3a8 |
@@ -3105,9 +3059,7 @@ static int vfio_pci_hot_reset(VFIOPCIDevice *vdev, bool single)
|
|
|
9ae3a8 |
goto out_single;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%04x:%02x:%02x.%x: hot reset dependent devices:\n",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s: hot reset dependent devices:\n", vdev->vbasedev.name);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
/* Verify that we have all the groups required */
|
|
|
9ae3a8 |
for (i = 0; i < info->count; i++) {
|
|
|
9ae3a8 |
@@ -3135,10 +3087,9 @@ static int vfio_pci_hot_reset(VFIOPCIDevice *vdev, bool single)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
if (!group) {
|
|
|
9ae3a8 |
if (!vdev->has_pm_reset) {
|
|
|
9ae3a8 |
- error_report("vfio: Cannot reset device %04x:%02x:%02x.%x, "
|
|
|
9ae3a8 |
+ error_report("vfio: Cannot reset device %s, "
|
|
|
9ae3a8 |
"depends on group %d which is not owned.",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function, devices[i].group_id);
|
|
|
9ae3a8 |
+ vdev->vbasedev.name, devices[i].group_id);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
ret = -EPERM;
|
|
|
9ae3a8 |
goto out;
|
|
|
9ae3a8 |
@@ -3153,8 +3104,7 @@ static int vfio_pci_hot_reset(VFIOPCIDevice *vdev, bool single)
|
|
|
9ae3a8 |
if (vfio_pci_host_match(&host, &tmp->host)) {
|
|
|
9ae3a8 |
if (single) {
|
|
|
9ae3a8 |
DPRINTF("vfio: found another in-use device "
|
|
|
9ae3a8 |
- "%04x:%02x:%02x.%x\n", host.domain, host.bus,
|
|
|
9ae3a8 |
- host.slot, host.function);
|
|
|
9ae3a8 |
+ "%s\n", tmp->vbasedev.name);
|
|
|
9ae3a8 |
ret = -EINVAL;
|
|
|
9ae3a8 |
goto out_single;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
@@ -3201,9 +3151,7 @@ static int vfio_pci_hot_reset(VFIOPCIDevice *vdev, bool single)
|
|
|
9ae3a8 |
ret = ioctl(vdev->vbasedev.fd, VFIO_DEVICE_PCI_HOT_RESET, reset);
|
|
|
9ae3a8 |
g_free(reset);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%04x:%02x:%02x.%x hot reset: %s\n", vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function,
|
|
|
9ae3a8 |
- ret ? "%m" : "Success");
|
|
|
9ae3a8 |
+ DPRINTF("%s hot reset: %s\n", vdev->vbasedev.name, ret ? "%m" : "Success");
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
out:
|
|
|
9ae3a8 |
/* Re-enable INTx on affected devices */
|
|
|
9ae3a8 |
@@ -3691,10 +3639,9 @@ static int vfio_get_device(VFIOGroup *group, const char *name,
|
|
|
9ae3a8 |
} else if (irq_info.count == 1) {
|
|
|
9ae3a8 |
vdev->pci_aer = true;
|
|
|
9ae3a8 |
} else {
|
|
|
9ae3a8 |
- error_report("vfio: %04x:%02x:%02x.%x "
|
|
|
9ae3a8 |
+ error_report("vfio: %s "
|
|
|
9ae3a8 |
"Could not enable error recovery for the device",
|
|
|
9ae3a8 |
- vdev->host.domain, vdev->host.bus, vdev->host.slot,
|
|
|
9ae3a8 |
- vdev->host.function);
|
|
|
9ae3a8 |
+ vdev->vbasedev.name);
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
error:
|
|
|
9ae3a8 |
@@ -3971,8 +3918,7 @@ static int vfio_initfn(PCIDevice *pdev)
|
|
|
9ae3a8 |
return -errno;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x) group %d\n", __func__, vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function, groupid);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s) group %d\n", __func__, vdev->vbasedev.name, groupid);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
group = vfio_get_group(groupid);
|
|
|
9ae3a8 |
if (!group) {
|
|
|
9ae3a8 |
@@ -4111,16 +4057,14 @@ static void vfio_pci_reset(DeviceState *dev)
|
|
|
9ae3a8 |
PCIDevice *pdev = DO_UPCAST(PCIDevice, qdev, dev);
|
|
|
9ae3a8 |
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
- DPRINTF("%s(%04x:%02x:%02x.%x)\n", __func__, vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s(%s)\n", __func__, vdev->vbasedev.name);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
vfio_pci_pre_reset(vdev);
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
if (vdev->vbasedev.reset_works &&
|
|
|
9ae3a8 |
(vdev->has_flr || !vdev->has_pm_reset) &&
|
|
|
9ae3a8 |
!ioctl(vdev->vbasedev.fd, VFIO_DEVICE_RESET)) {
|
|
|
9ae3a8 |
- DPRINTF("%04x:%02x:%02x.%x FLR/VFIO_DEVICE_RESET\n", vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s FLR/VFIO_DEVICE_RESET\n", vdev->vbasedev.name);
|
|
|
9ae3a8 |
goto post_reset;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
@@ -4132,8 +4076,7 @@ static void vfio_pci_reset(DeviceState *dev)
|
|
|
9ae3a8 |
/* If nothing else works and the device supports PM reset, use it */
|
|
|
9ae3a8 |
if (vdev->vbasedev.reset_works && vdev->has_pm_reset &&
|
|
|
9ae3a8 |
!ioctl(vdev->vbasedev.fd, VFIO_DEVICE_RESET)) {
|
|
|
9ae3a8 |
- DPRINTF("%04x:%02x:%02x.%x PCI PM Reset\n", vdev->host.domain,
|
|
|
9ae3a8 |
- vdev->host.bus, vdev->host.slot, vdev->host.function);
|
|
|
9ae3a8 |
+ DPRINTF("%s PCI PM Reset\n", vdev->vbasedev.name);
|
|
|
9ae3a8 |
goto post_reset;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
--
|
|
|
9ae3a8 |
1.8.3.1
|
|
|
9ae3a8 |
|