Re: vmalloc space overlapping

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

 



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

--
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