qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alex Williamson <alex.williamson@redhat.com>
To: Frank Blaschka <blaschka@linux.vnet.ibm.com>
Cc: linux-s390@vger.kernel.org, frank.blaschka@de.ibm.com,
	kvm@vger.kernel.org, agraf@suse.de, qemu-devel@nongnu.org,
	pbonzini@redhat.com
Subject: Re: [Qemu-devel] [RFC patch 0/6] vfio based pci pass-through for qemu/KVM on s390
Date: Wed, 24 Sep 2014 10:05:57 -0600	[thread overview]
Message-ID: <1411574757.24563.101.camel@ul30vt.home> (raw)
In-Reply-To: <20140924084727.GA17378@tuxmaker.boeblingen.de.ibm.com>

On Wed, 2014-09-24 at 10:47 +0200, Frank Blaschka wrote:
> On Mon, Sep 22, 2014 at 02:47:31PM -0600, Alex Williamson wrote:
> > On Fri, 2014-09-19 at 13:54 +0200, frank.blaschka@de.ibm.com wrote:
> > > This set of patches implements a vfio based solution for pci
> > > pass-through on the s390 platform. The kernel stuff is pretty
> > > much straight forward, but qemu needs more work.
> > > 
> > > Most interesting patch is:
> > >   vfio: make vfio run on s390 platform
> > > 
> > > I hope Alex & Alex can give me some guidance how to do the changes
> > > in an appropriate way. After creating a separate iommmu address space
> > > for each attached PCI device I can successfully run the vfio type1
> > > iommu. So If we could extend type1 not registering all guest memory
> > > (see patch) I think we do not need a special vfio iommu for s390
> > > for the moment.
> > > 
> > > The patches implement the base pass-through support. s390 specific
> > > virtualization functions are currently not included. This would
> > > be a second step after the base support is done.
> > > 
> > > kernel patches apply to linux-kvm-next
> > > 
> > > KVM: s390: Enable PCI instructions
> > > iommu: add iommu for s390 platform
> > > vfio: make vfio build on s390
> > > 
> > > qemu patches apply to qemu-master
> > > 
> > > s390: Add PCI bus support
> > > s390: implement pci instruction
> > > vfio: make vfio run on s390 platform
> > > 
> > > Thx for feedback and review comments
> > 
> > Sending patches as attachments makes it difficult to comment inline.
> >
> Sorry, don't understand this. I sent every patch as separate email so
> you can comment directly on the patch. What do you prefer?

The patches in each email are showing up as attachments in my mail
client.  Is it just me?
 
> > 2/6
> >  - careful of the namespace as you're changing functions from static and
> > exporting them
> >  - doesn't seem like functions need to be exported, just non-static to
> > call from s390-iommu.c
> > 
> Ok, will change this.
> 
> > 6/6
> >  - We shouldn't need to globally disable mmap, each VFIO region reports
> > whether it supports mmap and vfio-pci on s390 should indicate mmap is
> > not supported on the platform.
> Yes, this is even better to let the kernel announce a BAR can not be
> mmap'ed. Checking the kernel code I realized the BARs are valid for
> mmap'ing but the s390 platform does simply not allow this. So I feal we
> have to introduce a platform switch in kernel. How about this ...
> 
> --- a/drivers/vfio/pci/vfio_pci.c
> +++ b/drivers/vfio/pci/vfio_pci.c
> @@ -377,9 +377,11 @@ static long vfio_pci_ioctl(void *device_
> 
>                         info.flags = VFIO_REGION_INFO_FLAG_READ |
>                                      VFIO_REGION_INFO_FLAG_WRITE;
> +#ifndef CONFIG_S390
>                         if (pci_resource_flags(pdev, info.index) &
>                             IORESOURCE_MEM && info.size >= PAGE_SIZE)
>                                 info.flags |= VFIO_REGION_INFO_FLAG_MMAP;
> +#endif
>                         break;
>                 case VFIO_PCI_ROM_REGION_INDEX:
>                 {

Maybe pull it out into a function.  Also, is there some capability or
feature we can test rather than just the architecture?  I'd prefer it to
be excluded because of a platform feature that prevents it rather than
the overall architecture itself.

> >  - INTx should be done the same way, the interrupt index for INTx should
> > report 0 count.  The current code likely doesn't handle this, but it
> > should be easy to fix.
> The current code is fine. Problem is the card reports an interrupt index
> (PCI_INTERRUPT_PIN) but again the platform does not support INTx at all.
> So we need a platform switch as well. 

Yep, let's try to do something consistent with the MMAP testing.

> >  - s390_msix_notify() vs msix_notify() should be abstracted somewhere
> 
> Platform does not have have an apic so there is nothing we could emulate
> in qemu to make the existing msix_notify() work.
> 
> > else.  How would an emulated PCI device with MSI-X support work?
> >  - same for add_msi_route
> Same here, we have to setup an adapter route due to the fact MSIX
> notifications are delivered as adapter/thin IRQs on the platform.
> 
> Any suggestion or idea how a better abstraction could look like?
> 
> With all the platform constraints I was not able to find a suitable
> emulated device. Remember s390:
> - does not support IO BARs
> - does not support INTx only MSIX

What about MSI (non-X)?

> - in reality currently there is only a PCI network card available

On the physical hardware?

> - platform does not support fancy I/O like usb or audio :-)
>   So we don't even have kernel (host and guest) support for this
>   kind of devices.

Does that mean you couldn't?  What about virtio-net-pci with MSI-X
interrupts or emulated xhci with MSI-X interrupts, couldn't those be
supported if s390 MSI-X were properly integrated into the QEMU MSI-X
API?  vfio-pci isn't the right level to be switching between the
standard API and the s390 API.

> >  - We can probably come up with a better way to determine which address
> > space to connect to the memory listener.
> Any suggestion or idea for that?

I imagine you can tell by the address space of the device whether it
lives behind an emulated IOMMU or not and therefore pick the closest
address space for the notifier, the IOMMU or the system.  Thanks,

Alex

  reply	other threads:[~2014-09-24 16:06 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-19 11:54 [Qemu-devel] [RFC patch 0/6] vfio based pci pass-through for qemu/KVM on s390 frank.blaschka
2014-09-19 11:54 ` [Qemu-devel] [RFC patch 1/6] KVM: s390: Enable PCI instructions frank.blaschka
2014-09-19 11:54 ` [Qemu-devel] [RFC patch 2/6] iommu: add iommu for s390 platform frank.blaschka
2014-09-19 11:54 ` [Qemu-devel] [RFC patch 3/6] vfio: make vfio build on s390 frank.blaschka
2014-09-19 11:54 ` [Qemu-devel] [RFC patch 4/6] s390: Add PCI bus support frank.blaschka
2014-09-19 11:54 ` [Qemu-devel] [RFC patch 5/6] s390: implement pci instruction frank.blaschka
2014-09-19 15:12   ` Thomas Huth
2014-09-22  7:40     ` Frank Blaschka
2014-09-19 11:54 ` [Qemu-devel] [RFC patch 6/6] vfio: make vfio run on s390 platform frank.blaschka
2014-09-22 20:47 ` [Qemu-devel] [RFC patch 0/6] vfio based pci pass-through for qemu/KVM on s390 Alex Williamson
2014-09-22 22:08   ` Alexander Graf
2014-09-22 22:28     ` Alex Williamson
2014-09-23  8:33       ` Alexander Graf
2014-09-24  8:47   ` Frank Blaschka
2014-09-24 16:05     ` Alex Williamson [this message]
2014-09-26  6:45       ` Frank Blaschka
2014-09-26 19:59         ` Alex Williamson
2014-10-01  9:11           ` Frank Blaschka
2014-10-01 17:26             ` Alex Williamson
2014-10-02  7:21               ` Frank Blaschka

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=1411574757.24563.101.camel@ul30vt.home \
    --to=alex.williamson@redhat.com \
    --cc=agraf@suse.de \
    --cc=blaschka@linux.vnet.ibm.com \
    --cc=frank.blaschka@de.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@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).