Re: [PATCH][Fix][Resend] Fix Bug #4959: Page tables corrupted during resume on x86-64 (take 3)

From: Rafael J. Wysocki
Date: Thu Sep 29 2005 - 17:01:08 EST


Hi,

On Thursday, 29 of September 2005 02:00, Siddha, Suresh B wrote:
> On Wed, Sep 28, 2005 at 10:24:42PM +0200, Rafael J. Wysocki wrote:
> > On Wednesday, 28 of September 2005 21:18, Andi Kleen wrote:
> > > Also Suresh S. has a patch out to turn the initial page tables
> > > into initdata. It'll probably conflict with that. Needs to be coordinated
> > > with him.
> >
> > Do you mean the patch at:
> > http://www.x86-64.org/lists/discuss/msg07297.html ?
> > Unfortunately it interferes with the current swsusp code, which uses
> > init_level4_pgt anyway.
> >
> > Could we please treat my patch as a (very much needed) urgent bugfix
> > and make the whole swsusp code in line with the Suresh's patch later on?
> >
> > Suresh, could you please say what you think of it?
>
> My patch as such shouldn't change the behavior of the existing swsup
> code. I am making only boot_level4_pgt as initdata. But not the
> init_level4_pgt.

Suresh, unfortunately the kernel does not boot with your patch, because
it clears init_level4_pgt. I think the patch that follows should be applied on
top of it.

If I am right, than your patch does not conflict with mine (just tested).

Greetings,
Rafael


Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx>

Index: linux-2.6.14-rc2-git7/arch/x86_64/mm/init.c
===================================================================
--- linux-2.6.14-rc2-git7.orig/arch/x86_64/mm/init.c 2005-09-29 22:13:34.000000000 +0200
+++ linux-2.6.14-rc2-git7/arch/x86_64/mm/init.c 2005-09-29 22:13:55.000000000 +0200
@@ -313,7 +313,7 @@
void __cpuinit zap_low_mappings(int cpu)
{
if (cpu == 0) {
- pgd_t *pgd = pgd_offset_k(0UL);
+ pgd_t *pgd = boot_level4_pgt;
pgd_clear(pgd);
} else {
/*
Index: linux-2.6.14-rc2-git7/include/asm-x86_64/proto.h
===================================================================
--- linux-2.6.14-rc2-git7.orig/include/asm-x86_64/proto.h 2005-09-21 11:04:24.000000000 +0200
+++ linux-2.6.14-rc2-git7/include/asm-x86_64/proto.h 2005-09-29 22:22:19.000000000 +0200
@@ -22,6 +22,7 @@
#define mtrr_bp_init() do {} while (0)
#endif
extern void init_memory_mapping(unsigned long start, unsigned long end);
+extern void zap_low_mappings(int cpu);

extern void system_call(void);
extern int kernel_syscall(void);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/