On Fri, Jan 15, 2010 at 11:39 AM, Syed Khader <sk.syed2@xxxxxxxxx> wrote: > On Thu, Jan 7, 2010 at 3:27 AM, Prashant Bhole > <prashantsmailcenter@xxxxxxxxx> wrote: >> Hi, >> We have a custom board (arm/mach-iop331) and linux kernel (2.6.24) >> ported for it. I saw following message while booting: >> >> BUG: mapping for 0xce800000 at 0xce800000 overlaps vmalloc space >> >> Can anybody please tell me seriousness of this message? This message comes from >> arch/arm/mm/mmu.c: create_mapping() function. >> w.r.t this function, The IO mapping descriptor md has following values: >> >> md->virtual = 0xce800000 >> md->pfn = 0xce800000 >> md->type = MT_DEVICE >> >> PAGE_OFFSET is 0xc0000000 >> VMALLOC_END is 0xce800000 >> >> Also, To fix this problem which value I should change, VMALLOC_END or >> md->virtual? >> Where I can get correct values? >> >> P.S.- I haven't ported this kernel, just trying to figure out the problem. >> >> Thanks, >> Prashant > > To give you a background on these things let me give you an example of > how these macros should be defined: > > Imagine you are having a ARM board with 32MB of SDRAM. The physical > base for this is 0x8000 0000 till 0x81FF FFFF. > > With this information let us start to define initial arch specific > Linux kernel parameters: > > Now > > In include/asm/arch/memory.h > > #define PHYS_OFFSET (0x80000000UL) > > > #define VMALLOC_OFFSET (8*1024*1024) 8MB hole to catch out of bounds memory > > #define VMALLOC_START > > (((unsigned long)high_memory + VMALLOC_OFFSET)& ~(VMALLOC_OFFSET-1)) > > high_memory is a global variable exported by mm/memory. It > represents the highest virtual RAM address. > > #define VMALLOC_END (PAGE_OFFSET + 0x10000000) 16MB above 3G > > The space between VMALLOC_START and VMALLOC_END is used by vmalloc() > > > > In asm/arm/memory.h. > > #define PAGE_OFFSET (0xc0000000UL) ~3G > #define TASK_SIZE (0xbf000000UL) default task size > > > Now coming to kernel module space, it can be between TASK_SIZE and > PAGE_OFFSET-1, default values are > > #define MODULE_END (PAGE_OFFSET) > #define MODULE_START (MODULE_END – 16*1048756) > > The kernel sits at PHYS_OFFSET+0x8000 which is 0x80008000 so > > In arm/arch/Makefile.boot we add > > zreladdr-y := 0x80008000 > > > You need to cross check with your particular machine settings and see > if you are doing it correctly. The above settings are typical but can > be changed to suit your needs. But I wanted to give you a background > on how these are used. If still in doubt you can post your query on > arm-linux mailing list(ofcourse check the archives first if you can > get the information you need) > > -syed > Thanks Syed, This information is very helpful to me. -- ~p~r~a~s~h~a~n~t~ -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