Re: [PATCH] x86: Extend test_and_set_bit() test_and_clean_bit() to64 bits in X86_64

From: H. Peter Anvin
Date: Thu May 14 2009 - 10:33:19 EST


Christoph Hellwig wrote:
> On Wed, May 13, 2009 at 04:17:27PM +0800, Sheng Yang wrote:
>> This fix 44/45 bit width memory can't boot up issue. The reason is
>> free_bootmem_node()->mark_bootmem_node()->__free() use test_and_clean_bit() to
>> clean node_bootmem_map, but for 44bits width address, the idx set bit 31 (43 -
>> 12), which consider as a nagetive value for bts.
>
> Should we really have different prototypes for these helpers on
> different architectures?
>

We already do: SPARC and MIPS have unsigned long, and apparently have
been unsigned long for a long time. Given how the x86 bitops work, they
would have to be signed, which would mean to introduce a third
prototype, which really is the suck, but it's not like it would be the
only oddball. Either that or we have to redesign the bootmem system for
very large amounts of memory.

-hpa

--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.

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