[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20171105174043.xc2y6bfwwasv4x7w@gmail.com>
Date: Sun, 5 Nov 2017 18:40:43 +0100
From: Ingo Molnar <mingo@...nel.org>
To: Heiko Carstens <heiko.carstens@...ibm.com>
Cc: hpa@...or.com, peterz@...radead.org, tglx@...utronix.de,
linux-kernel@...r.kernel.org, torvalds@...ux-foundation.org,
ak@...ux.intel.com, linux-tip-commits@...r.kernel.org
Subject: Re: [tip:x86/fpu] bitops: Add clear/set_bit32() to linux/bitops.h
* Heiko Carstens <heiko.carstens@...ibm.com> wrote:
> On Tue, Oct 17, 2017 at 09:21:46AM -0700, tip-bot for Andi Kleen wrote:
> > Commit-ID: cbe96375025e14fc76f9ed42ee5225120d7210f8
> > Gitweb: https://git.kernel.org/tip/cbe96375025e14fc76f9ed42ee5225120d7210f8
> > Author: Andi Kleen <ak@...ux.intel.com>
> > AuthorDate: Fri, 13 Oct 2017 14:56:41 -0700
> > Committer: Ingo Molnar <mingo@...nel.org>
> > CommitDate: Tue, 17 Oct 2017 17:14:56 +0200
> >
> > bitops: Add clear/set_bit32() to linux/bitops.h
> >
> > Add two simple wrappers around set_bit/clear_bit() that accept
> > the common case of an u32 array. This avoids writing
> > casts in all callers.
> >
> > Signed-off-by: Andi Kleen <ak@...ux.intel.com>
> > Reviewed-by: Thomas Gleixner <tglx@...utronix.de>
> > Cc: Linus Torvalds <torvalds@...ux-foundation.org>
> > Cc: Peter Zijlstra <peterz@...radead.org>
> > Link: http://lkml.kernel.org/r/20171013215645.23166-2-andi@firstfloor.org
> > Signed-off-by: Ingo Molnar <mingo@...nel.org>
> > ---
> > include/linux/bitops.h | 26 ++++++++++++++++++++++++++
> > 1 file changed, 26 insertions(+)
>
> ...
>
> > + * set_bit32 - Set a bit in memory for u32 array
> > + * @nr: Bit to clear
> > + * @addr: u32 * address of bitmap
> > + *
> > + * Same as set_bit, but avoids needing casts for u32 arrays.
> > + */
> > +
> > +static __always_inline void set_bit32(long nr, volatile u32 *addr)
> > +{
> > + set_bit(nr, (volatile unsigned long *)addr);
> > +}
>
> This does not work at all on 64 bit big endian machines. If e.g. the array
> would contain only one 32 bit member set_bit() would write to whatever is
> behind the array.
Yeah, indeed - this got reverted via:
1943dc07b45e: bitops: Revert cbe96375025e ("bitops: Add clear/set_bit32() to linux/bitops.h")
Thanks,
Ingo
Powered by blists - more mailing lists