qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Matthew Rosato <mjrosato@linux.ibm.com>
To: Pierre Morel <pmorel@linux.ibm.com>,
	Niklas Schnelle <schnelle@linux.ibm.com>,
	qemu-s390x@nongnu.org, alex.williamson@redhat.com
Cc: cohuck@redhat.com, thuth@redhat.com, farman@linux.ibm.com,
	richard.henderson@linaro.org, david@redhat.com,
	pasic@linux.ibm.com, borntraeger@linux.ibm.com, mst@redhat.com,
	pbonzini@redhat.com, qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: Re: [PATCH v5 7/9] s390x/pci: enable adapter event notification for interpreted devices
Date: Mon, 2 May 2022 15:57:00 -0400	[thread overview]
Message-ID: <8ad9f2c8-9fb8-cb47-fd1e-f9a33eced548@linux.ibm.com> (raw)
In-Reply-To: <eb2fde35-7b9d-a8c8-3212-ae92b2b3e754@linux.ibm.com>

On 5/2/22 7:30 AM, Pierre Morel wrote:
> 
> 
> On 5/2/22 11:19, Niklas Schnelle wrote:
>> On Mon, 2022-05-02 at 09:48 +0200, Pierre Morel wrote:
>>>
>>> On 4/22/22 14:10, Matthew Rosato wrote:
>>>> On 4/22/22 5:39 AM, Pierre Morel wrote:
>>>>>
>>>>> On 4/4/22 20:17, Matthew Rosato wrote:
>>>>>> Use the associated kvm ioctl operation to enable adapter event
>>>>>> notification
>>>>>> and forwarding for devices when requested.  This feature will be 
>>>>>> set up
>>>>>> with or without firmware assist based upon the 'forwarding_assist'
>>>>>> setting.
>>>>>>
>>>>>> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
>>>>>> ---
>>>>>>    hw/s390x/s390-pci-bus.c         | 20 ++++++++++++++---
>>>>>>    hw/s390x/s390-pci-inst.c        | 40 
>>>>>> +++++++++++++++++++++++++++++++--
>>>>>>    hw/s390x/s390-pci-kvm.c         | 30 +++++++++++++++++++++++++
>>>>>>    include/hw/s390x/s390-pci-bus.h |  1 +
>>>>>>    include/hw/s390x/s390-pci-kvm.h | 14 ++++++++++++
>>>>>>    5 files changed, 100 insertions(+), 5 deletions(-)
>>>>>>
>>>>>> diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
>>>>>> index 9c02d31250..47918d2ce9 100644
>>>>>> --- a/hw/s390x/s390-pci-bus.c
>>>>>> +++ b/hw/s390x/s390-pci-bus.c
>>>>>> @@ -190,7 +190,10 @@ void s390_pci_sclp_deconfigure(SCCB *sccb)
>>>>>>            rc = SCLP_RC_NO_ACTION_REQUIRED;
>>>>>>            break;
>>>>>>        default:
>>>>>> -        if (pbdev->summary_ind) {
>>>>>> +        if (pbdev->interp && (pbdev->fh & FH_MASK_ENABLE)) {
>>>>>> +            /* Interpreted devices were using interrupt 
>>>>>> forwarding */
>>>>>> +            s390_pci_kvm_aif_disable(pbdev);
>>>>>
>>>>> Same remark as for the kernel part.
>>>>> The VFIO device is already initialized and the action is on this
>>>>> device, Shouldn't we use the VFIO device interface instead of the KVM
>>>>> interface?
>>>>>
>>>>
>>>> I don't necessarily disagree, but in v3 of the kernel series I was told
>>>> not to use VFIO ioctls to accomplish tasks that are unique to KVM (e.g.
>>>> AEN interpretation) and to instead use a KVM ioctl.
>>>>
>>>> VFIO_DEVICE_SET_IRQS won't work as-is for reasons described in the
>>>> kernel series (e.g. we don't see any of the config space notifiers
>>>> because of instruction interpretation) -- as far as I can figure we
>>>> could add our own s390 code to QEMU to issue VFIO_DEVICE_SET_IRQS
>>>> directly for an interpreted device, but I think would also need
>>>> s390-specific changes to VFIO_DEVICE_SET_IRQS accommodate this (e.g.
>>>> maybe something like a VFIO_IRQ_SET_DATA_S390AEN where we can then
>>>> specify the aen information in vfio_irq_set.data -- or something else I
>>>
>>> Hi,
>>>
>>> yes this in VFIO_DEVICE_SET_IRQS is what I think should be done.
>>>
>>>> haven't though of yet) -- I can try to look at this some more and 
>>>> see if
>>>> I get a good idea.
>>>
>>>
>>> I understood that the demand was concerning the IOMMU but I may be 
>>> wrong.

The IOMMU was an issue, but the request to move the ioctl out of vfio to 
kvm was specifically because these ioctl operations were only relevant 
for VMs and are not applicable to vfio uses cases outside of virtualization.

https://lore.kernel.org/kvm/20220208185141.GH4160@nvidia.com/

>>> For my opinion, the handling of AEN is not specific to KVM but specific
>>> to the device, for example the code should be the same if Z ever decide
>>> to use XEN or another hypervizor, except for the GISA part but this part
>>> is already implemented in KVM in a way it can be used from a device like
>>> in VFIO AP.


Fundamentally, these operations are valid only when you have _both_ a 
virtual machine and vfio device.  (Yes, you could swap in a new 
hypervisor with a new GISA implementation, but at the end of it the 
hypervisor must still provide the GISA designation for this to work)

If fh lookup is a concern, one idea that Jason floated was passing the 
vfio device fd as an argument to the kvm ioctl (so pass this down on a 
kvm ioctl from userspace instead of a fh) and then using a new vfio 
external API to get the relevant device from the provided fd.

https://lore.kernel.org/kvm/20220208195117.GI4160@nvidia.com/

>>>
>>> @Alex, what do you think?
>>>
>>> Regards,
>>> Pierre
>>>
>>
>> As I understand it the question isn't if it is specific to KVM but
>> rather if it is specific to virtualization. As vfio-pci is also used
>> for non virtualization purposes such as with DPDK/SPDK or a fully
>> emulating QEMU, it should only be in VFIO if it is relevant for these
>> kinds of user-space PCI accesses too. I'm not an AEN expert but as I
>> understand it, this does forwarding interrupts into a SIE context which
>> only makes sense for virtualization not for general user-space PCI.

Right, AEN forwarding is only relevant for virtual machines.

>>
> 
> Being in VFIO kernel part does not mean that this part should be called 
> from any user of VFIO in userland.
> That is a reason why I did propose an extension and not using the 
> current implementation of VFIO_DEVICE_SET_IRQS as is.
> 
> The reason behind is that the AEN hardware handling is device specific: 
> we need the Function Handle to program AEN.

You also need the GISA designation which is provided by the kvm or you 
also can't program AEN.  So you ultimately need both a function handle 
that is 'owned' by the device (vfio device fd) and the GISA designation 
that is 'owned' by kvm (kvm fd).  So there are 2 different "owning" fds 
involved.

> 
> If the API is through KVM which is device agnostic the implementation in 
> KVM has to search through the system to find the device being handled to 
> apply AEN on it.

See comment above about instead passing the vfio device fd.

> 
> This not the logical way for me and it is a potential source of problems 
> for future extensions.
> 





  reply	other threads:[~2022-05-02 19:58 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-04 18:17 [PATCH v5 0/9] s390x/pci: zPCI interpretation support Matthew Rosato
2022-04-04 18:17 ` [PATCH v5 1/9] Update linux headers Matthew Rosato
2022-04-04 18:17 ` [PATCH v5 2/9] vfio: tolerate migration protocol v1 uapi renames Matthew Rosato
2022-04-12 15:50   ` Pierre Morel
2022-04-12 16:07     ` Matthew Rosato
2022-04-19 15:44       ` Pierre Morel
2022-04-04 18:17 ` [PATCH v5 3/9] target/s390x: add zpci-interp to cpu models Matthew Rosato
2022-05-18  8:01   ` Thomas Huth
2022-05-18  8:02     ` Thomas Huth
2022-05-18  8:05   ` Thomas Huth
2022-04-04 18:17 ` [PATCH v5 4/9] s390x/pci: add routine to get host function handle from CLP info Matthew Rosato
2022-04-19 19:15   ` Pierre Morel
2022-05-18  8:13   ` Thomas Huth
2022-04-04 18:17 ` [PATCH v5 5/9] s390x/pci: enable for load/store intepretation Matthew Rosato
2022-04-19 19:47   ` Pierre Morel
2022-04-20 15:12     ` Matthew Rosato
2022-04-22  9:27       ` Pierre Morel
2022-04-04 18:17 ` [PATCH v5 6/9] s390x/pci: don't fence interpreted devices without MSI-X Matthew Rosato
2022-04-04 18:17 ` [PATCH v5 7/9] s390x/pci: enable adapter event notification for interpreted devices Matthew Rosato
2022-04-22  9:39   ` Pierre Morel
2022-04-22 12:10     ` Matthew Rosato
2022-05-02  7:48       ` Pierre Morel
2022-05-02  9:19         ` Niklas Schnelle
2022-05-02 11:30           ` Pierre Morel
2022-05-02 19:57             ` Matthew Rosato [this message]
2022-05-03 14:53               ` Pierre Morel
2022-05-04 14:20                 ` Matthew Rosato
2022-04-04 18:17 ` [PATCH v5 8/9] s390x/pci: let intercept devices have separate PCI groups Matthew Rosato
2022-04-04 18:17 ` [PATCH v5 9/9] s390x/pci: reflect proper maxstbl for groups of interpreted devices Matthew Rosato
2022-04-19 19:49   ` Pierre Morel
2022-04-22  9:43   ` Pierre Morel
2022-05-06  9:03   ` Pierre Morel

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=8ad9f2c8-9fb8-cb47-fd1e-f9a33eced548@linux.ibm.com \
    --to=mjrosato@linux.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=farman@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=pasic@linux.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=pmorel@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=schnelle@linux.ibm.com \
    --cc=thuth@redhat.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).