Re: [PATCH v9 06/10] ata: zpodd: check zero power ready status
From: Aaron Lu <hidden>
Date: 2012-11-20 08:59:45
Also in:
linux-acpi, linux-pm, linux-scsi
From: Aaron Lu <hidden>
Date: 2012-11-20 08:59:45
Also in:
linux-acpi, linux-pm, linux-scsi
On 11/20/2012 02:00 PM, Aaron Lu wrote:
On 11/19/2012 10:56 PM, Tejun Heo wrote:quoted
I really think we need a way for (auto)pm and event polling to talk to each other so that autopm can tell event poll to sod off while pm is in effect. Trying to solve this from inside libata doesn't seem right. The problem, again, seems to be figuring out which hardware device maps to which block device. Hmmm... Any good ideas?A possible way of doing this is using pm qos. We currently have 2 pm qos flags, NO_POWER_OFF and REMOTE_WAKEUP, and we can add another one: NO_POLL, use it like the following: 1 Set the NO_POLL pm qos flag when the underlying driver thinks it is no longer necessary. In the ZPODD's case, it should be set when the device is to be powered off; 2 Clear it when poll is necessary again. In the ZPODD's case, when power is re-gained, this flag will be cleared.
3 In the disk_events_workfn, check if this flag is set, if so, simply return.
It should be, skip calling disk->fops->check_events, but still queue the work for next time's poll. -Aaron
The disk->driverfs_dev can be used to host the pm qos flag, ATA layer can access it through ata_device->sdev->sdev_gendev. Is this OK? Thanks, Aaron