Messages in this thread | | | Date | Fri, 13 Dec 2019 22:54:48 +0800 | From | Baoquan He <> | Subject | Re: [PATCH v5 4/4] x86/mm/KASLR: Adjust the padding size for the direct mapping. |
| |
On 12/13/19 at 03:15pm, Borislav Petkov wrote: > On Fri, Dec 13, 2019 at 09:28:50PM +0800, Baoquan He wrote: > > In Documentation/x86/x86_64/mm.rst, the physical memory regions mapping > > with page_offset is called as the direct mapping of physical memory. > > The fact that it happens to compute the *first* region's size, which > *happens* to be the direct mapping of all physical memory is immaterial > here. > > It is actually causing more confusion in an already complex piece of > code. You can call this function just as well > > calc_region_size() > > which won't confuse readers. Because all you care about here is the > region's size - not which region it is.
Won't calc_region_size be too generic? We also have vmalloc and vmemmap, and here we are specifically calculating the direct mapping of physical memory.
> > > kernel_randomize_memory() is invoked much earlier than > > acpi_table_parse_srat(). > > And? What are we going to do about that?
void __init setup_arch(char **cmdline_p) { ... kernel_randomize_memory(); ... init_mem_mapping(); ... initmem_init(); ... }
In kernel_randomize_memory(), KASLR builds the layout of these regions, including their starting address and the gap between them. Once finished, __PAGE_OFFSET, VMALLOC_START, VMEMMAP_START are settled. If not knowing the max address to cover all the possible hotplugged memory, later memory hotplug will fail.
Thanks Baoquan
| |