** Description changed:
+ [Impact]
+
+ KVM: PPC: Book3S HV: Fix IRQ map warnings with XICS on pSeries KVM Guest
+
+ The commit 9576730d0e6e ("KVM: PPC: select IRQ_BYPASS_MANAGER") enabled
+ IRQ_BYPASS_MANAGER when CONFIG_KVM was set. Subsequently, commit
+ c57875f5f9be ("KVM: PPC: Book3S HV: Enable IRQ bypass") enabled IRQ
+ bypass and added the necessary callbacks to create/remove the mappings
+ between host real IRQ and the guest GSI.
+
+ The availability of IRQ bypass is determined by the arch-specific
+ function kvm_arch_has_irq_bypass(), which invokes
+ kvmppc_irq_bypass_add_producer_hv(). This function, in turn, calls
+ kvmppc_set_passthru_irq_hv() to create a mapping in the passthrough IRQ
+ map, associating a host IRQ to a guest GSI.
+
+ However, when a pSeries KVM guest (L2) is booted within an LPAR (L1)
+ with the kernel boot parameter `xive=off`, it defaults to using emulated
+ XICS controller. As an attempt to establish host IRQ to guest GSI
+ mappings via kvmppc_set_passthru_irq() on a PCI device hotplug
+ (passhthrough) operation fail, returning -ENOENT. This failure occurs
+ because only interrupts with EOI operations handled through OPAL calls
+ (verified via is_pnv_opal_msi()) are currently supported.
+
+ These mapping failures lead to below repeated warnings in the L1 host:
+
+ [ 509.220349] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(58,4970)
+ [ 509.220368] kvmppc_set_passthru_irq (irq 58, gsi 4970) fails: -2
+ [ 509.220376] vfio-pci 0015:01:00.0: irq bypass producer (token
0000000090bc635b) registration fails: -2
+ ...
+ [ 509.291781] vfio-pci 0015:01:00.0: irq bypass producer (token
000000003822eed8) registration fails: -2
+
+ Fix this by restricting IRQ bypass enablement on pSeries systems by
+ making the IRQ bypass callbacks unavailable when running on pSeries
+ platform.
+
+ [Fix]
+
+ Backport from mainline:
+ - ccdb36cbe65f KVM: PPC: Book3S HV: Fix IRQ map warnings with XICS on pSeries
KVM Guest
+
+ [Test Plan]
+
+ The issue can be tested executing the following steps:
+
+ 1. Start a guest with kernel
+ 2. unbind the pci device from host using below command
+
+ root@ltcrain8og-lp6:~/NET# virsh nodedev-detach pci_0028_01_00_0
+ Device pci_0028_01_00_0 detached
+ root@ltcrain8og-lp6:~/NET# virsh nodedev-detach pci_0028_01_00_1
+ Device pci_0028_01_00_1 detached
+
+ 3. Now attach the pci device to guest using virsh attach-device command.
+ The xml snippet used is given below
+
+ root@ltcrain8og-lp6:~/NET# vi pci2.xml
+ <hostdev mode='subsystem' type='pci' managed='yes'>
+ <source>
+ <address domain='0x0028' bus='0x01' slot='0x00' function='0x0'/>
+ </source>
+ </hostdev>
+
+ root@ltcrain8og-lp6:~/NET# virsh attach-device vm pci2.xml
+ Device attached successfully
+
+ 4. Verify that on guest side the pci device gets attached successfully,
+ and the interface comes up. Moreover, check that the kernel ring buffer
+ does not show any error of the following type:
+
+ [57906.347794] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(100,4900)
+ [57906.347812] kvmppc_set_passthru_irq (irq 100, gsi 4900) fails: -2
+ [57906.347817] vfio-pci 0028:01:00.0: irq bypass producer (token
00000000c84b35a9) registration fails: -2
+
+ [Where Problems Could Occur]
+
+ The fix affects the IRQ bypass infrastructure in the PowerPC KVM hypervisor,
+ specifically the initialization of architecture-specific callback handlers
for IRQ passthrough. An issue with this fix may introduce problems such as the
VFIO subsystem failing to handle IRQ bypass even on capable PowerNV systems.
+
+ ---
+
---Problem Description---
kvmppc_set_passthru_irq_hv: Could not assign IRQ map traces are seen when pci
device is attached to kvm guest when "xive=off" is set
root@ltcrain8og-lp6:~# lspci
0028:01:00.0 Ethernet controller: Mellanox Technologies MT27710 Family
[ConnectX-4 Lx]
0028:01:00.1 Ethernet controller: Mellanox Technologies MT27710 Family
[ConnectX-4 Lx]
root@ltcrain8og-lp6:~/NET# lspci -nnk -s 0028:01:00.0
0028:01:00.0 Ethernet controller [0200]: Mellanox Technologies MT27710 Family
[ConnectX-4 Lx] [15b3:1015]
- Subsystem: IBM Device [1014:061e]
- Kernel driver in use: vfio-pci
- Kernel modules: mlx5_core
+ Subsystem: IBM Device [1014:061e]
+ Kernel driver in use: vfio-pci
+ Kernel modules: mlx5_core
root@ltcrain8og-lp6:~/NET# lspci -nnk -s 0028:01:00.1
0028:01:00.1 Ethernet controller [0200]: Mellanox Technologies MT27710 Family
[ConnectX-4 Lx] [15b3:1015]
- Subsystem: IBM Device [1014:061e]
- Kernel driver in use: vfio-pci
- Kernel modules: mlx5_core
-
-
+ Subsystem: IBM Device [1014:061e]
+ Kernel driver in use: vfio-pci
+ Kernel modules: mlx5_core
--- Steps to reproduce ---
1. Start a guest with kernel
2. unbind the pci device from host using below command
root@ltcrain8og-lp6:~/NET# virsh nodedev-detach pci_0028_01_00_0
Device pci_0028_01_00_0 detached
root@ltcrain8og-lp6:~/NET# virsh nodedev-detach pci_0028_01_00_1
Device pci_0028_01_00_1 detached
3. Now attach the pci device to guest using virsh attach-device command.
The xml snippet used is given below
root@ltcrain8og-lp6:~/NET# vi pci2.xml
<hostdev mode='subsystem' type='pci' managed='yes'>
- <source>
- <address domain='0x0028' bus='0x01' slot='0x00' function='0x0'/>
- </source>
+ <source>
+ <address domain='0x0028' bus='0x01' slot='0x00' function='0x0'/>
+ </source>
</hostdev>
- root@ltcrain8og-lp6:~/NET# virsh attach-device vm pci2.xml
+ root@ltcrain8og-lp6:~/NET# virsh attach-device vm pci2.xml
Device attached successfully
4. On guest side the pci device gets attached successfully, and
interface comes up. But the following traces are seen every time the
device is attached
[57906.347794] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(100,4900)
[57906.347812] kvmppc_set_passthru_irq (irq 100, gsi 4900) fails: -2
[57906.347817] vfio-pci 0028:01:00.0: irq bypass producer (token
00000000c84b35a9) registration fails: -2
[57906.357879] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(100,4900)
[57906.357885] kvmppc_set_passthru_irq (irq 100, gsi 4900) fails: -2
[57906.357889] vfio-pci 0028:01:00.0: irq bypass producer (token
00000000c84b35a9) registration fails: -2
[57906.357983] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(101,4901)
[57906.357986] kvmppc_set_passthru_irq (irq 101, gsi 4901) fails: -2
[57906.357989] vfio-pci 0028:01:00.0: irq bypass producer (token
0000000024362fe0) registration fails: -2
[57906.368181] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(100,4900)
[57906.368187] kvmppc_set_passthru_irq (irq 100, gsi 4900) fails: -2
[57906.368190] vfio-pci 0028:01:00.0: irq bypass producer (token
00000000c84b35a9) registration fails: -2
[57906.368283] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(101,4901)
[57906.368288] kvmppc_set_passthru_irq (irq 101, gsi 4901) fails: -2
[57906.368292] vfio-pci 0028:01:00.0: irq bypass producer (token
0000000024362fe0) registration fails: -2
[57906.368384] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(102,4902)
[57906.368389] kvmppc_set_passthru_irq (irq 102, gsi 4902) fails: -2
[57906.368392] vfio-pci 0028:01:00.0: irq bypass producer (token
00000000f9dfc684) registration fails: -2
[57906.378034] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(100,4900)
[57906.378039] kvmppc_set_passthru_irq (irq 100, gsi 4900) fails: -2
[57906.378042] vfio-pci 0028:01:00.0: irq bypass producer (token
00000000c84b35a9) registration fails: -2
[57906.378135] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(101,4901)
[57906.378140] kvmppc_set_passthru_irq (irq 101, gsi 4901) fails: -2
[57906.378143] vfio-pci 0028:01:00.0: irq bypass producer (token
0000000024362fe0) registration fails: -2
[57906.378234] kvmppc_set_passthru_irq_hv: Could not assign IRQ map for
(102,4902)
[57906.378238] kvmppc_set_passthru_irq (irq 102, gsi 4902) fails: -2
+ Contact Information = [email protected]
- Contact Information = [email protected]
-
---uname output---
na
-
- Machine Type = NA
-
+
+ Machine Type = NA
+
---Debugger---
A debugger is not configured
-
Posted v1 upstream:
- https://lore.kernel.org/all/[email protected]/
+ https://lore.kernel.org/all/[email protected]/
~Amit
mirorring to distro for awareness.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2109951
Title:
kvmppc_set_passthru_irq_hv: Could not assign IRQ map traces are seen
when pci device is attached to kvm guest when "xive=off" is set
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-power-systems/+bug/2109951/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs