Re: -ENOSYS suspend-powerdown regression

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

 



On 30 May 2011 15:26, Daniel Drake <dsd@xxxxxxxxxx> wrote:
> Hi,
>
> The libertas_sdio driver has a suspend routine which returns -ENOSYS
> when the card should effectively be removed and powered during
> suspend, to be re-probed during resume.
>
> This is broken in linus master.

Actually, it only breaks when I enable runtime PM via the patch we are
discussing in the other thread.

Here is the call trace:

mmc_suspend_host
mmc_sdio_remove
sdio_remove_func
device_del
sdio_bus_remove

In sdio_bus_remove, we hit:

	/* Make sure card is powered before invoking ->remove() */
	if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) {
		ret = pm_runtime_get_sync(dev);
		if (ret < 0)
			goto out;
	}

pm_runtime_get_sync returns -11, therefore we skip the following
drv->remove call, causing this confusion. -11 is EAGAIN

Digging further, in the pm_runtime_get_sync() call we reach
rpm_resume() in drivers/base/power where we hit:

	else if (dev->power.disable_depth > 0)
		retval = -EAGAIN;

Not sure what this means. Any thoughts?

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


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux