Re: USB storage vanilla kernel 3.13 hang on DELL PRECISION M6400

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

 



Hi Alan;

Am Donnerstag, den 13.02.2014, 15:55 -0500 schrieb Alan Stern:

> Stefani, please try the patch below, with "threadirq" and the plain
> vanilla kernel.  It ought to fix your problem, but let's make certain.

I tried the patch on 3.13.2 together with the commit 88ed9fd50e57 and it
seems that it solves the problem.

I also tried the current 3.14.0-rc2-00271-g4675348 without any
modifications and without our patch... and it also works.

Both are tested with the kernel parameter "threadirqs".

- Stefani

> 
> 
> Index: usb-3.14/drivers/usb/host/ehci-hcd.c
> ===================================================================
> --- usb-3.14.orig/drivers/usb/host/ehci-hcd.c
> +++ usb-3.14/drivers/usb/host/ehci-hcd.c
> @@ -683,10 +683,11 @@ EXPORT_SYMBOL_GPL(ehci_setup);
>  static irqreturn_t ehci_irq (struct usb_hcd *hcd)
>  {
>  	struct ehci_hcd		*ehci = hcd_to_ehci (hcd);
> +	unsigned long		flags;
>  	u32			status, masked_status, pcd_status = 0, cmd;
>  	int			bh;
>  
> -	spin_lock (&ehci->lock);
> +	spin_lock_irqsave(&ehci->lock, flags);
>  
>  	status = ehci_readl(ehci, &ehci->regs->status);
>  
> @@ -704,7 +705,7 @@ static irqreturn_t ehci_irq (struct usb_
>  
>  	/* Shared IRQ? */
>  	if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) {
> -		spin_unlock(&ehci->lock);
> +		spin_unlock_irqrestore(&ehci->lock, flags);
>  		return IRQ_NONE;
>  	}
>  
> @@ -815,7 +816,7 @@ dead:
>  
>  	if (bh)
>  		ehci_work (ehci);
> -	spin_unlock (&ehci->lock);
> +	spin_unlock_irqrestore(&ehci->lock, flags);
>  	if (pcd_status)
>  		usb_hcd_poll_rh_status(hcd);
>  	return IRQ_HANDLED;
> 


--
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