[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 03/13] s390x: protvirt: Support unpack facility
From: |
David Hildenbrand |
Subject: |
Re: [PATCH v2 03/13] s390x: protvirt: Support unpack facility |
Date: |
Fri, 29 Nov 2019 11:19:42 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 |
On 29.11.19 10:47, Janosch Frank wrote:
> When a guest has saved a ipib of type 5 and call diagnose308 with
> subcode 10, we have to setup the protected processing environment via
> Ultravisor calls. The calls are done by KVM and are exposed via an API.
>
> The following steps are necessary:
> 1. Create a VM (register it with the Ultravisor)
> 2. Create secure CPUs for all of our current cpus
I do wonder why KVM can't handle that when switching to the encrypted
VM. Any specific reason QEMU has to be involved?
I would have guessed s390_pv_vm_create() can handle that internally. KVM
knows all the VCPUs.
[...]
> switch (reset_type) {
> case S390_RESET_EXTERNAL:
> case S390_RESET_REIPL:
> @@ -357,6 +361,28 @@ static void s390_machine_reset(MachineState *machine)
> run_on_cpu(cs, s390_do_cpu_initial_reset, RUN_ON_CPU_NULL);
> run_on_cpu(cs, s390_do_cpu_load_normal, RUN_ON_CPU_NULL);
> break;
> + case S390_RESET_PV: /* Subcode 10 */
> + subsystem_reset();
> + s390_crypto_reset();
> +
> + CPU_FOREACH(t) {
> + run_on_cpu(t, s390_do_cpu_full_reset, RUN_ON_CPU_NULL);
> + }
> +
> + /* Create SE VM */
> + s390_pv_vm_create();
> + CPU_FOREACH(t) {
> + s390_pv_vcpu_create(t);
> + }
So, on any other reboot, the VM/CPUs won't get cleaned up?
(is this really a "create" or rather a "s390_pv_vm_enable()").
The "create" terminology somehow sounds wrong to me ...
> +
> + /* Set SE header and unpack */
> + s390_ipl_prepare_pv_header();
> + /* Decrypt image */
> + s390_ipl_pv_unpack();
> + /* Verify integrity */
> + s390_pv_verify();
> + s390_cpu_set_state(S390_CPU_STATE_OPERATING, cpu);
> + break;
> default:
> g_assert_not_reached();
> }
> diff --git a/target/s390x/cpu_features_def.inc.h
> b/target/s390x/cpu_features_def.inc.h
> index 31dff0d84e..60db28351d 100644
> --- a/target/s390x/cpu_features_def.inc.h
> +++ b/target/s390x/cpu_features_def.inc.h
> @@ -107,6 +107,7 @@ DEF_FEAT(DEFLATE_BASE, "deflate-base", STFL, 151,
> "Deflate-conversion facility (
> DEF_FEAT(VECTOR_PACKED_DECIMAL_ENH, "vxpdeh", STFL, 152,
> "Vector-Packed-Decimal-Enhancement Facility")
> DEF_FEAT(MSA_EXT_9, "msa9-base", STFL, 155,
> "Message-security-assist-extension-9 facility (excluding subfunctions)")
> DEF_FEAT(ETOKEN, "etoken", STFL, 156, "Etoken facility")
> +DEF_FEAT(UNPACK, "unpack", STFL, 161, "Unpack facility")
>
> /* Features exposed via SCLP SCCB Byte 80 - 98 (bit numbers relative to
> byte-80) */
> DEF_FEAT(SIE_GSLS, "gsls", SCLP_CONF_CHAR, 40, "SIE:
> Guest-storage-limit-suppression facility")
>
--
Thanks,
David / dhildenb
- Re: [PATCH v2 08/13] s390x: protvirt: Add new VCPU reset functions, (continued)
- [PATCH v2 12/13] s390x: protvirt: Disable address checks for PV guest IO emulation, Janosch Frank, 2019/11/29
- [PATCH v2 09/13] s390x: Exit on vcpu reset error, Janosch Frank, 2019/11/29
- [PATCH v2 11/13] s390x: protvirt: Move diag 308 data over SIDAD, Janosch Frank, 2019/11/29
- [PATCH v2 10/13] s390x: protvirt: Set guest IPL PSW, Janosch Frank, 2019/11/29
- [PATCH v2 03/13] s390x: protvirt: Support unpack facility, Janosch Frank, 2019/11/29
- Re: [PATCH v2 03/13] s390x: protvirt: Support unpack facility,
David Hildenbrand <=
- [PATCH v2 13/13] s390x: protvirt: Handle SIGP store status correctly, Janosch Frank, 2019/11/29