• D
    ppc: Clean up and QOMify hypercall emulation · 1d1be34d
    David Gibson 提交于
    The pseries machine type is a bit unusual in that it runs a paravirtualized
    guest.  The guest expects to interact with a hypervisor, and qemu
    emulates the functions of that hypervisor directly, rather than executing
    hypervisor code within the emulated system.
    
    To implement this in TCG, we need to intercept hypercall instructions and
    direct them to the machine's hypercall handlers, rather than attempting to
    perform a privilege change within TCG.  This is controlled by a global
    hook - cpu_ppc_hypercall.
    
    This cleanup makes the handling a little cleaner and more extensible than
    a single global variable.  Instead, each CPU to have hypercalls intercepted
    has a pointer set to a QOM object implementing a new virtual hypervisor
    interface.  A method in that interface is called by TCG when it sees a
    hypercall instruction.  It's possible we may want to add other methods in
    future.
    Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
    Reviewed-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
    1d1be34d
spapr.c 96.4 KB