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

Re: [Xen-devel] [PATCH] [VT] add BT instruction support to VMX MMIO decoder

This seems a little questionable:

- in handle_mmio()'s INSTR_BT case value should be signed, not unsigned
(see definition of BitOffset in IA32 SDM Vol 2a Section 3.1)
- in the same place, you implicitly assume that va and gpa are
congruent over a range 2**29/2**61 bytes, which is likely wrong,
especially for mmio regions (while one could argue that there shouldn't
be accesses with a base address pointing into one mmio region, but the
effective address with the shifted bit offset included pointing into a
different on, I believe the hypervisor should actually verify this and
either handle it properly or fail the request)
- the alignment (and thus implicit range) limitations of real hardware
aren't followed (for e.g. a 32-bit operation, hardware confines the
access to the aligned 32-bit quantity addressed by EA+4*(BitOffset/32));
to match that you should either pass 1 instead of mmio_inst.op_size to
send_mmio_req, or you should calculate the offset from gpa depending on
the operand size (which is probably the better solution, although I
don't know which of the two possible mechanisms real hardware uses)


>>> "Li, Xin B" <xin.b.li@xxxxxxxxx> 15.10.05 08:14:03 >>>
add BT instruction support to VMX MMIO decoder.
Also extends TEST and OR instructions support for 16/32 bit
these are needed for windows.

Signed-off-by: Xin Li <xin.b.li@xxxxxxxxx>
Signed-off-by: Chengyuan Li <chengyuan.li@xxxxxxxxx>
Signed-off-by: Nakajima Jun <nakajima.jun@xxxxxxxxx>

Xen-devel mailing list



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