SATA hotplug je už nějakou dobu nefunkční

SATA hotplug je už nějakou dobu nefunkční
« kdy: 29. 12. 2022, 20:05:19 »
Zdravím,
celkem spokojeně jsem používat kdysi SATA hotplug. Připojoval jsem přes eSATA kabel jak zálohovací box s diskem, tak různé disky co se mi doma válejí. Zpočátku to chodilo úplně plug & play. Pak v nějaký moment někdo udělal asi v kernelu změnu a bylo nutné volat rescan-scsi-bus.sh, nebo jiný skript, který vyvolal ohledání sběrnice a disk to našlo. Už před několika měsíci jsem zjistil, že to už chodit přestalo a nový disk připojím jedině přes reboot systému. Neměl jsem dost silnou motivaci hledat co a jak.
Dneska jsem se začal trochu více snažit a hledal. Narazil jsem na

https://bbs.archlinux.org/viewtopic.php?id=279247 a odkaz na https://wiki.archlinux.org/title/Power_management#SATA_Active_Link_Power_Management

Jako dobře, beru že za nějakou úsporu nějakého wattu stojí za to hodit hotplug SATA přes palubu, protože běžní uživatelé to až tak moc nepoužívají. Ale bylo by fajn, kdyby to šlo nějak přepnout na max perf a mít možnost si disky zapřehazovat.

Nicméně s parametrem ahci.mobile_lpm_policy na kernel cmdline jsem nějak neuspěl. Nakonec jsem zjistil, že se to dá při runtime možná přepnout, ale hotplug stále nic.  :(

Kód: [Vybrat]
bobek:~# for x in /sys/class/scsi_host/host*/link_power_management_policy; do echo max_performance >$x; done
bobek:~# cat /sys/class/scsi_host/host*/link_power_management_policy
max_performance
max_performance
max_performance
max_performance
max_performance

ale furt to ne-hotpluguje... Řešíte to prosím taky někdo?
Já to teď zkouším na Dell Latitude E6540 - šuplíček HDD místo CDROMky a přes dockinu eSATA port...
« Poslední změna: 29. 12. 2022, 20:56:57 od Petr Krčmář »


Re:SATA hotplug - už nějakou dobu nefunkční...
« Odpověď #1 kdy: 29. 12. 2022, 20:43:54 »
Tak jsem ještě hledal a na konci
https://forums.gentoo.org/viewtopic-t-1118384-start-0.html
je odpověď, že uživatel zkusil měnit tunables v powertop. Tak jsem ho pustil a narazil ještě na:

Kód: [Vybrat]
Runtime PM for port ata2 of PCI device: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]

A hurá - disk v šuplíčku HDD-bay na místě CD-ROMky se rozvrčel a v dmesg se objevil bez rescanu scsi sběrnice...

Kód: [Vybrat]
Enable SATA link power management for hostX

Takže nakonec dobrý  :)  Ještě se zamyslím, jestli to zapínat takhle přes powertop, nebo si tam na to napsat skript...
Tak snad to někomu pomůže

k3dAR

  • *****
  • 2 837
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #2 kdy: 29. 12. 2022, 21:48:06 »
pokud v powertop si v tunable u toho ata2 mel BAD a prepl na Good, tak to umi automaticky:
powertop --auto-tune

pripadne "jemnejsi" doladeni vseho kolem power managementu lze pres tlp

Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #3 kdy: 30. 12. 2022, 08:36:20 »
pokud v powertop si v tunable u toho ata2 mel BAD a prepl na Good, tak to umi automaticky:
powertop --auto-tune
No právě naopak. Je třeba to překlopit na Bad.
Prostě PM tomu SATA hotplug škodí - nefunguje.
Ale dalo by se to použít na vrácení zpět, když skonči diskotéka a člověk chce s notebookem odejít z elektriky bez rebootu...

Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #4 kdy: 30. 12. 2022, 12:10:02 »
Pokud chcete disk připojit, stačí prostě tato sekvence. Vypne se PM na SATA portu X (tam dáte číslo, co odpovídá eSATA portu). Pak se port oskenuje (najde disk). To je v podstatě ten rescan-scsi-bus, ale jen ten jeden port. No a pak se zase zapne PM na tom portu, což je to, co dělá powerop. To šetří energii, ale brání to tomu hot-plugu.

Nastavení ALPM nemá na hot-plug žádný vliv.

Kód: [Vybrat]
echo on | sudo tee /sys/class/scsi_host/hostX/device/power/control
echo "- - -" | sudo tee /sys/class/scsi_host/hostX/scan
echo auto | sudo tee /sys/class/scsi_host/hostX/device/power/control

Ještě doplním, že při odebírání disku je samozřejmě dobře odmountovat, ale pak i "vyhodit" samotné zařízení sdY pomocí

Kód: [Vybrat]
echo 1 > /sys/block/sdY/device/delete

A pak až odpojit.


Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #5 kdy: 31. 12. 2022, 00:55:02 »
Pokud chcete disk připojit, stačí prostě tato sekvence. Vypne se PM na SATA portu X (tam dáte číslo, co odpovídá eSATA portu). Pak se port oskenuje (najde disk). To je v podstatě ten rescan-scsi-bus, ale jen ten jeden port. No a pak se zase zapne PM na tom portu, což je to, co dělá powerop. To šetří energii, ale brání to tomu hot-plugu.

Nastavení ALPM nemá na hot-plug žádný vliv.

Kód: [Vybrat]
echo on | sudo tee /sys/class/scsi_host/hostX/device/power/control
echo "- - -" | sudo tee /sys/class/scsi_host/hostX/scan
echo auto | sudo tee /sys/class/scsi_host/hostX/device/power/control

Ještě doplním, že při odebírání disku je samozřejmě dobře odmountovat, ale pak i "vyhodit" samotné zařízení sdY pomocí

Kód: [Vybrat]
echo 1 > /sys/block/sdY/device/delete

A pak až odpojit.
No, ono se to bude asi lišit podle verze kernelu a HW. Já jsem teď na 6.0.12-1 (Debian Sid) a nepomáhalo vypnutí PM jenom na portu. Oni s každou verzí kernelu "vylepšují" zřejmě další ovladače, takže se to s časem mění. (jak v těch odkazovaných fórech psali) Je potřeba shodit PM i na samotném SATA řadiči. V podstatě jsem si tady na to sám odpověděl. Naopak už nemusím dělat ten rescan. Zařízení teď naběhne okamžitě. Jo, to odpojení dělám léta. Disk se i vypne, takže je jistota, že se vysypala cache...
Asi je tu prostor pro nějakou komplexnější dokumentaci, možná nějakou utilitku, aby se ten proces sjednotil a zjednodušil.

Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #6 kdy: 31. 12. 2022, 14:09:23 »
No, ono se to bude asi lišit podle verze kernelu a HW. Já jsem teď na 6.0.12-1 (Debian Sid) a nepomáhalo vypnutí PM jenom na portu. Oni s každou verzí kernelu "vylepšují" zřejmě další ovladače, takže se to s časem mění. (jak v těch odkazovaných fórech psali) Je potřeba shodit PM i na samotném SATA řadiči. V podstatě jsem si tady na to sám odpověděl. Naopak už nemusím dělat ten rescan. Zařízení teď naběhne okamžitě. Jo, to odpojení dělám léta. Disk se i vypne, takže je jistota, že se vysypala cache...
Asi je tu prostor pro nějakou komplexnější dokumentaci, možná nějakou utilitku, aby se ten proces sjednotil a zjednodušil.

Možná je rozdíl v HW, mě to funguje na serveru a vy máte notebook. V některých BIOSech ten hot-plug jde zapnout. Myslím to je vidět na AHCI flags, ale který to je konkrétně teď nevím

Kód: [Vybrat]
$ dmesg | grep -i ahci
[  +0.000004] ahci 0000:00:1f.2: flags: 64bit ncq sntf ilck stag pm led clo only pmp pio slum part ems deso sadm sds sxs apst

k3dAR

  • *****
  • 2 837
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #7 kdy: 31. 12. 2022, 16:28:13 »
[...]Prostě PM tomu SATA hotplug škodí - nefunguje.
Ale dalo by se to použít na vrácení zpět, když skonči diskotéka a člověk chce s notebookem odejít z elektriky bez rebootu...
tak jestli eSATA chces jen kdyz ses na napajeni/stole a na baterku ne, tak zkusit to TLP a jeho volby:
Kód: [Vybrat]
AHCI_RUNTIME_PM_ON_AC=off
AHCI_RUNTIME_PM_ON_BAT=auto

EDIT: tedy az zkontrolujes v tom BIOSu zda nemas hotplug vyplej coz teoreticky pretim mohlo jit jestli to jadro obchazelo a ten dodrzuje?

Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #8 kdy: 31. 12. 2022, 18:10:24 »
Hot-plug si myslím v biosu notebooku nebude. Jedině by to bylo speciálně pro tu dokovací stanici?

k3dAR

  • *****
  • 2 837
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #9 kdy: 31. 12. 2022, 18:27:30 »
za kouknuti nic neda :-) ja treba v NB (T430s) hotplug enabled/disabled mam, ALE v sekci Advanced ktera je by default skryta a ja mam modlej bios :)

Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #10 kdy: 31. 12. 2022, 22:52:57 »
za kouknuti nic neda :-) ja treba v NB (T430s) hotplug enabled/disabled mam, ALE v sekci Advanced ktera je by default skryta a ja mam modlej bios :)

To bylo první co jsem našel - že to může být vyplé v BIOSu. Prošmejdil jsem na Latitude BIOS a nic jsem nenašel. Pak jsem zkoušel co bylo na těch fórech a úspěch se dostavil až při tom powertopu a vypnutí PM jak na SATA kontroleru samotném, tak na těch konkrétních linkách. A nešlo to jak na eSATA portu do dockině, tak na konektoru kde je CDROM mechanika. Ten eSATA přes dockinu umí asi jenom 3Gbps, interní bay/CDROM má SATA 6Gbps, takže SSD pokud je 2.5" je lepší strčit do toho šuplíčku.

Ale jak se píše - eSATA je do budoucna mrtvé. Já jsem konzerva a vyhovuje mi. Nechávám tuhle starou řadu Latitude, za novinkami se neženu. Těm novým krámům kde se už jede jenom na USB moc nefandím. Redukce SATA/USB3 z ALI sice nějak funguje, ale spolehlivost je nižší, než u SATA (moje zkušenost s tím co mám z ALI). Občas se prostě USB odpojí, když se tomu dává pořádný kotel - kopírují se terabajty... Ale kolega má podobnou zkušenost s externím boxem z našich obchodů. Zatím jsem rád, že eSATA mám. Teď jsem happy, že mám zase hotplug eSATA :-)

k3dAR

  • *****
  • 2 837
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #11 kdy: 31. 12. 2022, 23:09:20 »
a koukal si na to TLP? pripadne misto pousteni powertopu, kdyz v nem menis BAD<->Good, tak to nahore pise co to provadi za prikaz, takze si to muzes hodit do skriptu a dat na hotkey ;-)

Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #12 kdy: 01. 01. 2023, 20:21:35 »
a koukal si na to TLP? pripadne misto pousteni powertopu, kdyz v nem menis BAD<->Good, tak to nahore pise co to provadi za prikaz, takze si to muzes hodit do skriptu a dat na hotkey ;-)

Zkusil jsem tlp nainstalovat. Je to zřejmě něco podobného, jako jsem kdysi používal laptop-mode-tools. Já už si přesně nepamatuji, proč jsem se toho posléze zbavil, ale mám pocit, že to nic zajímavého už stejně nepřinášelo. Asi mi nevadí si to ručně vypnout. Ano, dal by se na to napsat skript, ale asi by to byl skript pro konkrétní HW. Udělat tohle nějak komplexně je už složitější úloha. Ale díky za zmínku tlp. Budu to mít na paměti, kdybych chtěl optimalizovat spotřebu.
Poslední dobou mám raději věci primitivně jednoduché. Automatizaci už nevyhledávám. Zapomenu co jsem kde nastavil a ještě mi to bude dělat nějakou neplechu.  :D

