Message ID | 20221128123834.21252-1-imbrenda@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v1,1/1] lib: s390x: add smp_cpu_setup_cur_psw_mask | expand |
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@linux.ibm.com> > --- > 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@linux.ibm.com> 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.
On Mon, 28 Nov 2022 16:10:32 +0100 Janis Schoetterl-Glausch <scgl@linux.ibm.com> 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@linux.ibm.com> > > --- > > 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@linux.ibm.com> > > 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)
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
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@linux.ibm.com> --- lib/s390x/smp.h | 9 +++++++++ 1 file changed, 9 insertions(+)