Re: [PATCH 2/3] net: qrtr: Define macro to convert QMI version and instance to QRTR instance

Simon Horman
2025-07-07T17:06:45Z

On Sat, Jul 05, 2025 at 06:29:39PM +0000, Yassine Oudjana wrote:
> On Wednesday, April 9th, 2025 at 3:54 PM, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote:
>
> > On 4/6/25 4:07 PM, Yassine Oudjana wrote:

...

> > > diff --git a/include/linux/soc/qcom/qrtr.h b/include/linux/soc/qcom/qrtr.h
> > > index 4d7f25c64c56..10c89a35cbb9 100644
> > > --- a/include/linux/soc/qcom/qrtr.h
> > > +++ b/include/linux/soc/qcom/qrtr.h
> > > @@ -13,6 +13,8 @@ struct qrtr_device {
> > >
> > > #define to_qrtr_device(d) container_of(d, struct qrtr_device, dev)
> > >
> > > +#define QRTR_INSTANCE(qmi_version, qmi_instance) (qmi_version | qmi_instance << 8)
> >
> >
> > Please use FIELD_PREP + GENMASK to avoid potential overflows
> >
> > Konrad
>
> Since I'm using this macro in initializing QRTR match tables I am unable to use
> FIELD_PREP. When I do, I get such errors:

Does using FIELD_PREP_CONST, say in a QRTR_INSTANCE_CONST variant, help?

>
> In file included from ../arch/arm64/include/asm/sysreg.h:1108,
> from ../arch/arm64/include/asm/memory.h:223,
> from ../arch/arm64/include/asm/pgtable-prot.h:8,
> from ../arch/arm64/include/asm/sparsemem.h:8,
> from ../include/linux/numa.h:23,
> from ../include/linux/cpumask.h:17,
> from ../include/linux/smp.h:13,
> from ../include/linux/lockdep.h:14,
> from ../include/linux/mutex.h:17,
> from ../include/linux/kernfs.h:11,
> from ../include/linux/sysfs.h:16,
> from ../include/linux/iio/buffer.h:9,
> from ../drivers/iio/common/qcom_smgr/qcom_smgr.c:8:
> ../include/linux/bitfield.h:114:9: error: braced-group within expression allowed only inside a function
> 114 | ({ \
> | ^
> ../include/linux/soc/qcom/qrtr.h:21:10: note: in expansion of macro 'FIELD_PREP'
> 21 | (FIELD_PREP(GENMASK(7, 0), qmi_version) | FIELD_PREP(GENMASK(15, 8), qmi_instance))
> | ^~~~~~~~~~
> ../drivers/iio/common/qcom_smgr/qcom_smgr.c:825:29: note: in expansion of macro 'QRTR_INSTANCE'
> 825 | .instance = QRTR_INSTANCE(SNS_SMGR_QMI_SVC_V1,
> | ^~~~~~~~~~~~~

...