public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/kgdb: Replace bool_int_array[NR_CPUS] with bitmap
@ 2015-09-26 12:47 Denys Vlasenko
  2015-09-26 12:47 ` [PATCH] cpufreq: p4-clockmod: " Denys Vlasenko
  2015-09-29  8:36 ` [tip:x86/debug] x86/kgdb: " tip-bot for Denys Vlasenko
  0 siblings, 2 replies; 7+ messages in thread
From: Denys Vlasenko @ 2015-09-26 12:47 UTC (permalink / raw)
  To: Jason Wessel, Ingo Molnar
  Cc: Denys Vlasenko, H. Peter Anvin, x86, linux-kernel

Straigntforward conversion from
    int was_in_debug_nmi[NR_CPUS]
to
    DECLARE_BITMAP(was_in_debug_nmi, NR_CPUS)

Saves about 2 kbytes in bss for NR_CPUS=512.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
CC: Jason Wessel <jason.wessel@windriver.com>
CC: Ingo Molnar <mingo@kernel.org>
CC: H. Peter Anvin <hpa@zytor.com>
CC: x86@kernel.org
CC: linux-kernel@vger.kernel.org
---
 arch/x86/kernel/kgdb.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
index d6178d9..dd0a003 100644
--- a/arch/x86/kernel/kgdb.c
+++ b/arch/x86/kernel/kgdb.c
@@ -511,24 +511,27 @@ single_step_cont(struct pt_regs *regs, struct die_args *args)
 	return NOTIFY_STOP;
 }
 
-static int was_in_debug_nmi[NR_CPUS];
+static DECLARE_BITMAP(was_in_debug_nmi, NR_CPUS);
 
 static int kgdb_nmi_handler(unsigned int cmd, struct pt_regs *regs)
 {
+	int cpu;
+
 	switch (cmd) {
 	case NMI_LOCAL:
 		if (atomic_read(&kgdb_active) != -1) {
 			/* KGDB CPU roundup */
-			kgdb_nmicallback(raw_smp_processor_id(), regs);
-			was_in_debug_nmi[raw_smp_processor_id()] = 1;
+			cpu = raw_smp_processor_id();
+			kgdb_nmicallback(cpu, regs);
+			set_bit(cpu, was_in_debug_nmi);
 			touch_nmi_watchdog();
 			return NMI_HANDLED;
 		}
 		break;
 
 	case NMI_UNKNOWN:
-		if (was_in_debug_nmi[raw_smp_processor_id()]) {
-			was_in_debug_nmi[raw_smp_processor_id()] = 0;
+		cpu = raw_smp_processor_id();
+		if (__test_and_clear_bit(cpu, was_in_debug_nmi)) {
 			return NMI_HANDLED;
 		}
 		break;
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH] cpufreq: p4-clockmod: Replace bool_int_array[NR_CPUS] with bitmap
  2015-09-26 12:47 [PATCH] x86/kgdb: Replace bool_int_array[NR_CPUS] with bitmap Denys Vlasenko
@ 2015-09-26 12:47 ` Denys Vlasenko
  2015-09-26 22:07   ` Viresh Kumar
  2015-09-27 16:10   ` Jean Delvare
  2015-09-29  8:36 ` [tip:x86/debug] x86/kgdb: " tip-bot for Denys Vlasenko
  1 sibling, 2 replies; 7+ messages in thread
From: Denys Vlasenko @ 2015-09-26 12:47 UTC (permalink / raw)
  To: Viresh Kumar, Rafael J. Wysocki
  Cc: Denys Vlasenko, Ingo Molnar, Bartosz Golaszewski, H. Peter Anvin,
	Benoit Cousson, Fenghua Yu, Guenter Roeck, Jean Delvare,
	Jonathan Corbet, Peter Zijlstra, Thomas Gleixner, x86,
	linux-kernel

Straigntforward conversion from
    int has_N44_O17_errata[NR_CPUS]
to
    DECLARE_BITMAP(has_N44_O17_errata, NR_CPUS)

Saves about 2 kbytes in bss for NR_CPUS=512.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
CC: Viresh Kumar <viresh.kumar@linaro.org>
CC: Rafael J. Wysocki <rjw@rjwysocki.net>
CC: Ingo Molnar <mingo@kernel.org>
CC: Bartosz Golaszewski <bgolaszewski@baylibre.com>
CC: H. Peter Anvin <hpa@zytor.com>
CC: Benoit Cousson <bcousson@baylibre.com>
CC: Fenghua Yu <fenghua.yu@intel.com>
CC: Guenter Roeck <linux@roeck-us.net>
CC: Jean Delvare <jdelvare@suse.de>
CC: Jonathan Corbet <corbet@lwn.net>
CC: Peter Zijlstra <peterz@infradead.org>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: x86@kernel.org
CC: linux-kernel@vger.kernel.org
---
 drivers/cpufreq/p4-clockmod.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/cpufreq/p4-clockmod.c b/drivers/cpufreq/p4-clockmod.c
index 5dd95da..dd15810 100644
--- a/drivers/cpufreq/p4-clockmod.c
+++ b/drivers/cpufreq/p4-clockmod.c
@@ -49,7 +49,7 @@ enum {
 #define DC_ENTRIES	8
 
 
-static int has_N44_O17_errata[NR_CPUS];
+static DECLARE_BITMAP(has_N44_O17_errata, NR_CPUS);
 static unsigned int stock_freq;
 static struct cpufreq_driver p4clockmod_driver;
 static unsigned int cpufreq_p4_get(unsigned int cpu);
@@ -66,7 +66,7 @@ static int cpufreq_p4_setdc(unsigned int cpu, unsigned int newstate)
 	if (l & 0x01)
 		pr_debug("CPU#%d currently thermal throttled\n", cpu);
 
-	if (has_N44_O17_errata[cpu] &&
+	if (test_bit(cpu, has_N44_O17_errata) &&
 	    (newstate == DC_25PT || newstate == DC_DFLT))
 		newstate = DC_38PT;
 
@@ -182,7 +182,7 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
 	case 0x0f0a:
 	case 0x0f11:
 	case 0x0f12:
-		has_N44_O17_errata[policy->cpu] = 1;
+		set_bit(policy->cpu, has_N44_O17_errata);
 		pr_debug("has errata -- disabling low frequencies\n");
 	}
 
@@ -199,7 +199,7 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
 
 	/* table init */
 	for (i = 1; (p4clockmod_table[i].frequency != CPUFREQ_TABLE_END); i++) {
-		if ((i < 2) && (has_N44_O17_errata[policy->cpu]))
+		if ((i < 2) && test_bit(policy->cpu, has_N44_O17_errata))
 			p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
 		else
 			p4clockmod_table[i].frequency = (stock_freq * i)/8;
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] cpufreq: p4-clockmod: Replace bool_int_array[NR_CPUS] with bitmap
  2015-09-26 12:47 ` [PATCH] cpufreq: p4-clockmod: " Denys Vlasenko
@ 2015-09-26 22:07   ` Viresh Kumar
  2015-09-27 16:10   ` Jean Delvare
  1 sibling, 0 replies; 7+ messages in thread
From: Viresh Kumar @ 2015-09-26 22:07 UTC (permalink / raw)
  To: Denys Vlasenko
  Cc: Rafael J. Wysocki, Ingo Molnar, Bartosz Golaszewski,
	H. Peter Anvin, Benoit Cousson, Fenghua Yu, Guenter Roeck,
	Jean Delvare, Jonathan Corbet, Peter Zijlstra, Thomas Gleixner,
	x86, linux-kernel

On 26-09-15, 14:47, Denys Vlasenko wrote:
> Straigntforward conversion from
>     int has_N44_O17_errata[NR_CPUS]
> to
>     DECLARE_BITMAP(has_N44_O17_errata, NR_CPUS)
> 
> Saves about 2 kbytes in bss for NR_CPUS=512.
> 
> Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
> CC: Viresh Kumar <viresh.kumar@linaro.org>
> CC: Rafael J. Wysocki <rjw@rjwysocki.net>
> CC: Ingo Molnar <mingo@kernel.org>
> CC: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> CC: H. Peter Anvin <hpa@zytor.com>
> CC: Benoit Cousson <bcousson@baylibre.com>
> CC: Fenghua Yu <fenghua.yu@intel.com>
> CC: Guenter Roeck <linux@roeck-us.net>
> CC: Jean Delvare <jdelvare@suse.de>
> CC: Jonathan Corbet <corbet@lwn.net>
> CC: Peter Zijlstra <peterz@infradead.org>
> CC: Thomas Gleixner <tglx@linutronix.de>
> CC: x86@kernel.org
> CC: linux-kernel@vger.kernel.org
> ---
>  drivers/cpufreq/p4-clockmod.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/cpufreq/p4-clockmod.c b/drivers/cpufreq/p4-clockmod.c
> index 5dd95da..dd15810 100644
> --- a/drivers/cpufreq/p4-clockmod.c
> +++ b/drivers/cpufreq/p4-clockmod.c
> @@ -49,7 +49,7 @@ enum {
>  #define DC_ENTRIES	8
>  
>  
> -static int has_N44_O17_errata[NR_CPUS];
> +static DECLARE_BITMAP(has_N44_O17_errata, NR_CPUS);
>  static unsigned int stock_freq;
>  static struct cpufreq_driver p4clockmod_driver;
>  static unsigned int cpufreq_p4_get(unsigned int cpu);
> @@ -66,7 +66,7 @@ static int cpufreq_p4_setdc(unsigned int cpu, unsigned int newstate)
>  	if (l & 0x01)
>  		pr_debug("CPU#%d currently thermal throttled\n", cpu);
>  
> -	if (has_N44_O17_errata[cpu] &&
> +	if (test_bit(cpu, has_N44_O17_errata) &&
>  	    (newstate == DC_25PT || newstate == DC_DFLT))
>  		newstate = DC_38PT;
>  
> @@ -182,7 +182,7 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
>  	case 0x0f0a:
>  	case 0x0f11:
>  	case 0x0f12:
> -		has_N44_O17_errata[policy->cpu] = 1;
> +		set_bit(policy->cpu, has_N44_O17_errata);
>  		pr_debug("has errata -- disabling low frequencies\n");
>  	}
>  
> @@ -199,7 +199,7 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
>  
>  	/* table init */
>  	for (i = 1; (p4clockmod_table[i].frequency != CPUFREQ_TABLE_END); i++) {
> -		if ((i < 2) && (has_N44_O17_errata[policy->cpu]))
> +		if ((i < 2) && test_bit(policy->cpu, has_N44_O17_errata))
>  			p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
>  		else
>  			p4clockmod_table[i].frequency = (stock_freq * i)/8;

Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
-- 
viresh

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] cpufreq: p4-clockmod: Replace bool_int_array[NR_CPUS] with bitmap
  2015-09-26 12:47 ` [PATCH] cpufreq: p4-clockmod: " Denys Vlasenko
  2015-09-26 22:07   ` Viresh Kumar
@ 2015-09-27 16:10   ` Jean Delvare
  2015-09-27 17:58     ` Denys Vlasenko
  1 sibling, 1 reply; 7+ messages in thread
From: Jean Delvare @ 2015-09-27 16:10 UTC (permalink / raw)
  To: Denys Vlasenko
  Cc: Viresh Kumar, Rafael J. Wysocki, Ingo Molnar, Bartosz Golaszewski,
	H. Peter Anvin, Benoit Cousson, Fenghua Yu, Guenter Roeck,
	Jonathan Corbet, Peter Zijlstra, Thomas Gleixner, x86,
	linux-kernel

Hi Denys,

On Sat, 26 Sep 2015 14:47:18 +0200, Denys Vlasenko wrote:
> Straigntforward conversion from
>     int has_N44_O17_errata[NR_CPUS]
> to
>     DECLARE_BITMAP(has_N44_O17_errata, NR_CPUS)
> 
> Saves about 2 kbytes in bss for NR_CPUS=512.
> 
> Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
> CC: Viresh Kumar <viresh.kumar@linaro.org>
> CC: Rafael J. Wysocki <rjw@rjwysocki.net>
> CC: Ingo Molnar <mingo@kernel.org>
> CC: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> CC: H. Peter Anvin <hpa@zytor.com>
> CC: Benoit Cousson <bcousson@baylibre.com>
> CC: Fenghua Yu <fenghua.yu@intel.com>
> CC: Guenter Roeck <linux@roeck-us.net>
> CC: Jean Delvare <jdelvare@suse.de>
> CC: Jonathan Corbet <corbet@lwn.net>
> CC: Peter Zijlstra <peterz@infradead.org>
> CC: Thomas Gleixner <tglx@linutronix.de>
> CC: x86@kernel.org
> CC: linux-kernel@vger.kernel.org
> ---
>  drivers/cpufreq/p4-clockmod.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/cpufreq/p4-clockmod.c b/drivers/cpufreq/p4-clockmod.c
> index 5dd95da..dd15810 100644
> --- a/drivers/cpufreq/p4-clockmod.c
> +++ b/drivers/cpufreq/p4-clockmod.c
> @@ -49,7 +49,7 @@ enum {
>  #define DC_ENTRIES	8
>  
>  
> -static int has_N44_O17_errata[NR_CPUS];
> +static DECLARE_BITMAP(has_N44_O17_errata, NR_CPUS);
>  static unsigned int stock_freq;
>  static struct cpufreq_driver p4clockmod_driver;
>  static unsigned int cpufreq_p4_get(unsigned int cpu);
> @@ -66,7 +66,7 @@ static int cpufreq_p4_setdc(unsigned int cpu, unsigned int newstate)
>  	if (l & 0x01)
>  		pr_debug("CPU#%d currently thermal throttled\n", cpu);
>  
> -	if (has_N44_O17_errata[cpu] &&
> +	if (test_bit(cpu, has_N44_O17_errata) &&
>  	    (newstate == DC_25PT || newstate == DC_DFLT))
>  		newstate = DC_38PT;
>  
> @@ -182,7 +182,7 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
>  	case 0x0f0a:
>  	case 0x0f11:
>  	case 0x0f12:
> -		has_N44_O17_errata[policy->cpu] = 1;
> +		set_bit(policy->cpu, has_N44_O17_errata);
>  		pr_debug("has errata -- disabling low frequencies\n");
>  	}
>  
> @@ -199,7 +199,7 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)
>  
>  	/* table init */
>  	for (i = 1; (p4clockmod_table[i].frequency != CPUFREQ_TABLE_END); i++) {
> -		if ((i < 2) && (has_N44_O17_errata[policy->cpu]))
> +		if ((i < 2) && test_bit(policy->cpu, has_N44_O17_errata))
>  			p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID;
>  		else
>  			p4clockmod_table[i].frequency = (stock_freq * i)/8;

Looks good, however I think you should #include <linux/bitmap.h> to
avoid build failures in the future or on certain architectures.

-- 
Jean Delvare
SUSE L3 Support

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] cpufreq: p4-clockmod: Replace bool_int_array[NR_CPUS] with bitmap
  2015-09-27 16:10   ` Jean Delvare
@ 2015-09-27 17:58     ` Denys Vlasenko
  2015-09-28  7:10       ` Jean Delvare
  0 siblings, 1 reply; 7+ messages in thread
From: Denys Vlasenko @ 2015-09-27 17:58 UTC (permalink / raw)
  To: Jean Delvare
  Cc: Viresh Kumar, Rafael J. Wysocki, Ingo Molnar, Bartosz Golaszewski,
	H. Peter Anvin, Benoit Cousson, Fenghua Yu, Guenter Roeck,
	Jonathan Corbet, Peter Zijlstra, Thomas Gleixner, x86,
	linux-kernel

On 09/27/2015 06:10 PM, Jean Delvare wrote:
> Looks good, however I think you should #include <linux/bitmap.h> to
> avoid build failures in the future or on certain architectures.

<linux/cpumask.h> already includes <linux/bitmap.h>
on any arch.

p4-clockmod.c builds only on x86 arch, it's Pentium 4
on demand clock modulation/speed scaling module.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] cpufreq: p4-clockmod: Replace bool_int_array[NR_CPUS] with bitmap
  2015-09-27 17:58     ` Denys Vlasenko
@ 2015-09-28  7:10       ` Jean Delvare
  0 siblings, 0 replies; 7+ messages in thread
From: Jean Delvare @ 2015-09-28  7:10 UTC (permalink / raw)
  To: Denys Vlasenko
  Cc: Viresh Kumar, Rafael J. Wysocki, Ingo Molnar, Bartosz Golaszewski,
	H. Peter Anvin, Benoit Cousson, Fenghua Yu, Guenter Roeck,
	Jonathan Corbet, Peter Zijlstra, Thomas Gleixner, x86,
	linux-kernel

On Sun, 27 Sep 2015 19:58:11 +0200, Denys Vlasenko wrote:
> On 09/27/2015 06:10 PM, Jean Delvare wrote:
> > Looks good, however I think you should #include <linux/bitmap.h> to
> > avoid build failures in the future or on certain architectures.
> 
> <linux/cpumask.h> already includes <linux/bitmap.h>
> on any arch.

Today it does. Tomorrow, who knows.

> p4-clockmod.c builds only on x86 arch, it's Pentium 4
> on demand clock modulation/speed scaling module.

That is a valid point. My comment was generic, I did not pay attention
to the specific driver.

-- 
Jean Delvare
SUSE L3 Support

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [tip:x86/debug] x86/kgdb: Replace bool_int_array[NR_CPUS] with bitmap
  2015-09-26 12:47 [PATCH] x86/kgdb: Replace bool_int_array[NR_CPUS] with bitmap Denys Vlasenko
  2015-09-26 12:47 ` [PATCH] cpufreq: p4-clockmod: " Denys Vlasenko
@ 2015-09-29  8:36 ` tip-bot for Denys Vlasenko
  1 sibling, 0 replies; 7+ messages in thread
From: tip-bot for Denys Vlasenko @ 2015-09-29  8:36 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: torvalds, dvlasenk, jason.wessel, tglx, hpa, mingo, peterz,
	linux-kernel

Commit-ID:  0d44975d1e2791f6df2b84b182f49d815ba3c9e0
Gitweb:     http://git.kernel.org/tip/0d44975d1e2791f6df2b84b182f49d815ba3c9e0
Author:     Denys Vlasenko <dvlasenk@redhat.com>
AuthorDate: Sat, 26 Sep 2015 14:47:17 +0200
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Mon, 28 Sep 2015 10:13:31 +0200

x86/kgdb: Replace bool_int_array[NR_CPUS] with bitmap

Straigntforward conversion from:

    int was_in_debug_nmi[NR_CPUS]

to:

    DECLARE_BITMAP(was_in_debug_nmi, NR_CPUS)

Saves about 2 kbytes in BSS for NR_CPUS=512.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Jason Wessel <jason.wessel@windriver.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Link: http://lkml.kernel.org/r/1443271638-2568-1-git-send-email-dvlasenk@redhat.com
[ Tidied up the code a bit. ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/kgdb.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
index d6178d9..44256a6 100644
--- a/arch/x86/kernel/kgdb.c
+++ b/arch/x86/kernel/kgdb.c
@@ -511,26 +511,31 @@ single_step_cont(struct pt_regs *regs, struct die_args *args)
 	return NOTIFY_STOP;
 }
 
-static int was_in_debug_nmi[NR_CPUS];
+static DECLARE_BITMAP(was_in_debug_nmi, NR_CPUS);
 
 static int kgdb_nmi_handler(unsigned int cmd, struct pt_regs *regs)
 {
+	int cpu;
+
 	switch (cmd) {
 	case NMI_LOCAL:
 		if (atomic_read(&kgdb_active) != -1) {
 			/* KGDB CPU roundup */
-			kgdb_nmicallback(raw_smp_processor_id(), regs);
-			was_in_debug_nmi[raw_smp_processor_id()] = 1;
+			cpu = raw_smp_processor_id();
+			kgdb_nmicallback(cpu, regs);
+			set_bit(cpu, was_in_debug_nmi);
 			touch_nmi_watchdog();
+
 			return NMI_HANDLED;
 		}
 		break;
 
 	case NMI_UNKNOWN:
-		if (was_in_debug_nmi[raw_smp_processor_id()]) {
-			was_in_debug_nmi[raw_smp_processor_id()] = 0;
+		cpu = raw_smp_processor_id();
+
+		if (__test_and_clear_bit(cpu, was_in_debug_nmi))
 			return NMI_HANDLED;
-		}
+
 		break;
 	default:
 		/* do nothing */

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-09-29  8:40 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-26 12:47 [PATCH] x86/kgdb: Replace bool_int_array[NR_CPUS] with bitmap Denys Vlasenko
2015-09-26 12:47 ` [PATCH] cpufreq: p4-clockmod: " Denys Vlasenko
2015-09-26 22:07   ` Viresh Kumar
2015-09-27 16:10   ` Jean Delvare
2015-09-27 17:58     ` Denys Vlasenko
2015-09-28  7:10       ` Jean Delvare
2015-09-29  8:36 ` [tip:x86/debug] x86/kgdb: " tip-bot for Denys Vlasenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox