The change related to this bug causes a regression on suspend/resume at
least on my T42p. We tracked the reason down to this line:

@@ -77,6 +77,7 @@ static void __init set_nx(void)
 #else
 static inline void set_nx(void)
 {
+       nx_enabled = ( (__supported_pte_mask & _PAGE_NX) == _PAGE_NX );
 }
 #endif
 
The problem is in arch/x86/include/asm/pgtable_types.h:
#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
#define _PAGE_NX        (_AT(pteval_t, 1) << _PAGE_BIT_NX)
#else
#define _PAGE_NX        (_AT(pteval_t, 0))
#endif

which means on 32bit non-pae _NX_PAGE is 0 and so nx_enable gets
incorrectly set to 1. This in turn causes code to be executed on resume
which runs under the wrong assumptions.

To fix this, the code has either to verify that _PAGE_NX is not 0 or
#ifdef the line for CONFIG_X86_64 only and leave the value of nx_enabled
alone otherwise.

** Tags added: verification-failed
** Tags removed: verification-needed

** Changed in: linux (Ubuntu)
    Milestone: karmic-updates => None

-- 
64bit kernels inappropriately reporting they are using NX emulation
https://bugs.launchpad.net/bugs/454285
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to