irqbalance: Add upstream fix for AARCH64 irq name parsing
[feed/packages.git] / utils / irqbalance / patches / 001-upstream-fix-aarch64-irq-parsing.patch
1 From bbcd9a42c3cec0935b960b7f2046f1fdfab4f7ef Mon Sep 17 00:00:00 2001
2 From: Vignesh Raghavendra <vigneshr@ti.com>
3 Date: Wed, 7 Dec 2022 19:46:19 +0530
4 Subject: [PATCH] procinterrupts: Fix IRQ name parsing on certain arm64 SoC
5
6 On arm64 SoCs like TI's K3 SoC and few other SoCs, IRQ names don't get
7 parsed correct due to which they end up being classified into wrong
8 class. Fix this by considering last token to contain IRQ name always.
9
10 Eg.: /proc/interrupt
11
12 cat /proc/interrupts
13 CPU0 CPU1 CPU2 CPU3
14 11: 7155 8882 7235 7791 GICv3 30 Level arch_timer
15 14: 0 0 0 0 GICv3 23 Level arm-pmu
16 15: 0 0 0 0 GICv3 208 Level 4b00000.spi
17 16: 0 0 0 0 GICv3 209 Level 4b10000.spi
18 116: 0 0 0 0 MSI-INTA 1716234 Level 485c0100.dma-controller chan6
19 134: 166 0 0 0 MSI-INTA 1970707 Level 8000000.ethernet-tx0
20 224: 149 0 0 0 MSI-INTA 1971731 Level 8000000.ethernet
21
22 W/o patch irqbalance -d
23 IRQ (11) guessed as class 0
24 IRQ (14) guessed as class 0
25 IRQ (15) guessed as class 0
26 IRQ (16) guessed as class 0
27 IRQ 485c0100.dma-controller chan6(116) guessed as class 0
28 IRQ (134) guessed as class 0
29 IRQ (224) guessed as class 0
30
31 W/ this patch
32 IRQ arch_timer(11) guessed as class 0
33 IRQ arm-pmu(14) guessed as class 0
34 IRQ 4b00000.spi(15) guessed as class 0
35 IRQ 4b10000.spi(16) guessed as class 0
36 IRQ 485c0100.dma-controller chan6(116) guessed as class 0
37 IRQ 8000000.ethernet-tx0(134) guessed as class 5
38 IRQ 8000000.ethernet(224) guessed as class 5
39 IRQ 8000000.ethernet(257) guessed as class 5
40 IRQ -davinci_gpio wl18xx(362) guessed as class
41
42 Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
43 ---
44 procinterrupts.c | 12 +++++++-----
45 1 file changed, 7 insertions(+), 5 deletions(-)
46
47 --- a/procinterrupts.c
48 +++ b/procinterrupts.c
49 @@ -178,12 +178,14 @@ void init_irq_class_and_type(char *saved
50 }
51
52 #ifdef AARCH64
53 - if (savedptr && strlen(savedptr) > 0) {
54 + if (savedptr && strlen(savedptr) > 0)
55 snprintf(irq_fullname, PATH_MAX, "%s %s", last_token, savedptr);
56 - tmp = strchr(irq_fullname, '\n');
57 - if (tmp)
58 - *tmp = 0;
59 - }
60 + else
61 + snprintf(irq_fullname, PATH_MAX, "%s", last_token);
62 +
63 + tmp = strchr(irq_fullname, '\n');
64 + if (tmp)
65 + *tmp = 0;
66 #else
67 snprintf(irq_fullname, PATH_MAX, "%s", last_token);
68 #endif