On Tue May 28, 2024 at 5:52 PM AEST, Cédric Le Goater wrote: > On 5/28/24 08:28, Harsh Prateek Bora wrote: > > > > > > On 5/26/24 17:56, Nicholas Piggin wrote: > >> The timebase state machine is per per-core state and can be driven > >> by any thread in the core. It is currently implemented as a hack > >> where the state is in a CPU structure and only thread 0's state is > >> accessed by the chiptod, which limits programming the timebase > >> side of the state machine to thread 0 of a core. > >> > >> Move the state out into PnvCore and share it among all threads. > >> > >> Signed-off-by: Nicholas Piggin <npig...@gmail.com> > >> --- > >> include/hw/ppc/pnv_core.h | 17 ++++++++++++ > >> target/ppc/cpu.h | 20 -------------- > >> hw/ppc/pnv_chiptod.c | 6 ++-- > >> target/ppc/timebase_helper.c | 53 ++++++++++++++++++++---------------- > >> 4 files changed, 49 insertions(+), 47 deletions(-) > >> > >> diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h > >> index 30c1e5b1a3..f434c71547 100644 > >> --- a/include/hw/ppc/pnv_core.h > >> +++ b/include/hw/ppc/pnv_core.h > >> @@ -25,6 +25,20 @@ > >> #include "hw/ppc/pnv.h" > >> #include "qom/object.h" > >> +/* ChipTOD and TimeBase State Machine */ > >> +struct pnv_tod_tbst { > >> + int tb_ready_for_tod; /* core TB ready to receive TOD from chiptod */ > >> + int tod_sent_to_tb; /* chiptod sent TOD to the core TB */ > >> + > >> + /* > >> + * "Timers" for async TBST events are simulated by mfTFAC because TFAC > >> + * is polled for such events. These are just used to ensure firmware > >> + * performs the polling at least a few times. > >> + */ > >> + int tb_state_timer; > >> + int tb_sync_pulse_timer; > >> +}; > >> + > >> #define TYPE_PNV_CORE "powernv-cpu-core" > >> OBJECT_DECLARE_TYPE(PnvCore, PnvCoreClass, > >> PNV_CORE) > >> @@ -38,6 +52,9 @@ struct PnvCore { > >> uint32_t pir; > >> uint32_t hwid; > >> uint64_t hrmor; > >> + > >> + struct pnv_tod_tbst pnv_tod_tbst; > >> + > > > > Now that it is part of struct PnvCore itself, we can drop pnv_ prefix > > and just call the member variable as tod_tbst ? > > yes and rename pnv_tod_tbst using CamelCase please.
Okay will do. That'll look nicer. Thanks, Nick