Re: USB hot-plug not working (ASUS TP301UA-C4028T)

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

 



Hi!

I'm sorry, I'm not savvy enough to know what to do with this (I know 
basics on how to code and compile, but I'm no dev). Could someone 
guide me through it?

I gather this patch needs to be applied to some kernel module code 
which needs to be compiled and reloaded into my current kernel, 
right?

Sorry to let you down...

Cheers,
Pierre.

Le mardi 11 octobre 2016, 11:18:28 NZDT Alan Stern a écrit :
> On Sat, 8 Oct 2016, Lukas Wunner wrote:
> > The PCI core already calls pm_runtime_get_sync() before invoking 
the
> > ->probe hook of a driver (see local_pci_probe()).  Drivers need 
to
> > explicitly release a runtime ref to allow their device to 
suspend.
> > 
> > For xhci-pci, this seems to happen in usb_hcd_pci_probe():
> > 	if (pci_dev_run_wake(dev))
> > 	
> > 		pm_runtime_put_noidle(&dev->dev);
> > 
> > So you could either modify the if-condition if you want to 
change the
> > behaviour for XHCI devices only, or if you want to change it in 
general,
> > 
> > add something like this to pci_dev_run_wake():
> > 	/* PME capable in principle, but not from the intended sleep 
state */
> > 	if (dev->pme_support && !pci_pme_capable(dev, 
pci_target_state(dev)))
> > 	
> > 		return false;
> > 
> > I've briefly looked over the callers of pci_dev_run_wake() and 
the above
> > seems safe but you should double-check them.
> 
> That seems like a good suggestion.  The patch is below; Pierre, 
can you
> test it?  This should remove the need to set the USB autosuspend 
module
> parameter to -1.
> 
> Alan Stern
> 
> 
> 
> Index: usb-4.x/drivers/pci/pci.c
> 
===================================================================
> --- usb-4.x.orig/drivers/pci/pci.c
> +++ usb-4.x/drivers/pci/pci.c
> @@ -2064,6 +2064,10 @@ bool pci_dev_run_wake(struct pci_dev *de
>  	if (!dev->pme_support)
>  		return false;
> 
> +	/* PME-capable in principle, but not from the intended sleep 
state */
> +	if (!pci_pme_capable(dev, pci_target_state(dev)))
> +		return false;
> +
>  	while (bus->parent) {
>  		struct pci_dev *bridge = bus->self;
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux