spapr: nested: Use correct source for parttbl info for nested PAPR API.
For nested PAPR API, we use SpaprMachineStateNestedGuest struct to store partition table info, use the same in spapr_get_pate_nested() via helper. Reviewed-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
64c43909b2
commit
98823ce03a
@ -1421,11 +1421,13 @@ static bool spapr_get_pate(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu,
|
||||
entry->dw1 = spapr->patb_entry;
|
||||
return true;
|
||||
} else {
|
||||
assert(spapr_nested_api(spapr));
|
||||
if (spapr_nested_api(spapr) == NESTED_API_KVM_HV) {
|
||||
return spapr_get_pate_nested_hv(spapr, cpu, lpid, entry);
|
||||
} else if (spapr_nested_api(spapr) == NESTED_API_PAPR) {
|
||||
return spapr_get_pate_nested_papr(spapr, cpu, lpid, entry);
|
||||
} else {
|
||||
g_assert_not_reached();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,6 +58,31 @@ bool spapr_get_pate_nested_hv(SpaprMachineState *spapr, PowerPCCPU *cpu,
|
||||
return true;
|
||||
}
|
||||
|
||||
static
|
||||
SpaprMachineStateNestedGuest *spapr_get_nested_guest(SpaprMachineState *spapr,
|
||||
target_ulong guestid)
|
||||
{
|
||||
SpaprMachineStateNestedGuest *guest;
|
||||
|
||||
guest = g_hash_table_lookup(spapr->nested.guests, GINT_TO_POINTER(guestid));
|
||||
return guest;
|
||||
}
|
||||
|
||||
bool spapr_get_pate_nested_papr(SpaprMachineState *spapr, PowerPCCPU *cpu,
|
||||
target_ulong lpid, ppc_v3_pate_t *entry)
|
||||
{
|
||||
SpaprMachineStateNestedGuest *guest;
|
||||
assert(lpid != 0);
|
||||
guest = spapr_get_nested_guest(spapr, lpid);
|
||||
if (!guest) {
|
||||
return false;
|
||||
}
|
||||
|
||||
entry->dw0 = guest->parttbl[0];
|
||||
entry->dw1 = guest->parttbl[1];
|
||||
return true;
|
||||
}
|
||||
|
||||
#define PRTS_MASK 0x1f
|
||||
|
||||
static target_ulong h_set_ptbl(PowerPCCPU *cpu,
|
||||
@ -540,16 +565,6 @@ void spapr_exit_nested(PowerPCCPU *cpu, int excp)
|
||||
}
|
||||
}
|
||||
|
||||
static
|
||||
SpaprMachineStateNestedGuest *spapr_get_nested_guest(SpaprMachineState *spapr,
|
||||
target_ulong guestid)
|
||||
{
|
||||
SpaprMachineStateNestedGuest *guest;
|
||||
|
||||
guest = g_hash_table_lookup(spapr->nested.guests, GINT_TO_POINTER(guestid));
|
||||
return guest;
|
||||
}
|
||||
|
||||
static bool spapr_nested_vcpu_check(SpaprMachineStateNestedGuest *guest,
|
||||
target_ulong vcpuid, bool inoutbuf)
|
||||
{
|
||||
@ -1590,6 +1605,12 @@ bool spapr_get_pate_nested_hv(SpaprMachineState *spapr, PowerPCCPU *cpu,
|
||||
return false;
|
||||
}
|
||||
|
||||
bool spapr_get_pate_nested_papr(SpaprMachineState *spapr, PowerPCCPU *cpu,
|
||||
target_ulong lpid, ppc_v3_pate_t *entry)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void spapr_register_nested_papr(void)
|
||||
{
|
||||
/* DO NOTHING */
|
||||
|
@ -519,4 +519,6 @@ bool spapr_get_pate_nested_hv(SpaprMachineState *spapr, PowerPCCPU *cpu,
|
||||
target_ulong lpid, ppc_v3_pate_t *entry);
|
||||
uint8_t spapr_nested_api(SpaprMachineState *spapr);
|
||||
void spapr_nested_gsb_init(void);
|
||||
bool spapr_get_pate_nested_papr(SpaprMachineState *spapr, PowerPCCPU *cpu,
|
||||
target_ulong lpid, ppc_v3_pate_t *entry);
|
||||
#endif /* HW_SPAPR_NESTED_H */
|
||||
|
Loading…
Reference in New Issue
Block a user