Commit 4cf23fd5 authored by Catalin Marinas's avatar Catalin Marinas

Flush the TLB after creating the initial memory mappings

bootmem_init_node() creates new mappings that override the initial sections
set up by __create_page_tables. With the addition of the supersections
support, two mappings can exist in the TLB for the same virtual address
(the original section and the newly created supersection). This is
considered undefined behaviour. The patch flushes the TLB after creating
the memory mappings for each node.
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 6769504b
...@@ -270,6 +270,12 @@ bootmem_init_node(int node, int initrd_node, struct meminfo *mi) ...@@ -270,6 +270,12 @@ bootmem_init_node(int node, int initrd_node, struct meminfo *mi)
create_mapping(&map); create_mapping(&map);
} }
/*
* Since the new mappings override the initial sections,
* flushing the whole TLB is needed
*/
flush_tlb_all();
/* /*
* If there is no memory in this node, ignore it. * If there is no memory in this node, ignore it.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment