From: Claudio Imbrenda <imbrenda@linux.ibm.com>
To: Janosch Frank <frankja@linux.ibm.com>
Cc: borntraeger@de.ibm.com, qemu-s390x@nongnu.org, cohuck@redhat.com,
qemu-devel@nongnu.org, david@redhat.com
Subject: Re: [PATCH v9 06/15] s390x: Add SIDA memory ops
Date: Fri, 13 Mar 2020 13:57:28 +0100 [thread overview]
Message-ID: <20200313135728.7ca6ac62@p-imbrenda> (raw)
In-Reply-To: <20200311132151.172389-7-frankja@linux.ibm.com>
On Wed, 11 Mar 2020 09:21:42 -0400
Janosch Frank <frankja@linux.ibm.com> wrote:
> Protected guests save the instruction control blocks in the SIDA
> instead of QEMU/KVM directly accessing the guest's memory.
>
> Let's introduce new functions to access the SIDA.
>
> Also the new memops are available with KVM_CAP_S390_PROTECTED, so
> let's check for that.
>
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
> Reviewed-by: David Hildenbrand <david@redhat.com>
> ---
> target/s390x/cpu.h | 7 ++++++-
> target/s390x/kvm.c | 25 +++++++++++++++++++++++++
> target/s390x/kvm_s390x.h | 2 ++
> target/s390x/mmu_helper.c | 14 ++++++++++++++
> 4 files changed, 47 insertions(+), 1 deletion(-)
>
> diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
> index 1d17709d6e10b5e0..035427521cec2528 100644
> --- a/target/s390x/cpu.h
> +++ b/target/s390x/cpu.h
> @@ -823,7 +823,12 @@ int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr
> laddr, uint8_t ar, void *hostbuf, #define
> s390_cpu_virt_mem_check_write(cpu, laddr, ar, len) \
> s390_cpu_virt_mem_rw(cpu, laddr, ar, NULL, len, true) void
> s390_cpu_virt_mem_handle_exc(S390CPU *cpu, uintptr_t ra); -
> +int s390_cpu_pv_mem_rw(S390CPU *cpu, unsigned int offset, void
> *hostbuf,
> + int len, bool is_write);
> +#define s390_cpu_pv_mem_read(cpu, offset, dest, len) \
> + s390_cpu_pv_mem_rw(cpu, offset, dest, len, false)
> +#define s390_cpu_pv_mem_write(cpu, offset, dest, len) \
> + s390_cpu_pv_mem_rw(cpu, offset, dest, len, true)
>
> /* sigp.c */
> int s390_cpu_restart(S390CPU *cpu);
> diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
> index eec0b92479465b9c..cdcd538b4f7fb318 100644
> --- a/target/s390x/kvm.c
> +++ b/target/s390x/kvm.c
> @@ -154,6 +154,7 @@ static int cap_ri;
> static int cap_gs;
> static int cap_hpage_1m;
> static int cap_vcpu_resets;
> +static int cap_protected;
>
> static int active_cmma;
>
> @@ -346,6 +347,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
> cap_mem_op = kvm_check_extension(s, KVM_CAP_S390_MEM_OP);
> cap_s390_irq = kvm_check_extension(s, KVM_CAP_S390_INJECT_IRQ);
> cap_vcpu_resets = kvm_check_extension(s,
> KVM_CAP_S390_VCPU_RESETS);
> + cap_protected = kvm_check_extension(s, KVM_CAP_S390_PROTECTED);
>
> if (!kvm_check_extension(s, KVM_CAP_S390_GMAP)
> || !kvm_check_extension(s, KVM_CAP_S390_COW)) {
> @@ -846,6 +848,29 @@ int kvm_s390_mem_op(S390CPU *cpu, vaddr addr,
> uint8_t ar, void *hostbuf, return ret;
> }
>
> +int kvm_s390_mem_op_pv(S390CPU *cpu, uint64_t offset, void *hostbuf,
> + int len, bool is_write)
> +{
> + struct kvm_s390_mem_op mem_op = {
> + .sida_offset = offset,
> + .size = len,
> + .op = is_write ? KVM_S390_MEMOP_SIDA_WRITE
> + : KVM_S390_MEMOP_SIDA_READ,
> + .buf = (uint64_t)hostbuf,
> + };
> + int ret;
> +
> + if (!cap_mem_op || !cap_protected) {
> + return -ENOSYS;
> + }
> +
> + ret = kvm_vcpu_ioctl(CPU(cpu), KVM_S390_MEM_OP, &mem_op);
> + if (ret < 0) {
> + error_report("KVM_S390_MEM_OP failed: %s", strerror(-ret));
> + }
> + return ret;
> +}
> +
> /*
> * Legacy layout for s390:
> * Older S390 KVM requires the topmost vma of the RAM to be
> diff --git a/target/s390x/kvm_s390x.h b/target/s390x/kvm_s390x.h
> index 0b21789796d7c462..9c38f6ccce83e39e 100644
> --- a/target/s390x/kvm_s390x.h
> +++ b/target/s390x/kvm_s390x.h
> @@ -19,6 +19,8 @@ void kvm_s390_vcpu_interrupt(S390CPU *cpu, struct
> kvm_s390_irq *irq); void kvm_s390_access_exception(S390CPU *cpu,
> uint16_t code, uint64_t te_code); int kvm_s390_mem_op(S390CPU *cpu,
> vaddr addr, uint8_t ar, void *hostbuf, int len, bool is_write);
> +int kvm_s390_mem_op_pv(S390CPU *cpu, vaddr addr, void *hostbuf, int
> len,
> + bool is_write);
> void kvm_s390_program_interrupt(S390CPU *cpu, uint16_t code);
> int kvm_s390_set_cpu_state(S390CPU *cpu, uint8_t cpu_state);
> void kvm_s390_vcpu_interrupt_pre_save(S390CPU *cpu);
> diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c
> index 0be2f300bbe4ac8b..7d9f3059cd502c49 100644
> --- a/target/s390x/mmu_helper.c
> +++ b/target/s390x/mmu_helper.c
> @@ -474,6 +474,20 @@ static int translate_pages(S390CPU *cpu, vaddr
> addr, int nr_pages, return 0;
> }
>
> +int s390_cpu_pv_mem_rw(S390CPU *cpu, unsigned int offset, void
> *hostbuf,
> + int len, bool is_write)
> +{
> + int ret;
> +
> + if (kvm_enabled()) {
> + ret = kvm_s390_mem_op_pv(cpu, offset, hostbuf, len,
> is_write);
> + } else {
> + /* Protected Virtualization is a KVM/Hardware only feature */
> + g_assert_not_reached();
> + }
> + return ret;
> +}
> +
> /**
> * s390_cpu_virt_mem_rw:
> * @laddr: the logical start address
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
next prev parent reply other threads:[~2020-03-13 13:05 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-11 13:21 [PATCH v9 00/15] s390x: Protected Virtualization support Janosch Frank
2020-03-11 13:21 ` [PATCH v9 01/15] Sync pv Janosch Frank
2020-03-11 13:21 ` [PATCH v9 02/15] s390x: protvirt: Support unpack facility Janosch Frank
2020-03-12 8:33 ` Christian Borntraeger
2020-03-13 9:35 ` Janosch Frank
2020-03-13 9:52 ` [PATCH v9] fixup! Fix subcode/pbt Janosch Frank
2020-03-13 14:30 ` Christian Borntraeger
2020-03-13 14:44 ` Janosch Frank
2020-03-16 14:27 ` Cornelia Huck
2020-03-16 14:47 ` Janosch Frank
2020-03-16 14:54 ` Cornelia Huck
2020-03-16 15:04 ` Christian Borntraeger
2020-03-16 17:57 ` Cornelia Huck
2020-03-16 19:42 ` Christian Borntraeger
2020-03-17 9:53 ` Cornelia Huck
2020-03-16 15:05 ` Janosch Frank
2020-03-16 17:58 ` Cornelia Huck
[not found] ` <a0edb6d5-284f-5f10-02e5-d2f252043d71@redhat.com>
2020-03-12 8:54 ` [PATCH v9 02/15] s390x: protvirt: Support unpack facility Janosch Frank
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-11 13:21 ` [PATCH v9 03/15] s390x: protvirt: Add migration blocker Janosch Frank
2020-03-12 8:42 ` Christian Borntraeger
2020-03-12 9:34 ` Janosch Frank
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-16 14:49 ` Cornelia Huck
2020-03-11 13:21 ` [PATCH v9 04/15] s390x: protvirt: Inhibit balloon when switching to protected mode Janosch Frank
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-18 11:42 ` Cornelia Huck
2020-03-18 12:30 ` Janosch Frank
2020-03-11 13:21 ` [PATCH v9 05/15] s390x: protvirt: KVM intercept changes Janosch Frank
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-17 9:56 ` Cornelia Huck
2020-03-11 13:21 ` [PATCH v9 06/15] s390x: Add SIDA memory ops Janosch Frank
2020-03-12 8:50 ` Christian Borntraeger
2020-03-13 12:57 ` Claudio Imbrenda [this message]
2020-03-17 10:24 ` Cornelia Huck
2020-03-17 11:56 ` Janosch Frank
2020-03-11 13:21 ` [PATCH v9 07/15] s390x: protvirt: Move STSI data over SIDAD Janosch Frank
2020-03-12 10:42 ` Christian Borntraeger
2020-03-12 11:20 ` Janosch Frank
2020-03-17 10:28 ` Cornelia Huck
2020-03-17 10:32 ` Janosch Frank
2020-03-17 10:41 ` Cornelia Huck
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-11 13:21 ` [PATCH v9 08/15] s390x: protvirt: SCLP interpretation Janosch Frank
2020-03-11 13:24 ` David Hildenbrand
2020-03-11 13:31 ` Janosch Frank
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-13 13:14 ` Christian Borntraeger
2020-03-17 11:05 ` Cornelia Huck
2020-03-17 11:54 ` Janosch Frank
2020-03-17 12:01 ` Cornelia Huck
2020-03-11 13:21 ` [PATCH v9 09/15] s390x: protvirt: Set guest IPL PSW Janosch Frank
2020-03-12 15:08 ` Christian Borntraeger
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-13 14:21 ` Janosch Frank
2020-03-13 14:22 ` Christian Borntraeger
2020-03-13 14:29 ` Claudio Imbrenda
2020-03-13 14:32 ` Claudio Imbrenda
2020-03-11 13:21 ` [PATCH v9 10/15] s390x: protvirt: Move diag 308 data over SIDA Janosch Frank
2020-03-12 15:17 ` Christian Borntraeger
2020-03-12 16:05 ` Janosch Frank
2020-03-12 16:09 ` Christian Borntraeger
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-11 13:21 ` [PATCH v9 11/15] s390x: protvirt: Disable address checks for PV guest IO emulation Janosch Frank
2020-03-12 15:41 ` Christian Borntraeger
2020-03-12 16:07 ` Janosch Frank
2020-03-12 16:10 ` Christian Borntraeger
2020-03-12 16:17 ` Janosch Frank
2020-03-13 7:38 ` Christian Borntraeger
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-17 11:36 ` Cornelia Huck
2020-03-17 12:00 ` Janosch Frank
2020-03-11 13:21 ` [PATCH v9 12/15] s390x: protvirt: Move IO control structures over SIDA Janosch Frank
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-13 13:15 ` Janosch Frank
2020-03-11 13:21 ` [PATCH v9 13/15] s390x: protvirt: Handle SIGP store status correctly Janosch Frank
2020-03-12 15:51 ` Christian Borntraeger
2020-03-12 16:13 ` Janosch Frank
2020-03-13 7:39 ` Christian Borntraeger
2020-03-13 7:39 ` Christian Borntraeger
2020-03-17 16:48 ` Cornelia Huck
2020-03-13 12:57 ` Claudio Imbrenda
2020-03-11 13:21 ` [PATCH v9 14/15] docs: Add protvirt docs Janosch Frank
[not found] ` <569575c9-5819-f890-e218-99f3a23bee99@redhat.com>
2020-03-12 12:10 ` Janosch Frank
2020-03-13 13:00 ` Claudio Imbrenda
2020-03-13 13:18 ` Janosch Frank
2020-03-13 13:28 ` Peter Maydell
2020-03-17 18:23 ` Cornelia Huck
2020-03-18 8:41 ` Janosch Frank
2020-03-18 11:25 ` Cornelia Huck
2020-03-18 12:34 ` Janosch Frank
2020-03-11 13:21 ` [PATCH v9 15/15] s390x: Add unpack facility feature to GA1 Janosch Frank
2020-03-13 13:01 ` Claudio Imbrenda
2020-03-17 18:06 ` Cornelia Huck
2020-03-18 8:44 ` Janosch Frank
2020-03-18 9:27 ` Cornelia Huck
2020-03-18 9:42 ` Janosch Frank
2020-03-11 14:15 ` [PATCH v9 00/15] s390x: Protected Virtualization support no-reply
2020-03-11 14:36 ` no-reply
2020-03-12 16:25 ` [PATCH v9] s390x: protvirt: Fence huge pages Janosch Frank
2020-03-13 8:21 ` Christian Borntraeger
2020-03-16 10:06 ` Janosch Frank
2020-03-16 16:33 ` Christian Borntraeger
2020-03-17 16:57 ` Cornelia Huck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200313135728.7ca6ac62@p-imbrenda \
--to=imbrenda@linux.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).