Myslím, že to můžeme považovat za vyřešené.

Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #13 kdy: 02. 01. 2023, 10:03:18 »
Tak jsem po rebootu zjistil, že to není tak easy. V powertopu nejde nastavit link_power_management_policy klepnutím, tak jsem nakonec skript přeci jen spáchal. Tak ho sem dám pro inspiraci. Zvažoval jsem strčit ho třeba na github, ale to za to asi nestojí...

Kód: [Vybrat]
#!/bin/sh

usage() {
echo "sata-hotplug {on|off}" >&2
exit 1
}

echorun() {
local cmd="$1"
echo "$cmd"
eval "$cmd"
}


test $# -eq 1 || usage
case $1 in
on|1)
lpmp=max_performance
pctrl=on
;;
off|0)
lpmp=med_power_with_dipm
pctrl=auto
;;
*)
usage
;;
esac

for x in /sys/class/scsi_host/host*/link_power_management_policy
do
echorun "echo ${lpmp} > $x"
done

sata_device=$(lspci -D|grep SATA)
bus_addr=${sata_device%% *}
for port in /sys/bus/pci/devices/${bus_addr}/ata?
do
echorun "echo ${pctrl} > ${port}/power/control"
done
echorun "echo ${pctrl} > /sys/bus/pci/devices/${bus_addr}/power/control"

Použití je tedy celkem jednoduché

Kód: [Vybrat]
bobek:~# sata-hotplug on
echo max_performance > /sys/class/scsi_host/host0/link_power_management_policy
echo max_performance > /sys/class/scsi_host/host1/link_power_management_policy
echo max_performance > /sys/class/scsi_host/host2/link_power_management_policy
echo max_performance > /sys/class/scsi_host/host3/link_power_management_policy
echo max_performance > /sys/class/scsi_host/host4/link_power_management_policy
echo on > /sys/bus/pci/devices/0000:00:1f.2/ata1/power/control
echo on > /sys/bus/pci/devices/0000:00:1f.2/ata2/power/control
echo on > /sys/bus/pci/devices/0000:00:1f.2/ata3/power/control
echo on > /sys/bus/pci/devices/0000:00:1f.2/ata4/power/control
echo on > /sys/bus/pci/devices/0000:00:1f.2/ata5/power/control
echo on > /sys/bus/pci/devices/0000:00:1f.2/power/control
bobek:~#
bobek:~#
bobek:~#
bobek:~# sata-hotplug off
echo med_power_with_dipm > /sys/class/scsi_host/host0/link_power_management_policy
echo med_power_with_dipm > /sys/class/scsi_host/host1/link_power_management_policy
echo med_power_with_dipm > /sys/class/scsi_host/host2/link_power_management_policy
echo med_power_with_dipm > /sys/class/scsi_host/host3/link_power_management_policy
echo med_power_with_dipm > /sys/class/scsi_host/host4/link_power_management_policy
echo auto > /sys/bus/pci/devices/0000:00:1f.2/ata1/power/control
echo auto > /sys/bus/pci/devices/0000:00:1f.2/ata2/power/control
echo auto > /sys/bus/pci/devices/0000:00:1f.2/ata3/power/control
echo auto > /sys/bus/pci/devices/0000:00:1f.2/ata4/power/control
echo auto > /sys/bus/pci/devices/0000:00:1f.2/ata5/power/control
echo auto > /sys/bus/pci/devices/0000:00:1f.2/power/control

Takto mi to funguje bez nutnosti provádět rescan sběrnice.

Re:SATA hotplug je už nějakou dobu nefunkční
« Odpověď #14 kdy: 02. 01. 2023, 11:10:43 »
no a nefunguje to taky bez toho nastavování link_power_management_policy?

a asi není potřeba přepínat všechny porty, jen ten jeden, na kterém je to e-sata a pak to nadřazený zařízení