[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH RFC/RFT] vfio/pci-quirks: Quirk for ath wireless
|
From: |
Jason Gunthorpe |
|
Subject: |
Re: [PATCH RFC/RFT] vfio/pci-quirks: Quirk for ath wireless |
|
Date: |
Thu, 15 Aug 2024 14:19:35 -0300 |
On Thu, Aug 15, 2024 at 10:59:05AM -0600, Alex Williamson wrote:
> > This is probably the only way to approach this, trap and emulate the
> > places in the device that program additional interrupt sources and do
> > a full MSI-like flow to set them up in the kernel.
>
> Your last sentence here seems to agree with this approach, but
> everything else suggests disapproval, so I don't know where you're
> going here.
Trapping and emulating is fine.
My concern is really only about skipping SET_IRQ.
That works because of the assumption that the IMS sources are going to
re-use addr/data pairs setup in the MSI CAP.
That assumption is frail, and won't work at all under the proper IMS
support Linux now has.
I really don't want to go down the road and have someone tell Thomas
he can't convert the Linux driver to use irq_domain IMS because it
will break this stuff here.
> I have no specs for this device, nor any involvement from the device
> vendor, so the idea of creating a vfio-pci variant driver to setup an
> irq_domain and augment a device specific SET_IRQs ioctls not only sounds
> tremendously more complicated (host and VMM), it's simply not possible
> with the knowledge we have at hand.
It seems like you have reverse engineered alot of the necessary
information though??
Maybe there is a more generic approach than a variant driver. If you
wanted to use IMS from userspace generically you could imagine some
kind of IMS focused "SET_IRQ" in generic VFIO. Where we'd create the
needed irq_domains and pass the addr/data pair back to userspace?
> I observe that the device configures MSI vectors and then writes that
> same vector address/data elsewhere into the device. Whether the device
> can trigger those vectors based only on the MSI capability programming
> and a secondary source piggybacks on those vectors or if this is just a
> hack by Qualcomm to use an MSI capability to acquire some vectors which
> are exclusively used by the secondary hardware, I have no idea.
Well at least that should be testable - but it seems crazy if the
device has registers for an addr/data pair and then somehow doesn't
use the values that get put in them??
Copying from the MSI is almost certainly a SW hack because IMS support
has never really existed in an OS until now. I think your guess for
why it is like this is pretty good.
> I do not believe that introducing a vfio device feature that disables
> virtualization of the MSI address/data _only_ at the vfio interface
> (not to a QEMU VM) provides some implicit support of this device
> behavior. These values are already available to a privileged user in
> the host and the same is available for an MSI-X use case by directly
> reading the MSI-X vector table.
To be clear, I'm not really worried about showing the data to
userspace.
Userspace just shouldn't be using it to implement an IMS technique!
Jason