Patch "irqchip/loongson-eiointc: Fix irq affinity setting during resume" has been added to the 6.3-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

    irqchip/loongson-eiointc: Fix irq affinity setting during resume

to the 6.3-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:
     irqchip-loongson-eiointc-fix-irq-affinity-setting-du.patch
and it can be found in the queue-6.3 subdirectory.

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



commit cc4812ea2cd98750479feae40f8687b24eb378af
Author: Jianmin Lv <lvjianmin@xxxxxxxxxxx>
Date:   Wed Jun 14 19:59:36 2023 +0800

    irqchip/loongson-eiointc: Fix irq affinity setting during resume
    
    [ Upstream commit fb07b8f83441febeb0daf199b5f18c6de9bbab03 ]
    
    The hierarchy of PCH PIC, PCH PCI MSI and EIONTC is as following:
    
            PCH PIC ------->|
                            |---->EIOINTC
            PCH PCI MSI --->|
    
    so the irq_data list of irq_desc for IRQs on PCH PIC and PCH PCI MSI
    is like this:
    
    irq_desc->irq_data(domain: PCH PIC)->parent_data(domain: EIOINTC)
    irq_desc->irq_data(domain: PCH PCI MSI)->parent_data(domain: EIOINTC)
    
    In eiointc_resume(), the irq_data passed into eiointc_set_irq_affinity()
    should be matched to EIOINTC domain instead of PCH PIC or PCH PCI MSI
    domain, so fix it.
    
    Fixes: a90335c2dfb4 ("irqchip/loongson-eiointc: Add suspend/resume support")
    
    Reported-by: yangqiming <yangqiming@xxxxxxxxxxx>
    Signed-off-by: Jianmin Lv <lvjianmin@xxxxxxxxxxx>
    Signed-off-by: Marc Zyngier <maz@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230614115936.5950-6-lvjianmin@xxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/irqchip/irq-loongson-eiointc.c b/drivers/irqchip/irq-loongson-eiointc.c
index 90181c42840b4..873a326ed6cbc 100644
--- a/drivers/irqchip/irq-loongson-eiointc.c
+++ b/drivers/irqchip/irq-loongson-eiointc.c
@@ -317,7 +317,7 @@ static void eiointc_resume(void)
 			desc = irq_resolve_mapping(eiointc_priv[i]->eiointc_domain, j);
 			if (desc && desc->handle_irq && desc->handle_irq != handle_bad_irq) {
 				raw_spin_lock(&desc->lock);
-				irq_data = &desc->irq_data;
+				irq_data = irq_domain_get_irq_data(eiointc_priv[i]->eiointc_domain, irq_desc_get_irq(desc));
 				eiointc_set_irq_affinity(irq_data, irq_data->common->affinity, 0);
 				raw_spin_unlock(&desc->lock);
 			}



[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