last 128MB is not used for highmem. last 128MB is used for data structures(page tables etc.) to support highmem . Highmem is not something which is "INSIDE" Kernel's Virtual Address space. Highmem refers to a region of "Physical memory" which can be mapped into kernel's virtual address space through page tables.
Regards,
Venkatram Tummala
On Tue, Apr 6, 2010 at 6:47 PM, Xianghua Xiao <xiaoxianghua@xxxxxxxxx> wrote:
If the last 128MB out of the kernel 1GB space is used to for highmen,
meanwhile it's also used for IO/vmalloc, how does this work?
Xianghua
> --
On Tue, Apr 6, 2010 at 6:32 PM, H. Peter Anvin <hpa@xxxxxxxxx> wrote:
> On 04/06/2010 04:27 PM, Youngwhan Song wrote:
>> Nice explanation, Venkatram,
>>
>> Just one question pop up mind.
>>
>> What if actual physical memory is only 256MB? How does kernel divide
>> virtual memory? Do we need to specify the region to kernel? Or will
>> kernel itself decide it automatically?
>>
>
> If there is less than 896 MB of physical memory, the vmalloc region is
> automatically extended (in your case, it will be 768 MB in size.) There
> will be no HIGHMEM in such a case, and if you are compiling your own
> kernel you will gain considerable speed by disabling HIGHMEM support
> completely.
>
> This, of course, was the norm back when Linux was first created, and a
> typical amount of memory was 8 MB or so. That we'd have gigabytes of
> memory seemed very distant at the time.
>
> -hpa
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>