Hello,
I had several questions about the zoned page frame allocator and fix mapped virtual addresses from my reading of the book "Understanding the Linux Kernel". I posted this on the kernelnewbies list, but haven't received any response yet. Hoping for someone on this list to help me out.
- It is possible for a page to be in ZONE_NORMAL and yet have it's PG_reserved flag cleared. Is this correct ?
- The function "fix_to_virt" for fix-mapped linear addresses does the following:
return (0xfffff000UL - (idx << PAGE_SHIFT));
Why are the upper 4096 bytes not used, and the addressing starts from the top of the virtual address space - 4096 ? - The book says "each fix-mapped linear address maps one page frame of the physical memory". Shouldn't it be "maps one physical location of memory" rather than one page frame ?
- My understanding is that the kernel page table entries for addresses > 896 MB would be empty and those addresses would be mapped using separate data structures used for temporary and permanent kernel mappings and non-contiguous page frame allocation. Is this wrong ?
Thanks,
Sunny