[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 13/16] pci-assign: propagate errors from assigned_de
From: |
Laszlo Ersek |
Subject: |
[Qemu-devel] [PATCH 13/16] pci-assign: propagate errors from assigned_dev_register_regions() |
Date: |
Thu, 10 Apr 2014 10:24:42 +0200 |
Signed-off-by: Laszlo Ersek <address@hidden>
---
hw/i386/kvm/pci-assign.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/hw/i386/kvm/pci-assign.c b/hw/i386/kvm/pci-assign.c
index 3a904e8..9aa92a1 100644
--- a/hw/i386/kvm/pci-assign.c
+++ b/hw/i386/kvm/pci-assign.c
@@ -392,13 +392,14 @@ static uint8_t pci_find_cap_offset(PCIDevice *d, uint8_t
cap, uint8_t start)
pos += PCI_CAP_LIST_NEXT;
}
return 0;
}
-static int assigned_dev_register_regions(PCIRegion *io_regions,
- unsigned long regions_num,
- AssignedDevice *pci_dev)
+static void assigned_dev_register_regions(PCIRegion *io_regions,
+ unsigned long regions_num,
+ AssignedDevice *pci_dev,
+ Error **errp)
{
uint32_t i;
PCIRegion *cur_region = io_regions;
for (i = 0; i < regions_num; i++, cur_region++) {
@@ -423,13 +424,13 @@ static int assigned_dev_register_regions(PCIRegion
*io_regions,
cur_region->resource_fd,
(off_t)0);
if (pci_dev->v_addrs[i].u.r_virtbase == MAP_FAILED) {
pci_dev->v_addrs[i].u.r_virtbase = NULL;
- error_report("%s: Error: Couldn't mmap 0x%" PRIx64 "!",
- __func__, cur_region->base_addr);
- return -1;
+ error_setg_errno(errp, errno, "Couldn't mmap 0x%" PRIx64 "!",
+ cur_region->base_addr);
+ return;
}
pci_dev->v_addrs[i].r_size = cur_region->size;
pci_dev->v_addrs[i].e_size = 0;
@@ -494,11 +495,10 @@ static int assigned_dev_register_regions(PCIRegion
*io_regions,
&pci_dev->v_addrs[i].container);
}
}
/* success */
- return 0;
}
static void get_real_id(const char *devpath, const char *idname, uint16_t *val,
Error **errp)
{
@@ -1794,13 +1794,16 @@ static int assigned_initfn(struct PCIDevice *pci_dev)
goto out;
}
}
/* handle real device's MMIO/PIO BARs */
- if (assigned_dev_register_regions(dev->real_device.regions,
- dev->real_device.region_number,
- dev)) {
+ assigned_dev_register_regions(dev->real_device.regions,
+ dev->real_device.region_number, dev,
+ &local_err);
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
goto out;
}
/* handle interrupt routing */
e_intx = dev->dev.config[PCI_INTERRUPT_PIN] - 1;
--
1.8.3.1
- Re: [Qemu-devel] [PATCH 09/16] pci-assign: assignment should fail if we can't read config space, (continued)
- [Qemu-devel] [PATCH 05/16] pci-assign: propagate errors from get_real_id(), Laszlo Ersek, 2014/04/10
- [Qemu-devel] [PATCH 11/16] pci-assign: propagate errors from assigned_device_pci_cap_init(), Laszlo Ersek, 2014/04/10
- [Qemu-devel] [PATCH 13/16] pci-assign: propagate errors from assigned_dev_register_regions(),
Laszlo Ersek <=
- [Qemu-devel] [PATCH 14/16] pci-assign: propagate errors from assign_device(), Laszlo Ersek, 2014/04/10
- [Qemu-devel] [PATCH 15/16] pci-assign: propagate errors from assign_intx(), Laszlo Ersek, 2014/04/10
- [Qemu-devel] [PATCH 12/16] pci-assign: propagate errors from assigned_dev_register_msix_mmio(), Laszlo Ersek, 2014/04/10
- [Qemu-devel] [PATCH 16/16] pci-assign: assigned_initfn(): set monitor error in common error handler, Laszlo Ersek, 2014/04/10