Ping.
About cleanup:
1. When realize()/init() fail, PCI device will free the config space
memory, so the necessary cleanup I can find until now is: MemoryRegion
object. Maybe I missed something to cleanup, hope for comments.
2. certain instance: move the msi/msxi init func to the beginning of the
realize()/init() func, to avoid cleanup work.
@Markus: hope I didn`t miss anything you mentioned in last review;)
On 12/15/2015 06:43 PM, Cao jin wrote:
msi_init() & msix_init() are supporting functions for PCI devices. catch the
errors they produced and report.
V2 changelog:
1. Modify as per Markus`s review
a. Try to cleanup on function fail, as possible as I can.
b. For .init() function, use error_report_err() and return non-zero value.
c. For .realize(), propagate the error.
d. Special case: TYPE_ICH9_AHCI, it is a on-board device initialized with
machine init, so don`t bother to cleanup on failure, as process will exit
anyway.
Cao jin (2):
Add param Error** to msi_init() & modify the callers
Add param Error** to msix_init() & modify the callers
hw/audio/intel-hda.c | 10 ++++-
hw/block/nvme.c | 32 +++++++++-----
hw/ide/ich.c | 2 +-
hw/misc/ivshmem.c | 7 ++-
hw/net/rocker/rocker.c | 10 +++--
hw/net/vmxnet3.c | 39 +++++++++++------
hw/pci-bridge/ioh3420.c | 7 ++-
hw/pci-bridge/pci_bridge_dev.c | 8 +++-
hw/pci-bridge/xio3130_downstream.c | 8 +++-
hw/pci-bridge/xio3130_upstream.c | 8 +++-
hw/pci/msi.c | 18 ++++++--
hw/pci/msix.c | 20 ++++++---
hw/scsi/megasas.c | 35 +++++++++++----
hw/scsi/vmw_pvscsi.c | 13 ++++--
hw/usb/hcd-xhci.c | 88 +++++++++++++++++++++-----------------
hw/vfio/pci.c | 28 ++++++------
hw/virtio/virtio-bus.c | 3 ++
hw/virtio/virtio-pci.c | 64 +++++++++++++--------------
include/hw/pci/msi.h | 4 +-
include/hw/pci/msix.h | 5 ++-
20 files changed, 264 insertions(+), 145 deletions(-)
--
Yours Sincerely,
Cao Jin