From: Thomas Huth <thuth@redhat.com>
To: Matthew Rosato <mjrosato@linux.ibm.com>, linux-s390@vger.kernel.org
Cc: alex.williamson@redhat.com, cohuck@redhat.com,
schnelle@linux.ibm.com, farman@linux.ibm.com,
pmorel@linux.ibm.com, borntraeger@linux.ibm.com,
hca@linux.ibm.com, gor@linux.ibm.com,
gerald.schaefer@linux.ibm.com, agordeev@linux.ibm.com,
svens@linux.ibm.com, frankja@linux.ibm.com, david@redhat.com,
imbrenda@linux.ibm.com, vneethv@linux.ibm.com,
oberpar@linux.ibm.com, freude@linux.ibm.com, pasic@linux.ibm.com,
pbonzini@redhat.com, corbet@lwn.net, jgg@nvidia.com,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-doc@vger.kernel.org
Subject: Re: [PATCH v7 20/22] KVM: s390: add KVM_S390_ZPCI_OP to manage guest zPCI devices
Date: Wed, 18 May 2022 11:19:47 +0200 [thread overview]
Message-ID: <a44b1bd2-db54-6c8a-d80f-e2cc645207b2@redhat.com> (raw)
In-Reply-To: <0c6a4f7b-f43a-8f4c-49bb-db10ca010f1f@linux.ibm.com>
On 16/05/2022 17.35, Matthew Rosato wrote:
> On 5/16/22 5:52 AM, Thomas Huth wrote:
>> On 13/05/2022 21.15, Matthew Rosato wrote:
>>> The KVM_S390_ZPCI_OP ioctl provides a mechanism for managing
>>> hardware-assisted virtualization features for s390X zPCI passthrough.
>>
>> s/s390X/s390x/
>>
>>> Add the first 2 operations, which can be used to enable/disable
>>> the specified device for Adapter Event Notification interpretation.
>>>
>>> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
>>> ---
>>> Documentation/virt/kvm/api.rst | 45 +++++++++++++++++++
>>> arch/s390/kvm/kvm-s390.c | 23 ++++++++++
>>> arch/s390/kvm/pci.c | 81 ++++++++++++++++++++++++++++++++++
>>> arch/s390/kvm/pci.h | 2 +
>>> include/uapi/linux/kvm.h | 31 +++++++++++++
>>> 5 files changed, 182 insertions(+)
>>>
>>> diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
>>> index 4a900cdbc62e..a7cd5ebce031 100644
>>> --- a/Documentation/virt/kvm/api.rst
>>> +++ b/Documentation/virt/kvm/api.rst
>>> @@ -5645,6 +5645,51 @@ enabled with ``arch_prctl()``, but this may change
>>> in the future.
>>> The offsets of the state save areas in struct kvm_xsave follow the
>>> contents
>>> of CPUID leaf 0xD on the host.
>>> +4.135 KVM_S390_ZPCI_OP
>>> +--------------------
>>> +
>>> +:Capability: KVM_CAP_S390_ZPCI_OP
>>> +:Architectures: s390
>>> +:Type: vcpu ioctl
>>
>> vcpu? ... you're wiring it up in kvm_arch_vm_ioctl() later, so I assume
>> it's rather a VM ioctl?
>
> Yup, VM ioctl, bad copy/paste job...
>
>>
>>> +:Parameters: struct kvm_s390_zpci_op (in)
>>> +:Returns: 0 on success, <0 on error
>>> +
>>> +Used to manage hardware-assisted virtualization features for zPCI devices.
>>> +
>>> +Parameters are specified via the following structure::
>>> +
>>> + struct kvm_s390_zpci_op {
>>> + /* in */
>>
>> If all is "in", why is there a copy_to_user() in the code later?
>>
>
> Oh no, this is a leftover from a prior version... Good catch. There should
> no longer be a copy_to_user.
>
>>> + __u32 fh; /* target device */
>>> + __u8 op; /* operation to perform */
>>> + __u8 pad[3];
>>> + union {
>>> + /* for KVM_S390_ZPCIOP_REG_AEN */
>>> + struct {
>>> + __u64 ibv; /* Guest addr of interrupt bit vector */
>>> + __u64 sb; /* Guest addr of summary bit */
>>
>> If this is really a vcpu ioctl, what kind of addresses are you talking
>> about here? virtual addresses? real addresses? absolute addresses?
>
> It's a VM ioctl. These are guest kernel physical addresses that are later
> pinned in arch/s390/kvm/pci.c:kvm_s390_pci_aif_enable() as part of handling
> the ioctl.
>
>>
>>> + __u32 flags;
>>> + __u32 noi; /* Number of interrupts */
>>> + __u8 isc; /* Guest interrupt subclass */
>>> + __u8 sbo; /* Offset of guest summary bit vector */
>>> + __u16 pad;
>>> + } reg_aen;
>>> + __u64 reserved[8];
>>> + } u;
>>> + };
>>> +
>>> +The type of operation is specified in the "op" field.
>>> +KVM_S390_ZPCIOP_REG_AEN is used to register the VM for adapter event
>>> +notification interpretation, which will allow firmware delivery of adapter
>>> +events directly to the vm, with KVM providing a backup delivery mechanism;
>>> +KVM_S390_ZPCIOP_DEREG_AEN is used to subsequently disable interpretation of
>>> +adapter event notifications.
>>> +
>>> +The target zPCI function must also be specified via the "fh" field. For the
>>> +KVM_S390_ZPCIOP_REG_AEN operation, additional information to establish
>>> firmware
>>> +delivery must be provided via the "reg_aen" struct.
>>> +
>>> +The "reserved" field is meant for future extensions.
>>
>> Maybe also mention the "pad" fields? And add should these also be
>> initialized to 0 by the calling userspace program?
>
> Sure, I can mention them. And yes, I agree that userspace should initialize
> them to 0, I'll update the QEMU series accordingly.
I just spotted the corresponding patch in the QEMU series, and I think it
should already be fine there, since you're using "= { ... }" while declaring
the variables:
+int s390_pci_kvm_aif_disable(S390PCIBusDevice *pbdev)
+{
+ struct kvm_s390_zpci_op args = {
+ .fh = pbdev->fh,
+ .op = KVM_S390_ZPCIOP_DEREG_AEN
+ };
That means unspecified fields will be set to 0 by the compiler already, as
far as I know.
Thomas
next prev parent reply other threads:[~2022-05-18 9:19 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-13 19:14 [PATCH v7 00/22] KVM: s390: enable zPCI for interpretive execution Matthew Rosato
2022-05-13 19:14 ` [PATCH v7 01/22] s390/sclp: detect the zPCI load/store interpretation facility Matthew Rosato
2022-05-13 19:14 ` [PATCH v7 02/22] s390/sclp: detect the AISII facility Matthew Rosato
2022-05-13 19:14 ` [PATCH v7 03/22] s390/sclp: detect the AENI facility Matthew Rosato
2022-05-13 19:14 ` [PATCH v7 04/22] s390/sclp: detect the AISI facility Matthew Rosato
2022-05-13 19:14 ` [PATCH v7 05/22] s390/airq: pass more TPI info to airq handlers Matthew Rosato
2022-05-13 19:14 ` [PATCH v7 06/22] s390/airq: allow for airq structure that uses an input vector Matthew Rosato
2022-05-16 10:18 ` Thomas Huth
2022-05-13 19:14 ` [PATCH v7 07/22] s390/pci: externalize the SIC operation controls and routine Matthew Rosato
2022-05-13 19:14 ` [PATCH v7 08/22] s390/pci: stash associated GISA designation Matthew Rosato
2022-05-13 19:14 ` [PATCH v7 09/22] s390/pci: stash dtsm and maxstbl Matthew Rosato
2022-05-13 19:14 ` [PATCH v7 10/22] vfio/pci: introduce CONFIG_VFIO_PCI_ZDEV_KVM Matthew Rosato
2022-05-16 16:59 ` Jason Gunthorpe
2022-05-13 19:14 ` [PATCH v7 11/22] KVM: s390: pci: add basic kvm_zdev structure Matthew Rosato
2022-05-13 19:14 ` [PATCH v7 12/22] KVM: s390: pci: do initial setup for AEN interpretation Matthew Rosato
2022-05-13 19:15 ` [PATCH v7 13/22] KVM: s390: pci: enable host forwarding of Adapter Event Notifications Matthew Rosato
2022-05-13 19:15 ` [PATCH v7 14/22] KVM: s390: mechanism to enable guest zPCI Interpretation Matthew Rosato
2022-05-16 10:49 ` Thomas Huth
2022-05-13 19:15 ` [PATCH v7 15/22] KVM: s390: pci: provide routines for enabling/disabling interrupt forwarding Matthew Rosato
2022-05-13 19:15 ` [PATCH v7 16/22] KVM: s390: pci: add routines to start/stop interpretive execution Matthew Rosato
2022-05-13 19:15 ` [PATCH v7 17/22] vfio-pci/zdev: add open/close device hooks Matthew Rosato
2022-05-16 17:27 ` Jason Gunthorpe
2022-05-16 18:30 ` Matthew Rosato
2022-05-16 18:35 ` Jason Gunthorpe
2022-05-16 19:38 ` Alex Williamson
2022-05-16 23:11 ` Jason Gunthorpe
2022-05-16 21:59 ` Matthew Rosato
2022-05-16 23:05 ` Jason Gunthorpe
2022-05-17 6:21 ` Christoph Hellwig
2022-05-17 12:01 ` Jason Gunthorpe
2022-05-13 19:15 ` [PATCH v7 18/22] vfio-pci/zdev: add function handle to clp base capability Matthew Rosato
2022-05-13 19:15 ` [PATCH v7 19/22] vfio-pci/zdev: different maxstbl for interpreted devices Matthew Rosato
2022-05-13 19:15 ` [PATCH v7 20/22] KVM: s390: add KVM_S390_ZPCI_OP to manage guest zPCI devices Matthew Rosato
2022-05-16 9:52 ` Thomas Huth
2022-05-16 15:35 ` Matthew Rosato
2022-05-16 16:37 ` Christian Borntraeger
2022-05-18 9:19 ` Thomas Huth [this message]
2022-05-13 19:15 ` [PATCH v7 21/22] KVM: s390: introduce CPU feature for zPCI Interpretation Matthew Rosato
2022-05-13 19:15 ` [PATCH v7 22/22] MAINTAINERS: additional files related kvm s390 pci passthrough Matthew Rosato
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=a44b1bd2-db54-6c8a-d80f-e2cc645207b2@redhat.com \
--to=thuth@redhat.com \
--cc=agordeev@linux.ibm.com \
--cc=alex.williamson@redhat.com \
--cc=borntraeger@linux.ibm.com \
--cc=cohuck@redhat.com \
--cc=corbet@lwn.net \
--cc=david@redhat.com \
--cc=farman@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=freude@linux.ibm.com \
--cc=gerald.schaefer@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=jgg@nvidia.com \
--cc=kvm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mjrosato@linux.ibm.com \
--cc=oberpar@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=pmorel@linux.ibm.com \
--cc=schnelle@linux.ibm.com \
--cc=svens@linux.ibm.com \
--cc=vneethv@linux.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.