On Thu, 10 Nov 2011, Lin Ming wrote: > Hi, all > > These 4 patches add ata port runtime pm support. > > v1: > https://lkml.org/lkml/2011/11/2/23 > > v2 is totally different than v1. > > v1 performed ata port runtime pm through scsi layer. > Added hook to scsi host runtime suspend/resume code. > > I realized that this is not the natural way to do ata port runtime pm. > It does not deal with the races with ata port system suspend/resume. > > With v2, ata port is made to be parent device of scsi host. > > Currently, the device tree of ata port and scsi host looks as below, > > /sys/devices/pci0000:00/0000:00:1f.2 (ahci controller) > |-- ata1 (ata port) > |-- host0 (scsi host) > |-- target0:0:0 (scsi target) > |-- 0:0:0:0 (disk) > > v2 changes it to: > > /sys/devices/pci0000:00/0000:00:1f.2 (ahci controller) > |-- ata1 (ata port) > |-- host0 (scsi host) > |-- target0:0:0 (scsi target) > |-- 0:0:0:0 (disk) > > So ata port runtime PM will happen as: > > disk suspend --> scsi target suspend --> scsi host suspend --> ata port > suspend. > > This is much cleaner and natural. Have you observed any real benefit from this feature? Currently, disks will not be runtime-suspended unless (1) the user requests it by setting the appropriate power/control attribute, and (2) the device file is closed (in particular, the disk has no mounted filesystems or swap partitions). I don't imagine this combination of events is very common for disks using libata. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html