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

Bug#651215: Kernel fails to boot on NSLU2



Ben Hutchings <ben@decadent.org.uk> writes:
Hi,

> On Tue, 2011-12-06 at 20:40 +0100, Jochen Friedrich wrote:
>> Package: linux-image-3.1.0-1-ixp4xx
>> Severity: normal
>> 
>> While 3.0.0-6 booted OK on NSLU2 platform, 3.1.0-1 or -4 fails to do so.
>> 
>> Boot log:
> [...]
>> [    0.000000] Linux version 3.1.0-1-ixp4xx (Debian 3.1.4-1) (waldi@debian.org)
>> (gcc version 4.6.2 (Debian 4.6.2-4) ) #1 Wed Nov 30 06:35:38 UTC 2011
>> [    0.000000] CPU: XScale-IXP42x Family [690541f1] revision 1 (ARMv5TE),
>> cr=0000397f
>> [    0.000000] CPU: VIVT data cache, VIVT instruction cache
>> [    0.000000] Machine: Linksys NSLU2
> [...]
>> [    3.269860] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
>> [    3.350596] PCI: enabling device 0000:00:01.2 (0140 -> 0142)
>> [    3.356553] ehci_hcd 0000:00:01.2: EHCI Host Controller
>> [    3.452053] ehci_hcd 0000:00:01.2: new USB bus registered, assigned bus
>> number 1
>> [    3.459646] ehci_hcd 0000:00:01.2: coherent DMA mask 0x3ffffff is smaller
>> than system GFP_DMA mask 0xffffffff
>> [    3.570085] ehci_hcd 0000:00:01.2: coherent DMA mask 0x3ffffff is smaller
>> than system GFP_DMA mask 0xffffffff
>> [    3.680189] ehci_hcd 0000:00:01.2: coherent DMA mask 0x3ffffff is smaller
>> than system GFP_DMA mask 0xffffffff
>> (repeated over and over)
>
> I assume that this has something to do with:
>
> commit 650320181a08b64d4421c65c639cf47ad8cc2cd6
> Author: Nicolas Pitre <nico@fluxnic.net>
> Date:   Mon Jul 18 15:05:10 2011 -0400
>
>     ARM: change ARM_DMA_ZONE_SIZE into a variable
>
> commit 7553ee777b513c3bc8f45bb9fc75fb1bbc584ba1
> Author: Nicolas Pitre <nicolas.pitre@linaro.org>
> Date:   Tue Jul 5 22:28:09 2011 -0400
>
>     ARM: mach-ixp4xx: move from ARM_DMA_ZONE_SIZE to mdesc->dma_zone_size
>
> It's clear that the DMA zone size is supposed to be 64 MB on this
> machine and I don't see why the DMA mask hasn't propagated correctly.
> Any idea, Nicholas?

I may be wrong but it seems that arm_dma_zone_size is used before being
set. It would be interesting if someone can boot test a nslu2 kernel with
appended patch.


Thanks,
Arnaud

Index: linux-2.6-3.2~rc4/arch/arm/kernel/setup.c
===================================================================
--- linux-2.6-3.2~rc4.orig/arch/arm/kernel/setup.c	2011-12-01 23:56:01.000000000 +0100
+++ linux-2.6-3.2~rc4/arch/arm/kernel/setup.c	2011-12-07 23:04:39.000000000 +0100
@@ -921,6 +921,12 @@ void __init setup_arch(char **cmdline_p)
 	sanity_check_meminfo();
 	arm_memblock_init(&meminfo, mdesc);
 
+#ifdef CONFIG_ZONE_DMA
+	if (mdesc->dma_zone_size) {
+		extern unsigned long arm_dma_zone_size;
+		arm_dma_zone_size = mdesc->dma_zone_size;
+	}
+#endif
 	paging_init(mdesc);
 	request_standard_resources(mdesc);
 
@@ -934,12 +940,6 @@ void __init setup_arch(char **cmdline_p)
 
 	tcm_init();
 
-#ifdef CONFIG_ZONE_DMA
-	if (mdesc->dma_zone_size) {
-		extern unsigned long arm_dma_zone_size;
-		arm_dma_zone_size = mdesc->dma_zone_size;
-	}
-#endif
 #ifdef CONFIG_MULTI_IRQ_HANDLER
 	handle_arch_irq = mdesc->handle_irq;
 #endif

Reply to: