Hi, Felipe Balbi <[email protected]> writes:
[..]
> okay, I found the one place where changing smp_wmb() to smp_mb() solves
> the problem
>
> @@ -395,7 +395,7 @@ static int fsg_set_halt(struct fsg_dev *fsg, struct
> usb_ep *ep)
> /* Caller must hold fsg->lock */
> static void wakeup_thread(struct fsg_common *common)
> {
> - smp_wmb(); /* ensure the write of bh->state is complete */
> + smp_mb(); /* ensure the write of bh->state is complete */
> /* Tell the main thread that something has happened */
> common->thread_wakeup_needed = 1;
> if (common->thread_task)
turns out this helps, but it doesn't seem to be enough. I could still
see a hang followed by a bus reset.
I'll wait for your replies now.
cheers
--
balbi
signature.asc
Description: PGP signature
