On Fri 2019-09-06 09:55:49, Jiri Slaby wrote: > bogus_64_magic is only a dead-end loop. There is no need for an > out-of-order function (and unannotated local label), so just handle it > in-place and also store 0xbad-m-a-g-i-c to rcx beforehand.
Slower, longer, does not really fix anything. Why is it good idea?
NAK.
Pavel
> Signed-off-by: Jiri Slaby <[email protected]>
> Cc: "Rafael J. Wysocki" <[email protected]>
> Cc: Pavel Machek <[email protected]>
> Cc: Len Brown <[email protected]>
> Cc: Borislav Petkov <[email protected]>
> Cc: Thomas Gleixner <[email protected]>
> Cc: Ingo Molnar <[email protected]>
> Cc: "H. Peter Anvin" <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> ---
> arch/x86/kernel/acpi/wakeup_64.S | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/kernel/acpi/wakeup_64.S
> b/arch/x86/kernel/acpi/wakeup_64.S
> index b0715c3ac18d..7f9ade13bbcf 100644
> --- a/arch/x86/kernel/acpi/wakeup_64.S
> +++ b/arch/x86/kernel/acpi/wakeup_64.S
> @@ -18,8 +18,13 @@ ENTRY(wakeup_long64)
> movq saved_magic, %rax
> movq $0x123456789abcdef0, %rdx
> cmpq %rdx, %rax
> - jne bogus_64_magic
> + je 2f
>
> + /* stop here on a saved_magic mismatch */
> + movq $0xbad6d61676963, %rcx
> +1:
> + jmp 1b
> +2:
> movw $__KERNEL_DS, %ax
> movw %ax, %ss
> movw %ax, %ds
> @@ -37,9 +42,6 @@ ENTRY(wakeup_long64)
> jmp *%rax
> ENDPROC(wakeup_long64)
>
> -bogus_64_magic:
> - jmp bogus_64_magic
> -
> ENTRY(do_suspend_lowlevel)
> FRAME_BEGIN
> subq $8, %rsp
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures)
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
signature.asc
Description: Digital signature

