Hi, This v3 contains new versions of pnv-phb4 exclusive patches from version 2. Patches 1-10 are already accepted.
I changed how patch 9 (v2 patch 17) works by doing everything possible in extra patches/cleanups beforehand, and then using patch 9 to flip the switch in a single step. This means that handling the default initialization of pnv-phb4s is done at the same time we enable user creatable pnv-phb4s. There's also a change in how XSCOM initializion is being handled. We're not using a flag to do a partial XSCOM initialization during phb4_realize() anymore. Intead, we moved XSCOM initialization code, as less intrusive as we could, to phb4_realize(). This time I also took the precaution of testing the default case (i.e. running without -nodefaults) in every patch. v2 was breaking this default run between some patches. changes from v2: - former patch 16: removed - patch 10 (v2 18): unchanged - patches 4,5,7,8: new - patch 9 (former 17): * added g_assert() if stack == NULL * added a comment explaining why we shouldn't assert on user error with wrong chip-id/index values - minor changes across the patches due to the design changes - v2 link: https://lists.gnu.org/archive/html/qemu-devel/2022-01/msg00671.html Daniel Henrique Barboza (10): pnv_phb4.c: introduce pnv_phb4_set_stack_phb_props() pnv_phb4_pec.c: move pnv_pec_phb_offset() to pnv_phb4.c pnv_phb4_pec: use pnv_phb4_pec_get_phb_id() in pnv_pec_dt_xscom() pnv_phb4_pec.c: remove stack 'phb-id' alias pnv_phb4_pec.c: move phb4 properties setup to pec_realize() ppc/pnv: turn 'phb' into a pointer in struct PnvPhb4PecStack ppc/pnv: move PHB4 related XSCOM init to phb4_realize() pnv_phb4.c: check stack->phb not NULL in phb4_update_regions() ppc/pnv: Introduce user creatable pnv-phb4 devices pnv_phb4.c: change TYPE_PNV_PHB4_ROOT_BUS name hw/pci-host/pnv_phb4.c | 162 ++++++++++++++++++++++++++++++++- hw/pci-host/pnv_phb4_pec.c | 58 +++++------- hw/ppc/pnv.c | 2 + include/hw/pci-host/pnv_phb4.h | 12 ++- 4 files changed, 191 insertions(+), 43 deletions(-) -- 2.33.1