Dear Ilya Yanok, > Dear Marek, > > On Sun, Jul 15, 2012 at 12:07 PM, Marek Vasut <ma...@denx.de> wrote: > > > > @@ -207,8 +210,8 @@ static int > > > > > > > > ehci_submit_async(struct usb_device *dev, unsigned long pipe, void > > > > > > > > *buffer, > > > > > > > > int length, struct devrequest *req) > > > > > > > > { > > > > > > > > - static struct QH qh __attribute__((aligned(32))); > > > > - static struct qTD qtd[3] __attribute__((aligned (32))); > > > > + ALLOC_CACHE_ALIGN_BUFFER(struct QH, qh, 1); > > > > > > Somehow this doesn't work being allocated on stack... I assumed that > > > this was declared as static just to use __attribute__((aligned))... > > > > Not really ... but then, we have indeed a problem here. It was probably > > declared > > static to preserve the contents of these variables across the the calls > > of this > > function. Sigh, the USB code is really bloody :-/ > > Hm.. no, I don't think it's about contents... Look, there are memset() > calls straight in the beginning of the function. It looks like it's about > qh address: I tried debugging it a bit and it seems to work until qh has > the same address and break when the address eventually changes.
I see, stupid me. So it's only the address? And I take it the controller doesn't use those after it leaves the function, right (maybe that might be it) ? > > Ilya, can you try pulling these out of the function? > > I can but what for? Are there any differences (except for scope) declaring > statics inside or outside function? As I said declaring qh static (with > DEFINE_CACHE_ALIGN_BUFFER) works but... > > Regards, Ilya. Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot