Borislav Petkov
2021-Mar-09 18:57 UTC
[PATCH v6 02/12] x86/paravirt: switch time pvops functions to use static_call()
On Tue, Mar 09, 2021 at 02:48:03PM +0100, Juergen Gross wrote:> @@ -167,6 +168,17 @@ static u64 native_steal_clock(int cpu) > return 0; > } > > +DEFINE_STATIC_CALL(pv_steal_clock, native_steal_clock); > +DEFINE_STATIC_CALL(pv_sched_clock, native_sched_clock); > + > +bool paravirt_using_native_sched_clock = true; > + > +void paravirt_set_sched_clock(u64 (*func)(void)) > +{ > + static_call_update(pv_sched_clock, func); > + paravirt_using_native_sched_clock = (func == native_sched_clock); > +}What's the point of this function if there's a global paravirt_using_native_sched_clock variable now? Looking how the bit of information whether native_sched_clock is used, is needed in tsc.c, it probably would be cleaner if you add a set_sched_clock_native(void); or so, to tsc.c instead and call that here and make that long var name a a shorter and static one in tsc.c instead. Hmm? -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette
Jürgen Groß
2021-Mar-10 07:51 UTC
[PATCH v6 02/12] x86/paravirt: switch time pvops functions to use static_call()
On 09.03.21 19:57, Borislav Petkov wrote:> On Tue, Mar 09, 2021 at 02:48:03PM +0100, Juergen Gross wrote: >> @@ -167,6 +168,17 @@ static u64 native_steal_clock(int cpu) >> return 0; >> } >> >> +DEFINE_STATIC_CALL(pv_steal_clock, native_steal_clock); >> +DEFINE_STATIC_CALL(pv_sched_clock, native_sched_clock); >> + >> +bool paravirt_using_native_sched_clock = true; >> + >> +void paravirt_set_sched_clock(u64 (*func)(void)) >> +{ >> + static_call_update(pv_sched_clock, func); >> + paravirt_using_native_sched_clock = (func == native_sched_clock); >> +} > > What's the point of this function if there's a global > paravirt_using_native_sched_clock variable now?It is combining the two needed actions: update the static call and set the paravirt_using_native_sched_clock boolean.> Looking how the bit of information whether native_sched_clock is used, > is needed in tsc.c, it probably would be cleaner if you add a > > set_sched_clock_native(void); > > or so, to tsc.c instead and call that here and make that long var name a > a shorter and static one in tsc.c instead.I need to transfer a boolean value, so it would need to be set_sched_clock_native(bool state); In the end the difference is only marginal IMO. Just had another idea: I could add a function to static_call.h for querying the current function. This would avoid the double book keeping and could probably be used later when switching other pv_ops calls to static_call, too (e.g. pv_is_native_spin_unlock()). What do you think? Juergen -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_0xB0DE9DD628BF132F.asc Type: application/pgp-keys Size: 3091 bytes Desc: not available URL: <http://lists.linuxfoundation.org/pipermail/virtualization/attachments/20210310/ab779873/attachment-0001.bin> -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 495 bytes Desc: OpenPGP digital signature URL: <http://lists.linuxfoundation.org/pipermail/virtualization/attachments/20210310/ab779873/attachment-0001.sig>