Re: vmalloc space overlapping

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

 



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



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux