Re: [PATCH 03/11] KVM: x86: fast emulate repeat string write instructions

Avi Kivity
2011-07-26T13:53:48Z

On 07/26/2011 03:27 PM, Gleb Natapov wrote:
> On Tue, Jul 26, 2011 at 07:26:46PM +0800, Xiao Guangrong wrote:
> > We usually use repeat string instructions to clear the page, for example,
> By "we" do you mean Linux guest?
>
> > we call memset to clear a page table, stosb is used in this function, and
> > repeated for 1024 times, that means we should occupy mmu lock for 1024 times
> > and walking shadow page cache for 1024 times, it is terrible
> >
> > In fact, if it is the repeat string instructions emulated and it is not a
> > IO/MMIO access, we can zap all the corresponding shadow pages and return to the
> > guest, then the mapping can became writable and directly write the page
> >
> So this patch does two independent things as far as I can see. First it
> stops reentering guest if rep instruction is done on memory and second
> it drops shadow pages if access to shadowed page table is rep. Why not
> separate those in different patches? BTW not entering guest periodically
> increases interrupt latencies. Why not zap shadow, make page writable
> and reenter the guest instead of emulation, it should be much faster (do we
> care to optimize for old cpus by complicating the code anyway?).
>

The second thing is mentioned on the TODO list in a more general way:
tag instructions that are typically used to modify the page tables, and
drop shadow if any other instruction is used. Since MOVS is typically
not used to update pagetables, it would not be tagged.

The list would include, I'd guess, and, or, bts, btc, mov, xchg,
cmpxchg, and cmpxchg8b. Anything else?

--
error compiling committee.c: too many arguments to function