[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC V2 1/6] xen: Emulate with no writes
On 07/11/2014 07:23 PM, Andrew Cooper wrote: > On 11/07/14 16:43, Razvan Cojocaru wrote: >> +void hvm_emulate_one_full(bool_t nowrite, >> + unsigned int unhandleable_trapnr, >> + int unhandleable_errcode) >> +{ >> + struct hvm_emulate_ctxt ctx[1] = {}; > > This construct looks suspect. What is wrong with > > struct hvm_emulate_ctxt ctx = { 0 }; and using &ctx below ? Nothing, will replace it. >> + int rc = X86EMUL_RETRY; >> + >> + hvm_emulate_prepare(ctx, guest_cpu_user_regs()); >> + >> + while ( rc == X86EMUL_RETRY ) >> + { >> + if ( nowrite ) >> + rc = hvm_emulate_one_no_write(ctx); >> + else >> + rc = hvm_emulate_one(ctx); >> + } > > This however is not appropriate. X86EMUL_RETRY can include "talk to > dom0 and get the paging subsystem to page in part of the VM", which > given some current work-in-progress can be to the other end of a network > connection on the far side of an optimistic migration. > > You can't cause a Xen pcpu to spin like this for that length of time. > Anything longer than a second and all other pcpus will block against the > time calibration rendezvous, and longer than 5 will panic on the NMI > watchdog. I see. Would you be able to recommend a safer way of handling X86EMUL_RETRY here? Basically what I'm trying to achieve is simply making sure that the instruction either ran or was impossible to run when hvm_emulate_one_full() returns. I guess I should run hvm_emulate_one() / hvm_emulate_one_no_write() once and just return on X86EMUL_RETRY? Thanks, Razvan Cojocaru _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |