Re: [PATCH RFC/RFT] vfio/pci-quirks: Quirk for ath wireless
James Prestwood <[email protected]>
| Newsgroups | org.infradead.lists.ath11k,dev.linux.lists.iommu,org.kernel.vger.kvm,org.kernel.vger.linux-wireless,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
On 8/15/24 10:19 AM, Jason Gunthorpe wrote: > 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 I see this thread went stale. Wondering if there was ever a final conclusion if this could get fixed for ath11k or not. I tried again on a recent kernel, 6.17, and see the same behavior. Thanks, James