RE: [PATCH] usb: dwc3: gadget: synchronize_irq dwc irq in suspend

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

 



agree your findings.

so it's better move the synchronize_irq() after the spin_unlock_irqrestore().
static int dwc3_suspend_common(struct dwc3 *dwc)
{
	unsigned long	flags;

	switch (dwc->dr_mode) {
	case USB_DR_MODE_PERIPHERAL:
	case USB_DR_MODE_OTG:
		spin_lock_irqsave(&dwc->lock, flags);
		dwc3_gadget_suspend(dwc);
		spin_unlock_irqrestore(&dwc->lock, flags);
		synchronize_irq()

-----Original Message-----
From: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> 
Sent: Monday, January 28, 2019 10:53 PM
To: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx>; Linux USB <linux-usb@xxxxxxxxxxxxxxx>
Cc: He, Bo <bo.he@xxxxxxxxx>; Wang, Yu Y <yu.y.wang@xxxxxxxxx>; 'Linux Samsung SOC' <linux-samsung-soc@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH] usb: dwc3: gadget: synchronize_irq dwc irq in suspend

Hi Felipe,

On 2019-01-28 14:30, Felipe Balbi wrote:
> Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> writes:
>> On 2019-01-14 09:30, Felipe Balbi wrote:
>>> From: Bo He <bo.he@xxxxxxxxx>
>>>
>>> We see dwc3 endpoint stopped by unwanted irq during suspend resume 
>>> test, which is caused dwc3 ep can't be started with error "No 
>>> Resource".
>>>
>>> Here, add synchronize_irq before suspend to sync the pending IRQ 
>>> handlers complete.
>>>
>>> Signed-off-by: Bo He <bo.he@xxxxxxxxx>
>>> Signed-off-by: Yu Wang <yu.y.wang@xxxxxxxxx>
>>> Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx>
>> This patch causes following kernel BUG on Samsung Exynos based 
>> platforms during system suspend/resume cycle:
> are you calling ->suspend() from ->suspend_noirq() time? Are we not 
> allowed to call synchronize_irq() during ->suspend()?

dwc3_suspend_common() calls dwc3_gadget_suspend() with dwc->lock spinlock held. This is not the proper context for calling sleeping functions like synchronize_irq().

Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland





[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux for Synopsys ARC Processors]    
  • [Linux on Unisoc (RDA Micro) SoCs]     [Linux Actions SoC]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  •   Powered by Linux