s390/pci: Add missing virt_to_phys() for directed DIBV
authorNiklas Schnelle <schnelle@linux.ibm.com>
Tue, 11 Jun 2024 12:06:31 +0000 (14:06 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Mon, 17 Jun 2024 19:49:01 +0000 (21:49 +0200)
In commit 4e4dc65ab578 ("s390/pci: use phys_to_virt() for AIBVs/DIBVs")
the setting of dibv_addr was missed when adding virt_to_phys(). This
only affects systems with directed interrupt delivery enabled which are
not generally available.

Fixes: 4e4dc65ab578 ("s390/pci: use phys_to_virt() for AIBVs/DIBVs")
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/pci/pci_irq.c

index ff8f24854c6462f34b29e3d523b6a6bce8f68100..0ef83b6ac0db7466d4db64ec8a1555b3e66ca499 100644 (file)
@@ -410,7 +410,7 @@ static void __init cpu_enable_directed_irq(void *unused)
        union zpci_sic_iib iib = {{0}};
        union zpci_sic_iib ziib = {{0}};
 
-       iib.cdiib.dibv_addr = (u64) zpci_ibv[smp_processor_id()]->vector;
+       iib.cdiib.dibv_addr = virt_to_phys(zpci_ibv[smp_processor_id()]->vector);
 
        zpci_set_irq_ctrl(SIC_IRQ_MODE_SET_CPU, 0, &iib);
        zpci_set_irq_ctrl(SIC_IRQ_MODE_D_SINGLE, PCI_ISC, &ziib);