From: Christian Borntraeger <borntraeger@de.ibm.com>
To: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: KVM <kvm@vger.kernel.org>, Paolo Bonzini <pbonzini@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
Alexander Graf <agraf@suse.de>,
Jens Freimann <jfrei@linux.vnet.ibm.com>,
Thomas Huth <thuth@linux.vnet.ibm.com>
Subject: Re: [PATCH/RFC 4/9] KVM: s390: Add MEMOP ioctls for reading/writing guest memory
Date: Mon, 16 Mar 2015 13:23:40 +0100 [thread overview]
Message-ID: <5506CB4C.1000202@de.ibm.com> (raw)
In-Reply-To: <20150316131651.1250d241.cornelia.huck@de.ibm.com>
Am 16.03.2015 um 13:16 schrieb Cornelia Huck:
> On Mon, 16 Mar 2015 09:51:40 +0100
> Christian Borntraeger <borntraeger@de.ibm.com> wrote:
>
>> From: Thomas Huth <thuth@linux.vnet.ibm.com>
>>
>> On s390, we've got to make sure to hold the IPTE lock while accessing
>> logical memory. So let's add an ioctl for reading and writing logical
>> memory to provide this feature for userspace, too.
>> The maximum transfer size of this call is limited to 64kB to prevent
>> that the guest can trigger huge copy_from/to_user transfers. QEMU
>> currently only requests up to one or two pages so far, so 16*4kB seems
>> to be a reasonable limit here.
>>
>> Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
>> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
>> ---
>> Documentation/virtual/kvm/api.txt | 46 ++++++++++++++++++++++++
>> arch/s390/kvm/gaccess.c | 22 ++++++++++++
>> arch/s390/kvm/gaccess.h | 2 ++
>> arch/s390/kvm/kvm-s390.c | 74 +++++++++++++++++++++++++++++++++++++++
>> include/uapi/linux/kvm.h | 21 +++++++++++
>> 5 files changed, 165 insertions(+)
>>
>> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
>> index ee47998e..f03178d 100644
>> --- a/Documentation/virtual/kvm/api.txt
>> +++ b/Documentation/virtual/kvm/api.txt
>> @@ -2716,6 +2716,52 @@ The fields in each entry are defined as follows:
>> eax, ebx, ecx, edx: the values returned by the cpuid instruction for
>> this function/index combination
>>
>> +4.89 KVM_S390_MEM_OP
>> +
>> +Capability: KVM_CAP_S390_MEM_OP
>> +Architectures: s390
>> +Type: vcpu ioctl
>> +Parameters: struct kvm_s390_mem_op (in)
>> +Returns: = 0 on success,
>> + < 0 on generic error (e.g. -EFAULT or -ENOMEM),
>> + > 0 if an exception occurred while walking the page tables
>> +
>> +Read or write data from/to the logical (virtual) memory of a VPCU.
>> +
>> +Parameters are specified via the following structure:
>> +
>> +struct kvm_s390_mem_op {
>> + __u64 gaddr; /* the guest address */
>> + __u64 flags; /* arch specific flags */
>
> Drop the "arch"? This is a s390-only ioctl :)
Will fixup.
>
>> + __u32 size; /* amount of bytes */
>> + __u32 op; /* type of operation */
>> + __u64 buf; /* buffer in userspace */
>> + __u8 ar; /* the access register number */
>
> This makes me wonder whether the patches should be reordered to
> introduce access register mode first: It seems strange that you can
> specify a parameter that is ignored. Same for the STSI patch.
Yes make sense. Will be some ripple when reordering but certainly doable.
>
>> + __u8 reserved[31]; /* should be set to 0 */
>> +};
>> +
>> +The type of operation is specified in the "op" field. It is either
>> +KVM_S390_MEMOP_LOGICAL_READ for reading from logical memory space or
>> +KVM_S390_MEMOP_LOGICAL_WRITE for writing to logical memory space. The
>> +KVM_S390_MEMOP_F_CHECK_ONLY flag can be set in the "flags" field to check
>> +whether the corresponding memory access would create an access exception
>> +(without touching the data in the memory at the destination). In case an
>> +access exception occurred while walking the MMU tables of the guest, the
>> +ioctl returns a positive error number to indicate the type of exception.
>> +This exception is also raised directly at the corresponding VCPU if the
>> +flag KVM_S390_MEMOP_F_INJECT_EXCEPTION is set in the "flags" field.
>> +
>> +The start address of the memory region has to be specified in the "gaddr"
>> +field, and the length of the region in the "size" field. "buf" is the buffer
>> +supplied by the userspace application where the read data should be written
>> +to for KVM_S390_MEMOP_LOGICAL_READ, or where the data that should be written
>> +is stored for a KVM_S390_MEMOP_LOGICAL_WRITE. "buf" is unused and can be NULL
>> +when KVM_S390_MEMOP_F_CHECK_ONLY is specified. "ar" designates the access
>> +register number to be used.
>> +
>> +The "reserved" field is meant for future extensions. It is not used by
>> +KVM with the currently defined set of flags.
>> +
>> 5. The kvm_run structure
>> ------------------------
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2015-03-16 12:23 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-16 8:51 [PATCH/RFC 0/9] Next bunch of KVM/s390x changes for next Christian Borntraeger
2015-03-16 8:51 ` [PATCH/RFC 1/9] KVM: s390: Spelling s/intance/instance/ Christian Borntraeger
2015-03-16 8:51 ` [PATCH/RFC 2/9] KVM: s390: cleanup jump lables in kvm_arch_init_vm Christian Borntraeger
2015-03-16 12:43 ` Cornelia Huck
2015-03-16 8:51 ` [PATCH/RFC 3/9] KVM: s390: Fix low-address protection for real addresses Christian Borntraeger
2015-03-16 12:48 ` Cornelia Huck
2015-03-16 8:51 ` [PATCH/RFC 4/9] KVM: s390: Add MEMOP ioctls for reading/writing guest memory Christian Borntraeger
2015-03-16 12:16 ` Cornelia Huck
2015-03-16 12:23 ` Christian Borntraeger [this message]
2015-03-19 0:23 ` Marcelo Tosatti
2015-03-16 8:51 ` [PATCH/RFC 5/9] KVM: s390: introduce post handlers for STSI Christian Borntraeger
2015-03-16 11:55 ` Paolo Bonzini
2015-03-16 12:18 ` Christian Borntraeger
2015-03-16 12:22 ` Paolo Bonzini
2015-03-16 8:51 ` [PATCH/RFC 6/9] KVM: s390: Guest's memory access functions get access registers Christian Borntraeger
2015-03-16 13:12 ` Cornelia Huck
2015-03-16 8:51 ` [PATCH/RFC 7/9] KVM: s390: Optimize paths where get_vcpu_asce() is invoked Christian Borntraeger
2015-03-16 13:13 ` Cornelia Huck
2015-03-16 8:51 ` [PATCH/RFC 8/9] KVM: s390: Add access register mode Christian Borntraeger
2015-03-16 8:51 ` [PATCH/RFC 9/9] KVM: s390: Create ioctl for Getting/Setting guest storage keys Christian Borntraeger
2015-03-16 13:07 ` Cornelia Huck
[not found] <20150319090759.6acae229@gondolin>
2015-03-19 13:15 ` [PATCH/RFC 4/9] KVM: s390: Add MEMOP ioctls for reading/writing guest memory Thomas Huth
2015-03-19 23:24 ` Marcelo Tosatti
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=5506CB4C.1000202@de.ibm.com \
--to=borntraeger@de.ibm.com \
--cc=agraf@suse.de \
--cc=cornelia.huck@de.ibm.com \
--cc=jfrei@linux.vnet.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=thuth@linux.vnet.ibm.com \
/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).