I have noticed that linux places mem_map at virtual address 0xc1000000. At it reserves the first 16MB for zone DMA. I have two questions -
1. Linux kernel loads at 1MB. So if mem_map is places at 16MB, does it mean linux kernel can never be greater than 16 MB?
2. 0 - 16 MB is used for ZONE_DMA. But if the kernel is loaded at address 1 MB, how can we use 0 -16 MB for DMA. Doesn't it overlaps with kernel?