Bug 2151555
| Summary: | [virtio-iommu] "VFIO_MAP_DMA failed: File exists" errors when VFIO devices are in the same guest iommu group | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 9 | Reporter: | Eric Auger <eric.auger> |
| Component: | qemu-kvm | Assignee: | Virtualization Maintenance <virt-maint> |
| qemu-kvm sub component: | Devices | QA Contact: | jinl |
| Status: | CLOSED MIGRATED | Docs Contact: | |
| Severity: | medium | ||
| Priority: | medium | CC: | alex.williamson, coli, jinl, jinzhao, juzhang, mst, peterx, virt-maint, yama, yanghliu, zhguo |
| Version: | 9.2 | Keywords: | MigratedToJIRA, Triaged |
| Target Milestone: | rc | Flags: | pm-rhel:
mirror+
|
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2023-08-07 14:29:54 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
Eric Auger
2022-12-07 13:53:30 UTC
Sent "[PATCH for 8.0 0/2] virtio-iommu: Fix Replay" upstream try to reproduce this bz with assigning 2 devices to PCIe to PCI bridge
qemu command
-device '{"driver":"virtio-iommu","id":"iommu0","bus":"pcie.0","addr":"0x4"}' \
-device '{"driver":"pcie-pci-bridge","id":"pci.16","bus":"pci.1","addr":"0x0"}' \
-device '{"driver":"vfio-pci","host":"0000:02:00.0","id":"hostdev0","bus":"pci.16","addr":"0x2"}' \
-device '{"driver":"vfio-pci","host":"0000:00:1a.0","id":"hostdev1","bus":"pci.16","addr":"0x1"}' \
...
check iommu group in vm
#lspci
01:00.0 PCI bridge: Red Hat, Inc. Device 000e
02:01.0 USB controller: Intel Corporation C610/X99 series chipset USB Enhanced Host Controller #2 (rev 05)
02:02.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 Gigabit Ethernet PCIe
#dmesg | grep iommu
[ 2.080581] xhci_hcd 0000:04:00.0: Adding to iommu group 0
[ 2.917698] pcieport 0000:00:02.0: Adding to iommu group 1
[ 2.927124] pcieport 0000:00:02.1: Adding to iommu group 2
[ 2.936803] pcieport 0000:00:02.2: Adding to iommu group 3
[ 2.945757] pcieport 0000:00:02.3: Adding to iommu group 4
[ 2.954896] pcieport 0000:00:02.4: Adding to iommu group 5
[ 2.963906] pcieport 0000:00:02.5: Adding to iommu group 6
[ 2.972958] pcieport 0000:00:02.6: Adding to iommu group 7
[ 2.981013] pcieport 0000:00:02.7: Adding to iommu group 8
[ 2.989058] pcieport 0000:00:03.0: Adding to iommu group 9
[ 2.998632] pcieport 0000:00:03.1: Adding to iommu group 10
[ 3.006949] pcieport 0000:00:03.2: Adding to iommu group 11
[ 3.015260] pcieport 0000:00:03.3: Adding to iommu group 12
[ 3.024007] pcieport 0000:00:03.4: Adding to iommu group 13
[ 3.031627] pcieport 0000:00:03.5: Adding to iommu group 14
[ 3.039167] pcieport 0000:00:03.6: Adding to iommu group 15
[ 3.057450] virtio-pci 0000:00:01.0: Adding to iommu group 16
[ 3.061114] virtio-pci 0000:03:00.0: Adding to iommu group 17
[ 3.064687] virtio-pci 0000:05:00.0: Adding to iommu group 18
[ 3.068482] virtio-pci 0000:06:00.0: Adding to iommu group 19
[ 3.072032] virtio-pci 0000:08:00.0: Adding to iommu group 20
[ 3.076255] virtio-pci 0000:09:00.0: Adding to iommu group 21
[ 4.110884] ahci 0000:00:1f.2: Adding to iommu group 22
[ 6.740302] lpc_ich 0000:00:1f.0: Adding to iommu group 22
[ 6.794388] i801_smbus 0000:00:1f.3: Adding to iommu group 22
The assigned devices and pcie-pci-bridge didn't in iommu group.But with intel_iommu, it can be added to the same group.
with intel_iommu
-device '{"driver":"intel-iommu","id":"iommu0","intremap":"on","caching-mode":true,"device-iotlb":true}' \
-device '{"driver":"pcie-pci-bridge","id":"pci.16","bus":"pci.1","addr":"0x0"}' \
-device '{"driver":"vfio-pci","host":"0000:02:00.0","id":"hostdev0","bus":"pci.16","addr":"0x1"}' \
-device '{"driver":"vfio-pci","host":"0000:00:1a.0","id":"hostdev1","bus":"pci.16","addr":"0x2"}' \
...
#lspci
01:00.0 PCI bridge: Red Hat, Inc. Device 000e
02:01.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5720 Gigabit Ethernet PCIe
02:02.0 USB controller: Intel Corporation C610/X99 series chipset USB Enhanced Host Controller #2 (rev 05)
[ 2.428317] pci 0000:01:00.0: Adding to iommu group 25
[ 2.429055] pci 0000:02:01.0: Adding to iommu group 25
[ 2.429800] pci 0000:02:02.0: Adding to iommu group 25
Eric, can you help to check the behavior? Thanks.
(In reply to jinl from comment #2) > try to reproduce this bz with assigning 2 devices to PCIe to PCI bridge > > qemu command > -device > '{"driver":"virtio-iommu","id":"iommu0","bus":"pcie.0","addr":"0x4"}' \ > -device > '{"driver":"pcie-pci-bridge","id":"pci.16","bus":"pci.1","addr":"0x0"}' \ > -device > '{"driver":"vfio-pci","host":"0000:02:00.0","id":"hostdev0","bus":"pci.16", > "addr":"0x2"}' \ > -device > '{"driver":"vfio-pci","host":"0000:00:1a.0","id":"hostdev1","bus":"pci.16", > "addr":"0x1"}' \ > ... > > check iommu group in vm > #lspci > 01:00.0 PCI bridge: Red Hat, Inc. Device 000e > 02:01.0 USB controller: Intel Corporation C610/X99 series chipset USB > Enhanced Host Controller #2 (rev 05) > 02:02.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme > BCM5720 Gigabit Ethernet PCIe > > #dmesg | grep iommu > [ 2.080581] xhci_hcd 0000:04:00.0: Adding to iommu group 0 > [ 2.917698] pcieport 0000:00:02.0: Adding to iommu group 1 > [ 2.927124] pcieport 0000:00:02.1: Adding to iommu group 2 > [ 2.936803] pcieport 0000:00:02.2: Adding to iommu group 3 > [ 2.945757] pcieport 0000:00:02.3: Adding to iommu group 4 > [ 2.954896] pcieport 0000:00:02.4: Adding to iommu group 5 > [ 2.963906] pcieport 0000:00:02.5: Adding to iommu group 6 > [ 2.972958] pcieport 0000:00:02.6: Adding to iommu group 7 > [ 2.981013] pcieport 0000:00:02.7: Adding to iommu group 8 > [ 2.989058] pcieport 0000:00:03.0: Adding to iommu group 9 > [ 2.998632] pcieport 0000:00:03.1: Adding to iommu group 10 > [ 3.006949] pcieport 0000:00:03.2: Adding to iommu group 11 > [ 3.015260] pcieport 0000:00:03.3: Adding to iommu group 12 > [ 3.024007] pcieport 0000:00:03.4: Adding to iommu group 13 > [ 3.031627] pcieport 0000:00:03.5: Adding to iommu group 14 > [ 3.039167] pcieport 0000:00:03.6: Adding to iommu group 15 > [ 3.057450] virtio-pci 0000:00:01.0: Adding to iommu group 16 > [ 3.061114] virtio-pci 0000:03:00.0: Adding to iommu group 17 > [ 3.064687] virtio-pci 0000:05:00.0: Adding to iommu group 18 > [ 3.068482] virtio-pci 0000:06:00.0: Adding to iommu group 19 > [ 3.072032] virtio-pci 0000:08:00.0: Adding to iommu group 20 > [ 3.076255] virtio-pci 0000:09:00.0: Adding to iommu group 21 > [ 4.110884] ahci 0000:00:1f.2: Adding to iommu group 22 > [ 6.740302] lpc_ich 0000:00:1f.0: Adding to iommu group 22 > [ 6.794388] i801_smbus 0000:00:1f.3: Adding to iommu group 22 > > The assigned devices and pcie-pci-bridge didn't in iommu group.But with > intel_iommu, it can be added to the same group. This does not look normal. Would it be possible to get access to the machine? Thanks Eric (In reply to Eric Auger from comment #3) > This does not look normal. Would it be possible to get access to the machine? > > Thanks > > Eric Hi Eric, Host IP: 10.73.224.223 Host passwd: kvmautotest Guest name: rhel Guest passwd: redhat I also install a vm with intel_iommu named intel, you can compare the behavior, the passwd is the same. Thanks. Thank you for the machine coordinates. Looking at it ... Hello, I can reproduce on my ARM machine. I don't want to prevent you from using your machine. I will try to fix on mine. Nevertheless please keep your setup in mind as I may need it in short term to handle the primary BZ topic (-EEXIST replay issue). I will create a separate BZ for the group issue, against qemu. Thanks Eric (In reply to Eric Auger from comment #6) > Hello, > > I can reproduce on my ARM machine. I don't want to prevent you from using > your machine. I will try to fix on mine. Nevertheless please keep your setup > in mind as I may need it in short term to handle the primary BZ topic > (-EEXIST replay issue). I will create a separate BZ for the group issue, > against qemu. > > Thanks > > Eric File a Bug 2155954 to track the iommu group issue. Thanks. Moving the ITR to 9.3 since the fix is not upstream yet and I have difficulties to set up a reproducer (pcie to pci bridge not working with virtio-iommu) Eric - Any update on this - is there an upstream fix or should/can we just move this to the backlog until there is (In reply to John Ferlan from comment #9) > Eric - Any update on this - is there an upstream fix or should/can we just > move this to the backlog until there is Hi John, yes this is rather low priority at the moment. I reset the ITR and the assignee. Hope this is sufficient. |