H. Peter Anvin
638d957b51
x86, realmode: Change EFER to a single u64 field
...
Change EFER to be a single u64 field instead of two u32 fields; change
the order to maintain alignment. Note that on x86-64 cr4 is really
also a 64-bit quantity, although we can only set the low 32 bits from
the trampoline code since it is still executing in 32-bit mode at that
point.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com >
Cc: Jarkko Sakkinen <jarkko.sakkinen@intel.com >
2012-05-16 14:02:05 -07:00
Jarkko Sakkinen
cda846f101
x86, realmode: read cr4 and EFER from kernel for 64-bit trampoline
...
This patch changes 64-bit trampoline so that CR4 and
EFER are provided by the kernel instead of using fixed
values.
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com >
Link: http://lkml.kernel.org/r/1336501366-28617-24-git-send-email-jarkko.sakkinen@intel.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com >
2012-05-08 15:04:27 -07:00
Jarkko Sakkinen
f37240f16b
x86, realmode: header for trampoline code
...
Added header for trampoline code that can be used to supply
input data to it. This makes interface between real mode code
and kernel cleaner and simpler. Replaced two confusing pointers
to level4 pgt in trampoline_64.S with a single pointer to the
beginning of the page table.
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com >
Link: http://lkml.kernel.org/r/1336501366-28617-21-git-send-email-jarkko.sakkinen@intel.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com >
2012-05-08 11:48:45 -07:00
Jarkko Sakkinen
b429dbf6e8
x86, realmode: don't copy real_mode_header
...
Replaced copying of real_mode_header with a pointer
to beginning of RM memory.
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com >
Link: http://lkml.kernel.org/r/1336501366-28617-19-git-send-email-jarkko.sakkinen@intel.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com >
2012-05-08 11:48:45 -07:00
Jarkko Sakkinen
c9b77ccb52
x86, realmode: Move ACPI wakeup to unified realmode code
...
Migrated ACPI wakeup code to the real-mode blob.
Code existing in .x86_trampoline can be completely
removed. Static descriptor table in wakeup_asm.S is
courtesy of H. Peter Anvin.
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com >
Link: http://lkml.kernel.org/r/1336501366-28617-7-git-send-email-jarkko.sakkinen@intel.com
Cc: Rafael J. Wysocki <rjw@sisk.pl >
Cc: Len Brown <len.brown@intel.com >
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com >
2012-05-08 11:46:05 -07:00
Jarkko Sakkinen
48927bbb97
x86, realmode: Move SMP trampoline to unified realmode code
...
Migrated SMP trampoline code to the real mode blob.
SMP trampoline code is not yet removed from
.x86_trampoline because it is needed by the wakeup
code.
[ hpa: always enable compiling startup_32_smp in head_32.S... it is
only a few instructions which go into .init on UP builds, and it makes
the rest of the code less #ifdef ugly. ]
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com >
Link: http://lkml.kernel.org/r/1336501366-28617-6-git-send-email-jarkko.sakkinen@intel.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com >
2012-05-08 11:41:51 -07:00
Jarkko Sakkinen
5a8c9aebe0
x86, realmode: Move reboot_32.S to unified realmode code
...
Migrated reboot_32.S from x86_trampoline to the real-mode
blob.
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com >
Link: http://lkml.kernel.org/r/1336501366-28617-5-git-send-email-jarkko.sakkinen@intel.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com >
2012-05-08 11:41:50 -07:00
Jarkko Sakkinen
084ee1c641
x86, realmode: Relocator for realmode code
...
Implements relocator for real mode code that is called
as part of setup_arch(). Processes segment relocations
and linear relocations. Real-mode code is relocated to
a free hole below 1 MB.
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com >
Link: http://lkml.kernel.org/r/1336501366-28617-4-git-send-email-jarkko.sakkinen@intel.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com >
2012-05-08 11:41:49 -07:00