Hi, On Sat, Mar 2, 2013 at 9:23 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > On Sat, 2 Mar 2013, Vivek Gautam wrote: > >> By enabling runtime pm in this driver allows users of >> xhci-plat to enter into runtime pm. This is not full >> runtime pm support (AKA xhci-plat doesn't actually power >> anything off when in runtime suspend mode) but, >> just basic enablement. >> >> Signed-off-by: Vivek Gautam <gautam.vivek@xxxxxxxxxxx> >> CC: Doug Anderson <dianders@xxxxxxxxxxxx> >> --- >> drivers/usb/host/xhci-plat.c | 7 +++++++ >> 1 files changed, 7 insertions(+), 0 deletions(-) >> >> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c >> index c9c7e13..595cb52 100644 >> --- a/drivers/usb/host/xhci-plat.c >> +++ b/drivers/usb/host/xhci-plat.c >> @@ -12,6 +12,7 @@ >> */ >> >> #include <linux/platform_device.h> >> +#include <linux/pm_runtime.h> >> #include <linux/module.h> >> #include <linux/slab.h> >> >> @@ -149,6 +150,8 @@ static int xhci_plat_probe(struct platform_device *pdev) >> if (ret) >> goto put_usb3_hcd; >> >> + pm_runtime_enable(&pdev->dev); > > This is generally not a good idea. You shouldn't enable a device for > runtime PM without first telling the PM core what state it is in. > Right, but i am not completely sure on any fixed path to follow for enabling runtime power management on a device. :-( Does it become necessary to "pm_runtime_set_active" or "pm_runtime_set_suspended" a device before "pm_runtime_enable" ? pm_runtime_enable would just try to decrement the disable_depth of the device. >> @@ -174,6 +177,10 @@ static int xhci_plat_remove(struct platform_device *dev) >> struct usb_hcd *hcd = platform_get_drvdata(dev); >> struct xhci_hcd *xhci = hcd_to_xhci(hcd); >> >> + if (!pm_runtime_suspended(&dev->dev)) >> + pm_runtime_put(&dev->dev); >> + pm_runtime_disable(&dev->dev); >> + >> usb_remove_hcd(xhci->shared_hcd); >> usb_put_hcd(xhci->shared_hcd); > > This is very strange. Why have a pm_runtime_put with no balancing > pm_runtime_get? > > And why use an async routine when you're about to unbind the driver? > Don't you want the callback to occur before the unbinding? > > Alan Stern > > -- > 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 -- Thanks & Regards Vivek -- 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