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

From: Sheng Yang
Date: Wed May 13 2009 - 23:52:20 EST


On Thursday 14 May 2009 01:29:15 H. Peter Anvin wrote:
> H. Peter Anvin wrote:
> > H. Peter Anvin wrote:
> >> 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.
> >>>
> >>> This patch applied to tip/mm.
> >>
> >> Hi Sheng,
> >>
> >> Could you try the attached patch instead?
> >
> > Sorry, wrong patch entirely... here is the right one.
>
> This time, for real? Sheesh. I'm having a morning, apparently.
>
> -hpa

Yeah, this one also works well(lightly tested). :)

But one thing should be noticed that, bit ops recognized the input as signed.
According to SDM 2A 3.1.1.7 Operation Section, Bit(BitBase, BitOffset) can
accept BitOffset as negative value, then search backward... Well, I indeed
don't know when we need this, but I think keep signed here should be better...

--
regards
Yang, Sheng
--
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/