!71 upgrade to v1.9.0
From: @SuperSix173 Reviewed-by: @wangbin224 Signed-off-by: @wangbin224
This commit is contained in:
commit
e7f36dd076
@ -1,52 +0,0 @@
|
||||
From a9f0290a6754a475eb95818dd38dc401370da071 Mon Sep 17 00:00:00 2001
|
||||
From: liuchao173 <55137861+liuchao173@users.noreply.github.com>
|
||||
Date: Mon, 23 Aug 2021 19:40:41 +0800
|
||||
Subject: [PATCH] fix opendir fails in check_platform_device
|
||||
|
||||
When irq name does not contain spaces, savedptr is an empty string and irq_fullname will have a extra space at the end like "
|
||||
LNRO0005:00 ".
|
||||
So opendir in check_platform_device will fail, and irqbalance prints log:
|
||||
"No directory /sys/devices/platform/LNRO0005:00 /: No such file or directory"
|
||||
---
|
||||
procinterrupts.c | 25 +++++++++++--------------
|
||||
1 file changed, 11 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/procinterrupts.c b/procinterrupts.c
|
||||
index 32c5e53..2bd201b 100644
|
||||
--- a/procinterrupts.c
|
||||
+++ b/procinterrupts.c
|
||||
@@ -183,20 +183,17 @@ void init_irq_class_and_type(char *savedline, struct irq_info *info, int irq)
|
||||
}
|
||||
|
||||
#ifdef AARCH64
|
||||
- irq_name = last_token;
|
||||
- tmp = strchr(irq_name, '\n');
|
||||
- if (tmp)
|
||||
- *tmp = 0;
|
||||
-
|
||||
- if (strlen(irq_name) + strlen(savedptr) + 1 < PATH_MAX) {
|
||||
- strcat(irq_fullname, irq_name);
|
||||
- strcat(irq_fullname, " ");
|
||||
- strcat(irq_fullname, savedptr);
|
||||
- tmp = strchr(irq_fullname, '\n');
|
||||
- if (tmp)
|
||||
- *tmp = 0;
|
||||
- } else {
|
||||
- irq_fullname_valid = 0;
|
||||
+ if (strlen(savedptr) > 0) {
|
||||
+ if (strlen(irq_name) + strlen(savedptr) + 1 < PATH_MAX) {
|
||||
+ strcat(irq_fullname, irq_name);
|
||||
+ strcat(irq_fullname, " ");
|
||||
+ strcat(irq_fullname, savedptr);
|
||||
+ tmp = strchr(irq_fullname, '\n');
|
||||
+ if (tmp)
|
||||
+ *tmp = 0;
|
||||
+ } else {
|
||||
+ irq_fullname_valid = 0;
|
||||
+ }
|
||||
}
|
||||
#endif
|
||||
irq_mod = last_token;
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
@ -1,26 +0,0 @@
|
||||
From 2a66a666d3e202dec5b1a4309447e32d5f292871 Mon Sep 17 00:00:00 2001
|
||||
From: liuchao173 <55137861+liuchao173@users.noreply.github.com>
|
||||
Date: Tue, 24 Aug 2021 20:50:18 +0800
|
||||
Subject: [PATCH] fix unsigned integer subtraction sign overflow
|
||||
|
||||
Min_load, adjustment_load and load are unsigned integers, so it overflows when (lb_info->min_load + info->load) < (lb_info->adjustment_load - info->load). The result will be greater than zero. Therefore the irq cannot be selected to rebalanced.
|
||||
---
|
||||
irqlist.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/irqlist.c b/irqlist.c
|
||||
index 9ab321a..4dd4a83 100644
|
||||
--- a/irqlist.c
|
||||
+++ b/irqlist.c
|
||||
@@ -97,7 +97,7 @@ static void move_candidate_irqs(struct irq_info *info, void *data)
|
||||
}
|
||||
|
||||
/* If we can migrate an irq without swapping the imbalance do it. */
|
||||
- if ((lb_info->min_load + info->load) - (lb_info->adjustment_load - info->load) < delta_load) {
|
||||
+ if ((lb_info->min_load + info->load) < delta_load + (lb_info->adjustment_load - info->load)) {
|
||||
lb_info->adjustment_load -= info->load;
|
||||
lb_info->min_load += info->load;
|
||||
if (lb_info->min_load > lb_info->adjustment_load) {
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
@ -1,80 +0,0 @@
|
||||
From f8bdd0e64284d841544fd3ebe22f4652902ba8d2 Mon Sep 17 00:00:00 2001
|
||||
From: Sergei Trofimovich <slyich@gmail.com>
|
||||
Date: Tue, 9 Nov 2021 22:24:17 +0000
|
||||
Subject: [PATCH] ui/ui.c: always use "%s"-style format for printf()-style
|
||||
functions
|
||||
|
||||
`ncuses-6.3` added printf-style function attributes and now makes
|
||||
it easier to catch cases when user input is used in palce of format
|
||||
string when built with CFLAGS=-Werror=format-security:
|
||||
|
||||
ui/ui.c:714:16: error: format not a string literal and no format arguments [-Werror=format-security]
|
||||
714 | printw(copy_to);
|
||||
| ^~~~~~~
|
||||
|
||||
Let's wrap all the missing places with "%s" format.
|
||||
---
|
||||
ui/ui.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/ui/ui.c b/ui/ui.c
|
||||
index 1be8f95..6ff3305 100644
|
||||
--- a/ui/ui.c
|
||||
+++ b/ui/ui.c
|
||||
@@ -26,7 +26,7 @@ void show_frame()
|
||||
while(strlen(top) != (size_t)COLS - 1) {
|
||||
snprintf(top + strlen(top), COLS - strlen(top), " ");
|
||||
}
|
||||
- mvprintw(0, 0, top);
|
||||
+ mvprintw(0, 0, "%s", top);
|
||||
for(i = 0; i < LINES; i++) {
|
||||
mvprintw(i, 0, " ");
|
||||
mvprintw(i, COLS - 1, " ");
|
||||
@@ -42,7 +42,7 @@ void show_footer()
|
||||
snprintf(footer + strlen(footer), COLS - strlen(footer), " ");
|
||||
}
|
||||
attrset(COLOR_PAIR(4));
|
||||
- mvprintw(LINES - 1, 0, footer);
|
||||
+ mvprintw(LINES - 1, 0, "%s", footer);
|
||||
}
|
||||
|
||||
char * check_control_in_sleep_input(int max_len, int column_offest, int line_offset)
|
||||
@@ -331,7 +331,7 @@ void print_assigned_objects_string(irq_t *irq, int *line_offset)
|
||||
char assigned_to[128] = "\0";
|
||||
for_each_int(irq->assigned_to, copy_assigned_obj, assigned_to);
|
||||
assigned_to[strlen(assigned_to) - 2] = '\0';
|
||||
- mvprintw(*line_offset, 36, assigned_to);
|
||||
+ mvprintw(*line_offset, 36, "%s", assigned_to);
|
||||
}
|
||||
|
||||
void print_irq_line(irq_t *irq, void *data)
|
||||
@@ -566,7 +566,7 @@ void settings()
|
||||
uint8_t sleep_input_offset = strlen(info) + 3;
|
||||
snprintf(info + strlen(info), 128 - strlen(info), "%" PRIu64 "\n", setup.sleep);
|
||||
attrset(COLOR_PAIR(1));
|
||||
- mvprintw(2, 3, info);
|
||||
+ mvprintw(2, 3, "%s", info);
|
||||
print_all_cpus();
|
||||
|
||||
int user_input = 1;
|
||||
@@ -664,7 +664,7 @@ void display_tree_node_irqs(irq_t *irq, void *data)
|
||||
char indent[32] = " \0";
|
||||
snprintf(indent + strlen(indent), 32 - strlen(indent), "%s", (char *)data);
|
||||
attrset(COLOR_PAIR(3));
|
||||
- printw("%sIRQ %lu, IRQs since last rebalance %lu\n",
|
||||
+ printw("%sIRQ %u, IRQs since last rebalance %lu\n",
|
||||
indent, irq->vector, irq->diff);
|
||||
}
|
||||
|
||||
@@ -711,7 +711,7 @@ void display_tree_node(cpu_node_t *node, void *data)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
- printw(copy_to);
|
||||
+ printw("%s", copy_to);
|
||||
if(g_list_length(node->irqs) > 0) {
|
||||
for_each_irq(node->irqs, display_tree_node_irqs, indent);
|
||||
}
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@ -13,8 +13,8 @@ open community rule) by keywords group hisi & sas or hisi & sata.
|
||||
|
||||
Signed-off-by: wanghaibin <wanghaibin.wang@huawei.com>
|
||||
---
|
||||
procinterrupts.c | 33 ++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 32 insertions(+), 1 deletion(-)
|
||||
procinterrupts.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/procinterrupts.c b/procinterrupts.c
|
||||
index 854282f..32c5e53 100644
|
||||
@ -29,65 +29,6 @@ index 854282f..32c5e53 100644
|
||||
{ "[A-Z0-9]{4}[0-9a-f]{4}", {NULL} ,check_platform_device, IRQ_TYPE_LEGACY, IRQ_OTHER},
|
||||
{ "PNP[0-9a-f]{4}", {NULL} ,check_platform_device, IRQ_TYPE_LEGACY, IRQ_OTHER},
|
||||
{ ".*", {NULL}, NULL, IRQ_TYPE_LEGACY, IRQ_OTHER},
|
||||
@@ -155,6 +157,8 @@ void init_irq_class_and_type(char *savedline, struct irq_info *info, int irq)
|
||||
int is_xen_dyn = 0;
|
||||
#ifdef AARCH64
|
||||
char *tmp = NULL;
|
||||
+ int irq_fullname_valid = 1;
|
||||
+ char irq_fullname[PATH_MAX] = {0};
|
||||
#endif
|
||||
|
||||
irq_name = strtok_r(savedline, " ", &savedptr);
|
||||
@@ -166,6 +170,16 @@ void init_irq_class_and_type(char *savedline, struct irq_info *info, int irq)
|
||||
if (strstr(irq_name, "xen-dyn") != NULL)
|
||||
is_xen_dyn = 1;
|
||||
last_token = p;
|
||||
+
|
||||
+#ifdef AARCH64
|
||||
+ /*
|
||||
+ * /proc/interrupts format defined, after of interrupt type
|
||||
+ * the reset string is mark the irq desc name.
|
||||
+ */
|
||||
+ if (strncmp(irq_name, "Level", strlen("Level")) == 0 ||
|
||||
+ strncmp(irq_name, "Edge", strlen("Edge")) == 0)
|
||||
+ break;
|
||||
+#endif
|
||||
}
|
||||
|
||||
#ifdef AARCH64
|
||||
@@ -173,6 +187,17 @@ void init_irq_class_and_type(char *savedline, struct irq_info *info, int irq)
|
||||
tmp = strchr(irq_name, '\n');
|
||||
if (tmp)
|
||||
*tmp = 0;
|
||||
+
|
||||
+ if (strlen(irq_name) + strlen(savedptr) + 1 < PATH_MAX) {
|
||||
+ strcat(irq_fullname, irq_name);
|
||||
+ strcat(irq_fullname, " ");
|
||||
+ strcat(irq_fullname, savedptr);
|
||||
+ tmp = strchr(irq_fullname, '\n');
|
||||
+ if (tmp)
|
||||
+ *tmp = 0;
|
||||
+ } else {
|
||||
+ irq_fullname_valid = 0;
|
||||
+ }
|
||||
#endif
|
||||
irq_mod = last_token;
|
||||
info->irq = irq;
|
||||
@@ -182,7 +207,13 @@ void init_irq_class_and_type(char *savedline, struct irq_info *info, int irq)
|
||||
info->class = IRQ_VIRT_EVENT;
|
||||
} else {
|
||||
#ifdef AARCH64
|
||||
- guess_arm_irq_hints(irq_name, info);
|
||||
+ if (irq_fullname_valid) {
|
||||
+ irq_name = irq_fullname;
|
||||
+ guess_arm_irq_hints(irq_name, info);
|
||||
+ } else {
|
||||
+ info->type = IRQ_TYPE_LEGACY;
|
||||
+ info->class = IRQ_OTHER;
|
||||
+ }
|
||||
#else
|
||||
info->type = IRQ_TYPE_LEGACY;
|
||||
info->class = IRQ_OTHER;
|
||||
--
|
||||
2.23.0
|
||||
|
||||
|
||||
@ -16,13 +16,14 @@ index 9449e40..82ac3ea 100644
|
||||
--- a/irqbalance.c
|
||||
+++ b/irqbalance.c
|
||||
@@ -72,6 +72,7 @@ GMainLoop *main_loop;
|
||||
|
||||
char *cpu_ban_string = NULL;
|
||||
char *banned_cpumask_from_ui = NULL;
|
||||
unsigned long migrate_ratio = 0;
|
||||
+unsigned long load_limit = 0;
|
||||
|
||||
static void sleep_approx(int seconds)
|
||||
{
|
||||
#ifdef HAVE_IRQBALANCEUI
|
||||
int socket_fd;
|
||||
char socket_name[64];
|
||||
@@ -106,6 +107,7 @@ struct option lopts[] = {
|
||||
{"hintpolicy", 1, NULL, 'h'},
|
||||
{"verifyhint", 1, NULL, 'v'},
|
||||
|
||||
@ -28,7 +28,7 @@ index 73988b3..3086d67 100644
|
||||
irqbalance_SOURCES = activate.c bitmap.c classify.c cputree.c irqbalance.c \
|
||||
- irqlist.c numa.c placement.c procinterrupts.c
|
||||
+ irqlist.c numa.c placement.c procinterrupts.c rules_config.c
|
||||
irqbalance_LDADD = $(LIBCAP_NG_LIBS) $(GLIB2_LIBS)
|
||||
irqbalance_LDADD = $(LIBCAP_NG_LIBS) $(GLIB2_LIBS) $(NUMA_LIBS)
|
||||
if IRQBALANCEUI
|
||||
irqbalance_ui_SOURCES = $(UI_DIR)/helpers.c $(UI_DIR)/irqbalance-ui.c \
|
||||
diff --git a/classify.c b/classify.c
|
||||
|
||||
@ -14,10 +14,8 @@ Signed-off-by: He Jingxian <hejingxian@huawei.com>
|
||||
irqbalance.h | 1 +
|
||||
ui/Makefile | 29 ++++
|
||||
ui/client.c | 435 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
ui/irqbalance-ui.c | 4 +-
|
||||
ui/irqbalance-ui.h | 1 +
|
||||
ui/irqbalance_client.h | 111 +++++++++++++
|
||||
7 files changed, 581 insertions(+), 4 deletions(-)
|
||||
5 files changed, 578 insertions(+), 2 deletions(-)
|
||||
create mode 100644 ui/Makefile
|
||||
create mode 100644 ui/client.c
|
||||
create mode 100644 ui/irqbalance_client.h
|
||||
@ -27,7 +25,7 @@ index 1af23c6..7c79087 100644
|
||||
--- a/irqbalance.c
|
||||
+++ b/irqbalance.c
|
||||
@@ -452,12 +452,12 @@ void get_object_stat(struct topo_obj *object, void *data)
|
||||
|
||||
#ifdef HAVE_IRQBALANCEUI
|
||||
gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attribute__((unused)))
|
||||
{
|
||||
- char buff[500];
|
||||
@ -529,33 +527,6 @@ index 0000000..027404b
|
||||
+ return ret_str;
|
||||
+}
|
||||
+
|
||||
diff --git a/ui/irqbalance-ui.c b/ui/irqbalance-ui.c
|
||||
index 943f008..f0deaf8 100644
|
||||
--- a/ui/irqbalance-ui.c
|
||||
+++ b/ui/irqbalance-ui.c
|
||||
@@ -120,8 +120,8 @@ char * get_data(char *string)
|
||||
* With a select, ioctl to determine size, and malloc based
|
||||
* on that
|
||||
*/
|
||||
- char *data = malloc(8192);
|
||||
- int len = recv(socket_fd, data, 8192, 0);
|
||||
+ char *data = malloc(RECV_BUF_SIZE);
|
||||
+ int len = recv(socket_fd, data, RECV_BUF_SIZE, 0);
|
||||
close(socket_fd);
|
||||
data[len] = '\0';
|
||||
free(msg->msg_control);
|
||||
diff --git a/ui/irqbalance-ui.h b/ui/irqbalance-ui.h
|
||||
index b32d58a..503c0c5 100644
|
||||
--- a/ui/irqbalance-ui.h
|
||||
+++ b/ui/irqbalance-ui.h
|
||||
@@ -26,6 +26,7 @@
|
||||
#define IRQ_10GBETH 6
|
||||
#define IRQ_VIRT_EVENT 7
|
||||
|
||||
+#define RECV_BUF_SIZE (4096 * 8)
|
||||
|
||||
/* Typedefs */
|
||||
|
||||
diff --git a/ui/irqbalance_client.h b/ui/irqbalance_client.h
|
||||
new file mode 100644
|
||||
index 0000000..8f18b79
|
||||
|
||||
@ -30,7 +30,7 @@ index 3086d67..aacb399 100644
|
||||
irqbalance_SOURCES = activate.c bitmap.c classify.c cputree.c irqbalance.c \
|
||||
- irqlist.c numa.c placement.c procinterrupts.c rules_config.c
|
||||
+ irqlist.c numa.c placement.c procinterrupts.c rules_config.c hint_verify.c
|
||||
irqbalance_LDADD = $(LIBCAP_NG_LIBS) $(GLIB2_LIBS)
|
||||
irqbalance_LDADD = $(LIBCAP_NG_LIBS) $(GLIB2_LIBS) $(NUMA_LIBS)
|
||||
if IRQBALANCEUI
|
||||
irqbalance_ui_SOURCES = $(UI_DIR)/helpers.c $(UI_DIR)/irqbalance-ui.c \
|
||||
diff --git a/activate.c b/activate.c
|
||||
@ -384,9 +384,9 @@ index 450a1ff..5985d8d 100644
|
||||
}
|
||||
}
|
||||
@@ -720,9 +736,10 @@ int main(int argc, char** argv)
|
||||
ret = EXIT_FAILURE;
|
||||
goto out;
|
||||
}
|
||||
#endif
|
||||
+ update_interval_and_count();
|
||||
main_loop = g_main_loop_new(NULL, FALSE);
|
||||
- last_interval = sleep_interval;
|
||||
|
||||
Binary file not shown.
BIN
irqbalance-1.9.0.tar.gz
Normal file
BIN
irqbalance-1.9.0.tar.gz
Normal file
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
Summary: A dynamic adaptive IRQ balancing daemon
|
||||
Name: irqbalance
|
||||
Version: 1.8.0
|
||||
Release: 6
|
||||
Version: 1.9.0
|
||||
Release: 1
|
||||
Epoch: 3
|
||||
License: GPLv2
|
||||
Source0: https://github.com/Irqbalance/irqbalance/archive/v%{version}.tar.gz#/irqbalance-%{version}.tar.gz
|
||||
@ -23,9 +23,6 @@ Requires: numactl-libs
|
||||
|
||||
%define _hardened_build 1
|
||||
|
||||
Patch6000: bugfix-fix-unsigned-integer-subtraction-sign-overflow.patch
|
||||
Patch6001: bugfix-ui-ui.c-always-use-s-style-format-for-printf-style-f.patch
|
||||
|
||||
Patch9000: feature-aarch64-add-the-regular-to-get-the-correct-i.patch
|
||||
Patch9001: feature-add-new-user-irq-policy-config-rule.patch
|
||||
Patch9002: feature-add-the-switch-of-printing-log.patch
|
||||
@ -35,7 +32,6 @@ Patch9005: feature-add-new-irq-migrate-rule-to-avoid-high-cpu-i.patch
|
||||
Patch9006: feature-enable-irqbalance-to-link-with-multiple-clie.patch
|
||||
Patch9007: feature-add-ability-to-set-hintpolicy-during-runtime.patch
|
||||
Patch9008: feature-encapsulate-and-compile-the-functions-in-irqbalance-ui.patch
|
||||
Patch9009: bugfix-fix-opendir-fails-in-check_platform_device.patch
|
||||
Patch9010: bugfix-set-hint-name-in-add_new_irq-to-avoid-segment.patch
|
||||
|
||||
%description
|
||||
@ -123,6 +119,12 @@ fi
|
||||
/sbin/chkconfig --del %{name} >/dev/null 2>&1 || :
|
||||
|
||||
%changelog
|
||||
* Thu Jul 7 2022 Liu Chao <liuchao173@huawei.com> - 3:1.9.0-1
|
||||
- Type:enhanced
|
||||
- ID:NA
|
||||
- SUG:restart
|
||||
- DESC: upgrade to v1.9.0
|
||||
|
||||
* Thu Jun 2 2022 Liu Chao <liuchao173@huawei.com> - 3:1.8.0-6
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user