Commit 12783aa0 authored by Richard Weinberger's avatar Richard Weinberger

um: Switch to large mcmodel on x86_64

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: default avatarRichard Weinberger <richard@nod.at>
Reported-by: default avatar전하늘 <allskyee@gmail.com>
parent 9310da0b
...@@ -28,6 +28,7 @@ ifeq ($(SUBARCH),i386) ...@@ -28,6 +28,7 @@ ifeq ($(SUBARCH),i386)
endif endif
ifeq ($(SUBARCH),x86_64) ifeq ($(SUBARCH),x86_64)
HEADER_ARCH := x86 HEADER_ARCH := x86
KBUILD_CFLAGS += -mcmodel=large
endif endif
HOST_DIR := arch/$(HEADER_ARCH) HOST_DIR := arch/$(HEADER_ARCH)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment