On Thu, Oct 07, 2010 at 02:29:07PM +0200, Avi Kivity wrote: > On 10/04/2010 05:56 PM, Gleb Natapov wrote: > >When page is swapped in it is mapped into guest memory only after guest > >tries to access it again and generate another fault. To save this fault > >we can map it immediately since we know that guest is going to access > >the page. Do it only when tdp is enabled for now. Shadow paging case is > >more complicated. CR[034] and EFER registers should be switched before > >doing mapping and then switched back. > > With non-pv apf, I don't think we can do shadow paging. The guest Yes, with non-pv this trick will not work without tdp. I haven't even considered it for that case. > isn't aware of the apf, so as far as it is concerned it is allowed > to kill the process and replace it with something else: > > guest process x: apf > kvm: timer intr > guest kernel: context switch > very fast guest admin: pkill -9 x > guest kernel: destroy x's cr3 > guest kernel: reuse x's cr3 for new process y > kvm: retry fault, instantiating x's page in y's page table > > Even with tdp, we have the same case for nnpt (just > s/kernel/hypervisor/ and s/process/guest/). What we really need is > to only instantiate the page for direct maps, which are independent > of the guest. > > Could be done like this: > > - at apf time, walk shadow mmu > - if !sp->role.direct, abort > - take reference to sp > - on apf completion, instantiate spte in sp > > -- > I have a truly marvellous patch that fixes the bug which this > signature is too narrow to contain. -- Gleb. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>