On Mon, 2024-11-25 at 10:31 -0800, Dave Hansen wrote: > On 11/25/24 09:05, David Woodhouse wrote: > > Not sure I like this very much, but it works, and mirrors what > > arch/x86/boot/compressed/ident_map_64.c already does. > > I don't like it much, either. > > arch/x86/boot/compressed/ is already on the road to sharing no code with > the core kernel and it's full of horrors. It should be an example of > what *not* to do. ;) > > I think we have a lot of software-available space in the page table > pointer entries. What would folks think if we set a special bit in those > p4d entries that said: > > "I don't need to be propagated to > the user portion of the page tables." > > It would obviously get set in this code that you're trying to fix. It > might _also_ be able to be set in in "_USR", like here: > > #define _KERNPG_TABLE_NOENC (__PP|__RW| 0|___A| 0|___D| 0| 0) > #define _PAGE_TABLE_NOENC (__PP|__RW|_USR|___A| 0|___D| 0| 0) > > like: > > #define _USR _PAGE_USER|_PAGE_SW_WHATEVER In fact, do we even need a separate bit? Any PTE without the _PAGE_USER bit set clearly doesn't need to be mirrored into the user page tables...?
<<attachment: smime.p7s>>