forked from DASICS-ICT/QEMU-DASICS
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'remotes/legoater/tags/pull-ppc-20220112…
…' into staging ppc 7.0 queue: * New SLOF for PPC970 and POWER5+ (Alexey) * Fixes for POWER5+ pseries (Cedric) * Updates of documentation (Leonardo and Thomas) * First step of exception model cleanup (Fabiano) * User created PHB3/PHB4 devices (Daniel and Cedric) # gpg: Signature made Wed 12 Jan 2022 10:43:21 GMT # gpg: using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1 # gpg: Good signature from "Cédric Le Goater <[email protected]>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: A0F6 6548 F048 95EB FE6B 0B60 51A3 43C7 CFFB ECA1 * remotes/legoater/tags/pull-ppc-20220112: (34 commits) ppc/pnv: use stack->pci_regs[] in pnv_pec_stk_pci_xscom_write() ppc/pnv: turn pnv_phb4_update_regions() into static ppc/pnv: Introduce user creatable pnv-phb4 devices ppc/pnv: turn 'phb' into a pointer in struct PnvPhb4PecStack ppc/pnv: move PHB4 XSCOM init to phb4_realize() ppc/pnv: set phb4 properties in stk_realize() pnv_phb4_pec: use pnv_phb4_pec_get_phb_id() in pnv_pec_dt_xscom() pnv_phb4_pec.c: move pnv_pec_phb_offset() to pnv_phb4.c pnv_phb4.c: change TYPE_PNV_PHB4_ROOT_BUS name pnv_phb3.h: change TYPE_PNV_PHB3_ROOT_BUS name ppc/pnv: Move num_phbs under Pnv8Chip ppc/pnv: Complete user created PHB3 devices ppc/pnv: Reparent user created PHB3 devices to the PnvChip ppc/pnv: Introduce support for user created PHB3 devices pnv_phb4.c: check if root port exists in rc_config functions pnv_phb4.c: make pnv-phb4-root-port user creatable ppc/pnv: Attach PHB3 root port device when defaults are enabled pnv_phb4.c: add unique chassis and slot for pnv_phb4_root_port pnv_phb3.c: add unique chassis and slot for pnv_phb3_root_port target/ppc: Set the correct endianness for powernv memory dumps ... Signed-off-by: Peter Maydell <[email protected]>
- Loading branch information
Showing
19 changed files
with
737 additions
and
600 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1245,7 +1245,7 @@ F: hw/openrisc/openrisc_sim.c | |
|
||
PowerPC Machines | ||
---------------- | ||
405 | ||
405 (ref405ep and taihu) | ||
L: [email protected] | ||
S: Orphan | ||
F: hw/ppc/ppc405_boards.c | ||
|
@@ -1281,6 +1281,7 @@ New World (mac99) | |
M: Mark Cave-Ayland <[email protected]> | ||
L: [email protected] | ||
S: Odd Fixes | ||
F: docs/system/ppc/powermac.rst | ||
F: hw/ppc/mac_newworld.c | ||
F: hw/pci-host/uninorth.c | ||
F: hw/pci-bridge/dec.[hc] | ||
|
@@ -1299,6 +1300,7 @@ Old World (g3beige) | |
M: Mark Cave-Ayland <[email protected]> | ||
L: [email protected] | ||
S: Odd Fixes | ||
F: docs/system/ppc/powermac.rst | ||
F: hw/ppc/mac_oldworld.c | ||
F: hw/pci-host/grackle.c | ||
F: hw/misc/macio/ | ||
|
@@ -1312,6 +1314,7 @@ PReP | |
M: Hervé Poussineau <[email protected]> | ||
L: [email protected] | ||
S: Maintained | ||
F: docs/system/ppc/prep.rst | ||
F: hw/ppc/prep.c | ||
F: hw/ppc/prep_systemio.c | ||
F: hw/ppc/rs6000_mc.c | ||
|
@@ -1324,7 +1327,7 @@ F: include/hw/isa/pc87312.h | |
F: include/hw/rtc/m48t59.h | ||
F: tests/avocado/ppc_prep_40p.py | ||
|
||
sPAPR | ||
sPAPR (pseries) | ||
M: Cédric Le Goater <[email protected]> | ||
M: Daniel Henrique Barboza <[email protected]> | ||
R: David Gibson <[email protected]> | ||
|
@@ -1336,8 +1339,8 @@ F: include/hw/*/spapr* | |
F: hw/*/xics* | ||
F: include/hw/*/xics* | ||
F: pc-bios/slof.bin | ||
F: docs/specs/ppc-spapr-hcalls.txt | ||
F: docs/specs/ppc-spapr-hotplug.txt | ||
F: docs/system/ppc/pseries.rst | ||
F: docs/specs/ppc-spapr-* | ||
F: tests/qtest/spapr* | ||
F: tests/qtest/libqos/*spapr* | ||
F: tests/qtest/rtas* | ||
|
@@ -1348,6 +1351,7 @@ PowerNV (Non-Virtualized) | |
M: Cédric Le Goater <[email protected]> | ||
L: [email protected] | ||
S: Maintained | ||
F: docs/system/ppc/powernv.rst | ||
F: hw/ppc/pnv* | ||
F: hw/intc/pnv* | ||
F: hw/intc/xics_pnv.c | ||
|
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,18 @@ | ||
=================================== | ||
pSeries family boards (``pseries``) | ||
=================================== | ||
|
||
The Power machine para-virtualized environment described by the `Linux on Power | ||
Architecture Reference document (LoPAR) | ||
<https://openpowerfoundation.org/wp-content/uploads/2020/07/LoPAR-20200812.pdf>`_ | ||
is called pSeries. This environment is also known as sPAPR, System p guests, or | ||
simply Power Linux guests (although it is capable of running other operating | ||
systems, such as AIX). | ||
The Power machine para-virtualized environment described by the Linux on Power | ||
Architecture Reference ([LoPAR]_) document is called pSeries. This environment | ||
is also known as sPAPR, System p guests, or simply Power Linux guests (although | ||
it is capable of running other operating systems, such as AIX). | ||
|
||
Even though pSeries is designed to behave as a guest environment, it is also | ||
capable of acting as a hypervisor OS, providing, on that role, nested | ||
virtualization capabilities. | ||
|
||
Supported devices | ||
----------------- | ||
================= | ||
|
||
* Multi processor support for many Power processors generations: POWER7, | ||
POWER7+, POWER8, POWER8NVL, POWER9, and Power10. Support for POWER5+ exists, | ||
|
@@ -26,12 +25,12 @@ Supported devices | |
* PCIe device pass through. | ||
|
||
Missing devices | ||
--------------- | ||
=============== | ||
|
||
* SPICE support. | ||
|
||
Firmware | ||
-------- | ||
======== | ||
|
||
`SLOF <https://github.com/aik/SLOF>`_ (Slimline Open Firmware) is an | ||
implementation of the `IEEE 1275-1994, Standard for Boot (Initialization | ||
|
@@ -42,14 +41,14 @@ QEMU includes a prebuilt image of SLOF which is updated when a more recent | |
version is required. | ||
|
||
Build directions | ||
---------------- | ||
================ | ||
|
||
.. code-block:: bash | ||
./configure --target-list=ppc64-softmmu && make | ||
Running instructions | ||
-------------------- | ||
==================== | ||
|
||
Someone can select the pSeries machine type by running QEMU with the following | ||
options: | ||
|
@@ -59,7 +58,7 @@ options: | |
qemu-system-ppc64 -M pseries <other QEMU arguments> | ||
sPAPR devices | ||
------------- | ||
============= | ||
|
||
The sPAPR specification defines a set of para-virtualized devices, which are | ||
also supported by the pSeries machine in QEMU and can be instantiated with the | ||
|
@@ -102,11 +101,9 @@ device, or specify one with an ID | |
NVRAM device with ``-global spapr-nvram.drive=pfid``. | ||
|
||
sPAPR specification | ||
^^^^^^^^^^^^^^^^^^^ | ||
------------------- | ||
|
||
The main source of documentation on the sPAPR standard is the `Linux on Power | ||
Architecture Reference document (LoPAR) | ||
<https://openpowerfoundation.org/wp-content/uploads/2020/07/LoPAR-20200812.pdf>`_. | ||
The main source of documentation on the sPAPR standard is the [LoPAR]_ document. | ||
However, documentation specific to QEMU's implementation of the specification | ||
can also be found in QEMU documentation: | ||
|
||
|
@@ -124,7 +121,7 @@ Other documentation available in QEMU docs directory: | |
(``/docs/specs/ppc-spapr-uv-hcalls.txt``). | ||
|
||
Switching between the KVM-PR and KVM-HV kernel module | ||
----------------------------------------------------- | ||
===================================================== | ||
|
||
Currently, there are two implementations of KVM on Power, ``kvm_hv.ko`` and | ||
``kvm_pr.ko``. | ||
|
@@ -139,7 +136,7 @@ possible to switch between the two modes with the ``kvm-type`` parameter: | |
instead. | ||
|
||
KVM-PR | ||
^^^^^^ | ||
------ | ||
|
||
KVM-PR uses the so-called **PR**\ oblem state of the PPC CPUs to run the guests, | ||
i.e. the virtual machine is run in user mode and all privileged instructions | ||
|
@@ -166,7 +163,7 @@ In order to run KVM-PR guests with POWER9 processors, someone will need to start | |
QEMU with ``kernel_irqchip=off`` command line option. | ||
|
||
KVM-HV | ||
^^^^^^ | ||
------ | ||
|
||
KVM-HV uses the hypervisor mode of more recent Power processors, that allow | ||
access to the bare metal hardware directly. Although POWER7 had this capability, | ||
|
@@ -188,7 +185,7 @@ CPUs generations, e.g. you can run a POWER7 guest on a POWER8 host by using | |
``-cpu POWER8,compat=power7`` as parameter to QEMU. | ||
|
||
Modules support | ||
--------------- | ||
=============== | ||
|
||
As noticed in the sections above, each module can run in a different | ||
environment. The following table shows with which environment each module can | ||
|
@@ -230,9 +227,45 @@ nested. Combinations not shown in the table are not available. | |
.. [3] Introduced on Power10 machines. | ||
POWER (PAPR) Protected Execution Facility (PEF) | ||
----------------------------------------------- | ||
|
||
Protected Execution Facility (PEF), also known as Secure Guest support | ||
is a feature found on IBM POWER9 and POWER10 processors. | ||
|
||
If a suitable firmware including an Ultravisor is installed, it adds | ||
an extra memory protection mode to the CPU. The ultravisor manages a | ||
pool of secure memory which cannot be accessed by the hypervisor. | ||
|
||
When this feature is enabled in QEMU, a guest can use ultracalls to | ||
enter "secure mode". This transfers most of its memory to secure | ||
memory, where it cannot be eavesdropped by a compromised hypervisor. | ||
|
||
Launching | ||
^^^^^^^^^ | ||
|
||
To launch a guest which will be permitted to enter PEF secure mode:: | ||
|
||
$ qemu-system-ppc64 \ | ||
-object pef-guest,id=pef0 \ | ||
-machine confidential-guest-support=pef0 \ | ||
... | ||
|
||
Live Migration | ||
^^^^^^^^^^^^^^ | ||
|
||
Live migration is not yet implemented for PEF guests. For | ||
consistency, QEMU currently prevents migration if the PEF feature is | ||
enabled, whether or not the guest has actually entered secure mode. | ||
|
||
|
||
Maintainer contact information | ||
------------------------------ | ||
============================== | ||
|
||
Cédric Le Goater <[email protected]> | ||
|
||
Daniel Henrique Barboza <[email protected]> | ||
|
||
.. [LoPAR] `Linux on Power Architecture Reference document (LoPAR) revision | ||
2.9 <https://openpowerfoundation.org/wp-content/uploads/2020/07/LoPAR-20200812.pdf>`_. |
Oops, something went wrong.