On 31/05/2022 22:49, Daniel Henrique Barboza wrote:
> Hi,
>
> This v2 is considerable different from the first version due to the
> review provided by Mark Cave-Ayland.
>
> We're now preserving all PnvPHB3/4/5 implementations already in place.
> The PnvPHB device now acts as a base/proxy of the existing PHBs, which
> are turned into backends of the base PnvPHB device.
>
> QOM is being more used this time by passing through properties to the
> PHB backends from the base device, and by setting the phb->version
> via global machine properties in each machine.
>
> The changes made impact both user creatable and default devices, meaning
> that now the powernv machines are using the PnvPHB base device in all
> circunstances.
>
> The one thing that I didn't change from v1 is the root port revamp. I
> didn't find enough reason to do the same thing we did with the PnvPHBs,
> given that all that differs them is the reset() callback of
> phb4_root_port. This means that patches 14-17 from v1 are still mostly
> the same.
>
>
> Changes from v1:
> - lots of changes in patches 1-6 and 7 due to the change of direction
> - patch 10 from v1: removed
> - PnvPHB.version is now being removed in patch 16
> - several other minor changes due to changes in the initial patches
> - v1 link: https://lists.gnu.org/archive/html/qemu-devel/2022-05/msg01410.html
>
> Daniel Henrique Barboza (16):
> ppc/pnv: add PHB3 bus init helper
> ppc/pnv: add pnv_get_phb3_child()
> ppc/pnv: add PnvPHB base/proxy device
> ppc/pnv: change PnvPHB3 to be a PnvPHB backend
> ppc/pnv: user created pnv-phb for powernv8
> ppc/pnv: add PHB4 bus init helper
> ppc/pnv: change PnvPHB4 to be a PnvPHB backend
> ppc/pnv: user created pnv-phb for powernv9
> ppc/pnv: change pnv_phb4_get_pec() to also retrieve chip10->pecs
> ppc/pnv: user creatable pnv-phb for powernv10
> ppc/pnv: add pnv-phb-root-port device
> ppc/pnv: remove pnv-phb3-root-port
> ppc/pnv: remove pnv-phb4-root-port
> ppc/pnv: remove 'phb_rootport_typename' in pnv_phb_realize()
> ppc/pnv: remove pecc->rp_model
> ppc/pnv: remove PnvPHB4.version
>
> hw/pci-host/meson.build | 3 +-
> hw/pci-host/pnv_phb.c | 219 ++++++++++++++++++++++++++++++++
> hw/pci-host/pnv_phb.h | 56 ++++++++
> hw/pci-host/pnv_phb3.c | 144 ++++++++-------------
> hw/pci-host/pnv_phb4.c | 226 ++++++++++++++-------------------
> hw/pci-host/pnv_phb4_pec.c | 14 +-
> hw/ppc/pnv.c | 78 ++++++++++--
> include/hw/pci-host/pnv_phb3.h | 12 +-
> include/hw/pci-host/pnv_phb4.h | 18 +--
> include/hw/ppc/pnv.h | 4 +-
> 10 files changed, 512 insertions(+), 262 deletions(-)
> create mode 100644 hw/pci-host/pnv_phb.c
> create mode 100644 hw/pci-host/pnv_phb.h
I've had a quick look over the series, and whilst I'm not overly familiar with the
PMV PHB side, this looks much better to me from a QOM/qdev modelling perspective.
I've added a few comments but in general I'm fairly happy with the way this is going.
ATB,
Mark.