Message ID | 20231012104951.194876-3-harshpb@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Nested PAPR API (KVM on PowerVM) | expand |
On Thu Oct 12, 2023 at 8:49 PM AEST, Harsh Prateek Bora wrote: > Currently, nested_ptcr is being used by existing nested-hv API to store > nested guest related info. This need to be organised to extend support > for the nested PAPR API which would need to store additional info related > to nested guests in next series of patches. > > Signed-off-by: Michael Neuling <mikey@neuling.org> > Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com> Reviewed-by: Nicholas Piggin <npiggin@gmail.com> > --- > hw/ppc/spapr_nested.c | 8 ++++---- > include/hw/ppc/spapr.h | 3 ++- > include/hw/ppc/spapr_nested.h | 5 +++++ > 3 files changed, 11 insertions(+), 5 deletions(-) > > diff --git a/hw/ppc/spapr_nested.c b/hw/ppc/spapr_nested.c > index 123e127b08..db47c1196f 100644 > --- a/hw/ppc/spapr_nested.c > +++ b/hw/ppc/spapr_nested.c > @@ -15,8 +15,8 @@ bool spapr_get_pate_nested(SpaprMachineState *spapr, PowerPCCPU *cpu, > > assert(lpid != 0); > > - patb = spapr->nested_ptcr & PTCR_PATB; > - pats = spapr->nested_ptcr & PTCR_PATS; > + patb = spapr->nested.ptcr & PTCR_PATB; > + pats = spapr->nested.ptcr & PTCR_PATS; > > /* Check if partition table is properly aligned */ > if (patb & MAKE_64BIT_MASK(0, pats + 12)) { > @@ -54,7 +54,7 @@ static target_ulong h_set_ptbl(PowerPCCPU *cpu, > return H_PARAMETER; > } > > - spapr->nested_ptcr = ptcr; /* Save new partition table */ > + spapr->nested.ptcr = ptcr; /* Save new partition table */ > > return H_SUCCESS; > } > @@ -186,7 +186,7 @@ static target_ulong h_enter_nested(PowerPCCPU *cpu, > struct kvmppc_pt_regs *regs; > hwaddr len; > > - if (spapr->nested_ptcr == 0) { > + if (spapr->nested.ptcr == 0) { > return H_NOT_AVAILABLE; > } > > diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h > index e91791a1a9..3e825f2787 100644 > --- a/include/hw/ppc/spapr.h > +++ b/include/hw/ppc/spapr.h > @@ -12,6 +12,7 @@ > #include "hw/ppc/spapr_xive.h" /* For SpaprXive */ > #include "hw/ppc/xics.h" /* For ICSState */ > #include "hw/ppc/spapr_tpm_proxy.h" > +#include "hw/ppc/spapr_nested.h" /* For SpaprMachineStateNested */ > > struct SpaprVioBus; > struct SpaprPhbState; > @@ -213,7 +214,7 @@ struct SpaprMachineState { > uint32_t vsmt; /* Virtual SMT mode (KVM's "core stride") */ > > /* Nested HV support (TCG only) */ > - uint64_t nested_ptcr; > + SpaprMachineStateNested nested; > > Notifier epow_notifier; > QTAILQ_HEAD(, SpaprEventLogEntry) pending_events; > diff --git a/include/hw/ppc/spapr_nested.h b/include/hw/ppc/spapr_nested.h > index e3d15d6d0b..0722b999cd 100644 > --- a/include/hw/ppc/spapr_nested.h > +++ b/include/hw/ppc/spapr_nested.h > @@ -4,6 +4,10 @@ > #include "qemu/osdep.h" > #include "target/ppc/cpu.h" > > +typedef struct SpaprMachineStateNested { > + uint64_t ptcr; > +} SpaprMachineStateNested; > + > /* > * Register state for entering a nested guest with H_ENTER_NESTED. > * New member must be added at the end. > @@ -98,6 +102,7 @@ struct nested_ppc_state { > > void spapr_register_nested(void); > void spapr_exit_nested(PowerPCCPU *cpu, int excp); > +typedef struct SpaprMachineState SpaprMachineState; > bool spapr_get_pate_nested(SpaprMachineState *spapr, PowerPCCPU *cpu, > target_ulong lpid, ppc_v3_pate_t *entry); > #endif /* HW_SPAPR_NESTED_H */
diff --git a/hw/ppc/spapr_nested.c b/hw/ppc/spapr_nested.c index 123e127b08..db47c1196f 100644 --- a/hw/ppc/spapr_nested.c +++ b/hw/ppc/spapr_nested.c @@ -15,8 +15,8 @@ bool spapr_get_pate_nested(SpaprMachineState *spapr, PowerPCCPU *cpu, assert(lpid != 0); - patb = spapr->nested_ptcr & PTCR_PATB; - pats = spapr->nested_ptcr & PTCR_PATS; + patb = spapr->nested.ptcr & PTCR_PATB; + pats = spapr->nested.ptcr & PTCR_PATS; /* Check if partition table is properly aligned */ if (patb & MAKE_64BIT_MASK(0, pats + 12)) { @@ -54,7 +54,7 @@ static target_ulong h_set_ptbl(PowerPCCPU *cpu, return H_PARAMETER; } - spapr->nested_ptcr = ptcr; /* Save new partition table */ + spapr->nested.ptcr = ptcr; /* Save new partition table */ return H_SUCCESS; } @@ -186,7 +186,7 @@ static target_ulong h_enter_nested(PowerPCCPU *cpu, struct kvmppc_pt_regs *regs; hwaddr len; - if (spapr->nested_ptcr == 0) { + if (spapr->nested.ptcr == 0) { return H_NOT_AVAILABLE; } diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index e91791a1a9..3e825f2787 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -12,6 +12,7 @@ #include "hw/ppc/spapr_xive.h" /* For SpaprXive */ #include "hw/ppc/xics.h" /* For ICSState */ #include "hw/ppc/spapr_tpm_proxy.h" +#include "hw/ppc/spapr_nested.h" /* For SpaprMachineStateNested */ struct SpaprVioBus; struct SpaprPhbState; @@ -213,7 +214,7 @@ struct SpaprMachineState { uint32_t vsmt; /* Virtual SMT mode (KVM's "core stride") */ /* Nested HV support (TCG only) */ - uint64_t nested_ptcr; + SpaprMachineStateNested nested; Notifier epow_notifier; QTAILQ_HEAD(, SpaprEventLogEntry) pending_events; diff --git a/include/hw/ppc/spapr_nested.h b/include/hw/ppc/spapr_nested.h index e3d15d6d0b..0722b999cd 100644 --- a/include/hw/ppc/spapr_nested.h +++ b/include/hw/ppc/spapr_nested.h @@ -4,6 +4,10 @@ #include "qemu/osdep.h" #include "target/ppc/cpu.h" +typedef struct SpaprMachineStateNested { + uint64_t ptcr; +} SpaprMachineStateNested; + /* * Register state for entering a nested guest with H_ENTER_NESTED. * New member must be added at the end. @@ -98,6 +102,7 @@ struct nested_ppc_state { void spapr_register_nested(void); void spapr_exit_nested(PowerPCCPU *cpu, int excp); +typedef struct SpaprMachineState SpaprMachineState; bool spapr_get_pate_nested(SpaprMachineState *spapr, PowerPCCPU *cpu, target_ulong lpid, ppc_v3_pate_t *entry); #endif /* HW_SPAPR_NESTED_H */