qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RFC PATCH v2 0/4] QEMU/openbios: PPC Software TLB support in the G4 fam


From: Fabiano Rosas
Subject: [RFC PATCH v2 0/4] QEMU/openbios: PPC Software TLB support in the G4 family
Date: Tue, 30 Nov 2021 20:01:19 -0300

Hi all,

Recap:

- QEMU enables 7450 SW TLB search by default;
- OpenBIOS does not know about SW TLB (vectors 0x1000, 0x1100, 0x1200);
- OpenBIOS does not know about 7450s PVRs.

Proposed solutions:

a) find another firmware/guest OS code that supports the feature;

b) implement the switching of the feature in QEMU and have the guest
code enable it only when supported. That would take some fiddling with
the MMU code to: merge POWERPC_MMU_SOFT_74xx into POWERPC_MMU_32B,
check the HID0[STEN] bit, figure out how to switch from HW TLB miss to
SW TLB miss on demand, block access to the TLBMISS register (and
others) when the feature is off, and so on;

c) leave the feature enabled in QEMU and implement the software TLB
miss handlers in openbios. The UM provides sample code, so this is
easy;

d) remove support for software TLB search for the 7450 family and
switch the cpus to the POWERPC_MMU_32B model. This is by far the
easiest solution, but could cause problems for any (which?) guest OS
code that actually uses the feature. All of the existing code for the
POWERPC_MMU_SOFT_74xx MMU model would probably be removed since it
would be dead code then;

v1:
https://lists.nongnu.org/archive/html/qemu-ppc/2021-11/msg00289.html

v2:

This series corresponds to option d) above.

- patch 1 moves all of the 7450 CPUs* into the POWERPC_MMU_32B MMU
  model, which does the same as the POWERPC_MMU_SOFT_74xx minus the
  software TLB handling. It also removes the instructions (tlbld, tlbli)
  and SPRs (TLBMISS, PTEHI, PTELO) from the 7450s as these facilities
  are only used along with the software TLB.

  *- except for 7448, which is seen by QEMU as a 7400.

- patch 2 removes the instructions and SPRs just like above, but from
  the e600 CPU. The e600 already uses the POWERPC_MMU_32B MMU model,
  so it already has software TLB disabled.

- patch 3 removes all of the now dead code for the 74xx software
  TLB. I left a note in the code with keywords to help with grep in
  case people search for the feature in the future.

- patch 4 adds smoke tests for all of the 74xx CPUs. These are broken
  pending the OpenBIOS patch.

For OpenBIOS:

We'd need to merge the patch 2/2 from the previous series:

https://lists.nongnu.org/archive/html/qemu-ppc/2021-11/msg00290.html
Message ID: 20211119134431.406753-3-farosas@linux.ibm.com

this is just for the new PVRs. There is no need to add the handlers.

Thanks!

Fabiano Rosas (4):
  target/ppc: Disable software TLB for the 7450 family
  target/ppc: Disable unused facilities in the e600 CPU
  target/ppc: Remove the software TLB model of 7450 CPUs
  tests/avocado: ppc: Add smoke tests for MPC7400 and MPC7450 families

 target/ppc/cpu-qom.h      |   6 +-
 target/ppc/cpu.h          |   4 +-
 target/ppc/cpu_init.c     |  57 ++++--------------
 target/ppc/excp_helper.c  |  29 ---------
 target/ppc/helper.h       |   2 -
 target/ppc/mmu_common.c   |  19 ------
 target/ppc/mmu_helper.c   |  31 ----------
 target/ppc/translate.c    |  26 --------
 tests/avocado/ppc_74xx.py | 123 ++++++++++++++++++++++++++++++++++++++
 9 files changed, 140 insertions(+), 157 deletions(-)
 create mode 100644 tests/avocado/ppc_74xx.py

-- 
2.33.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]