hi, Guenter http://www.gossamer-threads.com/lists/linux/kernel/2011061 >[PATCH] Revert "percpu: free percpu allocation info for uniprocessor system" > > The commit causes a hang with a crisv32 image. This may be an architecture > problem, but at least for now the revert is necessary to be able to boot a > crisv32 image. Yes, it is a crisv32 specific issue. The crisv32 was paniced on the BUG() macro in function mark_bootmem. The call path is : pcpu_free_alloc_info -> memblock_free_early -> free_bootmem -> mark_bootmem -> BUG() The root source is that arch/cris/kernel/setup.c:setup_arch compute start_pfn and max_pfn from *virtual* address. |---------- arch/cris/kernel/setup.c:setup_arch ----------------------- | start_pfn = PFN_UP(memory_start); /* usually c0000000 + kernel + romfs */ | max_pfn = PFN_DOWN((unsigned long)high_memory); /* usually c0000000 + dram size */ |---------- arch/cris/kernel/setup.c:setup_arch ----------------------- So, when memblock_free_early pass the *physical* address of ai to mark_bootmem. The first if statement of mark_bootmem become ture. And then hit the BUG() macro. After applied the attached patch, pcpu_free_alloc_info works as expect. It had been test with your toolchain and patches you provided to me. http://server.roeck-us.net/qemu/crisv32/ cc'ed Mikael and Jesper, as they are Axis staff. thanks