All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Bjorn Helgaas <helgaas@kernel.org>, Marc Zygnier <maz@kernel.org>,
	Alex Williamson <alex.williamson@redhat.com>,
	Kevin Tian <kevin.tian@intel.com>,
	Jason Gunthorpe <jgg@nvidia.com>, Megha Dey <megha.dey@intel.com>,
	Ashok Raj <ashok.raj@intel.com>,
	linux-pci@vger.kernel.org, Michael Ellerman <mpe@ellerman.id.au>,
	Paul Mackerras <paulus@samba.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	linuxppc-dev@lists.ozlabs.org,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	linux-mips@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	sparclinux@vger.kernel.org, x86@kernel.org,
	xen-devel@lists.xenproject.org, ath11k@lists.infradead.org,
	Wei Liu <wei.liu@kernel.org>,
	linux-hyperv@vger.kernel.org, Juergen Gross <jgross@suse.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>
Subject: [patch 00/22] genirq/msi, PCI/MSI: Spring cleaning - Part 1
Date: Sat, 27 Nov 2021 02:18:34 +0100 (CET)	[thread overview]
Message-ID: <20211126222700.862407977@linutronix.de> (raw)

The [PCI] MSI code has gained quite some warts over time. A recent
discussion unearthed a shortcoming: the lack of support for expanding
PCI/MSI-X vectors after initialization of MSI-X.

PCI/MSI-X has no requirement to setup all vectors when MSI-X is enabled in
the device. The non-used vectors have just to be masked in the vector
table. For PCI/MSI this is not possible because the number of vectors
cannot be changed after initialization.

The PCI/MSI code, but also the core MSI irq domain code are built around
the assumption that all required vectors are installed at initialization
time and freed when the device is shut down by the driver.

Supporting dynamic expansion at least for MSI-X is important for VFIO so
that the host side interrupts for passthrough devices can be installed on
demand.

This is the first part of a large (total 101 patches) series which
refactors the [PCI]MSI infrastructure to make runtime expansion of MSI-X
vectors possible. The last part (10 patches) provide this functionality.

The first part is mostly a cleanup which consolidates code, moves the PCI
MSI code into a separate directory and splits it up into several parts.

No functional change intended except for patch 2/N which changes the
behaviour of pci_get_vector()/affinity() to get rid of the assumption that
the provided index is the "index" into the descriptor list instead of using
it as the actual MSI[X] index as seen by the hardware. This would break
users of sparse allocated MSI-X entries, but non of them use these
functions.

This series is based on 5.16-rc2 and also available via git:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-1

For the curious who can't wait for the next part to arrive the full series
is available via:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-4

Thanks,

	tglx
---
 arch/powerpc/platforms/4xx/msi.c            |  281 ------------
 b/Documentation/driver-api/pci/pci.rst      |    2 
 b/arch/mips/pci/msi-octeon.c                |   32 -
 b/arch/powerpc/platforms/4xx/Makefile       |    1 
 b/arch/powerpc/platforms/cell/axon_msi.c    |    2 
 b/arch/powerpc/platforms/powernv/pci-ioda.c |    4 
 b/arch/powerpc/platforms/pseries/msi.c      |    6 
 b/arch/powerpc/sysdev/Kconfig               |    6 
 b/arch/s390/pci/pci_irq.c                   |    4 
 b/arch/sparc/kernel/pci_msi.c               |    4 
 b/arch/x86/hyperv/irqdomain.c               |   55 --
 b/arch/x86/include/asm/x86_init.h           |    6 
 b/arch/x86/include/asm/xen/hypervisor.h     |    8 
 b/arch/x86/kernel/apic/msi.c                |    8 
 b/arch/x86/kernel/x86_init.c                |   12 
 b/arch/x86/pci/xen.c                        |   19 
 b/drivers/irqchip/irq-gic-v2m.c             |    1 
 b/drivers/irqchip/irq-gic-v3-its-pci-msi.c  |    1 
 b/drivers/irqchip/irq-gic-v3-mbi.c          |    1 
 b/drivers/net/wireless/ath/ath11k/pci.c     |    2 
 b/drivers/pci/Makefile                      |    3 
 b/drivers/pci/msi/Makefile                  |    7 
 b/drivers/pci/msi/irqdomain.c               |  267 +++++++++++
 b/drivers/pci/msi/legacy.c                  |   79 +++
 b/drivers/pci/msi/msi.c                     |  645 ++++------------------------
 b/drivers/pci/msi/msi.h                     |   39 +
 b/drivers/pci/msi/pcidev_msi.c              |   43 +
 b/drivers/pci/pci-sysfs.c                   |    7 
 b/drivers/pci/xen-pcifront.c                |    2 
 b/include/linux/msi.h                       |  135 ++---
 b/include/linux/pci.h                       |    1 
 b/kernel/irq/msi.c                          |   41 +
 32 files changed, 696 insertions(+), 1028 deletions(-)
-- 
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Bjorn Helgaas <helgaas@kernel.org>, Marc Zygnier <maz@kernel.org>,
	Alex Williamson <alex.williamson@redhat.com>,
	Kevin Tian <kevin.tian@intel.com>,
	Jason Gunthorpe <jgg@nvidia.com>, Megha Dey <megha.dey@intel.com>,
	Ashok Raj <ashok.raj@intel.com>,
	linux-pci@vger.kernel.org, Michael Ellerman <mpe@ellerman.id.au>,
	Paul Mackerras <paulus@samba.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	linuxppc-dev@lists.ozlabs.org,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	linux-mips@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	sparclinux@vger.kernel.org, x86@kernel.org,
	xen-devel@lists.xenproject.org, ath11k@lists.infradead.org,
	Wei Liu <wei.liu@kernel.org>,
	linux-hyperv@vger.kernel.org, Juergen Gross <jgross@suse.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>
Subject: [patch 00/22] genirq/msi, PCI/MSI: Spring cleaning - Part 1
Date: Sat, 27 Nov 2021 02:19:20 +0100 (CET)	[thread overview]
Message-ID: <20211126222700.862407977@linutronix.de> (raw)
Message-ID: <20211127011920.PigUD033y650VWOqZEPsUDP66bpieBP475sWKCUj0NM@z> (raw)

The [PCI] MSI code has gained quite some warts over time. A recent
discussion unearthed a shortcoming: the lack of support for expanding
PCI/MSI-X vectors after initialization of MSI-X.

PCI/MSI-X has no requirement to setup all vectors when MSI-X is enabled in
the device. The non-used vectors have just to be masked in the vector
table. For PCI/MSI this is not possible because the number of vectors
cannot be changed after initialization.

The PCI/MSI code, but also the core MSI irq domain code are built around
the assumption that all required vectors are installed at initialization
time and freed when the device is shut down by the driver.

Supporting dynamic expansion at least for MSI-X is important for VFIO so
that the host side interrupts for passthrough devices can be installed on
demand.

This is the first part of a large (total 101 patches) series which
refactors the [PCI]MSI infrastructure to make runtime expansion of MSI-X
vectors possible. The last part (10 patches) provide this functionality.

The first part is mostly a cleanup which consolidates code, moves the PCI
MSI code into a separate directory and splits it up into several parts.

No functional change intended except for patch 2/N which changes the
behaviour of pci_get_vector()/affinity() to get rid of the assumption that
the provided index is the "index" into the descriptor list instead of using
it as the actual MSI[X] index as seen by the hardware. This would break
users of sparse allocated MSI-X entries, but non of them use these
functions.

The series is based on 5.16-rc2 and also available via git:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-1

For the curious who can't wait for the next part to arrive the full series
is available via:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-4

Thanks,

	tglx
---
 arch/powerpc/platforms/4xx/msi.c            |  281 ------------
 b/Documentation/driver-api/pci/pci.rst      |    2 
 b/arch/mips/pci/msi-octeon.c                |   32 -
 b/arch/powerpc/platforms/4xx/Makefile       |    1 
 b/arch/powerpc/platforms/cell/axon_msi.c    |    2 
 b/arch/powerpc/platforms/powernv/pci-ioda.c |    4 
 b/arch/powerpc/platforms/pseries/msi.c      |    6 
 b/arch/powerpc/sysdev/Kconfig               |    6 
 b/arch/s390/pci/pci_irq.c                   |    4 
 b/arch/sparc/kernel/pci_msi.c               |    4 
 b/arch/x86/hyperv/irqdomain.c               |   55 --
 b/arch/x86/include/asm/x86_init.h           |    6 
 b/arch/x86/include/asm/xen/hypervisor.h     |    8 
 b/arch/x86/kernel/apic/msi.c                |    8 
 b/arch/x86/kernel/x86_init.c                |   12 
 b/arch/x86/pci/xen.c                        |   19 
 b/drivers/irqchip/irq-gic-v2m.c             |    1 
 b/drivers/irqchip/irq-gic-v3-its-pci-msi.c  |    1 
 b/drivers/irqchip/irq-gic-v3-mbi.c          |    1 
 b/drivers/net/wireless/ath/ath11k/pci.c     |    2 
 b/drivers/pci/Makefile                      |    3 
 b/drivers/pci/msi/Makefile                  |    7 
 b/drivers/pci/msi/irqdomain.c               |  267 +++++++++++
 b/drivers/pci/msi/legacy.c                  |   79 +++
 b/drivers/pci/msi/msi.c                     |  645 ++++------------------------
 b/drivers/pci/msi/msi.h                     |   39 +
 b/drivers/pci/msi/pcidev_msi.c              |   43 +
 b/drivers/pci/pci-sysfs.c                   |    7 
 b/drivers/pci/xen-pcifront.c                |    2 
 b/include/linux/msi.h                       |  135 ++---
 b/include/linux/pci.h                       |    1 
 b/kernel/irq/msi.c                          |   41 +
 32 files changed, 696 insertions(+), 1028 deletions(-)
-- 
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Bjorn Helgaas <helgaas@kernel.org>, Marc Zygnier <maz@kernel.org>,
	Alex Williamson <alex.williamson@redhat.com>,
	Kevin Tian <kevin.tian@intel.com>,
	Jason Gunthorpe <jgg@nvidia.com>, Megha Dey <megha.dey@intel.com>,
	Ashok Raj <ashok.raj@intel.com>,
	linux-pci@vger.kernel.org, Michael Ellerman <mpe@ellerman.id.au>,
	Paul Mackerras <paulus@samba.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	linuxppc-dev@lists.ozlabs.org,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	linux-mips@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	sparclinux@vger.kernel.org, x86@kernel.org,
	xen-devel@lists.xenproject.org, ath11k@lists.infradead.org,
	Wei Liu <wei.liu@kernel.org>,
	linux-hyperv@vger.kernel.org, Juergen Gross <jgross@suse.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>
Subject: [patch 00/22] genirq/msi, PCI/MSI: Spring cleaning - Part 1
Date: Sat, 27 Nov 2021 02:18:34 +0100 (CET)	[thread overview]
Message-ID: <20211126222700.862407977@linutronix.de> (raw)

The [PCI] MSI code has gained quite some warts over time. A recent
discussion unearthed a shortcoming: the lack of support for expanding
PCI/MSI-X vectors after initialization of MSI-X.

PCI/MSI-X has no requirement to setup all vectors when MSI-X is enabled in
the device. The non-used vectors have just to be masked in the vector
table. For PCI/MSI this is not possible because the number of vectors
cannot be changed after initialization.

The PCI/MSI code, but also the core MSI irq domain code are built around
the assumption that all required vectors are installed at initialization
time and freed when the device is shut down by the driver.

Supporting dynamic expansion at least for MSI-X is important for VFIO so
that the host side interrupts for passthrough devices can be installed on
demand.

This is the first part of a large (total 101 patches) series which
refactors the [PCI]MSI infrastructure to make runtime expansion of MSI-X
vectors possible. The last part (10 patches) provide this functionality.

The first part is mostly a cleanup which consolidates code, moves the PCI
MSI code into a separate directory and splits it up into several parts.

No functional change intended except for patch 2/N which changes the
behaviour of pci_get_vector()/affinity() to get rid of the assumption that
the provided index is the "index" into the descriptor list instead of using
it as the actual MSI[X] index as seen by the hardware. This would break
users of sparse allocated MSI-X entries, but non of them use these
functions.

This series is based on 5.16-rc2 and also available via git:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-1

For the curious who can't wait for the next part to arrive the full series
is available via:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-4

Thanks,

	tglx
---
 arch/powerpc/platforms/4xx/msi.c            |  281 ------------
 b/Documentation/driver-api/pci/pci.rst      |    2 
 b/arch/mips/pci/msi-octeon.c                |   32 -
 b/arch/powerpc/platforms/4xx/Makefile       |    1 
 b/arch/powerpc/platforms/cell/axon_msi.c    |    2 
 b/arch/powerpc/platforms/powernv/pci-ioda.c |    4 
 b/arch/powerpc/platforms/pseries/msi.c      |    6 
 b/arch/powerpc/sysdev/Kconfig               |    6 
 b/arch/s390/pci/pci_irq.c                   |    4 
 b/arch/sparc/kernel/pci_msi.c               |    4 
 b/arch/x86/hyperv/irqdomain.c               |   55 --
 b/arch/x86/include/asm/x86_init.h           |    6 
 b/arch/x86/include/asm/xen/hypervisor.h     |    8 
 b/arch/x86/kernel/apic/msi.c                |    8 
 b/arch/x86/kernel/x86_init.c                |   12 
 b/arch/x86/pci/xen.c                        |   19 
 b/drivers/irqchip/irq-gic-v2m.c             |    1 
 b/drivers/irqchip/irq-gic-v3-its-pci-msi.c  |    1 
 b/drivers/irqchip/irq-gic-v3-mbi.c          |    1 
 b/drivers/net/wireless/ath/ath11k/pci.c     |    2 
 b/drivers/pci/Makefile                      |    3 
 b/drivers/pci/msi/Makefile                  |    7 
 b/drivers/pci/msi/irqdomain.c               |  267 +++++++++++
 b/drivers/pci/msi/legacy.c                  |   79 +++
 b/drivers/pci/msi/msi.c                     |  645 ++++------------------------
 b/drivers/pci/msi/msi.h                     |   39 +
 b/drivers/pci/msi/pcidev_msi.c              |   43 +
 b/drivers/pci/pci-sysfs.c                   |    7 
 b/drivers/pci/xen-pcifront.c                |    2 
 b/include/linux/msi.h                       |  135 ++---
 b/include/linux/pci.h                       |    1 
 b/kernel/irq/msi.c                          |   41 +
 32 files changed, 696 insertions(+), 1028 deletions(-)

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: linux-hyperv@vger.kernel.org, Paul Mackerras <paulus@samba.org>,
	sparclinux@vger.kernel.org, Wei Liu <wei.liu@kernel.org>,
	Ashok Raj <ashok.raj@intel.com>, Marc Zygnier <maz@kernel.org>,
	x86@kernel.org, Christian Borntraeger <borntraeger@de.ibm.com>,
	Bjorn Helgaas <helgaas@kernel.org>,
	Jason Gunthorpe <jgg@nvidia.com>,
	linux-pci@vger.kernel.org, xen-devel@lists.xenproject.org,
	ath11k@lists.infradead.org, Kevin Tian <kevin.tian@intel.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Megha Dey <megha.dey@intel.com>, Juergen Gross <jgross@suse.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: [patch 00/22] genirq/msi, PCI/MSI: Spring cleaning - Part 1
Date: Sat, 27 Nov 2021 02:18:34 +0100 (CET)	[thread overview]
Message-ID: <20211126222700.862407977@linutronix.de> (raw)

The [PCI] MSI code has gained quite some warts over time. A recent
discussion unearthed a shortcoming: the lack of support for expanding
PCI/MSI-X vectors after initialization of MSI-X.

PCI/MSI-X has no requirement to setup all vectors when MSI-X is enabled in
the device. The non-used vectors have just to be masked in the vector
table. For PCI/MSI this is not possible because the number of vectors
cannot be changed after initialization.

The PCI/MSI code, but also the core MSI irq domain code are built around
the assumption that all required vectors are installed at initialization
time and freed when the device is shut down by the driver.

Supporting dynamic expansion at least for MSI-X is important for VFIO so
that the host side interrupts for passthrough devices can be installed on
demand.

This is the first part of a large (total 101 patches) series which
refactors the [PCI]MSI infrastructure to make runtime expansion of MSI-X
vectors possible. The last part (10 patches) provide this functionality.

The first part is mostly a cleanup which consolidates code, moves the PCI
MSI code into a separate directory and splits it up into several parts.

No functional change intended except for patch 2/N which changes the
behaviour of pci_get_vector()/affinity() to get rid of the assumption that
the provided index is the "index" into the descriptor list instead of using
it as the actual MSI[X] index as seen by the hardware. This would break
users of sparse allocated MSI-X entries, but non of them use these
functions.

This series is based on 5.16-rc2 and also available via git:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-1

For the curious who can't wait for the next part to arrive the full series
is available via:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-4

Thanks,

	tglx
