On 2025/09/25 11:00 PM, Aditya Gupta wrote:
> Overview
> ============
> 
> Add support for Power11 powernv machine type.
> 
> As Power11 core is same as Power10, hence much of the code has been reused
> from Power10.
> 
> Power11 PSeries already added in QEMU in:
>   commit 273db89bcaf4 ("ppc/pseries: Add Power11 cpu type")
> 
> Git Tree for Testing
> ====================
> 
> QEMU: https://github.com/adi-g15-ibm/qemu/tree/p11-powernv-v10
> 
> The patches apply cleanly on below commit:
>   95b9e0d2ade5 ("Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu 
> into staging")
> 
> Tests ran:
> * `make check`
> * '-M powernv' / '-M powernv10' / '-M powernv11'
> * '-smp' option tested
> * 'e1000e' device
> * tested changing irq affinities to remote chips for xive functionality
> * compile test with --without-default-devices
> 
> skiboot with Power11 support: https://github.com/open-power/skiboot, since
> commit 785a5e3
> 
> Linux with Power11 support: https://github.com/torvalds/linux, since v6.9-rc1
> 

Boot tested a powernv11 guest with these patches applied.

  # cat /proc/cpuinfo
  processor       : 0
  cpu             : Power11, altivec supported
  clock           : 4000.000000MHz
  revision        : 18.0 (pvr 0082 1200)

  timebase        : 512000000
  platform        : PowerNV
  model           : IBM PowerNV (emulated by qemu)
  machine         : PowerNV IBM PowerNV (emulated by qemu)
  firmware        : OPAL
  MMU             : Radix

Also, booted a KVM guest (L1) inside it.

  [    0.000000][    T0] Hardware name: IBM pSeries (emulated by qemu) Power11 
(architected) 0x821200 0xf000007 of:SLOF,git-ee03ae hv:linux,kvm pSeries

  # cat /proc/cpuinfo
  processor       : 0
  cpu             : Power11 (architected), altivec supported
  clock           : 1000.000000MHz
  revision        : 18.0 (pvr 0082 1200)

  timebase        : 512000000
  platform        : pSeries
  model           : IBM pSeries (emulated by qemu)
  machine         : CHRP IBM pSeries (emulated by qemu)
  MMU             : Radix

Tested-by: Amit Machhiwal <[email protected]>

> Changelog
> =========
> v10:
>   + [PATCH 1/8]: Do same change for Power11 as done for Power10 in commit 
> 46d03b,
>     as changes required for successful build with --without-default-devices
>   + [PATCH 3/8]: Added new patch to remove assuming chip as Power10 in xive2
>   + rebase to upstream
> 
> v9 
> (https://lore.kernel.org/qemu-devel/[email protected]/):
>   + [PATCH 1/7]: apply hunks from commit cf0eb929e59cb, and commit
>     24c8fa968a6d8, for changes that were done for Power10, as those changes
>     make sense for Power11 also
>   + [PATCH 3/7]: fixed build breakage identified with QEMU CI, due to changes
>     in upstream function pointer types
> 
> v8 
> (https://lore.kernel.org/qemu-devel/[email protected]/):
>   + rebase to upstream
>   + propose myself as a powernv reviewer
> 
> v7 
> (https://lore.kernel.org/qemu-devel/[email protected]/):
>   + use Power10 models of homer, sbe, occ, psi, lpc. As they are same.
>   + switch powernv tests to use buildroot images instead of op-build images
>   + add functional test for powernv11
>   - remove dynamic sysbus device for PHBs, so no more dynamic number of
>   PHBs in Power11 as it became complex to handle it and not much used
> 
> v6 
> (https://lore.kernel.org/qemu-devel/[email protected]/):
>   + make Pnv11Chip's parent as PnvChip, instead of Pnv10Chip
>   + rebase on upstream/master
> 
> v5 
> (https://lore.kernel.org/qemu-devel/[email protected]/):
>   + add chiptod
>   + add instance_init for P11 to use P11 models
>   + move patch introducing Pnv11Chip to the last
>   + update skiboot.lid to skiboot's upstream/master
> 
> v4:
>   + patch #5: fix memory leak in pnv_chip_power10_quad_realize
>   - no change in other patches
> 
> v3:
>   + patch #1: version power11 as power11_v2.0
>   + patch #2: split target hw/pseries code into patch #2
>   + patch #3,#4: fix regression due to Power10 and Power11 having same PCR
>   + patch #5: create pnv_chip_power11_dt_populate and split 
> pnv_chip_power10_common_realize as per review
>   + patch #6-#11: no change
>   - remove commit to make Power11 as default
> 
> v2:
>   + split powernv patch into homer,lpc,occ,psi,sbe
>   + reduce code duplication by reusing power10 code
>   + make power11 as default
>   + rebase on qemu upstream/master
>   + add more information in commit descriptions
>   + update docs
>   + update skiboot.lid
> 
> 
> Aditya Gupta (8):
>   ppc/pnv: Introduce Pnv11Chip
>   ppc/pnv: Introduce Power11 PowerNV machine
>   ppc/pnv: Add PnvChipClass handler to get reference to interrupt
>     controller
>   ppc/pnv: Add XIVE2 controller to Power11
>   ppc/pnv: Add PHB5 PCIe Host bridge to Power11
>   ppc/pnv: Add ChipTOD model for Power11
>   tests/powernv: Switch to buildroot images instead of op-build
>   tests/powernv: Add PowerNV test for Power11
> 
>  docs/system/ppc/powernv.rst            |   9 +-
>  hw/intc/pnv_xive2.c                    |   4 +-
>  hw/ppc/pnv.c                           | 560 +++++++++++++++++++++++++
>  hw/ppc/pnv_chiptod.c                   |  59 +++
>  hw/ppc/pnv_core.c                      |  17 +
>  include/hw/ppc/pnv.h                   |  38 ++
>  include/hw/ppc/pnv_chip.h              |   8 +
>  include/hw/ppc/pnv_chiptod.h           |   2 +
>  include/hw/ppc/pnv_xscom.h             |  49 +++
>  tests/functional/ppc64/test_powernv.py |  34 +-
>  10 files changed, 760 insertions(+), 20 deletions(-)
> 
> -- 
> 2.50.1
> 
> 

Reply via email to