• S
    target/ppc: Add patb_entry to sPAPRMachineState · 9861bb3e
    Suraj Jitindar Singh 提交于
    ISA v3.00 adds the idea of a partition table which is used to store the
    address translation details for all partitions on the system. The partition
    table consists of double word entries indexed by partition id where the second
    double word contains the location of the process table in guest memory. The
    process table is registered by the guest via a h-call.
    
    We need somewhere to store the address of the process table so we add an entry
    to the sPAPRMachineState struct called patb_entry to represent the second
    doubleword of a single partition table entry corresponding to the current
    guest. We need to store this value so we know if the guest is using radix or
    hash translation and the location of the corresponding process table in guest
    memory. Since we only have a single guest per qemu instance, we only need one
    entry.
    
    Since the partition table is technically a hypervisor resource we require that
    access to it is abstracted by the virtual hypervisor through the get_patbe()
    call. Currently the value of the entry is never set (and thus
    defaults to 0 indicating hash), but it will be required to both implement
    POWER9 kvm support and tcg radix support.
    
    We also add this field to be migrated as part of the sPAPRMachineState as we
    will need it on the receiving side as the guest will never tell us this
    information again and we need it to perform translation.
    Signed-off-by: NSuraj Jitindar Singh <sjitindarsingh@gmail.com>
    Reviewed-by: NDavid Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
    9861bb3e
spapr.h 25.8 KB