[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] (v)MCE# injection



I'm having the impression that this is significantly flawed at the moment,
and due to the number of issues I don't feel comfortable to submit a
patch without clarification on at least some of the aspects:

1) The outermost conditional in do_iret() compares against
VCPU_TRAP_NMI, which I would assume is a copy-and-paste mistake
and should really be VCPU_TRAP_MCE.

2) While c/s 19422 handled Dom0 only (and introduced some hardcoded
references to dom0), c/s 19871 relaxed the check to permit any domain,
but apparently failed to clean up the dom0 references.

3) I don't think the trap priority adjustment works properly at all, as
there's only provision for a single level of nesting (due to the old value
being stored in the vcpu structure), but the entry.S code would happily
nest an MCE inside an NMI. I think these rather need to be - just like in
physical CPUs - individual flags that tell whether an exception of that
kind is currently being processed. And I don't think either should mask
the other, the flags should just be used to prevent nested injection of
the same type of exception (but there needs to be a way to tell which
of the two was injected first, so the iret can clear the right flag).

4) The code in do_iret() doesn't seem to be 64-bit specific at all, i.e. I'd
think this should really be a common subroutine called from all three
do_iret() handlers (perhaps even including the trap priority and affinity
handling).

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.