Message ID | 20220105212338.49899-6-danielhb413@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | user creatable pnv-phb3/pnv-phb4 devices | expand |
On 1/5/22 22:23, Daniel Henrique Barboza wrote: > pnv_phb4_rc_config_read() and pnv_phb4_rc_config_write() are asserting > the existence of the root port. The root port is now optional, and there > will be cases where a pnv-phb4 device won't have a root port attached. > > Instead of asserting, check if the root port exists before read/writing > into it. > > Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Cédric Le Goater <clg@kaod.org> Thanks, C. > --- > hw/pci-host/pnv_phb4.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c > index 14827f8464..83dedc878a 100644 > --- a/hw/pci-host/pnv_phb4.c > +++ b/hw/pci-host/pnv_phb4.c > @@ -152,7 +152,10 @@ static void pnv_phb4_rc_config_write(PnvPHB4 *phb, unsigned off, > } > > pdev = pci_find_device(pci->bus, 0, 0); > - assert(pdev); > + if (!pdev) { > + phb_error(phb, "rc_config_write device not found\n"); > + return; > + } > > pci_host_config_write_common(pdev, off, PHB_RC_CONFIG_SIZE, > bswap32(val), 4); > @@ -171,7 +174,10 @@ static uint64_t pnv_phb4_rc_config_read(PnvPHB4 *phb, unsigned off, > } > > pdev = pci_find_device(pci->bus, 0, 0); > - assert(pdev); > + if (!pdev) { > + phb_error(phb, "rc_config_read device not found\n"); > + return ~0ull; > + } > > val = pci_host_config_read_common(pdev, off, PHB_RC_CONFIG_SIZE, 4); > return bswap32(val); >
diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 14827f8464..83dedc878a 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -152,7 +152,10 @@ static void pnv_phb4_rc_config_write(PnvPHB4 *phb, unsigned off, } pdev = pci_find_device(pci->bus, 0, 0); - assert(pdev); + if (!pdev) { + phb_error(phb, "rc_config_write device not found\n"); + return; + } pci_host_config_write_common(pdev, off, PHB_RC_CONFIG_SIZE, bswap32(val), 4); @@ -171,7 +174,10 @@ static uint64_t pnv_phb4_rc_config_read(PnvPHB4 *phb, unsigned off, } pdev = pci_find_device(pci->bus, 0, 0); - assert(pdev); + if (!pdev) { + phb_error(phb, "rc_config_read device not found\n"); + return ~0ull; + } val = pci_host_config_read_common(pdev, off, PHB_RC_CONFIG_SIZE, 4); return bswap32(val);
pnv_phb4_rc_config_read() and pnv_phb4_rc_config_write() are asserting the existence of the root port. The root port is now optional, and there will be cases where a pnv-phb4 device won't have a root port attached. Instead of asserting, check if the root port exists before read/writing into it. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- hw/pci-host/pnv_phb4.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)