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

From: H. Peter Anvin
Date: Tue Apr 06 2010 - 16:14:00 EST

On 04/06/2010 01:01 PM, Joel Fernandes wrote:
> Hi Peter,
> On Wed, Apr 7, 2010 at 1:14 AM, H. Peter Anvin <hpa@xxxxxxxxx> wrote:
>> On 04/06/2010 12:20 PM, Frank Hu wrote:
>>>> The ELF ABI specifies that user space has 3 GB available to it. That
>>>> leaves 1 GB for the kernel. The kernel, by default, uses 128 MB for I/O
>>>> mapping, vmalloc, and kmap support, which leaves 896 MB for LOWMEM.
>>>> All of these boundaries are configurable; with PAE enabled the user
>>>> space boundary has to be on a 1 GB boundary.
>>> the VM split is also configurable when building the kernel (for 32-bit
>>> processors).
>> I did say "all these boundaries are configurable". Rather explicitly.
> I thought the 896 MB was a hardware limitation on 32 bit architectures
> and something that cannot be configured? Or am I missing something
> here? Also the vm-splits refer to "virtual memory" . While ZONE_* and
> the 896MB we were discussing refers to "physical memory". How then is
> discussing about vm splits pertinent here?

It's not a hardware limitation. Rather, it has to do with how the 4 GB
of virtual address space is carved up. LOWMEM specifically refers to
the amount of memory which is permanently mapped into the virtual
address space, whereas HIGHMEM is mapped in and out on demand -- a
fairly expensive operation.

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