All of lore.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: Shaohua Li <shaohua.li@intel.com>
Cc: linux-kernel@vger.kernel.org, rjw@sisk.pl, mingo@elte.hu,
	colin.king@canonical.com
Subject: Re: [PATCH] i386: do a global tlb flush in S4 resume
Date: Wed, 03 Mar 2010 18:30:02 -0800	[thread overview]
Message-ID: <4B8F1B2A.5070500@zytor.com> (raw)
In-Reply-To: <1267665799-670-1-git-send-email-shaohua.li@intel.com>

On 03/03/2010 05:23 PM, Shaohua Li wrote:
> Colin reported a strange oops in S4 resume code path (see below). The test
> system has i5/i7 CPU. The kernel doesn't open PAE, so 4M page table is used.
> The oops always happen a virtual address 0xc03ff000, which is mapped to the
> last 4k of first 4M memory. Doing a global tlb flush fixes the issue.
> 
> EIP: 0060:[<c0493a01>] EFLAGS: 00010086 CPU: 0
> EIP is at copy_loop+0xe/0x15
> EAX: 36aeb000 EBX: 00000000 ECX: 00000400 EDX: f55ad46c
> ESI: 0f800000 EDI: c03ff000 EBP: f67fbec4 ESP: f67fbea8
>  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
> ...
> ...
> CR2: 00000000c03ff000
> 
> Tested-by: Colin Ian King <colin.king@canonical.com>
> Signed-off-by: Shaohua Li <shaohua.li@intel.com>
> ---
>  arch/x86/power/hibernate_asm_32.S |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/x86/power/hibernate_asm_32.S b/arch/x86/power/hibernate_asm_32.S
> index b641388..9e4ef64 100644
> --- a/arch/x86/power/hibernate_asm_32.S
> +++ b/arch/x86/power/hibernate_asm_32.S
> @@ -27,10 +27,21 @@ ENTRY(swsusp_arch_suspend)
>  	ret
>  
>  ENTRY(restore_image)
> +	movl	mmu_cr4_features, %ecx
>  	movl	resume_pg_dir, %eax
>  	subl	$__PAGE_OFFSET, %eax
>  	movl	%eax, %cr3
>  
> +	jecxz	1f	# cr4 Pentium and higher, skip if zero
> +	movl	%ecx, %edx
> +	andl	$~(X86_CR4_PGE), %edx
> +	movl	%edx, %cr4;  # turn off PGE
> +1:
> +	movl	%cr3, %eax;  # flush TLB
> +	movl	%eax, %cr3
> +	jecxz	1f	# cr4 Pentium and higher, skip if zero
> +	movl	%ecx, %cr4;  # turn PGE back on
> +1:
>  	movl	restore_pblist, %edx
>  	.p2align 4,,7
>  

Since we're about to do another global page flush a bit further down in
the same code, why not just leave PGE off until then?

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


  reply	other threads:[~2010-03-04  2:30 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-04  1:23 [PATCH] i386: do a global tlb flush in S4 resume Shaohua Li
2010-03-04  2:30 ` H. Peter Anvin [this message]
2010-03-04  2:41   ` Shaohua Li
2010-03-04 19:49     ` Rafael J. Wysocki
2010-03-04 20:11       ` Rafael J. Wysocki
2010-03-05  0:59       ` Shaohua Li
2010-03-05 20:55         ` Rafael J. Wysocki
2010-03-06 21:54           ` Rafael J. Wysocki
2010-03-06 23:17             ` H. Peter Anvin
2010-03-30 18:42         ` [tip:x86/urgent] x86-32, resume: " tip-bot for Shaohua Li
2010-03-30 18:48         ` tip-bot for Shaohua Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B8F1B2A.5070500@zytor.com \
    --to=hpa@zytor.com \
    --cc=colin.king@canonical.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rjw@sisk.pl \
    --cc=shaohua.li@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.