pnv_phb3.c: add unique chassis and slot for pnv_phb3_root_port
commit392c278302b8e20a7c593708395a6649452d323b
authorDaniel Henrique Barboza <danielhb413@gmail.com>
Wed, 12 Jan 2022 10:28:27 +0000 (12 11:28 +0100)
committerCédric Le Goater <clg@kaod.org>
Wed, 12 Jan 2022 10:28:27 +0000 (12 11:28 +0100)
tree4884d91869c9f8fa695ddf61e100cda5cf1ebfbf
parent5609400a422809c89ea788e4d0e13124a617582e
pnv_phb3.c: add unique chassis and slot for pnv_phb3_root_port

When creating a pnv_phb3_root_port using the command line, the first
root port is created successfully, but the second fails with the
following error:

qemu-system-ppc64: -device pnv-phb3-root-port,bus=phb3-root.0,id=pcie.3:
Can't add chassis slot, error -16

This error comes from the realize() function of its parent type,
rp_realize() from TYPE_PCIE_ROOT_PORT. pcie_chassis_add_slot() fails
with -EBUSY if there's an existing PCIESlot that has the same
chassis/slot value, regardless of being in a different bus.

One way to prevent this error is simply set chassis and slot values in
the command line. However, since phb3 root buses only supports a single
root port, we can just get an unique chassis/slot value by checking
which root bus the pnv_phb3_root_port is going to be attached, get the
equivalent phb3 device and use its chip-id and index values, which are
guaranteed to be unique.

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20220105212338.49899-2-danielhb413@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
hw/pci-host/pnv_phb3.c