mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
ppc patch queue for 2019-08-21
First ppc and spapr pull request for qemu-4.2. Includes: * Some TCG emulation fixes and performance improvements * Support for the mffsl instruction in TCG * Added missing DPDES SPR * Some enhancements to the emulation of the XIVE interrupt controller * Cleanups to spapr MSI management * Some new suspend/resume infrastructure and a draft suspend implementation for spapr * New spapr hypercall for TPM communication (will be needed for secure guests under an Ultravisor) * Fix several memory leaks And a few other assorted fixes. -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEdfRlhq5hpmzETofcbDjKyiDZs5IFAl1c8bwACgkQbDjKyiDZ s5Ko6hAA1Y1xOreKTUP9UtAIaipfdasOMOcGYQ+MMovh05Zn0CwmB0uukeIzbnhi hU3qMue6Q0EAt5F9d9z4YWRZqkgsAOBd7SVHpSouoY6DOtIsL9Tc0jTrpr6z8t0L j4TYZYlJUybKMocj/8YayTALMZf2myh5A+oxDGPQHqYNWYGCEcttsFbcoeWQbAXG eXrGDuSzXDXJSKej99ty/tpSjbJXDbRcvMv+v3v6F+tHWhNke3Ku8s7niDy3fIZU lU1Sbz0/UnjKXpCWI/WRBFFWrr1bYICvKPzjK1tNJgA/HhAp37IIsF/j/5kmmF0Y dxOCf3kRBhGi5/KKDFrVWwdTiU0CdJ4iF/NvaNlZGZ+oSTZzANz6O/nlAjcBlbt6 nAJRB4irKkDpL0slwDhl+oF73kFXMUokNgqeaMXE03agMapHrHfmxHs7yL5lAnxf I0hyfAUYTZBc1yd8dxEtmEoFYGE9OXU5jZC4BcV8GcrT1tK3ZVzsALetRF2Sm1wm wW16B0V6szsDd67cwJdPIs3tR6ZSxX2D6/vhK4mK77TM9TAN7nEMJBFNwjNbnttD QLRhFnIZQ61Ja+tDI0aV37bSM32Mi43bYRksh2FujgaYpX92Z0QfsDf9NtM9yQab Ihbq7KJ/bK4m9OvmWTUO4CKrCbnzMEzL+ncFamoO2PcvG9uTk+M= =E+7d -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.2-20190821' into staging ppc patch queue for 2019-08-21 First ppc and spapr pull request for qemu-4.2. Includes: * Some TCG emulation fixes and performance improvements * Support for the mffsl instruction in TCG * Added missing DPDES SPR * Some enhancements to the emulation of the XIVE interrupt controller * Cleanups to spapr MSI management * Some new suspend/resume infrastructure and a draft suspend implementation for spapr * New spapr hypercall for TPM communication (will be needed for secure guests under an Ultravisor) * Fix several memory leaks And a few other assorted fixes. # gpg: Signature made Wed 21 Aug 2019 08:24:44 BST # gpg: using RSA key 75F46586AE61A66CC44E87DC6C38CACA20D9B392 # gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>" [full] # gpg: aka "David Gibson (Red Hat) <dgibson@redhat.com>" [full] # gpg: aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>" [full] # gpg: aka "David Gibson (kernel.org) <dwg@kernel.org>" [unknown] # Primary key fingerprint: 75F4 6586 AE61 A66C C44E 87DC 6C38 CACA 20D9 B392 * remotes/dgibson/tags/ppc-for-4.2-20190821: (42 commits) ppc: Fix emulated single to double denormalized conversions ppc: Fix emulated INFINITY and NAN conversions ppc: conform to processor User's Manual for xscvdpspn ppc: Add support for 'mffsl' instruction target/ppc: Add Directed Privileged Door-bell Exception State (DPDES) SPR spapr/xive: Mask the EAS when allocating an IRQ spapr: Implement better workaround in spapr-vty device spapr/irq: Drop spapr_irq_msi_reset() spapr/pci: Free MSIs during reset spapr/pci: Consolidate de-allocation of MSIs ppc: remove idle_timer logic spapr: Implement ibm,suspend-me i386: use machine class ->wakeup method machine: Add wakeup method to MachineClass ppc/xive: Improve 'info pic' support ppc/xive: Provide silent escalation support ppc/xive: Provide unconditional escalation support ppc/xive: Provide escalation support ppc/xive: Provide backlog support ppc/xive: Implement TM_PULL_OS_CTX special command ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
e65472c7bc
47 changed files with 1419 additions and 613 deletions
76
docs/specs/ppc-spapr-uv-hcalls.txt
Normal file
76
docs/specs/ppc-spapr-uv-hcalls.txt
Normal file
|
@ -0,0 +1,76 @@
|
|||
On PPC64 systems supporting Protected Execution Facility (PEF), system
|
||||
memory can be placed in a secured region where only an "ultravisor"
|
||||
running in firmware can provide to access it. pseries guests on such
|
||||
systems can communicate with the ultravisor (via ultracalls) to switch to a
|
||||
secure VM mode (SVM) where the guest's memory is relocated to this secured
|
||||
region, making its memory inaccessible to normal processes/guests running on
|
||||
the host.
|
||||
|
||||
The various ultracalls/hypercalls relating to SVM mode are currently
|
||||
only documented internally, but are planned for direct inclusion into the
|
||||
public OpenPOWER version of the PAPR specification (LoPAPR/LoPAR). An internal
|
||||
ACR has been filed to reserve a hypercall number range specific to this
|
||||
use-case to avoid any future conflicts with the internally-maintained PAPR
|
||||
specification. This document summarizes some of these details as they relate
|
||||
to QEMU.
|
||||
|
||||
== hypercalls needed by the ultravisor ==
|
||||
|
||||
Switching to SVM mode involves a number of hcalls issued by the ultravisor
|
||||
to the hypervisor to orchestrate the movement of guest memory to secure
|
||||
memory and various other aspects SVM mode. Numbers are assigned for these
|
||||
hcalls within the reserved range 0xEF00-0xEF80. The below documents the
|
||||
hcalls relevant to QEMU.
|
||||
|
||||
- H_TPM_COMM (0xef10)
|
||||
|
||||
For TPM_COMM_OP_EXECUTE operation:
|
||||
Send a request to a TPM and receive a response, opening a new TPM session
|
||||
if one has not already been opened.
|
||||
|
||||
For TPM_COMM_OP_CLOSE_SESSION operation:
|
||||
Close the existing TPM session, if any.
|
||||
|
||||
Arguments:
|
||||
|
||||
r3 : H_TPM_COMM (0xef10)
|
||||
r4 : TPM operation, one of:
|
||||
TPM_COMM_OP_EXECUTE (0x1)
|
||||
TPM_COMM_OP_CLOSE_SESSION (0x2)
|
||||
r5 : in_buffer, guest physical address of buffer containing the request
|
||||
- Caller may use the same address for both request and response
|
||||
r6 : in_size, size of the in buffer
|
||||
- Must be less than or equal to 4KB
|
||||
r7 : out_buffer, guest physical address of buffer to store the response
|
||||
- Caller may use the same address for both request and response
|
||||
r8 : out_size, size of the out buffer
|
||||
- Must be at least 4KB, as this is the maximum request/response size
|
||||
supported by most TPM implementations, including the TPM Resource
|
||||
Manager in the linux kernel.
|
||||
|
||||
Return values:
|
||||
|
||||
r3 : H_Success request processed successfully
|
||||
H_PARAMETER invalid TPM operation
|
||||
H_P2 in_buffer is invalid
|
||||
H_P3 in_size is invalid
|
||||
H_P4 out_buffer is invalid
|
||||
H_P5 out_size is invalid
|
||||
H_RESOURCE problem communicating with TPM
|
||||
H_FUNCTION TPM access is not currently allowed/configured
|
||||
r4 : For TPM_COMM_OP_EXECUTE, the size of the response will be stored here
|
||||
upon success.
|
||||
|
||||
Use-case/notes:
|
||||
|
||||
SVM filesystems are encrypted using a symmetric key. This key is then
|
||||
wrapped/encrypted using the public key of a trusted system which has the
|
||||
private key stored in the system's TPM. An Ultravisor will use this
|
||||
hcall to unwrap/unseal the symmetric key using the system's TPM device
|
||||
or a TPM Resource Manager associated with the device.
|
||||
|
||||
The Ultravisor sets up a separate session key with the TPM in advance
|
||||
during host system boot. All sensitive in and out values will be
|
||||
encrypted using the session key. Though the hypervisor will see the 'in'
|
||||
and 'out' buffers in raw form, any sensitive contents will generally be
|
||||
encrypted using this session key.
|
Loading…
Add table
Add a link
Reference in a new issue