|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [V10 PATCH 12/23] PVH xen: Support privileged op emulation for PVH
>>> On 09.08.13 at 03:32, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote:
> On Thu, 8 Aug 2013 15:18:56 +0100
> George Dunlap <George.Dunlap@xxxxxxxxxxxxx> wrote:
>> The problem I have is that you still pass in *both* the value of
>> regs->$SEGMENT_REGISTER, *and* an enum of a segment register, and use
>> one in one case, and another in a different case. That's just a
>> really ugly interface.
>>
>> What I'd like to see is for read_descriptor_sel() to *just* take
>> which_sel (perhaps renamed sreg or something, since it's referring to
>> a segment register), and in the PV case, read the appropriate segment
>> register, then calling read_descriptor(). Then you don't have this
>> crazy thing where you set two variables (sel and which_cs) all over
>> the place.
>
>
> Hmm... lemme make sure I understand precisely, what you mean is
> something like:
>
> static int read_descriptor_sel(enum x86_segment which_sel,
> struct vcpu *v,
> const struct cpu_user_regs *regs,
> unsigned long *base,
> unsigned long *limit,
> unsigned int *ar,
> unsigned int vm86attr)
>
> {
> uint sel;
> if (!pvh)
> {
> sel = read_pv_segreg(which_sel)
> return read_descriptor(sel, v, regs, base, limit, ar, vm86attr);
> }
> }
>
> where read_pv_segreg() has one long case statment:
> case x86_seg_cs
> return read_segment_register(v, regs, cs);
> case x86_seg_cs
> return read_segment_register(v, regs, ds);
> .....
>
>
> Then emulate_privileged_op() will not be setting data_sel, but
> only which_sel, except for one place:
>
> ....
> if ( lm_ovr == lm_seg_none || data_sel < 4 )
> {
> switch ( lm_ovr )
> {
> case lm_seg_none:
> ...
>
> That sounds like a good change to me. Jan, you OK with this?
It's worse performance wise, but better maintenance wise, so I
guess I don't really object (but also am not too happy with it).
And of course your use of read_segment_register(v, regs, cs)
above is all but correct - CS and SS need to be read from regs.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |