Dear Mike Frysinger, > On Friday 02 March 2012 11:45:15 Wolfgang Denk wrote: > > > > That's what I did in original patch where I am aligning it by adding > > > > the line > > > > > > > > + /* Device Descriptor */ > > > > +#ifdef ARCH_DMA_MINALIGN > > > > + struct usb_device_descriptor descriptor > > > > + __attribute__((aligned(ARCH_DMA_MINALIGN))); > > > > +#else > > > > + struct usb_device_descriptor descriptor; > > > > +#endif > > > > > > > > in usb.h Line:112 > > > > > > > > > M > > > > > > I see ...and I told you it's wrong? I must have misunderstood, I'm > > > sorry about that. But if you actually do this, you can avoid memcpy, > > > right? > > > > And eventually wd can also avoid the #ifdef ? I guess the > > __attribute__((aligned...)) would not hurt anything? > > the reason i disliked that was because it adds padding to the structure. > on my system, seems to go from 144 bytes to 160, and the other goes from > 1352 to 1376. the scsi structure isn't specific to usb either. i can't > tell if this is a structure that represents data on the wire ... the fact > it's written all using char types makes me suspicious. if it is, then > obviously we can't change the padding in the struct. > > further, it doesn't seem like Linux imposes this restriction at the > structure level (does it do memcopies instead ?), and imposing it on > arbitrary members in there w/out documentation easily leads to rot. if > the code changes and no longer needs this alignment, how do we tell ? if > the code starts transferring another structure, do we end up aligning > every member in there until there's padding everywhere ? > -mike
I believe this is OK, we're properly aligning only descriptors. Note that the USB stack in linux and in uboot is different. Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot