[ofa-general] Re: [RFC/PATCH] mthca: ensure alignment of doorbell writes

akepner at sgi.com akepner at sgi.com
Thu Jul 26 08:33:54 PDT 2007


On Thu, Jul 26, 2007 at 06:39:46AM +0300, Michael S. Tsirkin wrote:

> ....
> These should be getting 'union mthca_doorbell *db' I think.
> 

Hi Michael;

Want to make sure I understand your point. Are you saying, e.g., 
that the function:

static inline void mthca_ring_db(union mthca_doorbell db, 
				 void __iomem *dest,
                                 spinlock_t *doorbell_lock)

should instead have the prototype:

static inline void mthca_ring_db(union mthca_doorbell* db,
                                 void __iomem *dest,
                                 spinlock_t *doorbell_lock)

?

If so, I'm not sure I agree. The union mthca_doorbell is 
64 bits so can be passed in a register, but passing a pointer 
requires a few extra operations to calculate the address, 
and dereference the pointer. But maybe I misunderstand you...


Now that I look at this again, the __attribute__ ((aligned...))
thing on union mthca_doorbell is pretty silly - of course the  
alignment is going to be sizeof(__be64)....

+union mthca_doorbell {
+       __be64 val64;
+       __be32 val32[2];
+} __attribute__ ((aligned (sizeof(__be64))));
+

-- 
Arthur




More information about the general mailing list