From: Richard Weinberger <richard@no...> - 2012-01-24 19:09:26
x86_64 UML is unable to load modules if more than 504MiB
of memory are used.
This happens because on x86_64 the UML process has a quite high
start address (typically around 0x6000000).
If UML's memory is larger than 504MiB VMALLOC_START happens to be after
0x8000000. This is no problem unless one loads a module which was built
with R_X86_64_32S relocations.
Symbols with a location > 0x8000000 cannot be used with R_X86_64_32S
To deal with this x86_64 UML has to be compiled with -mcmodel=large
such that no R_X86_64_32S relocations are used.
Signed-off-by: Richard Weinberger <richard@...>
Reported-by: 전하늘 <allskyee@...>
arch/um/Makefile | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/arch/um/Makefile b/arch/um/Makefile
index 28688e6..123f073 100644
@@ -28,6 +28,7 @@ ifeq ($(SUBARCH),i386)
HEADER_ARCH := x86
+ KBUILD_CFLAGS += -mcmodel=large
HOST_DIR := arch/$(HEADER_ARCH)