Re: [PATCH V4] Delay allocation of PCI device IRQs from boot time until bus scan time to fix PCI hotplugging

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

 



On Fri, Oct 23, 2015 at 06:03:33AM +0100, Matthew Minter wrote:
> Hi again everyone, this is the extremely long awaited version 4 of this patchset.
> 
> It has been rebased to the head of the lastest mainline kernel as of a few days
> ago as well as a huge number of small restructures have been included.

Hi Matthew,

Thanks a lot for updating this.  I noticed a few kbuild warnings; did you
get those, too?  I can forward them to you if you didn't.

Bjorn

> I have tried to include every suggested change from last round's reviewing
> but appologise in advance if I missed one, there were dozens of comments which
> I have tried to implement or fix. If I have indeed missed anything please let
> me know, it was likely not my rejecting the feedback but just missing it while
> reading through all the feedback I got.
> 
> The most notable change is this version should be bisectable as I have kept
> all the old mechanisms working untill all arches have been converted to the
> new code paths though I have not tested actually booting all the intermediate
> versions.
> 
> I have only been able to test this on an ACPI enabled amd64 computer (my own
> desktop) as I am now working on it only in free time without any resources
> from a lab so testing on other arches is very much appreciated.
> 
> I shall also note that my time to work on this in the future is very limited
> so any help anyone can provide in making any further changes which may be
> needed if another version is required would be appreciated as to avoid more
> potentially very long delays due to my limited availability.
> 
> Unlike the previous version, it should in theory be safe to apply patches
> 1 to 6 separately to the rest of the set, then the architecture specific
> patch sets could be applied in any order over time and the last patch to tidy
> up the old code can be applied last of all.
> 
> I am sorry for all the silly whitespace fixes, found in the last version
> their inclusion was due to my misconfigured editor applying them automatically
> then me failing to see them while reading over the diffs.
> 
> As always, comments and testers are appreciated but I am not sure I will be
> able to produce another version in the near future so any help with changes
> is also very much appreciated if there are issues.
> 
> This time I have also uploaded the patch set to github to aid any testers who
> do not wish to attempt to merge the patches from this email chain:
> 
> https://github.com/Vality/linux/tree/pci-fixes
> 
> Note that the changes are all in my pci-fixes branch so make sure to check
> out that before building.
> 
> Many thanks,
> Matthew
> 
> Patch description (same as v3) follows:
> 
> 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 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 or the change disabled completely).
> 
> 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 have not tested all the patches for rare arches.
> 
> arch/alpha/kernel/pci.c                 |  7 ++++++-
> arch/alpha/kernel/sys_nautilus.c        |  1 -
> arch/arm/kernel/bios32.c                |  9 +++++++--
> arch/cris/arch-v32/drivers/pci/bios.c   | 12 ++++++++----
> arch/frv/mb93090-mb00/pci-frv.h         |  1 -
> arch/frv/mb93090-mb00/pci-irq.c         | 24 ++++++++++++------------
> arch/frv/mb93090-mb00/pci-vdk.c         |  1 -
> arch/m68k/coldfire/pci.c                |  8 +++++++-
> arch/microblaze/pci/pci-common.c        |  9 ++++++---
> arch/mips/pci/pci.c                     |  9 +++++++--
> arch/mn10300/unit-asb2305/pci-asb2305.h |  5 +----
> arch/mn10300/unit-asb2305/pci-irq.c     | 24 ++++--------------------
> arch/mn10300/unit-asb2305/pci.c         | 19 ++++++-------------
> arch/powerpc/kernel/pci-common.c        | 25 ++++++++++++-------------
> 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                 | 23 +++++++++++++++++++----
> 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                     | 15 ---------------
> arch/x86/pci/irq.c                      | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------
> drivers/of/of_pci_irq.c                 |  2 +-
> drivers/pci/Makefile                    | 16 ++--------------
> drivers/pci/host/pci-host-generic.c     |  5 ++++-
> drivers/pci/host/pci-versatile.c        |  7 +++++--
> drivers/pci/host/pcie-iproc.c           | 12 ++++++++----
> drivers/pci/pci.c                       |  2 ++
> drivers/pci/pci.h                       |  1 +
> drivers/pci/setup-irq.c                 | 34 ++++++++++++++++------------------
> include/linux/pci.h                     |  5 +++--
> 43 files changed, 246 insertions(+), 210 deletions(-)
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux