mbox series

[v3,00/10] user creatable pnv-phb4 devices

Message ID 20220110143346.455901-1-danielhb413@gmail.com
Headers show
Series user creatable pnv-phb4 devices | expand

Message

Daniel Henrique Barboza Jan. 10, 2022, 2:33 p.m. UTC
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(-)

Comments

Cédric Le Goater Jan. 10, 2022, 4:25 p.m. UTC | #1
On 1/10/22 15:33, Daniel Henrique Barboza wrote:
> 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

I have taken Patches 10, 2, 3 in this order. There is still some PHB4
code outside the PHB4 realize routine and this is making the code too
complex. We are getting closer !

Could you use the 'ppc/pnv:' prefix ?

Thanks,

C.