Skip to content

RFC Refine support of non-PCI-compliant Message

Jiang Liu linux-acpi linux-arm-kernel linux-pci linux-rdma linuxppc-dev lkml xen-devel 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest17 patches 5 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/17x86, irq: Normalize x86 irq_chip namearch/x86/kernel/apic/msi.c+2 -20 replies
2/17genirq: Introduce helper irq_domain_set_info() to reduce duplicated codearch/x86/kernel/apic/htirq.c arch/x86/platform/uv/uv_irq.c include/linux/irqdomain.h +1 more+18 -60 replies
3/17x86, PCI/MSI: Simplify the way to deal with remapped MSI interruptsarch/x86/kernel/apic/msi.c+13 -30 replies
4/17PCI/MSI: Replace msi_update_msg() with irq_chip_compose_msi_msg()arch/x86/kernel/apic/msi.c+4 -210 replies
5/17PCI/MSI: Move msi_set_affinity() to PCI corearch/x86/kernel/apic/msi.c drivers/pci/msi.c include/linux/msi.h+20 -180 replies
6/17genirq: Introduce callback irq_chip.irq_write_msi_msginclude/linux/irq.h+8 -00 replies
7/17x86, irq: Implement irq_chip.irq_write_msi_msg for MSI/DMAR/HPET irq_chipsarch/x86/kernel/apic/msi.c drivers/pci/msi.c include/linux/msi.h+28 -20 replies
8/17PCI/MSI: Use irq_chip.irq_write_msi_msg() to share common codedrivers/pci/msi.c include/linux/msi.h+9 -180 replies
9/17x86, irq: Simplify MSI/DMAR/HPET implementation by using common codearch/x86/kernel/apic/msi.c+6 -750 replies
10/17PCI, MSI: Split MSI code into PCI dependent and PCI independent partsdrivers/pci/Kconfig drivers/pci/msi.c include/linux/msi.h +3 more+112 -780 replies
11/17PCI, MSI: Rename __read_msi_msg() as __pci_read_msi_msg()arch/powerpc/platforms/pseries/msi.c arch/x86/pci/xen.c drivers/pci/msi.c +1 more+4 -120 replies
11/17PCI, MSI: Rename __read_msi_msg() as __pci_read_msi_msg()arch/powerpc/platforms/pseries/msi.c arch/x86/pci/xen.c drivers/pci/msi.c +1 more+4 -120 replies
12/17PCI, MSI: Rename __write_msi_msg() as __pci_write_msi_msg()arch/x86/pci/xen.c drivers/pci/msi.c include/linux/msi.h+7 -70 replies
12/17PCI, MSI: Rename __write_msi_msg() as __pci_write_msi_msg()arch/x86/pci/xen.c drivers/pci/msi.c include/linux/msi.h+7 -70 replies
13/17MSI: Provide irqdomain support for generic MSIarch/x86/kernel/apic/msi.c drivers/pci/msi.c include/linux/msi.h +1 more+101 -80 replies
14/17x86, PCI, MSI: Use common code to manage MSI interruptsarch/x86/kernel/apic/msi.c drivers/pci/msi.c include/linux/msi.h+124 -840 replies
15/17PCI, MSI: Clean up unused irqdomain related codearch/x86/kernel/apic/msi.c drivers/pci/msi.c include/linux/msi.h +1 more+9 -810 replies
16/17x86, htirq: Kill struct ht_irq_msg by reusing struct msi_msgarch/x86/kernel/apic/htirq.c drivers/infiniband/hw/ipath/ipath_iba6110.c drivers/pci/htirq.c +1 more+13 -170 replies
17/17x86, htirq: Use common MSI code to manage Hypertransport interruptsarch/x86/kernel/apic/htirq.c drivers/pci/Kconfig drivers/pci/htirq.c +1 more+60 -960 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [RFC Part4 v1 00/17] Refine support of non-PCI-compliant Message

Some interrupt controllers, such as DMAR/HPET/HT_IRQ, work almost in the same as PCI MSI interrupt controller. And there some devices make use of PCI MSI mechanism for non-PCI devices on ARm/ARM64 platforms.

So this patches tries to split PCI MSI code into PCI dependent part and PCI independent part. The PCI independent part will be used to support other PCI MSI like interrupt controllers.

Patch 1-9 are clean ups for previous hierarchy irqdomain patchset and preparation for coming PCI MSI code reorganization. Patch 10-15 split PCI MSI code and implement common mechanism to support other MSI alike interrupt contollers.
Patch 16-17 converts HT_IRQ to use the common MSI support mechanism.

This patch set only solves the issue to manage interrupt controller, but we still need another patch set to provide pci_enable_msix_range() alike interfaces to support non-PCI devices. To achieve that, we will:
1) Move msi_list from struct pci_dev into struct device
2) Abstract common code from drivers/pci/msi.c into kernel/irq/msi.c
3) Implement msi_enable_range()/msi_disable() alike interfaces.

Apparently, we need much more time to discuss the proposal for next patch set.

Hi Thomas and Bjorn,
Could you please to review patch 10,13 and give your thoughts?
Those are the main changes. This patch set only passes compilation and boot tests.

Regards!
Gerry

Jiang Liu (17):
x86, irq: Normalize x86 irq_chip name
genirq: Introduce helper irq_domain_set_info() to reduce duplicated
code
x86, PCI/MSI: Simplify the way to deal with remapped MSI interrupts PCI/MSI: Replace msi_update_msg() with irq_chip_compose_msi_msg() PCI/MSI: Move msi_set_affinity() to PCI core
genirq: Introduce callback irq_chip.irq_write_msi_msg
x86, irq: Implement irq_chip.irq_write_msi_msg for MSI/DMAR/HPET
irq_chips
PCI/MSI: Use irq_chip.irq_write_msi_msg() to share common code x86, irq: Simplify MSI/DMAR/HPET implementation by using common code PCI, MSI: Split MSI code into PCI dependent and PCI independent parts PCI, MSI: Rename __read_msi_msg() as __pci_read_msi_msg() PCI, MSI: Rename __write_msi_msg() as __pci_write_msi_msg()
MSI: Provide irqdomain support for generic MSI
x86, PCI, MSI: Use common code to manage MSI interrupts PCI, MSI: Clean up unused irqdomain related code
x86, htirq: Kill struct ht_irq_msg by reusing struct msi_msg x86, htirq: Use common MSI code to manage Hypertransport interrupts

 arch/powerpc/platforms/pseries/msi.c        |    2 +-
 arch/x86/kernel/apic/htirq.c                |  137 +++++-------
 arch/x86/kernel/apic/msi.c                  |  309 ++++++++++++---------------
 arch/x86/pci/xen.c                          |    4 +-
 arch/x86/platform/uv/uv_irq.c               |    5 +-
 drivers/infiniband/hw/ipath/ipath_iba6110.c |    2 +-
 drivers/pci/Kconfig                         |    5 +-
 drivers/pci/htirq.c                         |   20 +-
 drivers/pci/msi.c                           |  144 ++-----------
 include/linux/htirq.h                       |   15 +-
 include/linux/irq.h                         |    8 +
 include/linux/irqdomain.h                   |    4 +
 include/linux/msi.h                         |   89 +++++---
 kernel/irq/Kconfig                          |   10 +-
 kernel/irq/Makefile                         |    1 +
 kernel/irq/irqdomain.c                      |   10 +
 kernel/irq/msi.c                            |  133 ++++++++++++
 17 files changed, 454 insertions(+), 444 deletions(-)
 create mode 100644 kernel/irq/msi.c
Signature · 1 line
1.7.10.4