Mailing List Archive

Porting xen-arm to an OMAP3 architecture
I am in the process of trying to port the xen-arm build targeted for the Tegra 250 to an OMAP3 architecture. I am running into problems at a couple of places. The first problem I ran into happened while trying to create the xenheap. I was getting the following message:

"Unpredicted predecessor merge : order = 10, page = 0x80000"

I was able to fix this by increasing the registered memory bank size from 0x0400 0000 to 0x1000 0000. Continuing on, I faced another memory problem when constructing domain 0. I get the following error:

"Not enough RAM for domain 0 allocation."

I tried increasing the registered memory bank size even more, but I end up having the problem while initializing the xenheap again, only it happens with an order of 11 instead of 10. It seems that my problem is with the memory mapping/allocation, but I am not entirely sure where everything needs to be and why. Can anyone tell me what I am doing incorrectly with my memory mapping?

Memory setup:

From platform.S

static void omap3_memory_init(void)
{
register_memory_bank(0x80300000, 0x10000000);
}

From start.S

mem_map_table:
MAP_ENTRY(0x80300000, 0x80300000, 1020, PDE_TYPE_HYPERVISOR)
MAP_ENTRY(0xFF000000, MEMMAP_HYPERVISOR_BASE, 16, PDE_TYPE_HYPERVISOR)
MAP_ENTRY(0xE0000000, 0x48000000, 16, PDE_TYPE_IO) /* L4-Core */
MAP_ENTRY(0xE1000000, 0x49000000, 1, PDE_TYPE_IO) /* L4-Per */
MAP_ENTRY(0xE1100000, 0x68000000, 1, PDE_TYPE_IO) /* L3-Control */
MAP_ENTRY(0xE1200000, 0x6C000000, 1, PDE_TYPE_IO) /* L3-SMS */
MAP_ENTRY(0xE1300000, 0x5C000000, 16, PDE_TYPE_IO)
MAP_ENTRY(0,0,0,0)

From memap.h

#define MEMMAP_HYPERVISOR_LIMIT (0xA0000000)
#define MEMMAP_HYPERVISOR_SIZE (0x00B00000)
#define MEMMAP_HYPERVISOR_BASE (0x80300000)

#define MEMMAP_GUEST0_PARTITION_BASE (MEMMAP_HYPERVISOR_BASE + MEMMAP_HYPERVISOR_SIZE)
#define MEMMAP_GUEST0_PARTITION_SIZE (0x10000000)
#define MEMMAP_GUEST0_PARTITION_LIMIT (MEMMAP_GUEST0_PARTITION_BASE + MEMMAP_GUEST0_PARTITION_SIZE)

#define MEMMAP_GUEST0_IMAGE_SIZE (0x0180000)
#define MEMMAP_GUEST0_RAMDISK_SIZE (0x00400000)

#define MEMMAP_GUEST0_IMAGE_BASE (MEMMAP_GUEST0_PARTITION_LIMIT - MEMMAP_GUEST0_IMAGE_SIZE)


OMAP3 Memory Map:

0x0000 0000 - 0x3FFF FFFF Boot space GPMC (Seems unusable)
0x4000 0000 - 0x47FF FFFF On-chip Memory (Seems unusable)
0x4800 0000 - 0x6FFF FFFF Various peripherals, registers, and configurations
0x7000 0000 - 0x7FFF FFFF Virtual Address space 0
0x8000 0000 - 0xBFFF FFFF SDRAM
0xE000 0000 - 0xFFFF FFFF Virtual Address space 1


Thanks,
Robbie VanVossen