On 19.07.14 12:14, Paul Mackerras wrote:
At present, kvmppc_handle_load and kvmppc_handle_store only handle
emulated MMIO loads and stores. This extends them to be able to handle
loads and stores to guest memory as well. This is so that
kvmppc_emulate_instruction can be used to emulate loads and stores
in cases other than when an attempt to execute the instruction by the
CPU has resulted in an interrupt.
To avoid having to look up the translation for the effective address
again in kvmppc_handle_load/store when the caller of kvmppc_emulate_mmio
has already done it, we arrange to pass down the translation in a new
struct kvmppc_translated_address, which is a new argument to
kvmppc_emulate_mmio() and kvmppc_emulate_instruction(). This also
enables us to check that the guest hasn't replaced a load with a store
instruction.
This also makes the register updates for the paired-single FPU registers
match for emulated MMIO accesses what is done for accesses to normal
memory.
The new code for accessing normal guest memory uses kvmppc_ld and kvmppc_st,
which call kvmppc_xlate, which is only defined for Book 3S. For Book E,
kvmppc_handle_load/store still only work for emulated MMIO.
Signed-off-by: Paul Mackerras <pau...@samba.org>
Please check out my other patch set where I made kvmppc_ld/st available
for BookE and also split the MMIO path off completely. Since we do want
to take the shortcut through paddr that we only know for memory traps, I
really think we're better off treating that whole optimized code path as
a separate piece.
Alex
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html