Cao jin <caoj.f...@cn.fujitsu.com> writes: > detailed error info could show user about how to use it. > > Signed-off-by: Cao jin <caoj.f...@cn.fujitsu.com> > --- > hw/pci-bridge/xio3130_downstream.c | 5 +++++ > 1 file changed, 5 insertions(+) > > When I learned to use root/upstream/downstream port like this: > qemu-system-x86_64 -M q35 -device ioh3420,bus=pcie.0,id=br1 -device > x3130-upstream,id=up,bus=br1 -device xio3130-downstream,id=down,bus=up > -device e1000,bus=down,id=net0 xxx... > downstream port just show me "Device initialization failed", while I don`t > really know why at first. So it maybe good to let user know how to use it > correctly. > > diff --git a/hw/pci-bridge/xio3130_downstream.c > b/hw/pci-bridge/xio3130_downstream.c > index b3a6479..86b7970 100644 > --- a/hw/pci-bridge/xio3130_downstream.c > +++ b/hw/pci-bridge/xio3130_downstream.c > @@ -23,6 +23,7 @@ > #include "hw/pci/msi.h" > #include "hw/pci/pcie.h" > #include "xio3130_downstream.h" > +#include "qemu/error-report.h" > > #define PCI_DEVICE_ID_TI_XIO3130D 0x8233 /* downstream port */ > #define XIO3130_REVISION 0x1 > @@ -89,6 +90,10 @@ static int xio3130_downstream_initfn(PCIDevice *d) > pcie_chassis_create(s->chassis); > rc = pcie_chassis_add_slot(s); > if (rc < 0) { > + error_report("Slot number is reduplicate(chassis = %d, slot = %d). " > + "Slot #(default 0) is unique within a chassis, chassis #" > + "(default 0) is unique in the system. Please change chassis > # " > + "or slot #.", s->chassis, s->slot); > goto err_pcie_cap; > } > pcie_cap_arifwd_init(d); > -- > 2.1.0
This covers one out of six error paths, and it doesn't work for QMP. Please convert the device to realize() instead. For an example, check out commit 28b07e7.