[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 10/17] PVH xen: introduce vmx_pvh.c and pvh.c
On Wed, 01 May 2013 14:52:27 +0100 "Jan Beulich" <jbeulich@xxxxxxxx> wrote: > >> > +static int vmxit_io_instr(struct cpu_user_regs *regs) > >> > +{ > >> > + int curr_lvl; > >> > + int requested = (regs->rflags >> 12) & 3; > >> > + > >> > + read_vmcs_selectors(regs); > >> > + curr_lvl = regs->cs & 3; > >> > >> Shouldn't you look at SS'es DPL instead? > > > >Ok. It looks like CPL is stored in both CS and SS, so either > >should be ok. But I changed it to ss. > > Your response reads as if you're still looking at the low two bits of > the selector, whereas me using DPL was intended to hint at you > needing to look at the "hidden" portion of the register. Hmm... sorry, still don't understand why I need to use DPL here. Ref'ing the SDM again: Vol1 Basic architecture on IO says: The following instructions can be executed only if the current privilege level (CPL) of the program or task currently executing is less than or equal to the IOPL: IN, INS, OUT, OUTS, CLI .......... It says in Vol 3A in chapter on Protection, that CPL comes from bit 0 and 1 of the CS seg register. Since the RPL relfects the CPL when the program is executing, it seems the above code is correct. Moreover, I don't understand how the desc priv level of stack segement relates to the IO instructions. Here's how the PV check looks btw, in guest_io_okay(): if ( !vm86_mode(regs) && (v->arch.pv_vcpu.iopl >= (guest_kernel_mode(v, regs) ? 1 : 3)) ) what am i missing? thanks mukesh _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |