Thread (67 messages) 67 messages, 8 authors, 2021-05-11

Re: [PATCH Part2 RFC v2 08/37] x86/sev: Split the physmap when adding the page in RMP table

From: Peter Zijlstra <peterz@infradead.org>
Date: 2021-05-03 15:07:39
Also in: lkml

On Fri, Apr 30, 2021 at 07:37:53AM -0500, Brijesh Singh wrote:
This poses a challenge in the Linux memory model. The Linux kernel
creates a direct mapping of all the physical memory -- referred to as
the physmap. The physmap may contain a valid mapping of guest owned pages.
During the page table walk, the host access may get into the situation where
one of the pages within the large page is owned by the guest (i.e assigned
bit is set in RMP). A write to a non-guest within the large page will
raise an RMP violation. To workaround it, call set_memory_4k() to split
the physmap before adding the page in the RMP table. This ensures that the
pages added in the RMP table are used as 4K in the physmap.
What's an RMP violation and why are they a problem?
The spliting of the physmap is a temporary solution until the kernel page
fault handler is improved to split the kernel address on demand.
How is that an improvement? Fracturing the physmap sucks whichever way
around.
One of the
disadvtange of splitting is that eventually, it will end up breaking down
the entire physmap unless its coalesce back to a large page. I am open to
the suggestation on various approaches we could take to address this problem.
Have the hardware fracture the TLB entry internally?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help