Patch "s390/pci: do not set affinity for floating irqs" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    s390/pci: do not set affinity for floating irqs

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     s390-pci-do-not-set-affinity-for-floating-irqs.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 8ecdf631e5a012fff986f56f4564f5237e86fec9
Author: Niklas Schnelle <schnelle@xxxxxxxxxxxxx>
Date:   Thu Apr 16 13:44:30 2020 +0200

    s390/pci: do not set affinity for floating irqs
    
    commit 86dbf32da150339ca81509fa2eb84c814b55258b upstream.
    
    with the introduction of CPU directed interrupts the kernel
    parameter pci=force_floating was introduced to fall back
    to the previous behavior using floating irqs.
    
    However we were still setting the affinity in that case,
    both in __irq_alloc_descs() and via the irq_set_affinity
    callback in struct irq_chip.
    
    For the former only set the affinity in the directed case.
    
    The latter is explicitly set in zpci_directed_irq_init()
    so we can just leave it unset for the floating case.
    
    Fixes: e979ce7bced2 ("s390/pci: provide support for CPU directed interrupts")
    Co-developed-by: Alexander Schmidt <alexs@xxxxxxxxxxxxx>
    Signed-off-by: Alexander Schmidt <alexs@xxxxxxxxxxxxx>
    Signed-off-by: Niklas Schnelle <schnelle@xxxxxxxxxxxxx>
    Signed-off-by: Vasily Gorbik <gor@xxxxxxxxxxxxx>
    Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

diff --git a/arch/s390/pci/pci_irq.c b/arch/s390/pci/pci_irq.c
index fbe97ab2e2286..743f257cf2cbd 100644
--- a/arch/s390/pci/pci_irq.c
+++ b/arch/s390/pci/pci_irq.c
@@ -115,7 +115,6 @@ static struct irq_chip zpci_irq_chip = {
 	.name = "PCI-MSI",
 	.irq_unmask = pci_msi_unmask_irq,
 	.irq_mask = pci_msi_mask_irq,
-	.irq_set_affinity = zpci_set_irq_affinity,
 };
 
 static void zpci_handle_cpu_local_irq(bool rescan)
@@ -276,7 +275,9 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
 		rc = -EIO;
 		if (hwirq - bit >= msi_vecs)
 			break;
-		irq = __irq_alloc_descs(-1, 0, 1, 0, THIS_MODULE, msi->affinity);
+		irq = __irq_alloc_descs(-1, 0, 1, 0, THIS_MODULE,
+				(irq_delivery == DIRECTED) ?
+				msi->affinity : NULL);
 		if (irq < 0)
 			return -ENOMEM;
 		rc = irq_set_msi_desc(irq, msi);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux