Hi,

Felipe Balbi <felipe.ba...@linux.intel.com> 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

Attachment: signature.asc
Description: PGP signature

Reply via email to