Bug 51478

Summary: Ноутбук ASUS UX3405MA Meteor Lake MTL не работает переход по pc-state. А так же сон.
Product: Sisyphus Reporter: Toxblh <toxblh>
Component: kernel-image-un-defAssignee: Vitaly Chikunov <vt>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: kernelbot, placeholder, vt
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
fedora pc state
none
fedora watt
none
эндевор pc state
none
эндевор watt
none
альт pc state
none
альт watt
none
альт PCM
none
статья по ссылке в посте
none
S0ix self test на un-def ядре.
none
S0ix test 6.11rc7
none
lspci -v вывод на Fedora в Live
none
lspci -v вывод 6.11rc7
none
Макбук. Сайд тест
none
pc10 после обновления none

Description Toxblh 2024-09-14 16:41:38 MSK
Created attachment 16835 [details]
fedora pc state

В продолжение https://bugzilla.altlinux.org/show_bug.cgi?id=51358 

Воспроизводится на всех ядрах, включая новые. 
На альт не работает переход по пакетным состояниям процессора ниже C2, часто просто сидим в C0. (Не путать с обычными C-State, они работают, это именно HW Pkg States) 

Проверил на других дистрах. Там процессор проваливается ниже по данным powertop. На альт зависает на C0-C2 и всё. 

Приложу, как это выглядит на других дистрах в Live.
Fedora и Endovour
У федора вообще отлично улетает в PC-10
На эндевор больше сидит в PC-8, что тоже не плохо, но хуже PC10 для сберегайки.

Это всё свежие образы на 3 сентября в live + установка powertop для показа, кроме альт тут установленная регулярка гнома.

(возможно стоит проверить на Workstation, отпишусь, как проверю)

Возможно, как побочный эффект, не уходит в глубокий сон. За ночь улетает порядка 30%, а не 3-5%, как на Fedora.
Comment 1 Toxblh 2024-09-14 16:42:19 MSK
Created attachment 16836 [details]
fedora watt
Comment 2 Toxblh 2024-09-14 16:42:46 MSK
Created attachment 16837 [details]
эндевор pc state
Comment 3 Toxblh 2024-09-14 16:43:44 MSK
Created attachment 16838 [details]
эндевор watt
Comment 4 Toxblh 2024-09-14 16:44:05 MSK
Created attachment 16839 [details]
альт pc state
Comment 5 Toxblh 2024-09-14 16:44:28 MSK
Created attachment 16840 [details]
альт watt
Comment 6 Toxblh 2024-09-14 16:44:56 MSK
Created attachment 16841 [details]
альт PCM
Comment 7 Toxblh 2024-09-14 17:25:22 MSK
Сказать, что это ACPI не такая какая-то - тут на других дистрах работает даже в live.

С энергосбережением есть вопросы изначально у меня с альтом. Ещё с macbook 2013 года. На энедвор тогда у меня доходил до конечного для него PC7, как в маке
https://t.me/toxblh_linux/601

А вот на alt только до PC6 и никак ниже https://t.me/alt_linux/351946 ещё давно писал. Но баг не завёл, это да.

У меня если что, есть статья сохранена с того сайта, что по первой ссылке в посте. Скину следующим вложением.
Comment 8 Toxblh 2024-09-14 17:25:47 MSK
Created attachment 16842 [details]
статья по ссылке в посте
Comment 9 Toxblh 2024-09-14 17:35:10 MSK
Сокращу время чтения. Основное, что сделал человек в статье 

1. Активация C-State - и это у нас сделано вроде как, судя по конфигурации.
[X] Cpuidle Driver for Intel Processors (CONFIG_INTEL_IDLE)

2. Уменьшил частоту таймера с 1000Hz до 250Hz:
Processor type and features
--->
[*] Idle dynticks system (tickless idle)
[*] High Resolution Timer Support
[*] HPET Timer Support
Timer frequency (250 HZ)
--->
Comment 10 Vitaly Chikunov 2024-09-14 20:21:46 MSK
Скорее всего, у них какой-то софт управляет конфигурацией системы, который у нас не запущен. Например tuned-adm profile powersave, cpupower frequency-set -g powersave. Еще варианты, которыми не пользовался: tlp, auto-cpufreq, laptop-mode-tools, powertop --auto-tune.
Comment 11 Toxblh 2024-09-14 21:54:52 MSK
Ну я как и прошлый таск. Попробую найти, что именно/ Чтобы не потерять хронологию, для себя даже и для истории. Может поможет при дублирующих в будущем так же. 

tlp пробовал уже. Не помогло.
powertop тоже не помог.

Я в ближайшую неделю-две попробую глубже копнуть, чтобы понять. Чего такое есть в Fedora, как в системе, которая лучше всего прям погружает ноут в PC10. И чего нет у нас. 

Там ещё есть нюанс, ну это чисто уже спортивный интерес. У меня же 2 ноута этот вот asus и macbook 2013 года. Возможно чисто специфика apple, но интересное - на macos бук, ведёт себя интересно. Что он прям ну очень старается работать на одном ядре всегда. Максимально убивая вторую "плитку" с PC7, что равна PC10 на новом - ядро полностью потушено с кешами. Ему ещё HT интела в этом помогает, условно живые 2 ядра(1 физ) только. Второе физ ядро там просыпается по большой необходимости. Отсюда волшебные цифры время жизни макбкуов. Это ещё на acer 5315 проверял в далёких 2010 годах. Что хакинтош жил на час больше в среднем, чем винда или линь. 

Вообщем пока можно на недельку забыть о баге. Я сам почитаю пока по теме :) 
Понакидываю сюда, чего нашёл
Comment 12 Toxblh 2024-09-14 22:27:00 MSK
Отличный пост https://discussion.fedoraproject.org/t/fedora-only-allows-up-to-c3-pkg-c-states-all-other-distros-on-same-hardware-allow-c10/105270/14

https://bugzilla.redhat.com/show_bug.cgi?id=2264606#c8 помог понять, что NVMe не засыпает 

(Требует установки acpica)

sudo ./s0ix-selftest-tool.sh -s


The link power management state of PCIe bridge: 0000:00:06.0 is not expected. 
which is expected to be L1.1 or L1.2, or user would run this script again.


The L1SubCap of the failed 0000:00:06.0 is:
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+

The L1SubCtl1 of the failed 0000:00:06.0 is:
		L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1-


Checking PCI Devices tree diagram:
-[0000:00]-+-00.0  Intel Corporation Device 7d01
           +-02.0  Intel Corporation Meteor Lake-P [Intel Arc Graphics]
           +-04.0  Intel Corporation Meteor Lake-P Dynamic Tuning Technology
           +-06.0-[01]----00.0  Micron Technology Inc 2400 NVMe SSD (DRAM-less)
Comment 14 Toxblh 2024-09-15 00:17:52 MSK
Прошёл путь от просмотра USB устройств которые активны сейчас
  grep -rni "active" /sys/bus/usb/devices/*/power/runtime_status

/sys/bus/usb/devices/1-9:1.0/power/runtime_status:1:active
/sys/bus/usb/devices/1-9:1.2/power/runtime_status:1:active
/sys/bus/usb/devices/1-9/power/runtime_status:1:active
/sys/bus/usb/devices/usb1/power/runtime_status:1:active


Смотрим, кто такие 
  sudo lsusb -t

/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 009: Dev 002, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 009: Dev 002, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 009: Dev 002, If 2, Class=Video, Driver=uvcvideo, 480M
    |__ Port 009: Dev 002, If 3, Class=Video, Driver=uvcvideo, 480M
    |__ Port 009: Dev 002, If 4, Class=Application Specific Interface, Driver=[none], 480M
    |__ Port 010: Dev 003, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 010: Dev 003, If 1, Class=Wireless, Driver=btusb, 12M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/2p, 20000M/x2
/:  Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/1p, 480M
/:  Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/3p, 20000M/x2

1 - 9 у нас прям ясно-понятно камера.

Смотрим, кто сейчас использует её
  lsof /dev/video*

lsof: WARNING: can't stat() vfat file system /boot/efi
      Output information may be incomplete.
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse.portal file system /root/.cache/doc
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /root/.gvfs
      Output information may be incomplete.
COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
wireplumb 3209 toxblh   50u   CHR   81,0      0t0  933 /dev/video0
wireplumb 3209 toxblh   52u   CHR   81,2      0t0  936 /dev/video2

Ну вот и попався.
wireplumber 

Ситуация даже известная
https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2669

И кажется это поправят в новой версии libcamera 
https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2669#note_2550125
Comment 15 Toxblh 2024-09-15 00:31:38 MSK
mkdir -p ~/.config/wireplumber/wireplumber.conf.d && echo -e "wireplumber.profiles = {\n  main = {\n    monitor.libcamera = disabled\n  }\n}" > ~/.config/wireplumber/wireplumber.conf.d/10-disable-camera.conf && systemctl --user restart wireplumber

Выключаем мониторинг, делаем под user'ом.

Радостная пустота тут
grep -rni "active" /sys/bus/usb/devices/*/power/runtime_status  

-1W в powertop 

... И всё ещё мы сидим в С2 и не глубже.
Comment 16 Toxblh 2024-09-15 02:31:32 MSK
Created attachment 16845 [details]
S0ix self test на un-def ядре.

Из странного на ядре 6.11 при наличии https://git.altlinux.org/gears/k/kernel-image-6.11.git?p=kernel-image-6.11.git;a=blob;f=config;h=a42842e8cda2c166095ced736f21fd1879de7b8b;hb=HEAD#l8511 

флага, пустой вывод 
  zcat /proc/config.gz | grep CONFIG_INTEL_PMC_CORE

И нет модуля в папках
  find /lib/modules/$(uname -r) -name 'intel_pmc_core*'

Проверил в un-def, всё есть. 

Но PMC это часть.

Нашёл, что есть CONFIG_SPI_INTEL_PCI флаг, которого у нас нет. 
Буду пробовать собрать с ним.

Основная проблема у меня NVMe не засыпает и стопорит сон, но возможно не только его
Comment 17 Toxblh 2024-09-15 02:34:16 MSK
Хотя сильно врядтли SPI флеш, как-то связан вообще с этим
Comment 18 Vitaly Chikunov 2024-09-15 03:04:19 MSK
CONFIG_INTEL_PMC_CORE=m верну при следующей сборке ядер, спасибо.
Comment 19 Toxblh 2024-09-15 04:20:05 MSK
> верну при следующей сборке ядер
А в какой момент оно пропадает. Я посмотрел на свою сборку и учитывая, что в config есть, в какой момент его удаляет? 

----

У меня тут NPU есть.
А он сидит на той же PCI шине где и NVMe. 

Решил глянуть, что за драйвера используются в fedora и нашлись драйвера, которых нет.  

00:0a.0 Signal processing controller: Intel Corporation Device 7d0d (rev 01)
	Subsystem: ASUSTeK Computer Inc. Device 1a63
	Flags: fast devsel, IOMMU group 7
	Memory at 5020240000 (64-bit, non-prefetchable) [size=256K]
	Capabilities: [70] Express Root Complex Integrated Endpoint, IntMsgNum 0
	Capabilities: [d0] Power Management version 3
	Capabilities: [100] Designated Vendor-Specific: Vendor=8086 ID=0002 Rev=1 Len=16 <?>
	Capabilities: [110] Designated Vendor-Specific: Vendor=8086 ID=0003 Rev=1 Len=16 <?>
	Capabilities: [120] Designated Vendor-Specific: Vendor=8086 ID=0004 Rev=1 Len=16 <?>
	Kernel driver in use: intel_vsec
	Kernel modules: intel_vsec

00:0b.0 Processing accelerators: Intel Corporation Meteor Lake NPU (rev 04)
	Subsystem: ASUSTeK Computer Inc. Device 20bf
	Flags: fast devsel, IOMMU group 8
	Memory at 5018000000 (64-bit, non-prefetchable) [size=128M]
	Memory at 50202e4000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Capabilities: [d0] MSI: Enable- Count=1/1 Maskable+ 64bit+
	Capabilities: [40] Express Root Complex Integrated Endpoint, IntMsgNum 0
	Capabilities: [100] Address Translation Service (ATS)
	Kernel modules: intel_vpu


У нас нет этого:
CONFIG_INTEL_VSEC=m
Comment 20 Toxblh 2024-09-15 04:20:39 MSK
Created attachment 16846 [details]
S0ix test 6.11rc7
Comment 21 Toxblh 2024-09-15 04:21:11 MSK
Created attachment 16847 [details]
lspci -v вывод на Fedora в Live
Comment 22 Toxblh 2024-09-15 04:21:45 MSK
Created attachment 16848 [details]
lspci -v вывод 6.11rc7
Comment 23 Vitaly Chikunov 2024-09-15 04:30:01 MSK
Я включил еще опций для будущего 6.1-rc8
https://git.altlinux.org/people/kernelbot/packages/?p=kernel-image.git;a=shortlog;h=refs/heads/6.11/sisyphus

Та штука пропадала потому что не было CONFIG_INTEL_VSEC
Comment 24 Toxblh 2024-09-15 04:36:33 MSK
Понял. 
Это сейчас хорошо так ядро настроим для новых CPU :)

Ещё заметил 
00:1f.5 Serial bus controller: Intel Corporation Meteor Lake-P SPI Controller (rev 20)
	Subsystem: ASUSTeK Computer Inc. Device 1a63
	Flags: fast devsel, IOMMU group 16
	Memory at 8c100000 (32-bit, non-prefetchable) [size=4K]
	Kernel driver in use: intel-spi
	Kernel modules: spi_intel_pci

Получается этот тоже, хоть и не так важен в целом
CONFIG_SPI_INTEL_PCI
Comment 25 Toxblh 2024-09-15 04:42:27 MSK
Я так понимаю, где то можно зависимости модулей посмотреть. 
А подскажите, где это увидеть можно?

Например тут https://cateee.net/lkddb/web-lkddb/INTEL_PMC_CORE.html не показывал VSEC.
Comment 26 Toxblh 2024-09-15 04:43:53 MSK
Нашёл, он уже требуется для телеметрии CONFIG_INTEL_PMT_TELEMETRY
Понял. Но как построить полное дерево зависимости пока не понял :)
Comment 27 Vitaly Chikunov 2024-09-15 04:45:39 MSK
(In reply to Toxblh from comment #26)
> Нашёл, он уже требуется для телеметрии CONFIG_INTEL_PMT_TELEMETRY

Да.

> Понял. Но как построить полное дерево зависимости пока не понял :)

Никак.
Comment 28 Vitaly Chikunov 2024-09-15 04:51:01 MSK
(In reply to Vitaly Chikunov from comment #27)
> (In reply to Toxblh from comment #26)
> > Понял. Но как построить полное дерево зависимости пока не понял :)
> 
> Никак.

В теории, есть такой софт https://github.com/paulgazz/kmax/ (я им не пользовался), но проще вручную Kconfig файлы смотреть, особенно если зависимости не сложные.
Comment 29 Toxblh 2024-09-16 12:54:19 MSK
Обновился на свеже-собранное 6.11

По сну, успех. Спать он теперь будет, как положено, крепко

Congratulations! Your system achieved the deepest S0ix substate!           
Here is the S0ix substates status: 
Substate   Residency      
S0i2.0     12871          
S0i2.1     24570098       
S0i2.2     25978039       

А вот Pkg-States всё ещё висят на C2 (pc2) и всё тут. 
Буду разбираться.
Comment 30 Vitaly Chikunov 2024-09-17 03:11:58 MSK
Какой cpufreq governor после загрузки на ядрах где PC-8 и PC-10?
Влияет ли если у нас включить такой же?
Comment 31 Toxblh 2024-09-19 15:31:37 MSK
Если руками всё увести в powersave. 
Если совсем не трогать, то пару процентов в pc8 есть и pc6. 

Вечером ещё посижу потыкаюсь. 
У меня предположение, что CPU сам по себе уже нормально ходит по IDLE состояниям пакетным. Но сейчас что-то ещё держит его. Может графика, может NPU этот.
Так как во сне он в PC10 сидит, это по мониторингу видно и спит он теперь, как и положено с минимальным потреблением
Comment 32 Toxblh 2024-09-19 20:26:18 MSK
Created attachment 16873 [details]
Макбук. Сайд тест

Попробовал проверить и на макбуке, достигает ли он конечного состояния и да. Поймал сразу после пробуждения показывает, что он сидит в РС7. Но при обычной работе достичь не может. В случае мака это РС6 40% и никак ниже. 

Пока в состоянии исследования сижу читаю. Информации крайне не много, как настроить работу и как индентифицировать проблемы, чисто какие-то случайны заметки на форумах от интел сотрудников или в багзиле ядра. Но железно, оба ноута сейчас достичь могут предпоследних состояний и висеть там. 

Есть идея посмотреть на разные планировщики ещё и исследую разницу с другими ядрами, благо гит всё помнит.
Comment 33 Toxblh 2024-10-01 01:12:38 MSK
Ушёл в чтение базы и основ, как он нагрузкой управляет. Из всех показателей на Альт все прерывания размазаны по всем ядрам. У меня на обоих ноутах это wifi и nvme сразу всё занимают и по мелочи ещё остальные устройства.

На неделе накачу fedora на ноут и попробую понять, как оно так работает и что там ещё работает, как на системе на который asus хотя бы в pc10 сидел часто. А чем именно это достигнуто было я пока не разобрался. Так как банальные советы с первых страниц гугла не работают. powertop затюнинен. Ядра и устройства все в минимальное потребление установлены и это не помогает. Он зависает равномерно на pc2 pc6 и pc8 по 30% и pc10 0.2%, что крайне мало и его постоянно что-то будит.
Comment 34 Toxblh 2024-10-01 01:36:42 MSK
Created attachment 16933 [details]
pc10 после обновления

Кажется, на этом всё. Обновилась libcamera с патчами. Обновился и PC10 стал адекватно появляться. Технически на этом бага исчерпана :)
Comment 35 Vitaly Chikunov 2024-10-01 02:10:19 MSK
(In reply to Toxblh from comment #34)
> Created attachment 16933 [details]
> pc10 после обновления

На какой версии ядра?
Comment 36 Toxblh 2024-10-01 13:01:52 MSK
(Ответ для Vitaly Chikunov на комментарий #35)

> На какой версии ядра?

Ядро всё то же - 6.11.0 которое последнее в репе. 

То что описал в https://bugzilla.altlinux.org/show_bug.cgi?id=51478#c14 #14 
> И кажется это поправят в новой версии libcamera 
> https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2669#note_2550125

libcamera, ещё держала "открытой" камеру и это видимо было причиной IRQ в большом количестве и не давала уснуть видимо. Несмотря на то, что я "выключал" это в конфиге pipewire. Это исправили в 0.3.2 версии, её и обновил.