* [REGRESSION] libata: SATA LPM forcibly disabled on Intel Raptor Lake since Linux 6.14. @ 2026-01-06 19:57 wolf 2026-01-07 10:14 ` Niklas Cassel 0 siblings, 1 reply; 6+ messages in thread From: wolf @ 2026-01-06 19:57 UTC (permalink / raw) To: linux-ide; +Cc: damien.lemoal, tj Hello, I am reporting a power-management regression in libata affecting the Intel Raptor Lake SATA AHCI Controller, introduced after Linux 6.14. Hardware: - CPU: Intel Core i5-12500 - SATA controller: Intel Corporation Raptor Lake SATA AHCI Controller [8086:7a62] - Motherboard: Gigabyte B760 GAMING X DDR4 Distributions tested: - Proxmox / Debian 13 (Trixie) - Chimera Linux Live USB (kernel 6.18) Kernel versions tested: - 6.14.x (Proxmox): OK - 6.17.x (Proxmox): REGRESSION - 6.18.x (Chimera): REGRESSION Problem description: On kernel versions newer than 6.14, SATA Link Power Management (LPM) is forcibly disabled on part of the controller. Out of 8 SCSI hosts, 4 hosts are stuck with link_power_management_policy set to "max_performance" and cannot be changed: max_performance max_performance max_performance max_performance med_power_with_dipm med_power_with_dipm med_power_with_dipm med_power_with_dipm The motherboard only has 4 physical SATA ports, so the presence of 8 hosts and 4 apparent dummy ports might be unexpected? Manually setting LPM on the affected hosts fails with: echo med_power_with_dipm > /sys/class/scsi_host/host*/link_power_management_policy -bash: echo: write error: Operation not supported This worked correctly on 6.14.x and earlier. Because LPM cannot be enabled on all ports, the system is unable to enter deeper package C-states. Observed effects: - CPU package C-states are stuck at C3 (normally reaches C8 or deeper) - Idle power consumption increased by approximately 4 watts - powertop reports 4 out of 8 SATA LPM tunables as permanently "Bad" SATA LPM worked reliably on this hardware on previous kernels dmesg logs: Working (6.14): https://www.dropbox.com/scl/fi/5ryfjrp9fgx1dkxmszm5l/6.14-proxmox.txt?rlkey=75y3hue5whdmxbfvxq1piyofg&raw=1 Not working: 6.17 (Proxmox): https://www.dropbox.com/scl/fi/ja2w0qtfummkmh406rxc7/6.17-proxmox.txt?rlkey=qxqpi7w2rn0ecbhdf2t4ju9kh&raw=1 6.18 (Chimera): https://www.dropbox.com/scl/fi/s7412dfcv3pjk63mqfrep/6.18-chimera.txt?rlkey=9dd5wylsxb45l1b9zxgxadaw7&raw=1 While reviewing the logs, I noticed: The presence of 4 apparent dummy SATA ports Exactly 4 out of 8 SATA LPM entries disabled in both sysfs and powertop This suggests the issue may be related to SATA port enumeration or libata power-management handling in newer kernels. Expected behavior: The ability to enable SATA Link Power Management on all SATA hosts should be restored, allowing the system to enter deeper package C-states and return to previous idle power levels. Best regards, Wolf ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [REGRESSION] libata: SATA LPM forcibly disabled on Intel Raptor Lake since Linux 6.14. 2026-01-06 19:57 [REGRESSION] libata: SATA LPM forcibly disabled on Intel Raptor Lake since Linux 6.14 wolf @ 2026-01-07 10:14 ` Niklas Cassel 2026-01-07 10:19 ` Damien Le Moal 0 siblings, 1 reply; 6+ messages in thread From: Niklas Cassel @ 2026-01-07 10:14 UTC (permalink / raw) To: wolf; +Cc: linux-ide, dlemoal, tj On Tue, Jan 06, 2026 at 08:57:07PM +0100, wolf@yoxt.cc wrote: > Hello, > > I am reporting a power-management regression in libata affecting the Intel > Raptor Lake SATA AHCI Controller, introduced after Linux 6.14. (snip) > and 4 apparent dummy ports might be unexpected? > > Manually setting LPM on the affected hosts fails with: > echo med_power_with_dipm > > /sys/class/scsi_host/host*/link_power_management_policy > -bash: echo: write error: Operation not supported This is most likely because your ports are marked as External / Hotplug capable by BIOS. LPM and Hotplug are mutually exlusive in SATA. So in order allow your ports to detect a hotplug event, LPM cannot be disabled. Things you can do: -Go into your BIOS settings and disable the hot-plugging capability for the ports. -If you don't have such a setting, you can use the mask_port_ext AHCI module parameter. Simply add: ahci.mask_port_ext=<your portmask here> to your kernel command line For more info, see this thread: https://lore.kernel.org/linux-ide/5a74106a-d9db-4e63-b3e6-3857f30a1190@interia.pl/T/ Kind regards, Niklas ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [REGRESSION] libata: SATA LPM forcibly disabled on Intel Raptor Lake since Linux 6.14. 2026-01-07 10:14 ` Niklas Cassel @ 2026-01-07 10:19 ` Damien Le Moal [not found] ` <70a55b1ecd97f30795879994a07764bc@yoxt.cc> 2026-01-07 11:20 ` Niklas Cassel 0 siblings, 2 replies; 6+ messages in thread From: Damien Le Moal @ 2026-01-07 10:19 UTC (permalink / raw) To: Niklas Cassel, wolf; +Cc: linux-ide, tj On 1/7/26 11:14, Niklas Cassel wrote: > On Tue, Jan 06, 2026 at 08:57:07PM +0100, wolf@yoxt.cc wrote: >> Hello, >> >> I am reporting a power-management regression in libata affecting the Intel >> Raptor Lake SATA AHCI Controller, introduced after Linux 6.14. > > (snip) > >> and 4 apparent dummy ports might be unexpected? >> >> Manually setting LPM on the affected hosts fails with: >> echo med_power_with_dipm > >> /sys/class/scsi_host/host*/link_power_management_policy >> -bash: echo: write error: Operation not supported This will not work with the dummy ports. Can you do that successfully with the valid ports ? > > This is most likely because your ports are marked as External / Hotplug > capable by BIOS. I do not think so. There is no "ext" advertized in the log for the valid ports. But still worth trying to see if the BIOS has a hotplug option and disable it if it does. > > LPM and Hotplug are mutually exlusive in SATA. > So in order allow your ports to detect a hotplug event, LPM cannot be > disabled. > > > Things you can do: > -Go into your BIOS settings and disable the hot-plugging capability for the > ports. > -If you don't have such a setting, you can use the mask_port_ext AHCI module > parameter. Simply add: > ahci.mask_port_ext=<your portmask here> to your kernel command line > > > For more info, see this thread: > https://lore.kernel.org/linux-ide/5a74106a-d9db-4e63-b3e6-3857f30a1190@interia.pl/T/ > > > Kind regards, > Niklas -- Damien Le Moal Western Digital Research ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <70a55b1ecd97f30795879994a07764bc@yoxt.cc>]
* Re: [REGRESSION] libata: SATA LPM forcibly disabled on Intel Raptor Lake since Linux 6.14. [not found] ` <70a55b1ecd97f30795879994a07764bc@yoxt.cc> @ 2026-01-07 10:38 ` Damien Le Moal 0 siblings, 0 replies; 6+ messages in thread From: Damien Le Moal @ 2026-01-07 10:38 UTC (permalink / raw) To: wolf, linux-ide@vger.kernel.org, Niklas Cassel On 1/7/26 11:28, wolf@yoxt.cc wrote: > On 2026-01-07 11:19, Damien Le Moal wrote: >> On 1/7/26 11:14, Niklas Cassel wrote: >>> On Tue, Jan 06, 2026 at 08:57:07PM +0100, wolf@yoxt.cc wrote: >>>> Hello, >>>> >>>> I am reporting a power-management regression in libata affecting the >>>> Intel >>>> Raptor Lake SATA AHCI Controller, introduced after Linux 6.14. >>> >>> (snip) >>> >>>> and 4 apparent dummy ports might be unexpected? >>>> >>>> Manually setting LPM on the affected hosts fails with: >>>> echo med_power_with_dipm > >>>> /sys/class/scsi_host/host*/link_power_management_policy >>>> -bash: echo: write error: Operation not supported >> >> This will not work with the dummy ports. Can you do that successfully >> with the >> valid ports ? >> >>> >>> This is most likely because your ports are marked as External / >>> Hotplug >>> capable by BIOS. >> >> I do not think so. There is no "ext" advertized in the log for the >> valid ports. >> But still worth trying to see if the BIOS has a hotplug option and >> disable it if >> it does. >> >>> >>> LPM and Hotplug are mutually exlusive in SATA. >>> So in order allow your ports to detect a hotplug event, LPM cannot be >>> disabled. >>> >>> >>> Things you can do: >>> -Go into your BIOS settings and disable the hot-plugging capability >>> for the >>> ports. >>> -If you don't have such a setting, you can use the mask_port_ext AHCI >>> module >>> parameter. Simply add: >>> ahci.mask_port_ext=<your portmask here> to your kernel command line >>> >>> >>> For more info, see this thread: >>> https://lore.kernel.org/linux-ide/5a74106a-d9db-4e63-b3e6-3857f30a1190@interia.pl/T/ >>> >>> >>> Kind regards, >>> Niklas > > Hello Damien, > > I can apply med_power_with_dipm without error successfully to 4 out of > the 8 available. > > /sys/class/scsi_host/host0 > /sys/class/scsi_host/host1 > /sys/class/scsi_host/host2 > /sys/class/scsi_host/host3 > - these do not work, those give an error. Yep, that is expected since these are dummy ports. So all good. These come from the adapter indicating that the ports are not actually physical ones. I wonder if something is off here. How many SATA plugs does your main board has ? Only 4 ? More ? -- Damien Le Moal Western Digital Research ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [REGRESSION] libata: SATA LPM forcibly disabled on Intel Raptor Lake since Linux 6.14. 2026-01-07 10:19 ` Damien Le Moal [not found] ` <70a55b1ecd97f30795879994a07764bc@yoxt.cc> @ 2026-01-07 11:20 ` Niklas Cassel 2026-01-07 15:16 ` Damien Le Moal 1 sibling, 1 reply; 6+ messages in thread From: Niklas Cassel @ 2026-01-07 11:20 UTC (permalink / raw) To: Damien Le Moal; +Cc: wolf, linux-ide On Wed, Jan 07, 2026 at 11:19:42AM +0100, Damien Le Moal wrote: > > > > This is most likely because your ports are marked as External / Hotplug > > capable by BIOS. > > I do not think so. There is no "ext" advertized in the log for the valid ports. > But still worth trying to see if the BIOS has a hotplug option and disable it if > it does. Good catch. One thing that caught my eye: [ 1.433187] ata6.00: ATAPI: PIONEER BD-RW BDR-S12JX, 1.01, max UDMA/100 [ 1.433272] ata5.00: ATAPI: PIONEER BD-RW BDR-S12JX, 1.01, max UDMA/100 We've had so many problems with PIONEER... So, since we concluded that you don't have any ports marked as External, to get deeper sleep states, all SATA ports will need to be in a power saving state. Ports that don't have any device connected will get powered off, so they are no problem. For LPM to work, you need to use either HIPM (host-initiated) or DIPM (device initiated). You can have both enabled, but the device needs to support one of them to enter a power saving state. I think the problem is: [ 3.010059] ata8.00: ATA-11: ST16000NM000J-2TW103, SN06, max UDMA/133 [ 3.010079] ata7.00: ATA-11: ST16000NM000J-2TW103, SN06, max UDMA/133 [ 3.012748] ata6.00: ATAPI: PIONEER BD-RW BDR-S12JX, 1.01, max UDMA/100 [ 3.012779] ata5.00: ATAPI: PIONEER BD-RW BDR-S12JX, 1.01, max UDMA/100 [ 3.061873] ata8.00: Features: DIPM NCQ-sndrcv [ 3.065319] ata7.00: Features: DIPM NCQ-sndrcv The ST drives advertise support for DIPM, so these two ports should enter a lower power state. For the PIONEER optical drives however, we don't seem to get any "Features: " print at all. My guess is that the support neither HIPM nor DIPM, and thus stops the whole system from entering a lower power state. What I think happens: For a device that does not support HIPM, we will clear flag ATA_LPM_HIPM from hints: https://github.com/torvalds/linux/blob/v6.19-rc4/drivers/ata/libata-eh.c#L2168-L2169 If flag ATA_LPM_HIPM is not set, we will disable HIPM (ALPE) for the port: https://github.com/torvalds/linux/blob/v6.19-rc4/drivers/ata/libahci.c#L835-L847 Thus the HBA will never tell the device to enter a low power state. (And if DIPM is not supported, the device itself will never enter a low power state.) Questions: -Why was this not a problem on older kernels? If you are willing try some patches from us, we could give you a patch with more debug prints, to show for each device, when we {enable,disable} {HIPM,DIPM}. -Why don't we get the Features: print for ATAPI devices? We probably need something like this: diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index fc250b494ce3..a8af200ac24f 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -3161,11 +3161,13 @@ int ata_dev_configure(struct ata_device *dev) /* print device info to dmesg */ if (print_info) ata_dev_info(dev, - "ATAPI: %s, %s, max %s%s%s%s\n", + "ATAPI: %s, %s, max %s%s%s%s%s%s\n", modelbuf, fwrevbuf, ata_mode_string(xfer_mask), cdb_intr_string, atapi_an_string, - dma_dir_string); + dma_dir_string, + ata_id_has_hipm(dev->id) ? " HIPM" : "", + ata_id_has_dipm(dev->id) ? " DIPM" : ""); } /* determine max_sectors */ Kind regards, Niklas ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [REGRESSION] libata: SATA LPM forcibly disabled on Intel Raptor Lake since Linux 6.14. 2026-01-07 11:20 ` Niklas Cassel @ 2026-01-07 15:16 ` Damien Le Moal 0 siblings, 0 replies; 6+ messages in thread From: Damien Le Moal @ 2026-01-07 15:16 UTC (permalink / raw) To: Niklas Cassel; +Cc: wolf, linux-ide On 1/7/26 12:20, Niklas Cassel wrote: > I think the problem is: > > [ 3.010059] ata8.00: ATA-11: ST16000NM000J-2TW103, SN06, max UDMA/133 > [ 3.010079] ata7.00: ATA-11: ST16000NM000J-2TW103, SN06, max UDMA/133 > [ 3.012748] ata6.00: ATAPI: PIONEER BD-RW BDR-S12JX, 1.01, max UDMA/100 > [ 3.012779] ata5.00: ATAPI: PIONEER BD-RW BDR-S12JX, 1.01, max UDMA/100 > [ 3.061873] ata8.00: Features: DIPM NCQ-sndrcv > [ 3.065319] ata7.00: Features: DIPM NCQ-sndrcv > > The ST drives advertise support for DIPM, so these two ports should enter > a lower power state. > > > For the PIONEER optical drives however, we don't seem to get any "Features: " > print at all. My guess is that the support neither HIPM nor DIPM, and thus > stops the whole system from entering a lower power state. > > > What I think happens: > > For a device that does not support HIPM, we will clear flag ATA_LPM_HIPM from > hints: > https://github.com/torvalds/linux/blob/v6.19-rc4/drivers/ata/libata-eh.c#L2168-L2169 > > If flag ATA_LPM_HIPM is not set, we will disable HIPM (ALPE) for the port: > https://github.com/torvalds/linux/blob/v6.19-rc4/drivers/ata/libahci.c#L835-L847 > > Thus the HBA will never tell the device to enter a low power state. > (And if DIPM is not supported, the device itself will never enter a low > power state.) > > > Questions: > -Why was this not a problem on older kernels? > > If you are willing try some patches from us, we could give you a patch with more > debug prints, to show for each device, when we {enable,disable} {HIPM,DIPM}. > > > -Why don't we get the Features: print for ATAPI devices? > > We probably need something like this: Before doing this, one simple test to do would be to unplug the 2 ATAPI devices (CD/DVD drives) and reboot to see if LPM works then. > > diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c > index fc250b494ce3..a8af200ac24f 100644 > --- a/drivers/ata/libata-core.c > +++ b/drivers/ata/libata-core.c > @@ -3161,11 +3161,13 @@ int ata_dev_configure(struct ata_device *dev) > /* print device info to dmesg */ > if (print_info) > ata_dev_info(dev, > - "ATAPI: %s, %s, max %s%s%s%s\n", > + "ATAPI: %s, %s, max %s%s%s%s%s%s\n", > modelbuf, fwrevbuf, > ata_mode_string(xfer_mask), > cdb_intr_string, atapi_an_string, > - dma_dir_string); > + dma_dir_string, > + ata_id_has_hipm(dev->id) ? " HIPM" : "", > + ata_id_has_dipm(dev->id) ? " DIPM" : ""); > } > > /* determine max_sectors */ > > > > Kind regards, > Niklas -- Damien Le Moal Western Digital Research ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-01-07 15:16 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-06 19:57 [REGRESSION] libata: SATA LPM forcibly disabled on Intel Raptor Lake since Linux 6.14 wolf
2026-01-07 10:14 ` Niklas Cassel
2026-01-07 10:19 ` Damien Le Moal
[not found] ` <70a55b1ecd97f30795879994a07764bc@yoxt.cc>
2026-01-07 10:38 ` Damien Le Moal
2026-01-07 11:20 ` Niklas Cassel
2026-01-07 15:16 ` Damien Le Moal
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox