public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* Endianess in cxgb4
@ 2017-10-24 18:37 Leon Romanovsky
       [not found] ` <20171024183759.GK16127-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Leon Romanovsky @ 2017-10-24 18:37 UTC (permalink / raw)
  To: Steve Wise; +Cc: RDMA mailing list

[-- Attachment #1: Type: text/plain, Size: 992 bytes --]

Hi Steve,

I reviewed my reports from various static checkers and saw strange code
in build_tpte_memreg() function that in drivers/infiniband/hw/cxgb4/qp.c.

That function has following code:
 614         fr->r2 = cpu_to_be32(0);
 615         fr->stag = cpu_to_be32(mhp->ibmr.rkey);

The r2, stag and rkey are u32, why do you need cpu_to_be32() conversion?

The error report which I got is:

 134 drivers/infiniband/hw/cxgb4/qp.c:614:16: warning: incorrect type in assignment (different base types)
 135 drivers/infiniband/hw/cxgb4/qp.c:614:16:    expected unsigned int [unsigned] [usertype] r2
 136 drivers/infiniband/hw/cxgb4/qp.c:614:16:    got restricted __be32 [usertype] <noident>
 137 drivers/infiniband/hw/cxgb4/qp.c:615:18: warning: incorrect type in assignment (different base types)
 138 drivers/infiniband/hw/cxgb4/qp.c:615:18:    expected unsigned int [unsigned] [usertype] stag
 139 drivers/infiniband/hw/cxgb4/qp.c:615:18:    got restricted __be32 [usertype] <noident>

Thanks

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: Endianess in cxgb4
       [not found] ` <20171024183759.GK16127-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
@ 2017-10-24 18:45   ` Steve Wise
  2017-10-24 19:01     ` Leon Romanovsky
  2017-10-24 18:55   ` Jason Gunthorpe
  1 sibling, 1 reply; 8+ messages in thread
From: Steve Wise @ 2017-10-24 18:45 UTC (permalink / raw)
  To: 'Leon Romanovsky'; +Cc: 'RDMA mailing list'

> 
> Hi Steve,
> 
> I reviewed my reports from various static checkers and saw strange code
> in build_tpte_memreg() function that in drivers/infiniband/hw/cxgb4/qp.c.
> 
> That function has following code:
>  614         fr->r2 = cpu_to_be32(0);
>  615         fr->stag = cpu_to_be32(mhp->ibmr.rkey);
> 
> The r2, stag and rkey are u32, why do you need cpu_to_be32() conversion?
> 

Hey Leon,

The r2 and stag fields in struct fw_ri_fr_nsmr_tpte_wr should be __be32.

Steve.

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Endianess in cxgb4
       [not found] ` <20171024183759.GK16127-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
  2017-10-24 18:45   ` Steve Wise
@ 2017-10-24 18:55   ` Jason Gunthorpe
       [not found]     ` <20171024185506.GE1806-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
  1 sibling, 1 reply; 8+ messages in thread
From: Jason Gunthorpe @ 2017-10-24 18:55 UTC (permalink / raw)
  To: Leon Romanovsky; +Cc: Steve Wise, RDMA mailing list

On Tue, Oct 24, 2017 at 09:37:59PM +0300, Leon Romanovsky wrote:
> Hi Steve,
> 
> I reviewed my reports from various static checkers and saw strange code
> in build_tpte_memreg() function that in drivers/infiniband/hw/cxgb4/qp.c.
> 
> That function has following code:
>  614         fr->r2 = cpu_to_be32(0);
>  615         fr->stag = cpu_to_be32(mhp->ibmr.rkey);
> 
> The r2, stag and rkey are u32, why do you need cpu_to_be32() conversion?
> 
> The error report which I got is:
> 
>  134 drivers/infiniband/hw/cxgb4/qp.c:614:16: warning: incorrect type in assignment (different base types)
>  135 drivers/infiniband/hw/cxgb4/qp.c:614:16:    expected unsigned int [unsigned] [usertype] r2
>  136 drivers/infiniband/hw/cxgb4/qp.c:614:16:    got restricted __be32 [usertype] <noident>
>  137 drivers/infiniband/hw/cxgb4/qp.c:615:18: warning: incorrect type in assignment (different base types)
>  138 drivers/infiniband/hw/cxgb4/qp.c:615:18:    expected unsigned int [unsigned] [usertype] stag
>  139 drivers/infiniband/hw/cxgb4/qp.c:615:18:    got restricted __be32 [usertype] <noident>

I looked at cxgb in userspace and gave up. It seemed to be storing be
and host values in the same memory locations :(

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Endianess in cxgb4
  2017-10-24 18:45   ` Steve Wise
@ 2017-10-24 19:01     ` Leon Romanovsky
       [not found]       ` <20171024190142.GM16127-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Leon Romanovsky @ 2017-10-24 19:01 UTC (permalink / raw)
  To: Steve Wise; +Cc: 'RDMA mailing list'

[-- Attachment #1: Type: text/plain, Size: 935 bytes --]

On Tue, Oct 24, 2017 at 01:45:52PM -0500, Steve Wise wrote:
> >
> > Hi Steve,
> >
> > I reviewed my reports from various static checkers and saw strange code
> > in build_tpte_memreg() function that in drivers/infiniband/hw/cxgb4/qp.c.
> >
> > That function has following code:
> >  614         fr->r2 = cpu_to_be32(0);
> >  615         fr->stag = cpu_to_be32(mhp->ibmr.rkey);
> >
> > The r2, stag and rkey are u32, why do you need cpu_to_be32() conversion?
> >
>
> Hey Leon,
>
> The r2 and stag fields in struct fw_ri_fr_nsmr_tpte_wr should be __be32.

it is not how it is declared in drivers/infiniband/hw/cxgb4/t4fw_ri_api.h

672 struct fw_ri_fr_nsmr_tpte_wr {
673         __u8    opcode;
674         __u8   flags;
675         __u16  wrid;
676         __u8   r1[3];
677         __u8   len16;
678         __u32  r2;
679         __u32  stag;
680         struct fw_ri_tpte tpte;
681         __u64  pbl[2];
682 };

Thanks

>
> Steve.
>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: Endianess in cxgb4
       [not found]     ` <20171024185506.GE1806-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
@ 2017-10-24 19:31       ` Steve Wise
  0 siblings, 0 replies; 8+ messages in thread
From: Steve Wise @ 2017-10-24 19:31 UTC (permalink / raw)
  To: 'Jason Gunthorpe', 'Leon Romanovsky'
  Cc: 'RDMA mailing list'

> On Tue, Oct 24, 2017 at 09:37:59PM +0300, Leon Romanovsky wrote:
> > Hi Steve,
> >
> > I reviewed my reports from various static checkers and saw strange code
> > in build_tpte_memreg() function that in drivers/infiniband/hw/cxgb4/qp.c.
> >
> > That function has following code:
> >  614         fr->r2 = cpu_to_be32(0);
> >  615         fr->stag = cpu_to_be32(mhp->ibmr.rkey);
> >
> > The r2, stag and rkey are u32, why do you need cpu_to_be32() conversion?
> >
> > The error report which I got is:
> >
> >  134 drivers/infiniband/hw/cxgb4/qp.c:614:16: warning: incorrect type in
> assignment (different base types)
> >  135 drivers/infiniband/hw/cxgb4/qp.c:614:16:    expected unsigned int
[unsigned]
> [usertype] r2
> >  136 drivers/infiniband/hw/cxgb4/qp.c:614:16:    got restricted __be32
[usertype]
> <noident>
> >  137 drivers/infiniband/hw/cxgb4/qp.c:615:18: warning: incorrect type in
> assignment (different base types)
> >  138 drivers/infiniband/hw/cxgb4/qp.c:615:18:    expected unsigned int
[unsigned]
> [usertype] stag
> >  139 drivers/infiniband/hw/cxgb4/qp.c:615:18:    got restricted __be32
[usertype]
> <noident>
> 
> I looked at cxgb in userspace and gave up. It seemed to be storing be
> and host values in the same memory locations :(

The Terminator HW/FW WRs are in BE always, with the exception that something
"opaque and owned by the host" is in HBO.  The only one I can think of is the
wrid field in each Terminator SQE.  It is provided by the host in each WR, and
is opaque to the HW/FW.  That is, the HW/FW does not interpret this 16b field,
but simply reflects it in the corresponding CQE.  

See my reply to Leon regarding the above issue...

Steve.

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: Endianess in cxgb4
       [not found]       ` <20171024190142.GM16127-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
@ 2017-10-25 14:48         ` Steve Wise
  2017-10-25 15:38           ` Leon Romanovsky
  0 siblings, 1 reply; 8+ messages in thread
From: Steve Wise @ 2017-10-25 14:48 UTC (permalink / raw)
  To: 'Leon Romanovsky'; +Cc: 'RDMA mailing list'

> On Tue, Oct 24, 2017 at 01:45:52PM -0500, Steve Wise wrote:
> > >
> > > Hi Steve,
> > >
> > > I reviewed my reports from various static checkers and saw strange code
> > > in build_tpte_memreg() function that in drivers/infiniband/hw/cxgb4/qp.c.
> > >
> > > That function has following code:
> > >  614         fr->r2 = cpu_to_be32(0);
> > >  615         fr->stag = cpu_to_be32(mhp->ibmr.rkey);
> > >
> > > The r2, stag and rkey are u32, why do you need cpu_to_be32() conversion?
> > >
> >
> > Hey Leon,
> >
> > The r2 and stag fields in struct fw_ri_fr_nsmr_tpte_wr should be __be32.
> 
> it is not how it is declared in drivers/infiniband/hw/cxgb4/t4fw_ri_api.h
> 
> 672 struct fw_ri_fr_nsmr_tpte_wr {
> 673         __u8    opcode;
> 674         __u8   flags;
> 675         __u16  wrid;
> 676         __u8   r1[3];
> 677         __u8   len16;
> 678         __u32  r2;
> 679         __u32  stag;
> 680         struct fw_ri_tpte tpte;
> 681         __u64  pbl[2];
> 682 };
> 
> Thanks
> 

I'm not communicating effectively.  Sorry.  

This is a bug in t4fw_ri_api.h.  You need create a patch to change
fw_ri_fr_nsmr_tpte_wr to make the stag and r2 fields to be __be32. 

Steve.



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Endianess in cxgb4
  2017-10-25 14:48         ` Steve Wise
@ 2017-10-25 15:38           ` Leon Romanovsky
       [not found]             ` <20171025153856.GT16127-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Leon Romanovsky @ 2017-10-25 15:38 UTC (permalink / raw)
  To: Steve Wise; +Cc: 'RDMA mailing list'

[-- Attachment #1: Type: text/plain, Size: 1345 bytes --]

On Wed, Oct 25, 2017 at 09:48:08AM -0500, Steve Wise wrote:
> > On Tue, Oct 24, 2017 at 01:45:52PM -0500, Steve Wise wrote:
> > > >
> > > > Hi Steve,
> > > >
> > > > I reviewed my reports from various static checkers and saw strange code
> > > > in build_tpte_memreg() function that in drivers/infiniband/hw/cxgb4/qp.c.
> > > >
> > > > That function has following code:
> > > >  614         fr->r2 = cpu_to_be32(0);
> > > >  615         fr->stag = cpu_to_be32(mhp->ibmr.rkey);
> > > >
> > > > The r2, stag and rkey are u32, why do you need cpu_to_be32() conversion?
> > > >
> > >
> > > Hey Leon,
> > >
> > > The r2 and stag fields in struct fw_ri_fr_nsmr_tpte_wr should be __be32.
> >
> > it is not how it is declared in drivers/infiniband/hw/cxgb4/t4fw_ri_api.h
> >
> > 672 struct fw_ri_fr_nsmr_tpte_wr {
> > 673         __u8    opcode;
> > 674         __u8   flags;
> > 675         __u16  wrid;
> > 676         __u8   r1[3];
> > 677         __u8   len16;
> > 678         __u32  r2;
> > 679         __u32  stag;
> > 680         struct fw_ri_tpte tpte;
> > 681         __u64  pbl[2];
> > 682 };
> >
> > Thanks
> >
>
> I'm not communicating effectively.  Sorry.
>
> This is a bug in t4fw_ri_api.h.  You need create a patch to change
> fw_ri_fr_nsmr_tpte_wr to make the stag and r2 fields to be __be32.

Thanks, I'll send a fix.

>
> Steve.
>
>
>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: Endianess in cxgb4
       [not found]             ` <20171025153856.GT16127-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
@ 2017-10-25 15:46               ` Steve Wise
  0 siblings, 0 replies; 8+ messages in thread
From: Steve Wise @ 2017-10-25 15:46 UTC (permalink / raw)
  To: 'Leon Romanovsky'; +Cc: 'RDMA mailing list'

> > I'm not communicating effectively.  Sorry.
> >
> > This is a bug in t4fw_ri_api.h.  You need create a patch to change
> > fw_ri_fr_nsmr_tpte_wr to make the stag and r2 fields to be __be32.
> 
> Thanks, I'll send a fix.
> 

Thanks for doing this work! 

Steve.

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-10-25 15:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-24 18:37 Endianess in cxgb4 Leon Romanovsky
     [not found] ` <20171024183759.GK16127-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-10-24 18:45   ` Steve Wise
2017-10-24 19:01     ` Leon Romanovsky
     [not found]       ` <20171024190142.GM16127-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-10-25 14:48         ` Steve Wise
2017-10-25 15:38           ` Leon Romanovsky
     [not found]             ` <20171025153856.GT16127-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-10-25 15:46               ` Steve Wise
2017-10-24 18:55   ` Jason Gunthorpe
     [not found]     ` <20171024185506.GE1806-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-10-24 19:31       ` Steve Wise

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox