lkml.org 
[lkml]   [2011]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:x86/urgent] x86, nx: Mark the ACPI resume trampoline code as +x
    Commit-ID:  d344e38b2c151ca5e5e39f562017127e93912528
    Gitweb: http://git.kernel.org/tip/d344e38b2c151ca5e5e39f562017127e93912528
    Author: H. Peter Anvin <hpa@zytor.com>
    AuthorDate: Sun, 6 Feb 2011 21:16:09 -0800
    Committer: Ingo Molnar <mingo@elte.hu>
    CommitDate: Mon, 7 Feb 2011 09:07:13 +0100

    x86, nx: Mark the ACPI resume trampoline code as +x

    We reserve lowmem for the things that need it, like the ACPI
    wakeup code, way early to guarantee availability. This happens
    before we set up the proper pagetables, so set_memory_x() has no
    effect.

    Until we have a better solution, use an initcall to mark the
    wakeup code executable.

    Originally-by: Matthieu Castet <castet.matthieu@free.fr>
    Signed-off-by: H. Peter Anvin <hpa@zytor.com>
    Cc: Matthias Hopf <mhopf@suse.de>
    Cc: rjw@sisk.pl
    Cc: Suresh Siddha <suresh.b.siddha@intel.com>
    LKML-Reference: <4D4F8019.2090104@zytor.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    ---
    arch/x86/kernel/acpi/sleep.c | 13 ++++++++++---
    1 files changed, 10 insertions(+), 3 deletions(-)

    diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c
    index 4d9ebba..68d1537 100644
    --- a/arch/x86/kernel/acpi/sleep.c
    +++ b/arch/x86/kernel/acpi/sleep.c
    @@ -12,10 +12,8 @@
    #include <linux/cpumask.h>
    #include <asm/segment.h>
    #include <asm/desc.h>
    -
    -#ifdef CONFIG_X86_32
    #include <asm/pgtable.h>
    -#endif
    +#include <asm/cacheflush.h>

    #include "realmode/wakeup.h"
    #include "sleep.h"
    @@ -149,6 +147,15 @@ void __init acpi_reserve_wakeup_memory(void)
    memblock_x86_reserve_range(mem, mem + WAKEUP_SIZE, "ACPI WAKEUP");
    }

    +int __init acpi_configure_wakeup_memory(void)
    +{
    + if (acpi_realmode)
    + set_memory_x(acpi_realmode, WAKEUP_SIZE >> PAGE_SHIFT);
    +
    + return 0;
    +}
    +arch_initcall(acpi_configure_wakeup_memory);
    +

    static int __init acpi_sleep_setup(char *str)
    {

    \
     
     \ /
      Last update: 2011-02-07 10:27    [W:0.024 / U:0.184 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site