!76 irqbalance: procinterrupts: Fix IRQ name parsing on certain arm64 SoC
From: @chinyu0704 Reviewed-by: @SuperSix173 Signed-off-by: @SuperSix173
This commit is contained in:
commit
671b9dcda7
@ -0,0 +1,31 @@
|
|||||||
|
From 522883505d3b02e3294f045f49007b61c00e2c31 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chao Liu <liuchao173@huawei.com>
|
||||||
|
Date: Wed, 8 Jun 2022 10:04:02 +0800
|
||||||
|
Subject: [PATCH] check whether savedptr is NULL before invoking strlen
|
||||||
|
|
||||||
|
Reference: https://github.com/Irqbalance/irqbalance/commit/522883505d3b02e3294f045f49007b61c00e2c31
|
||||||
|
Conflict: NA
|
||||||
|
|
||||||
|
savedptr can be null in musl libc, so the strlen(NULL) will segfault
|
||||||
|
|
||||||
|
Signed-off-by: Chao Liu <liuchao173@huawei.com>
|
||||||
|
---
|
||||||
|
procinterrupts.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/procinterrupts.c b/procinterrupts.c
|
||||||
|
index 9015177..57c8801 100644
|
||||||
|
--- a/procinterrupts.c
|
||||||
|
+++ b/procinterrupts.c
|
||||||
|
@@ -178,7 +178,7 @@ void init_irq_class_and_type(char *savedline, struct irq_info *info, int irq)
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef AARCH64
|
||||||
|
- if (strlen(savedptr) > 0) {
|
||||||
|
+ if (savedptr && strlen(savedptr) > 0) {
|
||||||
|
snprintf(irq_fullname, PATH_MAX, "%s %s", last_token, savedptr);
|
||||||
|
tmp = strchr(irq_fullname, '\n');
|
||||||
|
if (tmp)
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
From bbcd9a42c3cec0935b960b7f2046f1fdfab4f7ef Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vignesh Raghavendra <vigneshr@ti.com>
|
||||||
|
Date: Wed, 7 Dec 2022 19:46:19 +0530
|
||||||
|
Subject: [PATCH] procinterrupts: Fix IRQ name parsing on certain arm64 SoC
|
||||||
|
|
||||||
|
Reference: https://github.com/Irqbalance/irqbalance/commit/bbcd9a42c3cec0935b960b7f2046f1fdfab4f7ef
|
||||||
|
Conflict: NA
|
||||||
|
|
||||||
|
On arm64 SoCs like TI's K3 SoC and few other SoCs, IRQ names don't get
|
||||||
|
parsed correct due to which they end up being classified into wrong
|
||||||
|
class. Fix this by considering last token to contain IRQ name always.
|
||||||
|
|
||||||
|
Eg.: /proc/interrupt
|
||||||
|
|
||||||
|
cat /proc/interrupts
|
||||||
|
CPU0 CPU1 CPU2 CPU3
|
||||||
|
11: 7155 8882 7235 7791 GICv3 30 Level arch_timer
|
||||||
|
14: 0 0 0 0 GICv3 23 Level arm-pmu
|
||||||
|
15: 0 0 0 0 GICv3 208 Level 4b00000.spi
|
||||||
|
16: 0 0 0 0 GICv3 209 Level 4b10000.spi
|
||||||
|
116: 0 0 0 0 MSI-INTA 1716234 Level 485c0100.dma-controller chan6
|
||||||
|
134: 166 0 0 0 MSI-INTA 1970707 Level 8000000.ethernet-tx0
|
||||||
|
224: 149 0 0 0 MSI-INTA 1971731 Level 8000000.ethernet
|
||||||
|
|
||||||
|
W/o patch irqbalance -d
|
||||||
|
IRQ (11) guessed as class 0
|
||||||
|
IRQ (14) guessed as class 0
|
||||||
|
IRQ (15) guessed as class 0
|
||||||
|
IRQ (16) guessed as class 0
|
||||||
|
IRQ 485c0100.dma-controller chan6(116) guessed as class 0
|
||||||
|
IRQ (134) guessed as class 0
|
||||||
|
IRQ (224) guessed as class 0
|
||||||
|
|
||||||
|
W/ this patch
|
||||||
|
IRQ arch_timer(11) guessed as class 0
|
||||||
|
IRQ arm-pmu(14) guessed as class 0
|
||||||
|
IRQ 4b00000.spi(15) guessed as class 0
|
||||||
|
IRQ 4b10000.spi(16) guessed as class 0
|
||||||
|
IRQ 485c0100.dma-controller chan6(116) guessed as class 0
|
||||||
|
IRQ 8000000.ethernet-tx0(134) guessed as class 5
|
||||||
|
IRQ 8000000.ethernet(224) guessed as class 5
|
||||||
|
IRQ 8000000.ethernet(257) guessed as class 5
|
||||||
|
IRQ -davinci_gpio wl18xx(362) guessed as class
|
||||||
|
|
||||||
|
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
|
||||||
|
---
|
||||||
|
procinterrupts.c | 12 +++++++-----
|
||||||
|
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/procinterrupts.c b/procinterrupts.c
|
||||||
|
index e91b203..ec7a52b 100644
|
||||||
|
--- a/procinterrupts.c
|
||||||
|
+++ b/procinterrupts.c
|
||||||
|
@@ -178,12 +178,14 @@ void init_irq_class_and_type(char *savedline, struct irq_info *info, int irq)
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef AARCH64
|
||||||
|
- if (savedptr && strlen(savedptr) > 0) {
|
||||||
|
+ if (savedptr && strlen(savedptr) > 0)
|
||||||
|
snprintf(irq_fullname, PATH_MAX, "%s %s", last_token, savedptr);
|
||||||
|
- tmp = strchr(irq_fullname, '\n');
|
||||||
|
- if (tmp)
|
||||||
|
- *tmp = 0;
|
||||||
|
- }
|
||||||
|
+ else
|
||||||
|
+ snprintf(irq_fullname, PATH_MAX, "%s", last_token);
|
||||||
|
+
|
||||||
|
+ tmp = strchr(irq_fullname, '\n');
|
||||||
|
+ if (tmp)
|
||||||
|
+ *tmp = 0;
|
||||||
|
#else
|
||||||
|
snprintf(irq_fullname, PATH_MAX, "%s", last_token);
|
||||||
|
#endif
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
Summary: A dynamic adaptive IRQ balancing daemon
|
Summary: A dynamic adaptive IRQ balancing daemon
|
||||||
Name: irqbalance
|
Name: irqbalance
|
||||||
Version: 1.9.0
|
Version: 1.9.0
|
||||||
Release: 2
|
Release: 3
|
||||||
Epoch: 3
|
Epoch: 3
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
Source0: https://github.com/Irqbalance/irqbalance/archive/v%{version}.tar.gz#/irqbalance-%{version}.tar.gz
|
Source0: https://github.com/Irqbalance/irqbalance/archive/v%{version}.tar.gz#/irqbalance-%{version}.tar.gz
|
||||||
@ -36,6 +36,8 @@ Patch9006: feature-enable-irqbalance-to-link-with-multiple-clie.patch
|
|||||||
Patch9007: feature-add-ability-to-set-hintpolicy-during-runtime.patch
|
Patch9007: feature-add-ability-to-set-hintpolicy-during-runtime.patch
|
||||||
Patch9008: feature-encapsulate-and-compile-the-functions-in-irqbalance-ui.patch
|
Patch9008: feature-encapsulate-and-compile-the-functions-in-irqbalance-ui.patch
|
||||||
Patch9010: bugfix-set-hint-name-in-add_new_irq-to-avoid-segment.patch
|
Patch9010: bugfix-set-hint-name-in-add_new_irq-to-avoid-segment.patch
|
||||||
|
Patch9011: backport-check-whether-savedptr-is-NULL-before-invoking-strle.patch
|
||||||
|
Patch9012: backport-procinterrupts-Fix-IRQ-name-parsing-on-certain-arm64.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Irqbalance is a daemon to help balance the cpu load generated by
|
Irqbalance is a daemon to help balance the cpu load generated by
|
||||||
@ -122,6 +124,12 @@ fi
|
|||||||
/sbin/chkconfig --del %{name} >/dev/null 2>&1 || :
|
/sbin/chkconfig --del %{name} >/dev/null 2>&1 || :
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Dec 8 2022 qinyu <qinyu32@huawei.com> - 3:1.9.0-3
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:restart
|
||||||
|
- DESC: procinterrupts: Fix IRQ name parsing on certain arm64 SoC
|
||||||
|
|
||||||
* Tue Jul 12 2022 qinyu <qinyu32@huawei.com> - 3:1.9.0-2
|
* Tue Jul 12 2022 qinyu <qinyu32@huawei.com> - 3:1.9.0-2
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- ID:NA
|
- ID:NA
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user