lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4890B500.7040100@sgi.com>
Date:	Wed, 30 Jul 2008 11:37:52 -0700
From:	Mike Travis <travis@....com>
To:	Dave Jones <davej@...emonkey.org.uk>, Mike Travis <travis@....com>,
	Ingo Molnar <mingo@...e.hu>,
	Rusty Russell <rusty@...tcorp.com.au>,
	Andrew Morton <akpm@...ux-foundation.org>,
	"H. Peter Anvin" <hpa@...or.com>, Jack Steiner <steiner@....com>,
	Christoph Lameter <cl@...ux-foundation.org>,
	linux-kernel@...r.kernel.org, Len Brown <len.brown@...el.com>,
	Lennert Buytenhek <kernel@...tstofly.org>,
	Paul Jackson <pj@....com>, Tony Luck <tony.luck@...el.com>,
	Tigran Aivazian <tigran@...azian.fsnet.co.uk>,
	Paul Mackerras <paulus@...ba.org>,
	Benjamin Herrenschmidt <benh@...nel.crashing.org>,
	Robert Richter <robert.richter@....com>,
	Martin Schwidefsky <schwidefsky@...ibm.com>,
	Heiko Carstens <heiko.carstens@...ibm.com>,
	Sam Creasey <sammy@...my.net>, Greg Banks <gnb@....com>,
	"Eric W. Biederman" <ebiederm@...ssion.com>,
	Adrian Bunk <bunk@...nel.org>,
	Thomas Gleixner <tglx@...utronix.de>,
	Andreas Schwab <schwab@...e.de>,
	Johannes Weiner <hannes@...urebad.de>
Subject: Re: [PATCH 1/1] cpumask: Change cpumask_of_cpu to use	cpumask_of_cpu_map

Mike Travis wrote:
> Dave Jones wrote:
>> On Wed, Jul 23, 2008 at 10:18:42AM -0700, Mike Travis wrote:
>>  >   * The previous "lvalue replacement for cpumask_of_cpu()" was not usable
>>  >     in certain situations and generally added unneeded complexity.  So
>>  >     this patch replaces the cpumask_of_cpu_ptr* macros with a generic
>>  >     cpumask_of_cpu_map[].  The only config option is whether this is a
>>  >     static map, or allocated at boot up time:
>>
>> I've lost the plot on what's going on with these cpumask patches.
>> But I just saw this on -rc1.
>>
>> arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c:206:33: error: not addressable
>> arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c:274:32: error: not addressable
>> arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c:352:34: error: not addressable
>>
>> 	Dave
>>
> 
> It looks like some old code is still there (patch dropped?).  I'll send a fix asap.
> 
> Thanks,
> Mike

After I recreated linux-next the changes all appear to be there now.
One problem though, is !SMP config does not build (something about
DECLARE_BITMAP with NR_CPUS=1.)  I wasn't sure how to create a constant
"(cpumask_t)1" that worked as an lvalue, so the following patch is
somewhat a kluge, but fulfills the requirements.

If anyone has a better suggestion, please let me know.

Subject: [PATCH] cpmask: add cpumask_of_cpu(0) for non-SMP

  * Fix cpumask_of_cpu(0) when CONFIG_SMP is not set by providing a
    pointer to a cpumask_t with cpu 0 bit set.

Signed-of-by: Mike Travis <travis@....com
---
 include/linux/cpumask.h |    6 ++++++
 kernel/cpu.c            |    7 +++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

--- linux-2.6.tip.orig/include/linux/cpumask.h
+++ linux-2.6.tip/include/linux/cpumask.h
@@ -265,6 +265,7 @@ static inline void __cpus_shift_left(cpu
 	bitmap_shift_left(dstp->bits, srcp->bits, n, nbits);
 }
 
+#ifdef CONFIG_SMP
 /*
  * Special-case data structure for "single bit set only" constant CPU masks.
  *
@@ -288,6 +289,11 @@ static inline const cpumask_t *get_cpu_m
  * variable created:
  */
 #define cpumask_of_cpu(cpu)	(*get_cpu_mask(cpu))
+#else
+
+extern const cpumask_t cpu_bit_bitmap_of_one;
+#define cpumask_of_cpu(cpu)	cpu_bit_bitmap_of_one
+#endif
 
 
 #define CPU_MASK_LAST_WORD BITMAP_LAST_WORD_MASK(NR_CPUS)
--- linux-2.6.tip.orig/kernel/cpu.c
+++ linux-2.6.tip/kernel/cpu.c
@@ -35,6 +35,8 @@ EXPORT_SYMBOL(cpu_online_map);
 cpumask_t cpu_possible_map __read_mostly = CPU_MASK_ALL;
 EXPORT_SYMBOL(cpu_possible_map);
 
+const cpumask_t cpu_bit_bitmap_of_one = { { [0] = 1 } };
+
 #else /* CONFIG_SMP */
 
 /* Serializes the updates to cpu_online_map, cpu_present_map */
@@ -454,8 +456,6 @@ out:
 }
 #endif /* CONFIG_PM_SLEEP_SMP */
 
-#endif /* CONFIG_SMP */
-
 /*
  * cpu_bit_bitmap[] is a special, "compressed" data structure that
  * represents all NR_CPUS bits binary values of 1<<nr.
@@ -480,3 +480,6 @@ const unsigned long cpu_bit_bitmap[BITS_
 #endif
 };
 EXPORT_SYMBOL_GPL(cpu_bit_bitmap);
+
+#endif /* CONFIG_SMP */
+

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