[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] xen: handle paged gfn in wrmsr_hypervisor_regs
On 03/05/2013 14:58, "Jan Beulich" <JBeulich@xxxxxxxx> wrote: >>>> On 03.05.13 at 14:57, Olaf Hering <olaf@xxxxxxxxx> wrote: >> @@ -1682,14 +1682,25 @@ static int svm_msr_write_intercept(unsig >> if ( wrmsr_viridian_regs(msr, msr_content) ) >> break; >> >> - wrmsr_hypervisor_regs(msr, msr_content); >> + ret = wrmsr_hypervisor_regs(msr, msr_content); >> + switch ( ret ) >> + { >> + case -EAGAIN: >> + result = X86EMUL_RETRY; >> + break; >> + case 0: >> + result = X86EMUL_UNHANDLEABLE; >> + break; >> + default: >> + break; > > As you had already noticed the hard way - case 0 and default of > course need to be switched (0 -> okay, anything else -> > unhandleable). No! Actually anything other than -EAGAIN should be handled here as 'okay'. In fact the return codes from wrmsr_hypervisor_regs are going to be a bit of a mess if we're not careful. I suggest the following return codes: 0: not handled 1: handled -EINVAL: error during handling -EAGAIN: retry The HVM callers should then handle as follows: -EAGAIN: rc = X86EMUL_RETRY -EINVAL: goto gp_fault 0: try other msr handlers (if any) 1: we're done, return X86EMUL_OKAY Does that make sense? -- Keir > Jan > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |