• S
    KVM: PPC: Book3S HV: Allow passthrough of an emulated device to an L2 guest · 873db2cd
    Suraj Jitindar Singh 提交于
    Allow for a device which is being emulated at L0 (the host) for an L1
    guest to be passed through to a nested (L2) guest.
    
    The existing kvmppc_hv_emulate_mmio function can be used here. The main
    challenge is that for a load the result must be stored into the L2 gpr,
    not an L1 gpr as would normally be the case after going out to qemu to
    complete the operation. This presents a challenge as at this point the
    L2 gpr state has been written back into L1 memory.
    
    To work around this we store the address in L1 memory of the L2 gpr
    where the result of the load is to be stored and use the new io_gpr
    value KVM_MMIO_REG_NESTED_GPR to indicate that this is a nested load for
    which completion must be done when returning back into the kernel. Then
    in kvmppc_complete_mmio_load() the resultant value is written into L1
    memory at the location of the indicated L2 gpr.
    
    Note that we don't currently let an L1 guest emulate a device for an L2
    guest which is then passed through to an L3 guest.
    Signed-off-by: NSuraj Jitindar Singh <sjitindarsingh@gmail.com>
    Signed-off-by: NPaul Mackerras <paulus@ozlabs.org>
    873db2cd
book3s_hv_nested.c 33.4 KB