Re: Linux USB file storage gadget with new UDC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

>> > It is likely that this bug occurs because you don't use a spinlock in
>> > kagen2_ep_queue.  Does the interrupt handler routine use a spinlock?
>>
>> Spinlock is Not used in interrupt handler routine.
>
> Then that's the reason for this bug.
>
>> >[start_transfer] 53425355 10d
>> >ept1 out queue len 0x200, buffer 0xc1304000
>> >g_file_storage gadget: bulk-out, length 31:
>>
>> Is the kagen2_ep_queue function gotten interrupted here? So the
>> kagen2_ep_queue and interrupt routine need spinlock for
>> synchronisation?
>
> That's right.  Interrupts can occur at almost any time (on
> multiprocessor systems they can occur even when interrupts are disabled
> on some of the CPUs).

I am confused. I add the spinlock functions to kagen2_ep_queue function.

      spin_lock_irqsave(&dev->lock, flags);
      ......
      spin_unlock_irqrestore(&dev->lock, flags);

When kagen2_ep_queue function is called, the error "BUG: scheduling
while atomic: swapper/0/0x00000002" occurs. I test the same spinlock
functions in other device module. It is ok in other device module.

thanks,
victor
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux