Messages in this thread | | | From | Neil Brown <> | Date | Tue, 16 Mar 2004 12:35:02 +1100 | Subject | Re: 2.6.4-mm1 - 4g patch breaks when X86_4G not selected |
| |
On Monday March 15, mingo@elte.hu wrote: > > * Neil Brown <neilb@cse.unsw.edu.au> wrote: > > > And it turns out it was spot on. Applying 4g-2.6.0-test2-mm2-A5.patch > > (on top of preceding -mm1 patches) causes my server not to boot. > > hm. Since your .config boots on akpm's box, this is some BIOS dependency > creating an early-boot problem i fear. Debugging such bugs is hard. One > way would be via the PC speaker: > > movb $0x3,%al; outb %al,$0x61 > > this will cause a continuous beep on a typical PC - it works in 16-bit > code too, doesnt have any memory-model assumptions, etc. > > the first place to put this would be startup_32 - do we get to this > point at all? (check CONFIG_4G first, to make sure the beep triggers.) > If it beeps, then move it down until you find the place that crashes. > > Ingo
Thanks for the pointer. I now have something useful to report.
start_kernel calls setup_arch which calls paging_init which calls pagetable_init which calls setup_identity_mappings which calls page_address
If I put asm("push %eax; movb $0x3,%al; outb %al,$0x61; popl %eax\n"); before the call to page_address, and asm("push %eax; movb $0x0,%al; outb %al,$0x61; popl %eax\n"); afterwards, then I get a tone after boot, suggesting that page_address isn't returning.
I'm guessing that the problem is:
page_address calls spin_lock_irqsave(&pas->lock, flags);
but the spinlock isn't initialised by page_address_init until much later in start_kernel.
NeilBrown - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |