> PS did you ever have a look at my real patch ?
> Haven't got any feedback yet...
Sorry, I'm a bit short of time at the moment due to upcoming exams ...
Anyway, I'm not sure I completely understand your flag manipulations:
- Why are you differentiating between flags that have a fixed 'real'
value and those that have a non-fixed 'real' value, but which still
differs from the guest value?
Wouldn't it be simpler to just have two sorts of flags, those where
'real' value is always identical to guest value, and those where
'real' value is determined by the monitor (whether it be constant
or not)?
- What's the point of fiddling around with VIF/VIP any more?
I mean, the monitor interrupt handling mechanism is not really
the same as the PVI stuff, although it works somewhat similarly.
To avoid confusion (especially if we might want to support guests
that use PVI themselves at a later time), it might be simpler to
just use (guest_eflags & FLG_IF) as interrupt flag, and some new
nexus member as 'interrupt pending' flag ...
In any case, copying the monitor's VIF/VIP values into the 'real'
eflags would appear wrong, as the neither the guest nor the
processor should be aware of them.
[ I'm wondering whether you think that the processor should indeed
be aware of the VIF/VIP flags, so that we would be able to use the
real PVI mode ... But I don't believe this can work, because we
will need to emulate the proper GPF if sti/cli are called in guest
ring-3 mode and the guest thinks PVI is off. ]
- Do we really need a 'mon_eflags' member?
I'm not sure that it might not be simpler to determine the settings
of those flags where 'real' and guest values differ on-the-fly.
But this is probably a matter of taste ...
- I don't understand this:
+#define FLG_ASYN_MON_MASK (FLG_TF | FLG_VIF | FLG_VIP)
+#define FLG_ASYN_GST_MASK (FLG_TF)
+ dst |= mon & FLG_ASYN_MON_MASK; \
+ dst |= gst & FLG_ASYN_GST_MASK; \
Is the intention really to 'or' the TF values of mon_eflags and
guest_eflags together? Why?
Bye,
Ulrich
--
Ulrich Weigand,
IMMD 1, Universitaet Erlangen-Nuernberg,
Martensstr. 3, D-91058 Erlangen, Phone: +49 9131 85-27688