Messages in this thread | | | Date | Mon, 17 Dec 2012 09:15:52 -0800 | From | "H. Peter Anvin" <> | Subject | Re: [GIT PULL] x86/uapi for 3.8 |
| |
On 12/17/2012 09:03 AM, Jan Beulich wrote: >>>> On 17.12.12 at 17:39, "H. Peter Anvin" <hpa@linux.intel.com> wrote: >> Right, I think you nailed this one. This patch copies PTEs from the >> kernel PTEs and thus they will have the global bit set. It obviously >> makes no sense to *copy* PTEs from the kernel and yet leaving the global >> bit set, which means there are two ways of fixing it: either sharing >> page tables and use the cr4.pge off/on trick that Jan mentioned -- this >> would also be my preference -- and the other is to copy the PTEs but >> strip the global bit, which has the advantage that the actual kernel >> mappings will survive. > > PTE copying is only one half of it. I think additionally L4 entries > get copied for the 1:1 mapping, and you can't strip the global > bits there without allocating separate page tables. >
The point right now is that it *does* allocate separate page tables, but doesn't take advantage of it. What I say is I think we should take the flush for the advantage of sharing page tables. If we are allocating new page tables then we should of course make them non-global.
Do we know how often this gets called? I presume the most common case is when we have an EFI RTC? Unless there is a use case where this happens a lot sharing seems much easier...
-hpa
| |