xics: report errors with the QEMU Error API
Using the return value to report errors is error prone: - xics_alloc() returns -1 on error but spapr_vio_busdev_realize() errors on 0 - xics_alloc_block() returns the unclear value of ics->offset - 1 on error but both rtas_ibm_change_msi() and spapr_phb_realize() error on 0 This patch adds an errp argument to xics_alloc() and xics_alloc_block() to report errors. The return value of these functions is a valid IRQ number if errp is NULL. It is undefined otherwise. The corresponding error traces get promotted to error messages. Note that the "can't allocate IRQ" error message in spapr_vio_busdev_realize() also moves to xics_alloc(). Similar error message consolidation isn't really applicable to xics_alloc_block() because callers have extra context (device config address, MSI or MSIX). This fixes the issues mentioned above. Based on previous work from Brian W. Hart. Signed-off-by:Greg Kurz <gkurz@linux.vnet.ibm.com> Signed-off-by:
David Gibson <david@gibson.dropbear.id.au>
Showing
- hw/intc/xics.c 9 additions, 4 deletionshw/intc/xics.c
- hw/ppc/spapr_events.c 2 additions, 1 deletionhw/ppc/spapr_events.c
- hw/ppc/spapr_pci.c 10 additions, 6 deletionshw/ppc/spapr_pci.c
- hw/ppc/spapr_vio.c 4 additions, 3 deletionshw/ppc/spapr_vio.c
- include/hw/ppc/xics.h 3 additions, 2 deletionsinclude/hw/ppc/xics.h
- trace-events 0 additions, 2 deletionstrace-events
Loading
Please register or sign in to comment