On Tue Feb 20, 2024 at 6:36 PM AEST, Harsh Prateek Bora wrote: > Nested PAPR API provides a standard Guest State Buffer (GSB) format > with unique IDs for each guest state element for which get/set state is > supported by the API. Some of the elements are read-only and/or guest-wide. > Introducing helper routines for state exchange of each of the nested guest > state elements for which get/set state should be supported by the API. >
This is doing more than just adding helper routines for the GSB access. [snip] > + > typedef struct SpaprMachineStateNested { > uint64_t ptcr; > uint8_t api; > @@ -16,6 +201,8 @@ typedef struct SpaprMachineStateNested { > typedef struct SpaprMachineStateNestedGuest { > uint32_t pvr_logical; > unsigned long vcpus; > + uint64_t parttbl[2]; > + uint64_t tb_offset; > struct SpaprMachineStateNestedGuestVcpu *vcpu; > } SpaprMachineStateNestedGuest; > [snip] > > /* > * Register state for entering a nested guest with H_ENTER_NESTED. > @@ -172,17 +452,40 @@ struct nested_ppc_state { > uint64_t sier; > uint32_t vscr; > uint64_t fpscr; > + int64_t dec_expiry_tb; > +}; > + > +struct SpaprMachineStateNestedGuestVcpuRunBuf { > + uint64_t addr; > + uint64_t size; > }; > > typedef struct SpaprMachineStateNestedGuestVcpu { > bool enabled; > struct nested_ppc_state state; > + struct SpaprMachineStateNestedGuestVcpuRunBuf runbufin; > + struct SpaprMachineStateNestedGuestVcpuRunBuf runbufout; > + int64_t tb_offset; > + uint64_t hdecr_expiry_tb; > } SpaprMachineStateNestedGuestVcpu; It's adding new fields in existing nested guest state structures. This should be explained a bit more, split into another patch, or moved to patches where they get used. Thanks, Nick