Re: [2.6.25-rc5-mm1] BUG: spinlock bad magic early during boot

Dave Hansen
2008-03-14T20:06:28Z

For those of you new to this thread, here's the initial report:

http://marc.info/?t=120536629300001&r=1&w=2

I'm pretty sure the root cause of this bug is this commit:

ACPI: basic initramfs DSDT override support
71fc47a9adf8ee89e5c96a47222915c5485ac437

Which did this hunk:

@@ -648,6 +654,7 @@ asmlinkage void __init start_kernel(void)

check_bugs();

+ populate_rootfs(); /* For DSDT override from initramfs
*/
acpi_early_init(); /* before LAPIC and SMP init */

/* Do the rest non-__init'ed, we're now alive */
rest_init();
...

Well, the fs initcalls aren't actually done until during rest_init(),
including initializing my mnt_writer[] spinlocks. I guess I could
statically initialize them, but that's not the root of the problem, it's
just the canary in the coal mine.

I think the populate_rootfs() call is completely bogus and certainly
can't be done before the initcalls. But, I don't immediately have any
better suggestions for you. Can you delay the ACPI init until after the
fs initcalls are made?

-- Dave