Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'ata-6.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux

Pull ata fixes from Damien Le Moal:

- A set of fixes for link power management as the recent changes/fixes
introduced regressions with ATAPI devices and with adapters that have
DUMMY ports, preventing an adapter to fully reach a low power state
and thus preventing the system CPU from reaching low power C-states
(from Niklas)

* tag 'ata-6.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux:
ata: libata: Print features also for ATAPI devices
ata: libata: Add DIPM and HIPM to ata_dev_print_features() early return
ata: libata: Add cpr_log to ata_dev_print_features() early return
ata: libata-sata: Improve link_power_management_supported sysfs attribute
ata: libata: Call ata_dev_config_lpm() for ATAPI devices
ata: ahci: Do not read the per port area for unimplemented ports

+13 -7
+5 -5
drivers/ata/ahci.c
··· 2094 2094 if (ap->flags & ATA_FLAG_EM) 2095 2095 ap->em_message_type = hpriv->em_msg_type; 2096 2096 2097 - ahci_mark_external_port(ap); 2098 - 2099 - ahci_update_initial_lpm_policy(ap); 2100 - 2101 2097 /* disabled/not-implemented port */ 2102 - if (!(hpriv->port_map & (1 << i))) 2098 + if (!(hpriv->port_map & (1 << i))) { 2103 2099 ap->ops = &ata_dummy_port_ops; 2100 + } else { 2101 + ahci_mark_external_port(ap); 2102 + ahci_update_initial_lpm_policy(ap); 2103 + } 2104 2104 } 2105 2105 2106 2106 /* apply workaround for ASUS P5W DH Deluxe mainboard */
+7 -1
drivers/ata/libata-core.c
··· 2872 2872 2873 2873 static void ata_dev_print_features(struct ata_device *dev) 2874 2874 { 2875 - if (!(dev->flags & ATA_DFLAG_FEATURES_MASK)) 2875 + if (!(dev->flags & ATA_DFLAG_FEATURES_MASK) && !dev->cpr_log && 2876 + !ata_id_has_hipm(dev->id) && !ata_id_has_dipm(dev->id)) 2876 2877 return; 2877 2878 2878 2879 ata_dev_info(dev, ··· 3117 3116 ata_mode_string(xfer_mask), 3118 3117 cdb_intr_string, atapi_an_string, 3119 3118 dma_dir_string); 3119 + 3120 + ata_dev_config_lpm(dev); 3121 + 3122 + if (print_info) 3123 + ata_dev_print_features(dev); 3120 3124 } 3121 3125 3122 3126 /* determine max_sectors */
+1 -1
drivers/ata/libata-sata.c
··· 909 909 struct ata_link *link; 910 910 struct ata_device *dev; 911 911 912 - if (ap->flags & ATA_FLAG_NO_LPM) 912 + if ((ap->flags & ATA_FLAG_NO_LPM) || !ap->ops->set_lpm) 913 913 return false; 914 914 915 915 ata_for_each_link(link, ap, EDGE) {