On Tue, 2018-07-03 at 14:49 -0600, Jason Gunthorpe wrote: > On Mon, Jul 02, 2018 at 10:28:22AM -0700, Bart Van Assche wrote: > > This patch avoids that sparse reports the following: > > > > drivers/infiniband/core/uverbs_std_types_cq.c:206:1: error: directive in argument list > > drivers/infiniband/core/uverbs_std_types_cq.c:209:1: error: directive in argument list > > Huh. Yes, that should be fixed.. > > > Additionally, this patch also avoids that sparse warns about defined > > but not used functions with CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI=n. > > But I don't think this should be.. With kconfig We want to compile as > much code as possible and have the compiler eliminate it - so we get > stable compilation coverage.. > > > Fixes: 185899ee8d00 ("IB/uverbs: Enable ioctl() uAPI by default for new verbs") > > Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxx> > > Cc: Matan Barak <matanb@xxxxxxxxxxxx> > > Cc: Leon Romanovsky <leonro@xxxxxxxxxxxx> > > drivers/infiniband/core/uverbs_std_types_cq.c | 12 +++++++++--- > > 1 file changed, 9 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/infiniband/core/uverbs_std_types_cq.c b/drivers/infiniband/core/uverbs_std_types_cq.c > > index 3d293d01afea..3fc1838d6cb1 100644 > > +++ b/drivers/infiniband/core/uverbs_std_types_cq.c > > @@ -53,6 +53,7 @@ static int uverbs_free_cq(struct ib_uobject *uobject, > > return ret; > > } > > > > +#if IS_ENABLED(CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI) > > static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(struct ib_device *ib_dev, > > struct ib_uverbs_file *file, > > struct uverbs_attr_bundle *attrs) > > @@ -199,13 +200,18 @@ static DECLARE_UVERBS_NAMED_METHOD(UVERBS_METHOD_CQ_DESTROY, > > &UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_DESTROY_CQ_RESP, > > UVERBS_ATTR_TYPE(struct ib_uverbs_destroy_cq_resp), > > UA_FLAGS(UVERBS_ATTR_SPEC_F_MANDATORY))); > > +#endif > > > > +#if IS_ENABLED(CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI) > > DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_CQ, > > &UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_ucq_object), 0, > > uverbs_free_cq), > > -#if IS_ENABLED(CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI) > > &UVERBS_METHOD(UVERBS_METHOD_CQ_CREATE), > > &UVERBS_METHOD(UVERBS_METHOD_CQ_DESTROY) > > -#endif > > ); > > - > > +#else > > +DECLARE_UVERBS_NAMED_OBJECT(UVERBS_OBJECT_CQ, > > + &UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_ucq_object), 0, > > + uverbs_free_cq), > > + ); > > +#endif > > Humm. > > I have a series that reworks these macros some more and eliminates the > need for DECLARE_UVERBS_NAMED_OBJECT and handles > CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI automatically. > > However maybe that is still a bit far off.. > > Do you think this is urgent to fix? No, this is not urgent to fix. I can keep this patch in my local tree until your work is ready to go upstream. This is something I came across while analyzing the sparse output for the RDMA code. Bart. ��.n��������+%������w��{.n�����{���fk��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f