Re: why choose 896MB to the start point of ZONE_HIGHMEM

From: Joel Fernandes
Date: Tue Apr 06 2010 - 11:02:48 EST

Hi Hayfeng,

On Tue, Apr 6, 2010 at 8:07 PM, hayfeng Lee <teklife.kernel@xxxxxxxxx> wrote:
> hello,every one.
> I have a question:
> Why does linux choose 896MB to do a start point of ZONE_HIGHMEM and
> the end point of ZONE_NORMAL. Just for experience?
> What is the advantages?

This is not an advantage but a limitation of 32 bit processor and
architecture. Only physical memory in first 896MB is directly mapped
to the kernel virtual memory address space. This is called
ZONE_NORMAL. To access any physical memory in ZONE_HIGHMEM, the kernel
has to set up page table entries to indirectly map the physical memory
into a virtual memory address (I think around 128MB or so worth page
table entries are reused for this purpose). On the other hand, on 64
bit architectures, the entire physical memory is directly mapped and
accessible to the kernel. ZONE_HIGHMEM doesn't exist on 64 bit.

Take the above with a grain of salt, someone with a better knowledge
about this intrusive topic can be give a more detailed explanation :)

Hope this helps, thanks,
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at