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;
|
entry->dw1 = spapr->patb_entry;
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
assert(spapr_nested_api(spapr));
|
|
||||||
if (spapr_nested_api(spapr) == NESTED_API_KVM_HV) {
|
if (spapr_nested_api(spapr) == NESTED_API_KVM_HV) {
|
||||||
return spapr_get_pate_nested_hv(spapr, cpu, lpid, entry);
|
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;
|
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
|
#define PRTS_MASK 0x1f
|
||||||
|
|
||||||
static target_ulong h_set_ptbl(PowerPCCPU *cpu,
|
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,
|
static bool spapr_nested_vcpu_check(SpaprMachineStateNestedGuest *guest,
|
||||||
target_ulong vcpuid, bool inoutbuf)
|
target_ulong vcpuid, bool inoutbuf)
|
||||||
{
|
{
|
||||||
@ -1590,6 +1605,12 @@ bool spapr_get_pate_nested_hv(SpaprMachineState *spapr, PowerPCCPU *cpu,
|
|||||||
return false;
|
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)
|
void spapr_register_nested_papr(void)
|
||||||
{
|
{
|
||||||
/* DO NOTHING */
|
/* DO NOTHING */
|
||||||
|
@ -519,4 +519,6 @@ bool spapr_get_pate_nested_hv(SpaprMachineState *spapr, PowerPCCPU *cpu,
|
|||||||
target_ulong lpid, ppc_v3_pate_t *entry);
|
target_ulong lpid, ppc_v3_pate_t *entry);
|
||||||
uint8_t spapr_nested_api(SpaprMachineState *spapr);
|
uint8_t spapr_nested_api(SpaprMachineState *spapr);
|
||||||
void spapr_nested_gsb_init(void);
|
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 */
|
#endif /* HW_SPAPR_NESTED_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user