Atsushi Nemoto wrote: > On Thu, 19 Oct 2006 10:39:14 +0200, Franck Bui-Huu <vagabon.xyz@xxxxxxxxx> wrote: >> BTW, what about this condition: >> >> if (initrd_start < PAGE_OFFSET) { >> ...; >> } >> >> that would work even on 32 bits kernel. > > This does not work if PAGE_OFFSET was 0xffffffff80000000 and > initrd_start was 0x980000000XXXXXXX :-) > I think we should terminate this patch pretty quickly because it's going to make me mad ;) How can PAGE_OFFSET be in CKSEG0 segment and initrd_start be in XKPHYS ? With the current code we can say: - If PAGE_OFFSET is in CKSEG0, that means that all kernel virtual address must be in CKSEG0. - If PAGE_OFFSET is in XKPHYS, that means that _after_ booting process all kernel virtual address will be in XKPHYS. But we allow CKSEG0 virtual address during boot for the reasons we know. What woud give __pa(initrd_start) in your example ? __pa(initrd_start) -> 0x980000000XXXXXXX - 0xffffffff80000000 which is wrong...Does your example come from a real use case ? Franck