From: Alex Williamson <alex.williamson@redhat.com>
To: bhelgaas@google.com
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
x86@kernel.org, tglx@linutronix.de, mingo@redhat.com,
hpa@zytor.com, joro@8bytes.org, iommu@lists.linux-foundation.org
Subject: [PATCH 0/3] PCI/x86: Interface for testing multivector MSI support
Date: Fri, 21 Nov 2014 15:08:27 -0700 [thread overview]
Message-ID: <20141121213752.31095.30735.stgit@gimli.home> (raw)
I'd like to make vfio-pci capable of manipulating the device exposed
to the user such that if the host can only support a single MSI
vector then we hide the fact that the device itself may actually be
able to support more. When we virtualize PCI config space and
interrupt setup there's no PCI protocol for the device failing to
allocate the number of vectors that it said were available. If the
userspace driver is a guest operating system, it certainly doesn't
expect this to fail. I don't think we can ever guarantee that a
multi-vector request will succeed, but we can certainly guarantee
that it will fail if the platform doesn't support it.
An example device is the Atheros AR93xxx running in a Windows 7 VM.
Both the device and the guest OS support multiple MSI vectors. With
interrupt remapping, such that the host supports multivector, the
device works well in the guest. With interrupt remapping disabled,
the device is far less reliable because of the mismatch in MSI
programming vs driver configuration and often fails. If vfio-pci
can test whether multiple vectors are supported, then we can make it
work reliably in both cases by adjusting the exposed MSI capability,
like in this patch that would follow this series:
https://github.com/awilliam/linux-vfio/commit/9ace67515680
With this series, only x86 w/ interrupt remapping will advertise
support for multiple MSI vectors. In surveying the code, I couldn't
find any other archs that allowed it, but I'll take corrections if
that's untrue. Thanks,
Alex
---
Alex Williamson (3):
PCI: Extend and export pci_msi_supported() for multivector MSI
PCI/x86: Add arch_supports_multivector_msi() hook
PCI/MSI: Initial hook for archs to declare multivector MSI support
arch/x86/include/asm/x86_init.h | 1 +
arch/x86/kernel/x86_init.c | 6 ++++++
drivers/iommu/irq_remapping.c | 6 ++++++
drivers/pci/msi.c | 20 +++++++++++++++++---
include/linux/msi.h | 1 +
include/linux/pci.h | 3 +++
6 files changed, 34 insertions(+), 3 deletions(-)
next reply other threads:[~2014-11-21 22:08 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-21 22:08 Alex Williamson [this message]
2014-11-21 22:08 ` [PATCH 1/3] PCI/MSI: Initial hook for archs to declare multivector MSI support Alex Williamson
2014-11-23 20:20 ` Thomas Gleixner
2014-11-24 21:45 ` Alex Williamson
2014-11-25 3:22 ` Jiang Liu
2014-11-21 22:08 ` [PATCH 2/3] PCI/x86: Add arch_supports_multivector_msi() hook Alex Williamson
2014-11-21 22:08 ` [PATCH 3/3] PCI: Extend and export pci_msi_supported() for multivector MSI Alex Williamson
2015-01-08 16:15 ` [PATCH 0/3] PCI/x86: Interface for testing multivector MSI support Bjorn Helgaas
2015-01-12 15:42 ` Alex Williamson
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=20141121213752.31095.30735.stgit@gimli.home \
--to=alex.williamson@redhat.com \
--cc=bhelgaas@google.com \
--cc=hpa@zytor.com \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.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).