Hi,

On some architectures VECTORS_BASE is an address in SRAM, potentially lower then DRAM_BASE. In older kernels (at least before 2.6.29) when bootmem was passed such an address, it failed silently. These days, it'll fail with a BUG() macro, causing booting to stop. To fix this, don't reserve the VECTORS_BASE range if VECTORS_BASE < DRAM_BASE.

Would the following patch be acceptable?

--- linux-2.6.x/arch/arm/mm/nommu.c    2009-08-12 13:03:57.000000000 +0200
+++ linux-2.6.x-lpc22xx/arch/arm/mm/nommu.c 2009-08-12 14:16:59.000000000 +0200
@@ -33,6 +33,7 @@ void __init reserve_node_zero(pg_data_t
            BOOTMEM_DEFAULT);
#endif

+#if !defined(CONFIG_DRAM_BASE) || (CONFIG_VECTORS_BASE >= CONFIG_DRAM_BASE)
    /*
     * Register the exception vector page.
     * some architectures which the DRAM is the exception vector to trap,
@@ -40,6 +41,7 @@ void __init reserve_node_zero(pg_data_t
     */
    reserve_bootmem_node(pgdat, CONFIG_VECTORS_BASE, PAGE_SIZE,
            BOOTMEM_DEFAULT);
+#endif
}

/*

_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to