---
 arch/powerpc/platforms/4xx/msi.c            |  281 ------------
 b/Documentation/driver-api/pci/pci.rst      |    2 
 b/arch/mips/pci/msi-octeon.c                |   32 -
 b/arch/powerpc/platforms/4xx/Makefile       |    1 
 b/arch/powerpc/platforms/cell/axon_msi.c    |    2 
 b/arch/powerpc/platforms/powernv/pci-ioda.c |    4 
 b/arch/powerpc/platforms/pseries/msi.c      |    6 
 b/arch/powerpc/sysdev/Kconfig               |    6 
 b/arch/s390/pci/pci_irq.c                   |    4 
 b/arch/sparc/kernel/pci_msi.c               |    4 
 b/arch/x86/hyperv/irqdomain.c               |   55 --
 b/arch/x86/include/asm/x86_init.h           |    6 
 b/arch/x86/include/asm/xen/hypervisor.h     |    8 
 b/arch/x86/kernel/apic/msi.c                |    8 
 b/arch/x86/kernel/x86_init.c                |   12 
 b/arch/x86/pci/xen.c                        |   19 
 b/drivers/irqchip/irq-gic-v2m.c             |    1 
 b/drivers/irqchip/irq-gic-v3-its-pci-msi.c  |    1 
 b/drivers/irqchip/irq-gic-v3-mbi.c          |    1 
 b/drivers/net/wireless/ath/ath11k/pci.c     |    2 
 b/drivers/pci/Makefile                      |    3 
 b/drivers/pci/msi/Makefile                  |    7 
 b/drivers/pci/msi/irqdomain.c               |  267 +++++++++++
 b/drivers/pci/msi/legacy.c                  |   79 +++
 b/drivers/pci/msi/msi.c                     |  645 ++++------------------------
 b/drivers/pci/msi/msi.h                     |   39 +
 b/drivers/pci/msi/pcidev_msi.c              |   43 +
 b/drivers/pci/pci-sysfs.c                   |    7 
 b/drivers/pci/xen-pcifront.c                |    2 
 b/include/linux/msi.h                       |  135 ++---
 b/include/linux/pci.h                       |    1 
 b/kernel/irq/msi.c                          |   41 +
 32 files changed, 696 insertions(+), 1028 deletions(-)

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Bjorn Helgaas <helgaas@kernel.org>, Marc Zygnier <maz@kernel.org>,
	Alex Williamson <alex.williamson@redhat.com>,
	Kevin Tian <kevin.tian@intel.com>,
	Jason Gunthorpe <jgg@nvidia.com>, Megha Dey <megha.dey@intel.com>,
	Ashok Raj <ashok.raj@intel.com>,
	linux-pci@vger.kernel.org, Michael Ellerman <mpe@ellerman.id.au>,
	Paul Mackerras <paulus@samba.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	linuxppc-dev@lists.ozlabs.org,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	linux-mips@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	sparclinux@vger.kernel.org, x86@kernel.org,
	xen-devel@lists.xenproject.org, ath11k@lists.infradead.org,
	Wei Liu <wei.liu@kernel.org>,
	linux-hyperv@vger.kernel.org, Juergen Gross <jgross@suse.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>
Subject: [patch 00/22] genirq/msi, PCI/MSI: Spring cleaning - Part 1
Date: Sat, 27 Nov 2021 02:19:20 +0100 (CET)	[thread overview]
Message-ID: <20211126222700.862407977@linutronix.de> (raw)
Message-ID: <20211127011920.yogCgGbXWR1SIv9pJ8PlTKlcp98bQm3kRRfge_B23uA@z> (raw)

The [PCI] MSI code has gained quite some warts over time. A recent
discussion unearthed a shortcoming: the lack of support for expanding
PCI/MSI-X vectors after initialization of MSI-X.

PCI/MSI-X has no requirement to setup all vectors when MSI-X is enabled in
the device. The non-used vectors have just to be masked in the vector
table. For PCI/MSI this is not possible because the number of vectors
cannot be changed after initialization.

The PCI/MSI code, but also the core MSI irq domain code are built around
the assumption that all required vectors are installed at initialization
time and freed when the device is shut down by the driver.

Supporting dynamic expansion at least for MSI-X is important for VFIO so
that the host side interrupts for passthrough devices can be installed on
demand.

This is the first part of a large (total 101 patches) series which
refactors the [PCI]MSI infrastructure to make runtime expansion of MSI-X
vectors possible. The last part (10 patches) provide this functionality.

The first part is mostly a cleanup which consolidates code, moves the PCI
MSI code into a separate directory and splits it up into several parts.

No functional change intended except for patch 2/N which changes the
behaviour of pci_get_vector()/affinity() to get rid of the assumption that
the provided index is the "index" into the descriptor list instead of using
it as the actual MSI[X] index as seen by the hardware. This would break
users of sparse allocated MSI-X entries, but non of them use these
functions.

The series is based on 5.16-rc2 and also available via git:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-1

For the curious who can't wait for the next part to arrive the full series
is available via:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-4

