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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Friday, 30 of September 2005 07:26, Rafael J. Wysocki wrote:
> On Friday, 30 of September 2005 01:59, Siddha, Suresh B wrote:
> > On Fri, Sep 30, 2005 at 01:04:35AM +0200, Rafael J. Wysocki wrote:
> > > On Friday, 30 of September 2005 00:29, Siddha, Suresh B wrote:
> > > > Did you try just only my patch on top of 2.6.14-rc2? You can get that
> > > > patch from http://www.x86-64.org/lists/discuss/msg07313.html
> > > 
> > > The patch that I tested is attached.  I think it's the same one.  I've just applied
> > > it on top of 2.6.14-rc2-git7, and it doesn't boot.
> > 
> > It works fine for me. Only thing I see though is a warning for UP configuration.
> > Other than that UP, SMP(with and without hotplug) kernels boot fine. I will
> > send the warning fix to Andrew.
> > 
> > > The problem (as I see it) is this:
> > > In x86_64_start_kernel() you copy boot_level4_pgt[] into init_level4_pgt[],
> > > and you make the latter your current PGD by loading cr3 with its address.
> > > Fine.  With this PGD you call start_kernel() which calls setup_arch(), which
> > > calls zap_low_mappings(0) that fills init_level4_pgt[] (which at this moment
> > > is still your current PGD) with zeros ...
> > 
> > It clears only the zeroth entry. Not the whole pgd.
> 
> You are absolutely right.  I have misread this, sorry.
> 
> > Please send me your .config so that I can try reproducing the issue locally
> > here.
> 
> Of course.  The .config is attached.  Generally, it's a non-SMP box, and commenting
> out the zap_low_mappings((0) in setup_arch() makes the box boot again.

One more datapoint: The box boots if I move the zap_low_mappings((0)
in the following way:

--- linux-2.6.14-rc2-git7.orig/arch/x86_64/kernel/setup.c	2005-09-30 07:39:35.000000000 +0200
+++ linux-2.6.14-rc2-git7/arch/x86_64/kernel/setup.c	2005-09-30 08:31:20.000000000 +0200
@@ -571,8 +571,6 @@
 
 	init_memory_mapping(0, (end_pfn_map << PAGE_SHIFT));
 
-	zap_low_mappings(0);
-
 #ifdef CONFIG_ACPI
 	/*
 	 * Initialize the ACPI boot-time table parser (gets the RSDP and SDT).
@@ -680,6 +678,8 @@
 		get_smp_config();
 	init_apic_mappings();
 #endif
+	zap_low_mappings(0);
+
 
 	/*
 	 * Request address space for all standard RAM and ROM resources

iHowever, if I place the zap_low_mappings((0) before the
#define CONFIG_X86_LOCAL_APIC in line 673, it doesn't boot.

Certainly init_apic_mappings() is at fault.  Could that be a reult of a call to
alloc_bootmem_pages()?.

And one more: I have to boot with "noapic".

Greetings,
Rafael
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux