diff --git a/SOURCES/irqbalance-1.0.7-manpage-hostname.patch b/SOURCES/irqbalance-1.0.7-manpage-hostname.patch new file mode 100644 index 0000000..67e81a9 --- /dev/null +++ b/SOURCES/irqbalance-1.0.7-manpage-hostname.patch @@ -0,0 +1,11 @@ +diff -up irqbalance-1.0.7/irqbalance.1.orig irqbalance-1.0.7/irqbalance.1 +--- irqbalance-1.0.7/irqbalance.1.orig 2015-01-06 10:47:45.750459727 +0100 ++++ irqbalance-1.0.7/irqbalance.1 2015-01-06 10:48:17.132521825 +0100 +@@ -145,6 +145,6 @@ assigning irqs to the 1st (cpu0) and 57t + Forces a rescan of the available irqs and system topology + + .SH "Homepage" +-http://code.google.com/p/irqbalance ++https://github.com/Irqbalance/irqbalance + + diff --git a/SOURCES/irqbalance-1.0.8-Manpage-note-about-ignoring-of-pid-in-some-cases.patch b/SOURCES/irqbalance-1.0.8-Manpage-note-about-ignoring-of-pid-in-some-cases.patch new file mode 100644 index 0000000..62a806c --- /dev/null +++ b/SOURCES/irqbalance-1.0.8-Manpage-note-about-ignoring-of-pid-in-some-cases.patch @@ -0,0 +1,26 @@ +From 6ae5196bc35b5bb64f80a4d64d11cd219e5d1fa0 Mon Sep 17 00:00:00 2001 +From: Petr Holasek +Date: Wed, 10 Dec 2014 16:22:47 +0100 +Subject: [PATCH] Manpage note about ignoring of --pid in some cases + +Signed-off-by: Petr Holasek +--- + irqbalance.1 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/irqbalance.1 b/irqbalance.1 +index ceb4ae2..b6f451a 100644 +--- a/irqbalance.1 ++++ b/irqbalance.1 +@@ -125,7 +125,7 @@ is identical to the --hintpolicy setting, but applied per irq + .B -s, --pid= + Have irqbalance write its process id to the specified file. By default no + pidfile is written. The written pidfile is automatically unlinked when +-irqbalance exits. ++irqbalance exits. It is ignored when used with --debug or --foreground. + + .SH "ENVIRONMENT VARIABLES" + .TP +-- +2.1.0 + diff --git a/SOURCES/irqbalance-1.0.8-Warning-when-irqbalance-hasn-t-root-privileges.patch b/SOURCES/irqbalance-1.0.8-Warning-when-irqbalance-hasn-t-root-privileges.patch new file mode 100644 index 0000000..c2436a0 --- /dev/null +++ b/SOURCES/irqbalance-1.0.8-Warning-when-irqbalance-hasn-t-root-privileges.patch @@ -0,0 +1,27 @@ +From 1d7890db7ed4ef236103812a6b9fac0d86691154 Mon Sep 17 00:00:00 2001 +From: Petr Holasek +Date: Wed, 10 Dec 2014 18:00:02 +0100 +Subject: [PATCH] Warning when irqbalance hasn't root privileges + +Signed-off-by: Petr Holasek +--- + irqbalance.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/irqbalance.c b/irqbalance.c +index f22ecfb..bb8c3da 100644 +--- a/irqbalance.c ++++ b/irqbalance.c +@@ -288,6 +288,9 @@ int main(int argc, char** argv) + } else + log(TO_CONSOLE, LOG_INFO, "This machine seems not NUMA capable.\n"); + ++ if (geteuid() != 0) ++ log(TO_ALL, LOG_WARNING, "Irqbalance hasn't been executed under root privileges, thus it won't in fact balance interrupts.\n"); ++ + if (banscript) { + char *note = "Please note that --banscript is deprecated, please use --policyscript instead"; + log(TO_ALL, LOG_WARNING, "%s\n", note); +-- +2.1.0 + diff --git a/SOURCES/irqbalance-1.0.8-fix-cpulist_parse-definition-to-match-bitmap_parseli.patch b/SOURCES/irqbalance-1.0.8-fix-cpulist_parse-definition-to-match-bitmap_parseli.patch new file mode 100644 index 0000000..ef48750 --- /dev/null +++ b/SOURCES/irqbalance-1.0.8-fix-cpulist_parse-definition-to-match-bitmap_parseli.patch @@ -0,0 +1,36 @@ +From a1646032c65858c33904fa3c8135933446f4bc83 Mon Sep 17 00:00:00 2001 +From: Rik van Riel +Date: Thu, 12 Mar 2015 17:47:00 -0400 +Subject: [PATCH 2/3] fix cpulist_parse definition to match bitmap_parselist + and kernel + +Nobody used cpulist_parse before, so nobody noticed that the parameters +for cpulist_parse and bitmap_parselist did not match the parameters +actually used by bitmap_parselist and related functions. + +Signed-off-by: Rik van Riel +--- + cpumask.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/cpumask.h b/cpumask.h +index 001dda3..0774a88 100644 +--- a/cpumask.h ++++ b/cpumask.h +@@ -281,10 +281,10 @@ static inline int __cpulist_scnprintf(char *buf, int len, + return bitmap_scnlistprintf(buf, len, srcp->bits, nbits); + } + +-#define cpulist_parse(buf, dst) __cpulist_parse((buf), &(dst), NR_CPUS) +-static inline int __cpulist_parse(const char *buf, cpumask_t *dstp, int nbits) ++#define cpulist_parse(buf, len, dst) __cpulist_parse((buf), (len), &(dst), NR_CPUS) ++static inline int __cpulist_parse(const char *buf, int len, cpumask_t *dstp, int nbits) + { +- return bitmap_parselist(buf, dstp->bits, nbits); ++ return bitmap_parselist(buf, len, dstp->bits, nbits); + } + + #define cpu_remap(oldbit, old, new) \ +-- +2.1.0 + diff --git a/SOURCES/irqbalance-1.0.8-fix-memory-leak-in-classify-code.patch b/SOURCES/irqbalance-1.0.8-fix-memory-leak-in-classify-code.patch new file mode 100644 index 0000000..2413038 --- /dev/null +++ b/SOURCES/irqbalance-1.0.8-fix-memory-leak-in-classify-code.patch @@ -0,0 +1,40 @@ +From 699deffdd881bf4759f3fcc4d6ee3e018e4c266e Mon Sep 17 00:00:00 2001 +From: Tom Li +Date: Fri, 18 Apr 2014 20:06:18 -0400 +Subject: [PATCH] fix memory leak in classify code + +If a system has no pci devices the opening of the pci bus directory in +rebuild_irq_db will fail, leading to a memory leak. Fix it by freeing the list +we create in that function always on exit + +Reported-by: Tom Li +Signed-off-by: Neil Horman +Signed-off-by: Tom Li +--- + classify.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/classify.c b/classify.c +index 1867a94..94b53b8 100644 +--- a/classify.c ++++ b/classify.c +@@ -465,7 +465,7 @@ void rebuild_irq_db(void) + + devdir = opendir(SYSDEV_DIR); + if (!devdir) +- return; ++ goto free; + + do { + entry = readdir(devdir); +@@ -482,6 +482,7 @@ void rebuild_irq_db(void) + + for_each_irq(tmp_irqs, add_missing_irq, NULL); + ++free: + g_list_free_full(tmp_irqs, free); + + } +-- +2.4.3 + diff --git a/SOURCES/irqbalance-1.0.8-import-__bitmap_parselist-from-Linux-kernel.patch b/SOURCES/irqbalance-1.0.8-import-__bitmap_parselist-from-Linux-kernel.patch new file mode 100644 index 0000000..87d90aa --- /dev/null +++ b/SOURCES/irqbalance-1.0.8-import-__bitmap_parselist-from-Linux-kernel.patch @@ -0,0 +1,141 @@ +From 976e741c59b64d51fec0b8c4f5c1c8d3cf8ed3be Mon Sep 17 00:00:00 2001 +From: Rik van Riel +Date: Thu, 12 Mar 2015 17:47:00 -0400 +Subject: [PATCH 1/3] import __bitmap_parselist from Linux kernel + +Import __bitmap_parselist from the Linux kernel, in order to parse +CPU ranges as used in eg. the kernel isolcpus= commandline argument. + +This code appears to have been in the Linux kernel since the initial +git import in 2005, so I do not have attribution of which changeset(s) +introduced it into the kernel. + +Signed-off-by: Rik van Riel +--- + bitmap.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + bitmap.h | 10 ++++++-- + 2 files changed, 92 insertions(+), 2 deletions(-) + +diff --git a/bitmap.c b/bitmap.c +index 2f44660..6a7421a 100644 +--- a/bitmap.c ++++ b/bitmap.c +@@ -377,3 +377,87 @@ int __bitmap_parse(const char *buf, unsigned int buflen, + + return 0; + } ++ ++/** ++ * __bitmap_parselist - convert list format ASCII string to bitmap ++ * @buf: read nul-terminated user string from this buffer ++ * @buflen: buffer size in bytes. If string is smaller than this ++ * then it must be terminated with a \0. ++ * @is_user: location of buffer, 0 indicates kernel space ++ * @maskp: write resulting mask here ++ * @nmaskbits: number of bits in mask to be written ++ * ++ * Input format is a comma-separated list of decimal numbers and ++ * ranges. Consecutively set bits are shown as two hyphen-separated ++ * decimal numbers, the smallest and largest bit numbers set in ++ * the range. ++ * ++ * Returns 0 on success, -errno on invalid input strings. ++ * Error values: ++ * %-EINVAL: second number in range smaller than first ++ * %-EINVAL: invalid character in string ++ * %-ERANGE: bit number specified too large for mask ++ */ ++int __bitmap_parselist(const char *buf, unsigned int buflen, ++ int is_user __attribute((unused)), unsigned long *maskp, ++ int nmaskbits) ++{ ++ int a, b, c, old_c, totaldigits; ++ int exp_digit, in_range; ++ ++ totaldigits = c = 0; ++ bitmap_zero(maskp, nmaskbits); ++ do { ++ exp_digit = 1; ++ in_range = 0; ++ a = b = 0; ++ ++ /* Get the next cpu# or a range of cpu#'s */ ++ while (buflen) { ++ old_c = c; ++ c = *buf++; ++ buflen--; ++ if (isspace(c)) ++ continue; ++ ++ /* ++ * If the last character was a space and the current ++ * character isn't '\0', we've got embedded whitespace. ++ * This is a no-no, so throw an error. ++ */ ++ if (totaldigits && c && isspace(old_c)) ++ return -EINVAL; ++ ++ /* A '\0' or a ',' signal the end of a cpu# or range */ ++ if (c == '\0' || c == ',') ++ break; ++ ++ if (c == '-') { ++ if (exp_digit || in_range) ++ return -EINVAL; ++ b = 0; ++ in_range = 1; ++ exp_digit = 1; ++ continue; ++ } ++ ++ if (!isdigit(c)) ++ return -EINVAL; ++ ++ b = b * 10 + (c - '0'); ++ if (!in_range) ++ a = b; ++ exp_digit = 0; ++ totaldigits++; ++ } ++ if (!(a <= b)) ++ return -EINVAL; ++ if (b >= nmaskbits) ++ return -ERANGE; ++ while (a <= b) { ++ set_bit(a, maskp); ++ a++; ++ } ++ } while (buflen && c == ','); ++ return 0; ++} +diff --git a/bitmap.h b/bitmap.h +index 91ed499..7afce59 100644 +--- a/bitmap.h ++++ b/bitmap.h +@@ -185,8 +185,8 @@ extern int __bitmap_parse(const char *buf, unsigned int buflen, int is_user, + unsigned long *dst, int nbits); + extern int bitmap_scnlistprintf(char *buf, unsigned int len, + const unsigned long *src, int nbits); +-extern int bitmap_parselist(const char *buf, unsigned long *maskp, +- int nmaskbits); ++extern int __bitmap_parselist(const char *buf, unsigned int buflen, int is_user, ++ unsigned long *dst, int nbits); + extern void bitmap_remap(unsigned long *dst, const unsigned long *src, + const unsigned long *old, const unsigned long *new, int bits); + extern int bitmap_bitremap(int oldbit, +@@ -351,6 +351,12 @@ static inline int bitmap_parse(const char *buf, unsigned int buflen, + return __bitmap_parse(buf, buflen, 0, maskp, nmaskbits); + } + ++static inline int bitmap_parselist(const char *buf, unsigned int buflen, ++ unsigned long *maskp, int nmaskbits) ++{ ++ return __bitmap_parselist(buf, buflen, 0, maskp, nmaskbits); ++} ++ + #endif /* __ASSEMBLY__ */ + + #endif /* __LINUX_BITMAP_H */ +-- +2.1.0 + diff --git a/SOURCES/irqbalance-1.0.8-irqbalance-signal-handling-tuning.patch b/SOURCES/irqbalance-1.0.8-irqbalance-signal-handling-tuning.patch new file mode 100644 index 0000000..7fe88cb --- /dev/null +++ b/SOURCES/irqbalance-1.0.8-irqbalance-signal-handling-tuning.patch @@ -0,0 +1,82 @@ +From a37e7a0ab152fe6c88d49d8c99200f4d26672e63 Mon Sep 17 00:00:00 2001 +From: Petr Holasek +Date: Wed, 10 Dec 2014 17:23:30 +0100 +Subject: [PATCH] irqbalance signal handling tuning + +Added sigaction for SIGTERM, SIGUSR1 and SIGUSR2 using the same handler +like SIGINT, i.e. stop and cleanup after finishing of current balancing +iteration. + +Signed-off-by: Petr Holasek +--- + irqbalance.c | 33 +++++++++++++++++++++++---------- + 1 file changed, 23 insertions(+), 10 deletions(-) + +diff --git a/irqbalance.c b/irqbalance.c +index 670e688..f22ecfb 100644 +--- a/irqbalance.c ++++ b/irqbalance.c +@@ -238,6 +238,15 @@ static void force_rescan(int signum) + int main(int argc, char** argv) + { + struct sigaction action, hupaction; ++ sigset_t sigset, old_sigset; ++ ++ sigemptyset(&sigset); ++ sigaddset(&sigset,SIGINT); ++ sigaddset(&sigset,SIGHUP); ++ sigaddset(&sigset,SIGTERM); ++ sigaddset(&sigset,SIGUSR1); ++ sigaddset(&sigset,SIGUSR2); ++ sigprocmask(SIG_BLOCK, &sigset, &old_sigset); + + #ifdef HAVE_GETOPT_LONG + parse_command_line(argc, argv); +@@ -290,11 +299,6 @@ int main(int argc, char** argv) + HZ = 100; + } + +- action.sa_handler = handler; +- sigemptyset(&action.sa_mask); +- action.sa_flags = 0; +- sigaction(SIGINT, &action, NULL); +- + build_object_tree(); + if (debug_mode) + dump_object_tree(); +@@ -324,6 +328,20 @@ int main(int argc, char** argv) + } + } + ++ action.sa_handler = handler; ++ sigemptyset(&action.sa_mask); ++ action.sa_flags = 0; ++ sigaction(SIGINT, &action, NULL); ++ sigaction(SIGTERM, &action, NULL); ++ sigaction(SIGUSR1, &action, NULL); ++ sigaction(SIGUSR2, &action, NULL); ++ ++ hupaction.sa_handler = force_rescan; ++ sigemptyset(&hupaction.sa_mask); ++ hupaction.sa_flags = 0; ++ sigaction(SIGHUP, &hupaction, NULL); ++ ++ sigprocmask(SIG_SETMASK, &old_sigset, NULL); + + #ifdef HAVE_LIBCAP_NG + // Drop capabilities +@@ -337,11 +355,6 @@ int main(int argc, char** argv) + parse_proc_interrupts(); + parse_proc_stat(); + +- hupaction.sa_handler = force_rescan; +- sigemptyset(&hupaction.sa_mask); +- hupaction.sa_flags = 0; +- sigaction(SIGHUP, &hupaction, NULL); +- + while (keep_going) { + sleep_approx(SLEEP_INTERVAL); + log(TO_CONSOLE, LOG_INFO, "\n\n\n-----------------------------------------------------------------------------\n"); +-- +2.1.0 + diff --git a/SOURCES/irqbalance-1.0.8-parse-isolcpus-from-proc-cmdline-to-set-up-banned_cp.patch b/SOURCES/irqbalance-1.0.8-parse-isolcpus-from-proc-cmdline-to-set-up-banned_cp.patch new file mode 100644 index 0000000..edee5d1 --- /dev/null +++ b/SOURCES/irqbalance-1.0.8-parse-isolcpus-from-proc-cmdline-to-set-up-banned_cp.patch @@ -0,0 +1,101 @@ +From ca5a3f13bf247561e64ef2323b3dd28a2c3b880d Mon Sep 17 00:00:00 2001 +From: Rik van Riel +Date: Thu, 12 Mar 2015 17:47:00 -0400 +Subject: [PATCH 3/3] parse isolcpus= from /proc/cmdline to set up banned_cpus + +When the user specifies a range of CPUs to be isolated from system +tasks with isolcpus= on the kernel command line, it would be nice +if those CPUs could automatically be excluded from getting interrupts +routed to them, as well. + +This patch does that, by looking at /proc/cmdline + +The environment variable IRQBALANCE_BANNED_CPUS will override the +automatically detectable banned_cpus. + +Signed-off-by: Rik van Riel +--- + cputree.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ + irqbalance.c | 4 ---- + 2 files changed, 44 insertions(+), 4 deletions(-) + +diff --git a/cputree.c b/cputree.c +index 8b8cf5e..cfa70b6 100644 +--- a/cputree.c ++++ b/cputree.c +@@ -58,6 +58,48 @@ cpumask_t cpu_possible_map; + */ + cpumask_t unbanned_cpus; + ++/* ++ * By default do not place IRQs on CPUs the kernel keeps isolated, ++ * as specified through the isolcpus= boot commandline. Users can ++ * override this with the IRQBALANCE_BANNED_CPUS environment variable. ++ */ ++static void setup_banned_cpus(void) ++{ ++ FILE *file; ++ char *c, *line = NULL; ++ size_t size = 0; ++ const char *isolcpus = "isolcpus="; ++ char buffer[4096]; ++ ++ /* A manually specified cpumask overrides auto-detection. */ ++ if (getenv("IRQBALANCE_BANNED_CPUS")) { ++ cpumask_parse_user(getenv("IRQBALANCE_BANNED_CPUS"), strlen(getenv("IRQBALANCE_BANNED_CPUS")), banned_cpus); ++ goto out; ++ } ++ ++ file = fopen("/proc/cmdline", "r"); ++ if (!file) ++ goto out; ++ ++ if (getline(&line, &size, file) <= 0) ++ goto out; ++ ++ if ((c = strstr(line, isolcpus))) { ++ char *end; ++ int len; ++ ++ c += strlen(isolcpus); ++ for (end = c; *end != ' ' && *end != '\0' && *end != '\n'; end++); ++ len = end - c; ++ ++ cpulist_parse(c, len, banned_cpus); ++ } ++ ++ out: ++ cpumask_scnprintf(buffer, 4096, banned_cpus); ++ log(TO_CONSOLE, LOG_INFO, "Isolated CPUs: %s\n", buffer); ++} ++ + static struct topo_obj* add_cache_domain_to_package(struct topo_obj *cache, + int packageid, cpumask_t package_mask) + { +@@ -372,6 +414,8 @@ void parse_cpu_tree(void) + DIR *dir; + struct dirent *entry; + ++ setup_banned_cpus(); ++ + cpus_complement(unbanned_cpus, banned_cpus); + + dir = opendir("/sys/devices/system/cpu"); +diff --git a/irqbalance.c b/irqbalance.c +index a5079b9..e4f3b93 100644 +--- a/irqbalance.c ++++ b/irqbalance.c +@@ -276,10 +276,6 @@ int main(int argc, char** argv) + */ + openlog(argv[0], 0, LOG_DAEMON); + +- if (getenv("IRQBALANCE_BANNED_CPUS")) { +- cpumask_parse_user(getenv("IRQBALANCE_BANNED_CPUS"), strlen(getenv("IRQBALANCE_BANNED_CPUS")), banned_cpus); +- } +- + if (getenv("IRQBALANCE_ONESHOT")) + one_shot_mode=1; + +-- +2.1.0 + diff --git a/SOURCES/irqbalance-1.0.8-removing-unused-variable-cache_stat.patch b/SOURCES/irqbalance-1.0.8-removing-unused-variable-cache_stat.patch new file mode 100644 index 0000000..fa94c43 --- /dev/null +++ b/SOURCES/irqbalance-1.0.8-removing-unused-variable-cache_stat.patch @@ -0,0 +1,25 @@ +From 854425506dc26d1e118122b2f87f1b7f5641ee35 Mon Sep 17 00:00:00 2001 +From: Petr Holasek +Date: Wed, 10 Dec 2014 15:12:10 +0100 +Subject: [PATCH] removing unused variable cache_stat + +Signed-off-by: Petr Holasek +--- + cputree.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/cputree.c b/cputree.c +index caedbb6..c56b1be 100644 +--- a/cputree.c ++++ b/cputree.c +@@ -234,7 +234,6 @@ static void do_one_cpu(char *path) + cpu_set(cpu->number, cache_mask); + max_cache_index = 0; + cache_index = 1; +- cache_stat = 0; + do { + struct stat sb; + snprintf(new_path, PATH_MAX, "%s/cache/index%d/shared_cpu_map", path, cache_index); +-- +2.1.0 + diff --git a/SPECS/irqbalance.spec b/SPECS/irqbalance.spec index 8ef8d14..66af4a6 100644 --- a/SPECS/irqbalance.spec +++ b/SPECS/irqbalance.spec @@ -1,7 +1,7 @@ Name: irqbalance Version: 1.0.7 -Release: 2%{?dist} -Epoch: 2 +Release: 5%{?dist} +Epoch: 3 Summary: IRQ balancing daemon Group: System Environment/Base @@ -29,7 +29,16 @@ ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 ppc64le %{arm} aarch64 Patch1: irqbalance-1.0.4-env-file-path.patch Patch2: irqbalance-1.0.6-man_IRQBALANCE_BANNED_CPUS.patch Patch3: irqbalance-1.0.7-ignore_affinity_hint.patch -Patch4: irqbalance-1.0.8-separate-cmomand-line-banned-irqs.patch +Patch4: irqbalance-1.0.8-removing-unused-variable-cache_stat.patch +Patch5: irqbalance-1.0.8-Manpage-note-about-ignoring-of-pid-in-some-cases.patch +Patch6: irqbalance-1.0.8-irqbalance-signal-handling-tuning.patch +Patch7: irqbalance-1.0.8-Warning-when-irqbalance-hasn-t-root-privileges.patch +Patch8: irqbalance-1.0.7-manpage-hostname.patch +Patch9: irqbalance-1.0.8-import-__bitmap_parselist-from-Linux-kernel.patch +Patch10:irqbalance-1.0.8-fix-cpulist_parse-definition-to-match-bitmap_parseli.patch +Patch11:irqbalance-1.0.8-parse-isolcpus-from-proc-cmdline-to-set-up-banned_cp.patch +Patch12:irqbalance-1.0.8-fix-memory-leak-in-classify-code.patch +Patch13:irqbalance-1.0.8-separate-cmomand-line-banned-irqs.patch %description irqbalance is a daemon that evenly distributes IRQ load across @@ -41,6 +50,15 @@ multiple CPUs for enhanced performance. %patch2 -p1 %patch3 -p1 %patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 %build ./autogen.sh @@ -79,8 +97,21 @@ fi /sbin/chkconfig --del irqbalance >/dev/null 2>&1 || : %changelog -* Tue Jul 14 2015 Petr Holasek - 2:1.0.7-2 -- Irqbalance honors banned irqs all the time (#1242626) +* Mon Jul 13 2015 Petr Holasek - 2:1.0.7-5 +- banned irqs aren't touched (#1237356) + +* Fri Jun 12 2015 Petr Holasek - 2:1.0.7-4 +- fixed memory leak in pci bus parsing code (#1225319) + +* Tue May 05 2015 Petr Holasek - 2:1.0.7-3 +- fixed putting irqs on isolated cpus (#1201552) + +* Tue Jan 06 2015 Petr Holasek - 2:1.0.7-2 +- fixed unused variable revealed by covscan +- fixed ignored pid argument (#1155632) +- warning when irqbalance started under non-root (#1155799) +- more robust signal handling (#1158937) +- fixed hostname in manpage (#1162251) * Tue Aug 19 2014 Petr Holasek - 2:1.0.7-1 - Rebased to version 1.0.7 (#1018140)