Thanks,

	tglx
---
 arch/powerpc/platforms/4xx/msi.c            |  281 ------------
 b/Documentation/driver-api/pci/pci.rst      |    2 
 b/arch/mips/pci/msi-octeon.c                |   32 -
 b/arch/powerpc/platforms/4xx/Makefile       |    1 
 b/arch/powerpc/platforms/cell/axon_msi.c    |    2 
 b/arch/powerpc/platforms/powernv/pci-ioda.c |    4 
 b/arch/powerpc/platforms/pseries/msi.c      |    6 
 b/arch/powerpc/sysdev/Kconfig               |    6 
 b/arch/s390/pci/pci_irq.c                   |    4 
 b/arch/sparc/kernel/pci_msi.c               |    4 
 b/arch/x86/hyperv/irqdomain.c               |   55 --
 b/arch/x86/include/asm/x86_init.h           |    6 
 b/arch/x86/include/asm/xen/hypervisor.h     |    8 
 b/arch/x86/kernel/apic/msi.c                |    8 
 b/arch/x86/kernel/x86_init.c                |   12 
 b/arch/x86/pci/xen.c                        |   19 
 b/drivers/irqchip/irq-gic-v2m.c             |    1 
 b/drivers/irqchip/irq-gic-v3-its-pci-msi.c  |    1 
 b/drivers/irqchip/irq-gic-v3-mbi.c          |    1 
 b/drivers/net/wireless/ath/ath11k/pci.c     |    2 
 b/drivers/pci/Makefile                      |    3 
 b/drivers/pci/msi/Makefile                  |    7 
 b/drivers/pci/msi/irqdomain.c               |  267 +++++++++++
 b/drivers/pci/msi/legacy.c                  |   79 +++
 b/drivers/pci/msi/msi.c                     |  645 ++++------------------------
 b/drivers/pci/msi/msi.h                     |   39 +
 b/drivers/pci/msi/pcidev_msi.c              |   43 +
 b/drivers/pci/pci-sysfs.c                   |    7 
 b/drivers/pci/xen-pcifront.c                |    2 
 b/include/linux/msi.h                       |  135 ++---
 b/include/linux/pci.h                       |    1 
 b/kernel/irq/msi.c                          |   41 +
 32 files changed, 696 insertions(+), 1028 deletions(-)

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: linux-hyperv@vger.kernel.org, Paul Mackerras <paulus@samba.org>,
	sparclinux@vger.kernel.org, Wei Liu <wei.liu@kernel.org>,
	Ashok Raj <ashok.raj@intel.com>, Marc Zygnier <maz@kernel.org>,
	x86@kernel.org, Christian Borntraeger <borntraeger@de.ibm.com>,
	Bjorn Helgaas <helgaas@kernel.org>,
	Jason Gunthorpe <jgg@nvidia.com>,
	linux-pci@vger.kernel.org, xen-devel@lists.xenproject.org,
	ath11k@lists.infradead.org, Kevin Tian <kevin.tian@intel.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Megha Dey <megha.dey@intel.com>, Juergen Gross <jgross@suse.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: [patch 00/22] genirq/msi, PCI/MSI: Spring cleaning - Part 1
Date: Sat, 27 Nov 2021 02:19:20 +0100 (CET)	[thread overview]
Message-ID: <20211126222700.862407977@linutronix.de> (raw)
Message-ID: <20211127011920.F3lFGcJnxumncN6VhalVvZdaGx7Pld8sF069qfa-mb4@z> (raw)

The [PCI] MSI code has gained quite some warts over time. A recent
discussion unearthed a shortcoming: the lack of support for expanding
PCI/MSI-X vectors after initialization of MSI-X.

PCI/MSI-X has no requirement to setup all vectors when MSI-X is enabled in
the device. The non-used vectors have just to be masked in the vector
table. For PCI/MSI this is not possible because the number of vectors
cannot be changed after initialization.

The PCI/MSI code, but also the core MSI irq domain code are built around
the assumption that all required vectors are installed at initialization
time and freed when the device is shut down by the driver.

Supporting dynamic expansion at least for MSI-X is important for VFIO so
that the host side interrupts for passthrough devices can be installed on
demand.

This is the first part of a large (total 101 patches) series which
refactors the [PCI]MSI infrastructure to make runtime expansion of MSI-X
vectors possible. The last part (10 patches) provide this functionality.

The first part is mostly a cleanup which consolidates code, moves the PCI
MSI code into a separate directory and splits it up into several parts.

No functional change intended except for patch 2/N which changes the
behaviour of pci_get_vector()/affinity() to get rid of the assumption that
the provided index is the "index" into the descriptor list instead of using
it as the actual MSI[X] index as seen by the hardware. This would break
users of sparse allocated MSI-X entries, but non of them use these
functions.

The series is based on 5.16-rc2 and also available via git:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-1

For the curious who can't wait for the next part to arrive the full series
is available via:

     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git msi-v1-part-4

Thanks,

	tglx
---
 arch/powerpc/platforms/4xx/msi.c            |  281 ------------
 b/Documentation/driver-api/pci/pci.rst      |    2 
 b/arch/mips/pci/msi-octeon.c                |   32 -
 b/arch/powerpc/platforms/4xx/Makefile       |    1 
 b/arch/powerpc/platforms/cell/axon_msi.c    |    2 
 b/arch/powerpc/platforms/powernv/pci-ioda.c |    4 
 b/arch/powerpc/platforms/pseries/msi.c      |    6 
 b/arch/powerpc/sysdev/Kconfig               |    6 
 b/arch/s390/pci/pci_irq.c                   |    4 
 b/arch/sparc/kernel/pci_msi.c               |    4 
 b/arch/x86/hyperv/irqdomain.c               |   55 --
 b/arch/x86/include/asm/x86_init.h           |    6 
 b/arch/x86/include/asm/xen/hypervisor.h     |    8 
 b/arch/x86/kernel/apic/msi.c                |    8 
 b/arch/x86/kernel/x86_init.c                |   12 
 b/arch/x86/pci/xen.c                        |   19 
 b/drivers/irqchip/irq-gic-v2m.c             |    1 
 b/drivers/irqchip/irq-gic-v3-its-pci-msi.c  |    1 
 b/drivers/irqchip/irq-gic-v3-mbi.c          |    1 
 b/drivers/net/wireless/ath/ath11k/pci.c     |    2 
 b/drivers/pci/Makefile                      |    3 
 b/drivers/pci/msi/Makefile                  |    7 
 b/drivers/pci/msi/irqdomain.c               |  267 +++++++++++
 b/drivers/pci/msi/legacy.c                  |   79 +++
 b/drivers/pci/msi/msi.c                     |  645 ++++------------------------
 b/drivers/pci/msi/msi.h                     |   39 +
 b/drivers/pci/msi/pcidev_msi.c              |   43 +
 b/drivers/pci/pci-sysfs.c                   |    7 
 b/drivers/pci/xen-pcifront.c                |    2 
 b/include/linux/msi.h                       |  135 ++---
 b/include/linux/pci.h                       |    1 
 b/kernel/irq/msi.c                          |   41 +
 32 files changed, 696 insertions(+), 1028 deletions(-)

             reply	other threads:[~2021-11-27  1:18 UTC|newest]

Thread overview: 184+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-27  1:18 Thomas Gleixner [this message]
2021-11-27  1:19 ` [patch 00/22] genirq/msi, PCI/MSI: Spring cleaning - Part 1 Thomas Gleixner
2021-11-27  1:19 ` Thomas Gleixner
2021-11-27  1:19 ` Thomas Gleixner
2021-11-27  1:18 ` Thomas Gleixner
2021-11-27  1:18 ` Thomas Gleixner
2021-11-27  1:18 ` [patch 01/22] powerpc/4xx: Remove MSI support which never worked Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18 ` [patch 02/22] PCI/MSI: Fix pci_irq_vector()/pci_irq_get_attinity() Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18 ` [patch 03/22] genirq/msi: Guard sysfs code Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18 ` [patch 04/22] genirq/msi: Remove unused domain callbacks Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-12-09 16:07   ` [tip: irq/msi] " tip-bot2 for Thomas Gleixner
2021-11-27  1:18 ` [patch 05/22] genirq/msi: Fixup includes Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-29  7:33   ` Cédric Le Goater
2021-11-29  7:33     ` Cédric Le Goater
2021-11-29  7:33     ` Cédric Le Goater
2021-11-29 21:38     ` Thomas Gleixner
2021-11-29 21:38       ` Thomas Gleixner
2021-11-29 21:38       ` Thomas Gleixner
2021-11-30 21:48       ` Cédric Le Goater
2021-11-30 21:48         ` Cédric Le Goater
2021-11-30 21:48         ` Cédric Le Goater
2021-11-30 22:10         ` Thomas Gleixner
2021-11-30 22:10           ` Thomas Gleixner
2021-11-30 22:10           ` Thomas Gleixner
2021-11-30 22:41           ` Thomas Gleixner
2021-11-30 22:41             ` Thomas Gleixner
2021-11-30 22:41             ` Thomas Gleixner
2021-12-01  7:14             ` Cédric Le Goater
2021-12-01  7:14               ` Cédric Le Goater
2021-12-01  7:14               ` Cédric Le Goater
2021-12-01 10:48               ` Thomas Gleixner
2021-12-01 10:48                 ` Thomas Gleixner
2021-12-01 10:48                 ` Thomas Gleixner
2021-11-27  1:18 ` [patch 06/22] PCI/MSI: Make pci_msi_domain_write_msg() static Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18 ` [patch 07/22] PCI/MSI: Remove msi_desc_to_pci_sysdata() Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18 ` [patch 08/22] PCI/sysfs: Use pci_irq_vector() Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18 ` [patch 09/22] MIPS: Octeon: Use arch_setup_msi_irq() Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-29 10:21   ` Thomas Bogendoerfer
2021-11-29 10:21     ` Thomas Bogendoerfer
2021-11-29 10:21     ` Thomas Bogendoerfer
2021-11-27  1:18 ` [patch 10/22] genirq/msi, treewide: Use a named struct for PCI/MSI attributes Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-29  9:29   ` Kalle Valo
2021-11-29  9:29     ` Kalle Valo
2021-11-29  9:29     ` Kalle Valo
2021-11-27  1:18 ` [patch 11/22] x86/hyperv: Refactor hv_msi_domain_free_irqs() Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-12-02 14:36   ` Wei Liu
2021-12-02 14:36     ` Wei Liu
2021-12-02 14:36     ` Wei Liu
2021-11-27  1:18 ` [patch 12/22] PCI/MSI: Make arch_restore_msi_irqs() less horrible Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18 ` [patch 13/22] PCI/MSI: Cleanup include zoo Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18 ` [patch 14/22] PCI/MSI: Make msix_update_entries() smarter Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18 ` [patch 15/22] PCI/MSI: Move code into a separate directory Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18 ` [patch 16/22] PCI/MSI: Split out CONFIG_PCI_MSI independent part Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:18   ` Thomas Gleixner
2021-11-27  1:19 ` [patch 17/22] PCI/MSI: Split out !IRQDOMAIN code Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-29  7:47   ` Cédric Le Goater
2021-11-29  7:47     ` Cédric Le Goater
2021-11-29  7:47     ` Cédric Le Goater
2021-11-29  7:51   ` Cédric Le Goater
2021-11-29  7:51     ` Cédric Le Goater
2021-11-29  7:51     ` Cédric Le Goater
2021-11-27  1:19 ` [patch 18/22] PCI/MSI: Split out irqdomain code Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19 ` [patch 19/22] PCI/MSI: Sanitize MSIX table map handling Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19 ` [patch 20/22] PCI/MSI: Make pci_msi_domain_check_cap() static Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19 ` [patch 21/22] genirq/msi: Handle PCI/MSI allocation fail in core code Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19 ` [patch 22/22] PCI/MSI: Move descriptor counting on allocation fail to the legacy code Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-27  1:19   ` Thomas Gleixner
2021-11-28  0:08 ` [patch 00/22] genirq/msi, PCI/MSI: Spring cleaning - Part 1 Jason Gunthorpe
2021-11-28  0:08   ` Jason Gunthorpe
2021-11-28  0:08   ` Jason Gunthorpe
2021-11-28 11:15 ` Juergen Gross
2021-11-28 11:15   ` Juergen Gross
2021-11-28 11:15   ` Juergen Gross
2021-11-29  9:52 ` Cédric Le Goater
2021-11-29  9:52   ` Cédric Le Goater
2021-11-29  9:52   ` Cédric Le Goater

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211126222700.862407977@linutronix.de \
    --to=tglx@linutronix.de \
    --cc=alex.williamson@redhat.com \
    --cc=ashok.raj@intel.com \
    --cc=ath11k@lists.infradead.org \
    --cc=benh@kernel.crashing.org \
    --cc=borntraeger@de.ibm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hca@linux.ibm.com \
    --cc=helgaas@kernel.org \
    --cc=jgg@nvidia.com \
    --cc=jgross@suse.com \
    --cc=kevin.tian@intel.com \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maz@kernel.org \
    --cc=megha.dey@intel.com \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.org \
    --cc=sparclinux@vger.kernel.org \
    --cc=tsbogend@alpha.franken.de \
    --cc=wei.liu@kernel.org \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.