linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC V2] Factor out pci_fixup_irqs and give IRQs to hot-added devices
@ 2014-08-05 16:11 matthew_minter
  2014-08-05 16:11 ` [PATCH 01/22] Added some infrastructure to allow assigning PCI device IRQs at device enable time and removed pci_fixup_irqs as the other change obsolites it matthew_minter
                   ` (21 more replies)
  0 siblings, 22 replies; 31+ messages in thread
From: matthew_minter @ 2014-08-05 16:11 UTC (permalink / raw)
  To: bhelgaas, linux-pci

pci_fixup_irqs is the current method used in most arches to assign IRQs to
PCI devices. This has a number of flaws including it requiring an extra walk
of the PCI bus and most importantly not running for devices which are added
after boot time, this includes hot-added devices on boards that support this.

This patch set (which is a respin of my earlier patch set) modifies the
IRQ mapping and swizzling infrastructure such that functions are registered
by the boot code (instead of being run directly by the boot code)
and then run later in the enable_device path such that it will apply to all
devices and not only those inserted at boot time.

This is cleaner as it unifies how each architecture allocates PCI IRQs as much
as possible (some arches were particularly resistant to these changes so some
work-arounds have been used).

The caveat here is that I have been forced to modify some architecture specific
code for various architectures which I cannot test due to not having such boards
available. The code seems correct and the changes in most cases are small and
trivial however I need some help testing these patches.

I am also a little unsure if these should all be here or if some of them should
be sent to architecture specific lists, the reason I picked here as these
all need to be applied at once in order to safely work.

Any comments on this patch revision would be very appreciated, particularly if
anyone can catch bugs in any of the arches which are listed as (untested)
in the patch names.

Many thanks,
Matthew

arch/alpha/kernel/pci.c                 | 16 ++++++++++------
arch/alpha/kernel/sys_nautilus.c        |  1 -
arch/arm/kernel/bios32.c                | 13 +++++++++----
arch/cris/arch-v32/drivers/pci/bios.c   | 14 +++++---------
arch/frv/mb93090-mb00/pci-frv.h         |  1 -
arch/frv/mb93090-mb00/pci-irq.c         | 28 +++++++++++++++++-----------
arch/frv/mb93090-mb00/pci-vdk.c         |  1 -
arch/ia64/pci/pci.c                     |  3 +++
arch/m68k/platform/coldfire/pci.c       |  8 +++++++-
arch/microblaze/pci/pci-common.c        | 10 +++++++---
arch/mips/pci/pci.c                     |  9 +++++++--
arch/mn10300/unit-asb2305/pci-asb2305.h |  5 +----
arch/mn10300/unit-asb2305/pci-irq.c     | 25 +++++--------------------
arch/mn10300/unit-asb2305/pci.c         | 21 ++++++++-------------
arch/parisc/kernel/pci.c                |  8 +++++++-
arch/powerpc/kernel/pci-common.c        | 26 +++++++++++++-------------
arch/s390/pci/pci.c                     |  7 +++++++
arch/sh/drivers/pci/fixups-cayman.c     |  2 +-
arch/sh/drivers/pci/fixups-dreamcast.c  |  2 +-
arch/sh/drivers/pci/fixups-r7780rp.c    |  2 +-
arch/sh/drivers/pci/fixups-rts7751r2d.c |  6 +++---
arch/sh/drivers/pci/fixups-sdk7780.c    |  4 ++--
arch/sh/drivers/pci/fixups-se7751.c     |  2 +-
arch/sh/drivers/pci/fixups-sh03.c       |  2 +-
arch/sh/drivers/pci/fixups-snapgear.c   |  2 +-
arch/sh/drivers/pci/fixups-titan.c      |  4 ++--
arch/sh/drivers/pci/pci.c               | 10 +++++++---
arch/sh/drivers/pci/pcie-sh7786.c       |  2 +-
arch/sparc/kernel/leon_pci.c            | 12 +++++++++++-
arch/sparc/kernel/pci.c                 | 21 +++++++++++++++++----
arch/tile/kernel/pci.c                  | 10 +++++++---
arch/tile/kernel/pci_gx.c               | 10 +++++++---
arch/unicore32/kernel/pci.c             | 11 ++++++++---
arch/x86/include/asm/pci_x86.h          |  7 ++++---
arch/x86/kernel/x86_init.c              |  1 -
arch/x86/pci/acpi.c                     |  5 ++++-
arch/x86/pci/common.c                   |  2 --
arch/x86/pci/irq.c                      | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------
drivers/of/of_pci_irq.c                 |  2 +-
drivers/pci/Makefile                    | 15 ++-------------
drivers/pci/host-bridge.c               |  2 +-
drivers/pci/pci.c                       |  6 +++++-
drivers/pci/pci.h                       |  1 +
drivers/pci/probe.c                     | 12 ------------
drivers/pci/setup-irq.c                 | 34 ++++++++++++++++------------------
include/linux/pci.h                     |  8 ++++----
46 files changed, 266 insertions(+), 222 deletions(-)


^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2014-09-04 22:22 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-05 16:11 [PATCH RFC V2] Factor out pci_fixup_irqs and give IRQs to hot-added devices matthew_minter
2014-08-05 16:11 ` [PATCH 01/22] Added some infrastructure to allow assigning PCI device IRQs at device enable time and removed pci_fixup_irqs as the other change obsolites it matthew_minter
2014-08-07  3:43   ` Wei Yang
2014-08-07 11:35     ` Matthew Minter
2014-08-08  1:20       ` Wei Yang
2014-08-11 10:16         ` Matthew Minter
2014-08-12  1:45           ` Wei Yang
2014-09-04 22:00           ` Bjorn Helgaas
2014-09-04 22:18             ` Bjorn Helgaas
2014-09-04 22:22               ` Bjorn Helgaas
2014-08-05 16:11 ` [PATCH 02/22] Modified x86 initialisation to accomodate PCI irq changes matthew_minter
2014-08-05 16:11 ` [PATCH 03/22] Added (untested) support to powerpc initialisation to fix pci " matthew_minter
2014-08-05 16:11 ` [PATCH 04/22] Added support to ARM architecture to accomodate new irq init code matthew_minter
2014-08-05 16:11 ` [PATCH 05/22] Added (untested) support to frv " matthew_minter
2014-08-05 16:11 ` [PATCH 06/22] Added (untested) support to mips " matthew_minter
2014-08-05 16:11 ` [PATCH 07/22] Fixed PCI initilisation code for arches which dont need to map irqs matthew_minter
2014-08-05 16:11 ` [PATCH 08/22] Added (untested) workaround to ia64 architecture to accomodate new irq init code. Unfortunately adding runtime irq assignment will not work but avoided breaking the existing code matthew_minter
2014-08-05 16:11 ` [PATCH 09/22] Added (untested) support to microblaze architecture to accomodate new irq init code matthew_minter
2014-08-05 16:11 ` [PATCH 10/22] Added (untested) support to cris " matthew_minter
2014-08-05 16:11 ` [PATCH 11/22] Added (untested) support to mn10300 " matthew_minter
2014-08-05 16:11 ` [PATCH 12/22] Added (untested) workaround to parisc architecture to accomodate new irq init code. Unfortunately adding runtime irq assignment will not work but avoided breaking the existing code matthew_minter
2014-08-05 16:11 ` [PATCH 13/22] Added (untested) support to sparc architecture to accomodate new irq init code matthew_minter
2014-08-05 16:11 ` [PATCH 14/22] Added (untested) support to alpha " matthew_minter
2014-08-05 16:11 ` [PATCH 15/22] Added (untested) support to m68k " matthew_minter
2014-08-05 16:11 ` [PATCH 16/22] Added (untested) support to tile " matthew_minter
2014-08-05 16:11 ` [PATCH 17/22] Added (untested) support to sh " matthew_minter
2014-08-05 16:11 ` [PATCH 18/22] Added (untested) support to unicore32 " matthew_minter
2014-08-05 16:11 ` [PATCH 19/22] Added (untested) workaround to s390 architecture to accomodate new irq init code. Unfortunately adding runtime irq assignment will not work but avoided breaking the existing code matthew_minter
2014-08-05 16:11 ` [PATCH 20/22] Added (untested) support to alpha nautilus boards to accomodate new irq init code matthew_minter
2014-08-05 16:11 ` [PATCH 21/22] Fixes so non PCI x86 systems should work matthew_minter
2014-08-05 16:11 ` [PATCH 22/22] Tidy up including documentation and messages matthew_minter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).