On 2021/1/13 0:58, Maxime Coquelin wrote:

On 1/12/21 10:37 AM, Maxime Coquelin wrote:
bus/pci: ...

On 10/22/20 5:51 PM, 谢华伟(此时此刻) wrote:
From: "huawei.xhw" <huawei....@alibaba-inc.com>

VFIO should use the same way to map/read/write PORT IO as UIO, for
virtio PMD.
Please provide more details in the commit message on why the way VFIO
works today is wrong (The cover letter is lost once applied).
ok

Signed-off-by: huawei.xhw <huawei....@alibaba-inc.com>
Same comment about name format as on previous patches.

---
  drivers/bus/pci/linux/pci.c     | 8 ++++----
  drivers/bus/pci/linux/pci_uio.c | 4 +++-
  2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c
index 0dc99e9..2ed9f2b 100644
--- a/drivers/bus/pci/linux/pci.c
+++ b/drivers/bus/pci/linux/pci.c
@@ -687,7 +687,7 @@ int rte_pci_write_config(const struct rte_pci_device 
*device,
  #ifdef VFIO_PRESENT
        case RTE_PCI_KDRV_VFIO:
                if (pci_vfio_is_enabled())
-                       ret = pci_vfio_ioport_map(dev, bar, p);
+                       ret = pci_uio_ioport_map(dev, bar, p);
Doesn't it create a regression with regards to needed capabilities?
My understanding is that before this patch we don't need to call iopl(),
whereas once applied it is required, correct?
I did some testing today, and think it is not a regression with para-
virtualized Virtio devices.

Indeed, I thought it would be a regression with Legacy devices when
IOMMU is enabled and the program is run as non-root (IOMMU enabled
just to suport IOVA as VA mode). But it turns out para-virtualized
Virtio legacy device and vIOMMU enabled is not a supported configuration
by QEMU.

Note that when noiommu mode is enabled, the app needs cap_sys_rawio, so
same as iopl(). No regression in this case too.

That said, with real (non para-virtualized) Virtio device using PIO like
yours, doesn't your patch introduce a restriction for your device that
it will require cap_sys_rawio whereas it would not be needed?

I don't catch the regression issue.

With real virtio device(hardware implemented), if it is using MMIO, no cap_sys_rawio is required.

If it is using PIO, iopl is required always.


Thanks,
Maxime

Regards,
Maxime

Reply via email to