[PATCH v2 2/3] irqchip/irq-pruss-intc: Fix listed IRQ type in /proc/interrupts

Meghana Malladi posted 3 patches 1 month, 1 week ago
[PATCH v2 2/3] irqchip/irq-pruss-intc: Fix listed IRQ type in /proc/interrupts
Posted by Meghana Malladi 1 month, 1 week ago
From: Grygorii Strashko <grygorii.strashko@ti.com>

The PRUSS INTC driver doesn't have .irq_set_type() callback implemented and
supports only IRQ_TYPE_LEVEL_HIGH. This resulted in the IRQ properties not
being updated properly and the PRUSS INTC IRQs were listed incorrectly in
/proc/interrupts as Edge.

Example:
  218:          0  4b220000.interrupt-controller  26 Edge      pru10

Fix this by adding a simple .irq_set_type() implementation which checks the
requested IRQ triggering type.

Fixes: 04e2d1e06978 ("irqchip/irq-pruss-intc: Add a PRUSS irqchip driver for PRUSS interrupts")
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
Link: https://lore.kernel.org/all/20230919061900.369300-3-danishanwar@ti.com/
Signed-off-by: MD Danish Anwar <danishanwar@ti.com>
Reviewed-by: Roger Quadros <rogerq@kernel.org>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Meghana Malladi <m-malladi@ti.com>
---
 drivers/irqchip/irq-pruss-intc.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/irqchip/irq-pruss-intc.c b/drivers/irqchip/irq-pruss-intc.c
index 4ec1f4fc491f..1fdf110d94ed 100644
--- a/drivers/irqchip/irq-pruss-intc.c
+++ b/drivers/irqchip/irq-pruss-intc.c
@@ -373,6 +373,14 @@ static int pruss_intc_irq_set_irqchip_state(struct irq_data *data,
 	return 0;
 }
 
+static int pruss_intc_irq_irq_set_type(struct irq_data *data, unsigned int type)
+{
+	if (type != IRQ_TYPE_LEVEL_HIGH)
+		return -EINVAL;
+
+	return 0;
+}
+
 static struct irq_chip pruss_irqchip = {
 	.name			= "pruss-intc",
 	.irq_ack		= pruss_intc_irq_ack,
@@ -382,6 +390,7 @@ static struct irq_chip pruss_irqchip = {
 	.irq_release_resources	= pruss_intc_irq_relres,
 	.irq_get_irqchip_state	= pruss_intc_irq_get_irqchip_state,
 	.irq_set_irqchip_state	= pruss_intc_irq_set_irqchip_state,
+	.irq_set_type		= pruss_intc_irq_irq_set_type,
 };
 
 static int pruss_intc_validate_mapping(struct pruss_intc *intc, int event,
-- 
2.43.0
Re: [PATCH v2 2/3] irqchip/irq-pruss-intc: Fix listed IRQ type in /proc/interrupts
Posted by Thomas Gleixner 1 month, 1 week ago
On Wed, Feb 18 2026 at 15:07, Meghana Malladi wrote:
> From: Grygorii Strashko <grygorii.strashko@ti.com>
>
> The PRUSS INTC driver doesn't have .irq_set_type() callback implemented and
> supports only IRQ_TYPE_LEVEL_HIGH. This resulted in the IRQ properties not
> being updated properly and the PRUSS INTC IRQs were listed incorrectly in
> /proc/interrupts as Edge.

That's again incomprehensible word salad. If the driver only supports
edge then obviously all interrupts belonging to this chip are marked
edge. How should they be listed?

> Example:
>   218:          0  4b220000.interrupt-controller  26 Edge      pru10

That's really useful information because nobody knows how
/proc/interrupt output looks like.

> Fix this by adding a simple .irq_set_type() implementation which checks the
> requested IRQ triggering type.

And how does that list the the PRUSS interrupts magically with some
other type than edge?

> Fixes: 04e2d1e06978 ("irqchip/irq-pruss-intc: Add a PRUSS irqchip driver for PRUSS interrupts")
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> Signed-off-by: Suman Anna <s-anna@ti.com>
> Link: https://lore.kernel.org/all/20230919061900.369300-3-danishanwar@ti.com/
> Signed-off-by: MD Danish Anwar <danishanwar@ti.com>
> Reviewed-by: Roger Quadros <rogerq@kernel.org>
> Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
> Signed-off-by: Meghana Malladi <m-malladi@ti.com>

Amazing how many people it takes to get such a trivial fix to LKML and
that none of them noticed that the change log does not make any sense at all.
  
Thanks,

        tglx
Re: [PATCH v2 2/3] irqchip/irq-pruss-intc: Fix listed IRQ type in /proc/interrupts
Posted by Thomas Gleixner 1 month, 1 week ago
On Sun, Feb 22 2026 at 23:39, Thomas Gleixner wrote:

> On Wed, Feb 18 2026 at 15:07, Meghana Malladi wrote:
>> From: Grygorii Strashko <grygorii.strashko@ti.com>
>>
>> The PRUSS INTC driver doesn't have .irq_set_type() callback implemented and
>> supports only IRQ_TYPE_LEVEL_HIGH. This resulted in the IRQ properties not
>> being updated properly and the PRUSS INTC IRQs were listed incorrectly in
>> /proc/interrupts as Edge.
>
> That's again incomprehensible word salad. If the driver only supports
> edge then obviously all interrupts belonging to this chip are marked
> edge. How should they be listed?

Oops. Sorry. I misread the IRQ_TYPE_LEVEL_HIGH as EDGE_HIGH. Need new
glasses.

        Thomas