Skip to content

Commit

Permalink
x86, realmode: Move end signature into header.S
Browse files Browse the repository at this point in the history
The end signature was defined in wakeup_asm.S as it originally came
from the ACPI wakeup code.  However, we rely on the existence of the
.signature section to expand .bss, otherwise we would have to include
code to explicitly zero the .bss depending on the configuration.
Since the expanded .bss is just in .init.data anyway, it's easier to
always have it expanded.

This fixes failures when compiled without CONFIG_ACPI_SLEEP.

Reported-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cc: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
  • Loading branch information
H. Peter Anvin committed May 21, 2012
1 parent 8a3b947 commit 61f5446
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 6 deletions.
9 changes: 9 additions & 0 deletions arch/x86/realmode/rm/header.S
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
#include <linux/linkage.h>
#include <asm/page_types.h>

#include "realmode.h"

.section ".header", "a"

.balign 16
Expand All @@ -30,3 +32,10 @@ GLOBAL(real_mode_header)
.long pa_machine_real_restart_asm
#endif
END(real_mode_header)

/* End signature, used to verify integrity */
.section ".signature","a"
.balign 4
GLOBAL(end_signature)
.long REALMODE_END_SIGNATURE
END(end_signature)
5 changes: 5 additions & 0 deletions arch/x86/realmode/rm/realmode.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,9 @@

#endif /* __ASSEMBLY__ */

/*
* Signature at the end of the realmode region
*/
#define REALMODE_END_SIGNATURE 0x65a22c82

#endif /* ARCH_X86_REALMODE_RM_REALMODE_H */
1 change: 0 additions & 1 deletion arch/x86/realmode/rm/wakeup.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ extern struct wakeup_header wakeup_header;

#define WAKEUP_HEADER_OFFSET 8
#define WAKEUP_HEADER_SIGNATURE 0x51ee1111
#define WAKEUP_END_SIGNATURE 0x65a22c82

/* Wakeup behavior bits */
#define WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE 0
Expand Down
6 changes: 1 addition & 5 deletions arch/x86/realmode/rm/wakeup_asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ ENTRY(wakeup_start)

/* Check we really have everything... */
movl end_signature, %eax
cmpl $WAKEUP_END_SIGNATURE, %eax
cmpl $REALMODE_END_SIGNATURE, %eax
jne bogus_real_magic

/* Call the C code */
Expand Down Expand Up @@ -175,7 +175,3 @@ GLOBAL(wakeup_idt)
.long 0 /* address */
.word 0
END(wakeup_idt)

.section ".signature","a"
end_signature:
.long WAKEUP_END_SIGNATURE

0 comments on commit 61f5446

Please sign in to comment.