Re: [PATCH 5/7] Use %gs for per-cpu sections in kernel
From: Jeremy Fitzhardinge
Date: Mon Sep 25 2006 - 01:26:16 EST
Rusty Russell wrote:
That can't happen, since 0xc100000 is not in the kernel address space.
0xc1000000 is though, perhaps that's what you meant?
Yes, it is. Though it doesn't actually make any material difference to
my argument.
So, in this case the %gs base will be loaded with 0xc100000-0xc0431100 =
0x4bccef00
A negative offset, exactly, which can't happen, as I said.
0x4bccef00 is positive. The correct number is 0xc1000000-0xc0431100 =
0xbcef00
The %gs:per_cpu__foo addressing mode still calculates
0xbcef00+0xc0433800, which is still a subtraction. My essential point
is that *all* kernel addresses (=kernel symbols) are negative, so using
them as an offset from a segment base (any segment base) is a
subtraction, which requires a 4G limit.
J
-
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/