When using NVME on SG2044, the NVME always complains "I/O tag XXX
(XXX) QID XX timeout, completion polled", which is caused by the
broken handler of the sg2042-msi driver.
As PLIC driver can only setting affinity when enabling, the sg2042-msi
does not properly handled affinity setting previously and enable irq in
an unexpected executing path.
Add irq_startup/irq_shutdown support to the PCI template domain,
then set irq_chip_[startup/shutdown]_parent for irq_startup/
irq_shutdown of the sg2042-msi driver. So the irq can be started
properly.
Inochi Amaoto (4):
genirq: Add irq_chip_(startup/shutdown)_parent
PCI/MSI: Add startup/shutdown support for per device MSI[X] domains
irqchip/sg2042-msi: Fix broken affinity setting
irqchip/sg2042-msi: Set MSI_FLAG_MULTI_PCI_MSI flags for SG2044
drivers/irqchip/irq-sg2042-msi.c | 13 ++++++--
drivers/pci/msi/irqdomain.c | 52 ++++++++++++++++++++++++++++++++
include/linux/irq.h | 2 ++
include/linux/msi.h | 2 ++
kernel/irq/chip.c | 37 +++++++++++++++++++++++
5 files changed, 104 insertions(+), 2 deletions(-)
--
2.50.1