Maxime Chevallier
880799fc7a
irqchip/irq-msi-lib: Check for NULL ops in msi_lib_irq_domain_select()
...
The irq_domain passed to msi_lib_irq_domain_select() may not have
msi_parent_ops set. There is a NULL pointer check for it, but unfortunately
there is a dereference of the parent ops pointer before that.
Move the NULL pointer test before the first use of that pointer.
This was found on a MacchiatoBin (Marvell Armada 8K SoC), which uses the
irq-mvebu-sei driver.
Fixes: 72e257c6f0 ("irqchip: Provide irq-msi-lib")
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Link: https://lore.kernel.org/all/20240823100733.1900666-1-maxime.chevallier@bootlin.com
Closes: https://lore.kernel.org/all/20240821165034.1af97bad@fedora-3.home/
2024-08-23 13:55:15 +02:00
Thomas Gleixner
7b2f8aa005
irqchip/imx-mu-msi: Switch to MSI parent
...
All platform MSI users and the PCI/MSI code handle per device MSI domains
when the irqdomain associated to the device provides MSI parent
functionality.
Remove the "global" platform domain related code and provide the MSI parent
functionality by filling in msi_parent_ops.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de >
Signed-off-by: Shivamurthy Shastri <shivamurthy.shastri@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Link: https://lore.kernel.org/r/20240623142235.574932935@linutronix.de
2024-07-18 20:31:20 +02:00
Thomas Gleixner
64a8553243
irqchip/irq-msi-lib: Prepare for DOMAIN_BUS_WIRED_TO_MSI
...
Add the new bus token to the accepted list of child domain tokens.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de >
Signed-off-by: Shivamurthy Shastri <shivamurthy.shastri@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Link: https://lore.kernel.org/r/20240623142235.207343466@linutronix.de
2024-07-18 20:31:20 +02:00
Thomas Gleixner
496436f4a5
irqchip/irq-msi-lib: Prepare for DEVICE MSI to replace platform MSI
...
Add the prerequisites for DEVICE MSI into the shared select() and child
domain init function. These domains are really trivial and just provide a
custom irq chip callback to write the MSI message.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de >
Signed-off-by: Shivamurthy Shastri <shivamurthy.shastri@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Link: https://lore.kernel.org/r/20240623142235.085171290@linutronix.de
2024-07-18 20:31:20 +02:00
Thomas Gleixner
8c41ccec83
irqchip/irq-msi-lib: Prepare for PCI MSI/MSIX
...
Add the bus tokens for DOMAIN_BUS_PCI_DEVICE_MSI and
DOMAIN_BUS_PCI_DEVICE_MSIX to the common child init
function.
Provide the match mask which can be used by parent domain
implementation so the bitmask based child bus token match
works.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de >
Signed-off-by: Shivamurthy Shastri <shivamurthy.shastri@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Link: https://lore.kernel.org/r/20240623142234.964056815@linutronix.de
2024-07-18 20:31:19 +02:00
Thomas Gleixner
72e257c6f0
irqchip: Provide irq-msi-lib
...
All irqdomains which provide MSI parent domain functionality for per device
MSI domains need to provide a select() callback for the irqdomain and a
function to initialize the child domain.
Most of these functions would just be copy&paste with minimal
modifications, so provide a library function which implements the required
functionality and is customizable via parent_domain::msi_parent_ops. The
check for the supported bus tokens in msi_lib_init_dev_msi_info() is
expanded step by step within the next patches.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de >
Signed-off-by: Shivamurthy Shastri <shivamurthy.shastri@linutronix.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Link: https://lore.kernel.org/r/20240623142234.840975799@linutronix.de
2024-07-18 20:31:19 +02:00