Re: [Fastboot] [CFT] ELF Relocatable x86 and x86_64 bzImages

From: Jan Kratochvil
Date: Tue Aug 01 2006 - 00:26:24 EST


On Tue, 01 Aug 2006 04:31:43 +0200, Eric W. Biederman wrote:
...
> 4MB is a little harsh, but I haven't worked through what the exact rules
> are, I know 4MB is the worst case alignment for arch/i386.
>
> The rule is that we have to be at the same offset from 4MB as we
> were built to run at. So in this case address where (address %4MB) == 1MB.

In such case your patch is not optimal. The original VA Linux Japan patch 2.0
http://mkdump.sourceforge.net/cvs.html
cvs -q -z3 -d:pserver:anonymous:@mkdump.cvs.sourceforge.net:/cvsroot/mkdump rdiff -u -r bp_linux-2_6-minik -r linux-2_6-minik linux
had lower alignment requirements and these were really tested that time.

i386 had alignment requirement:
/* current_thread_info()&co. are 8192-alignment fixed (for the initial stack). */
#if CONFIG_PHYSICAL_START & 0x1FFF
#error "CONFIG_PHYSICAL_START must be 2*PAGE_SIZE (0x2000) aligned!"
#endif
as IIRC those i386 2MB/4MB pages must be (apparently) 2MB/4MB aligned in the
virtual address space but their physical target address can be arbitrary.

and x86_64 alignment requirement was:
#if (CONFIG_PHYSICAL_START - 0x100000) & 0x1FFFFF
#error "CONFIG_PHYSICAL_START must be '2MB * x + 1MB' aligned!"
#endif
while IIRC those x86_64 2MB pages need to have even the physical target address
2MB aligned. Lower alignment would require suboptimal execution by not using
the 2MB pages (and the patch would have to handle it appropriately).

( I did not check your patches as they are locked in that useless GIT anyway. )


Regards,
Lace
-
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/