On Mon, 28 Nov 2022 16:10:32 +0100 Janis Schoetterl-Glausch <scgl@xxxxxxxxxxxxx> wrote: > On Mon, 2022-11-28 at 13:38 +0100, Claudio Imbrenda wrote: > > Since a lot of code starts new CPUs using the current PSW mask, add a > > wrapper to streamline the operation and hopefully make the code of the > > tests more readable. > > > > Signed-off-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> > > --- > > lib/s390x/smp.h | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/lib/s390x/smp.h b/lib/s390x/smp.h > > index f4ae973d..0bcb1999 100644 > > --- a/lib/s390x/smp.h > > +++ b/lib/s390x/smp.h > > @@ -47,4 +47,13 @@ void smp_setup(void); > > int smp_sigp(uint16_t idx, uint8_t order, unsigned long parm, uint32_t *status); > > struct lowcore *smp_get_lowcore(uint16_t idx); > > > > +static inline void smp_cpu_setup_cur_psw_mask(uint16_t idx, void *addr) > > +{ > > + struct psw psw = { > > + .mask = extract_psw_mask(), > > + .addr = (unsigned long)addr, > > + }; > > + smp_cpu_setup(idx, psw); > > +} > > + > > #endif > > Reviewed-by: Janis Schoetterl-Glausch <scgl@xxxxxxxxxxxxx> > > Although I would have expected you to also use the function. > > I'm wondering if just improving the ergonomics of creating a psw would suffice > #define PSW(m, a) ((struct psw){ .mask = (uint64_t)m, .addr = (uint64_t)a }) > > Then it would look like > > smp_cpu_setup(idx, PSW(extract_psw_mask(), addr)) > > and the macro might come in handy in other situations, too, but I haven't surveyed the code. hmmm, this is actually not a bad idea at all then it would be possible to also define #define PSW_CUR_MASK(a) PSW(extract_psw_mask(), (a)) and have the code like this: smp_cpu_setup(idx, PSW_CUR_MASK(addr)); I think I will do it like that (and also send a second patch where I actually put it to use)