|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 2/2] vpci/msix: fix PBA accesses
Hi Roger,
The revised patch looks good. The PBA writes seen during ioatdma driver
initialization (self-test) complete successfully and the driver doesn't complain
(I see two interrupts per ioatdma device). The driver has a self-test feature
which appears to exercise MSIX interrupts and has code which appears to cause a
PBA write.
Feel free to add "Tested-by: Alex.Olson@xxxxxxxxxx" to your patchset.
Thanks also for the pointer to your 2018 work on SR-IOV, I'll give it a try.
FYI, with this patch, I was seeing msix_read() and msix_write() being called
during the driver's self-test on physical address 0xfbc01800, corresponding to
the beginning of the PBA (lspci excerpt below):
02:00.0 System peripheral: Intel Corporation Xeon Processor D Family QuickData
Technology Register DMA Channel 0
...
Region 0: Memory at fbc06000 (64-bit, non-prefetchable) [size=8K]
...
Capabilities: [ac] MSI-X: Enable+ Count=1 Masked-
Vector table: BAR=0 offset=00001000
PBA: BAR=0 offset=00001800
...
Kernel modules: ioatdma
The functions involved on the Linux kernel side are:
ioat_probe()
-> ioat3_dma_self_test()
-> ioat_dma_self_test()
-> ioat_free_chan_resources()
-> ioat_reset_hw()
drivers/dma/ioat/dma.c: ioat_reset_hw()
...
ioat_dma->msixpba = readq(ioat_dma->reg_base + 0x1800);
...
writeq(ioat_dma->msixpba, ioat_dma->reg_base + 0x1800);
Thanks,
-Alex
On Sat, 2022-02-26 at 11:10 +0100, Roger Pau Monné wrote:
> On Fri, Feb 25, 2022 at 11:57:05AM -0600, Alex Olson wrote:
> > I think there is an issue in the spin_lock handling of patch 2 for the
> > "msix_write" function as it results in the lock being taken a second time
> > while
> > held (hangs).
> >
> > The lock taken before checking "VMSIX_ADDR_IN_RANGE" isn't unlocked for the
> > non-
> > PBA case and a second lock is attempted just before the call to get_entry()
> > later in the same function. It looks like either the added lock should
> > either
> > be moved inside the PBA case or the lock before get_entry() should be
> > removed.
>
> Sorry, was in a rush to send this before leaving yesterday and didn't
> refresh the commit before generating the patch, v2.1 should be fixed.
>
> Could you provide a 'Tested-by' if it work for you?
>
> > On my server, upon loading the ioatdma driver, it now successfully attempts
> > an
> > PBA write (which now doesn't crash the system), but I'm not sure I have a
> > way to
> > fully exercise it...
>
> Urg, that's weird, PBA should be read-only only according to the spec.
> Writes to PBA have undefined behavior.
>
> > I also see a different (related) issue in which modify_bars is called on a
> > virtual function seemingly before the BAR addresses are initialized/known
> > and
> > will start a different thread for that topic.
>
> SR-IOV is not supported on PVH dom0 yet, so that's not going to work.
> I've posted a series in 2018 to enable it, but sadly had no time to
> work on it anymore:
>
> https://lore.kernel.org/xen-devel/20180717094830.54806-1-roger.pau@xxxxxxxxxx/
>
> It's likely not going to apply cleanly, and there's a lot of comments
> to be fixed up there.
>
> Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |