[PATCH 1/1][Natty] x86, hibernate: Initialize mmu_cr4_features during boot
John Johansen
john.johansen at canonical.com
Fri Apr 8 09:58:42 UTC 2011
On 04/07/2011 02:15 PM, Herton Ronaldo Krzesinski wrote:
> From: H. Peter Anvin <hpa at linux.intel.com>
>
> Restore the initialization of mmu_cr4_features during boot, which was
> removed without comment in checkin e5f15b45ddf3afa2bbbb10c7ea34fb32b6de0a0e
>
> x86: Cleanup highmap after brk is concluded
>
> thereby breaking resume from hibernate. This restores previous
> functionality in approximately the same place, and corrects the
> reading of %cr4 on pre-CPUID hardware (%cr4 exists if and only if
> CPUID is supported.)
>
> However, part of the problem is that the hibernate suspend/resume
> sequence should manage the save/restore of %cr4 explicitly.
>
> Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
> Cc: Rafael J. Wysocki <rjw at sisk.pl>
> Cc: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
> Cc: Yinghai Lu <yinghai at kernel.org>
> LKML-Reference: <201104020154.57136.rjw at sisk.pl>
> (cherry picked from commit 4da9484bdece39ab0b098fa711e095e3e9fc8684)
> Tested-by: Herton Ronaldo Krzesinski <herton.krzesinski at canonical.com>
> BugLink: http://bugs.launchpad.net/bugs/752870
> Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski at canonical.com>
> ---
> arch/x86/kernel/setup.c | 5 +++++
> 1 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index e543fe9..4e59873 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -1013,6 +1013,11 @@ void __init setup_arch(char **cmdline_p)
> paging_init();
> x86_init.paging.pagetable_setup_done(swapper_pg_dir);
>
> + if (boot_cpu_data.cpuid_level >= 0) {
> + /* A CPU has %cr4 if and only if it has CPUID */
> + mmu_cr4_features = read_cr4();
> + }
> +
> #ifdef CONFIG_X86_32
> /* sync back kernel address range */
> clone_pgd_range(initial_page_table + KERNEL_PGD_BOUNDARY,
I tried to replicate this and test on my amd64 machine but it appears, hibernate
is failing at an earlier point for me.
The patch looks good though
Acked-by: John Johansnen <john.johansen at canonical.com>
More information about the kernel-team
mailing list