LINUX.ORG.RU

Ох уж эта гибридная графика

 , , , ,


0

1

Имеется, значит, ноут. Который по сюжету должен был быть героически спасён от свалки бравым линуксом после прекращения поддержки вин10, но что-то пошло не по сценарию.

Действующие лица:

# lspci | grep "AMD/ATI"
01:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445 / 530/535 / 620/625 Mobile] (rev c3)
04:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series] (rev c4)

Дискретная видеокарта AMD + встроенное видео от них же. Симптомы - фризы системы, занимающий ядро процессора на 100% irq/26-pciehp и ошибки в dmesg такого вида:

amdgpu 0000:01:00.0: Unable to change power state from D3cold to D0, device inaccessible
[drm:atom_op_jump [amdgpu]] *ERROR* atombios stuck in loop for more than 20secs aborting
[drm:amdgpu_atom_execute_table_locked [amdgpu]] *ERROR* atombios stuck executing 645C (len 553, WS 4, PS 0) @ 0x6524
[drm:amdgpu_atom_execute_table_locked [amdgpu]] *ERROR* atombios stuck executing 6200 (len 79, WS 0, PS 8) @ 0x623F
amdgpu 0000:01:00.0: amdgpu: amdgpu asic init failed
amdgpu 0000:01:00.0: amdgpu: 
last message was failed ret is 0
amdgpu: SMU load firmware failed
amdgpu: fw load failed
amdgpu: smu firmware loading failed
amdgpu 0000:01:00.0: amdgpu: amdgpu_device_ip_resume failed (-22).
amdgpu 0000:01:00.0: amdgpu: amdgpu: finishing device.
------------[ cut here ]------------
WARNING: CPU: 0 PID: 74 at drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:631 amdgpu_irq_put+0x9c/0xb0 [amdgpu]
Modules linked in: ccm rfcomm snd_seq_dummy snd_hrtimer qrtr cmac algif_hash algif_skcipher af_alg bnep binfmt_misc nls_iso8859_1 amdgpu snd_sof_amd_acp70 snd_sof_amd_acp63 snd_sof_amd_vangogh snd_sof_amd_rembrandt snd_ctl_led snd_sof_amd_renoir snd_sof_amd_acp snd_hda_codec_realtek snd_sof_pci snd_hda_codec_generic snd_sof_xtensa_dsp snd_hda_scodec_component snd_hda_codec_hdmi snd_sof snd_hda_intel snd_sof_utils snd_intel_dspcfg snd_pci_ps snd_intel_sdw_acpi snd_soc_acpi_amd_match snd_amd_sdw_acpi soundwire_amd soundwire_generic_allocation snd_hda_codec soundwire_bus intel_rapl_msr snd_soc_sdca snd_hda_core rtw88_8723de ee1004 snd_hwdep rtw88_8723d snd_soc_core rtw88_8723x rtw88_pci snd_seq_midi snd_compress amd_atl snd_seq_midi_event ac97_bus rtw88_core snd_pcm_dmaengine snd_rpl_pci_acp6x amdxcp snd_acp_pci gpu_sched intel_rapl_common uvcvideo drm_panel_backlight_quirks snd_acp_legacy_common snd_rawmidi drm_buddy snd_pci_acp6x videobuf2_vmalloc mac80211 uvc btusb snd_seq videobuf2_memops btrtl
 drm_ttm_helper videobuf2_v4l2 snd_pcm edac_mce_amd videobuf2_common btintel rapl snd_seq_device btbcm videodev ttm hp_wmi i2c_piix4 snd_timer btmtk sparse_keymap drm_exec bluetooth wmi_bmof platform_profile mc k10temp snd_pci_acp5x drm_suballoc_helper i2c_smbus snd_rn_pci_acp3x drm_display_helper cfg80211 snd_acp_config snd snd_soc_acpi cec soundcore snd_pci_acp3x libarc4 ccp rc_core i2c_algo_bit i2c_scmi wireless_hotkey acpi_tad input_leds mac_hid serio_raw sch_fq_codel msr parport_pc ppdev lp parport efi_pstore nfnetlink dmi_sysfs ip_tables x_tables autofs4 btrfs blake2b_generic xor raid6_pq dm_mirror dm_region_hash dm_log uas usb_storage polyval_clmulni polyval_generic ghash_clmulni_intel sha256_ssse3 psmouse sha1_ssse3 r8169 ahci libahci realtek video wmi aesni_intel crypto_simd cryptd
CPU: 0 UID: 0 PID: 74 Comm: irq/26-pciehp Not tainted 6.14.0-27-generic #27~24.04.1-Ubuntu
Hardware name: HP HP Laptop 17-ca1xxx/85B4, BIOS F.66 11/22/2023
RIP: 0010:amdgpu_irq_put+0x9c/0xb0 [amdgpu]
Code: 31 f6 31 ff e9 95 e9 dd f4 44 89 e2 48 89 de 4c 89 f7 e8 97 fc ff ff 5b 41 5c 41 5d 41 5e 5d 31 d2 31 f6 31 ff e9 74 e9 dd f4 <0f> 0b b8 ea ff ff ff eb c3 b8 fe ff ff ff eb bc 0f 1f 40 00 90 90
RSP: 0018:ffffb96dc034fb58 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff998a9d100c78 RCX: 0000000000000000
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
RBP: ffffb96dc034fb78 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000001 R14: ffff998a9d100000 R15: 0000000000000001
FS:  0000000000000000(0000) GS:ffff998db1000000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000716de1474000 CR3: 000000015cc44000 CR4: 00000000003506f0
Call Trace:
 <TASK>
 gmc_v7_0_hw_fini+0x1f/0xb0 [amdgpu]
 amdgpu_ip_block_hw_fini+0x23/0xb0 [amdgpu]
 amdgpu_device_ip_fini_early.isra.0+0x1b1/0x320 [amdgpu]
 amdgpu_device_fini_hw+0x171/0x260 [amdgpu]
 amdgpu_driver_unload_kms+0x4b/0x70 [amdgpu]
 amdgpu_pci_remove+0x49/0x90 [amdgpu]
 pci_device_remove+0x41/0xb0
 device_remove+0x43/0x80
 device_release_driver_internal+0x20b/0x270
 device_release_driver+0x12/0x20
 pci_stop_bus_device+0x69/0x90
 pci_stop_and_remove_bus_device+0x12/0x30
 pciehp_unconfigure_device+0x98/0x170
 pciehp_disable_slot+0x69/0x140
 pciehp_handle_presence_or_link_change+0x74/0x220
 pciehp_ist+0x22e/0x260
 irq_thread_fn+0x24/0x70
 irq_thread+0xf1/0x1c0
 ? __pfx_irq_thread_fn+0x10/0x10
 ? __pfx_irq_thread_dtor+0x10/0x10
 ? __pfx_irq_thread+0x10/0x10
 kthread+0xfe/0x230
 ? __pfx_kthread+0x10/0x10
 ret_from_fork+0x47/0x70
 ? __pfx_kthread+0x10/0x10
 ret_from_fork_asm+0x1a/0x30
 </TASK>
---[ end trace 0000000000000000 ]---
------------[ cut here ]------------
WARNING: CPU: 0 PID: 74 at drivers/gpu/drm/amd/amdgpu/amdgpu_object.c:510 amdgpu_bo_free_kernel+0x112/0x140 [amdgpu]
Modules linked in: ccm rfcomm snd_seq_dummy snd_hrtimer qrtr cmac algif_hash algif_skcipher af_alg bnep binfmt_misc nls_iso8859_1 amdgpu snd_sof_amd_acp70 snd_sof_amd_acp63 snd_sof_amd_vangogh snd_sof_amd_rembrandt snd_ctl_led snd_sof_amd_renoir snd_sof_amd_acp snd_hda_codec_realtek snd_sof_pci snd_hda_codec_generic snd_sof_xtensa_dsp snd_hda_scodec_component snd_hda_codec_hdmi snd_sof snd_hda_intel snd_sof_utils snd_intel_dspcfg snd_pci_ps snd_intel_sdw_acpi snd_soc_acpi_amd_match snd_amd_sdw_acpi soundwire_amd soundwire_generic_allocation snd_hda_codec soundwire_bus intel_rapl_msr snd_soc_sdca snd_hda_core rtw88_8723de ee1004 snd_hwdep rtw88_8723d snd_soc_core rtw88_8723x rtw88_pci snd_seq_midi snd_compress amd_atl snd_seq_midi_event ac97_bus rtw88_core snd_pcm_dmaengine snd_rpl_pci_acp6x amdxcp snd_acp_pci gpu_sched intel_rapl_common uvcvideo drm_panel_backlight_quirks snd_acp_legacy_common snd_rawmidi drm_buddy snd_pci_acp6x videobuf2_vmalloc mac80211 uvc btusb snd_seq videobuf2_memops btrtl
 drm_ttm_helper videobuf2_v4l2 snd_pcm edac_mce_amd videobuf2_common btintel rapl snd_seq_device btbcm videodev ttm hp_wmi i2c_piix4 snd_timer btmtk sparse_keymap drm_exec bluetooth wmi_bmof platform_profile mc k10temp snd_pci_acp5x drm_suballoc_helper i2c_smbus snd_rn_pci_acp3x drm_display_helper cfg80211 snd_acp_config snd snd_soc_acpi cec soundcore snd_pci_acp3x libarc4 ccp rc_core i2c_algo_bit i2c_scmi wireless_hotkey acpi_tad input_leds mac_hid serio_raw sch_fq_codel msr parport_pc ppdev lp parport efi_pstore nfnetlink dmi_sysfs ip_tables x_tables autofs4 btrfs blake2b_generic xor raid6_pq dm_mirror dm_region_hash dm_log uas usb_storage polyval_clmulni polyval_generic ghash_clmulni_intel sha256_ssse3 psmouse sha1_ssse3 r8169 ahci libahci realtek video wmi aesni_intel crypto_simd cryptd
CPU: 0 UID: 0 PID: 74 Comm: irq/26-pciehp Tainted: G        W          6.14.0-27-generic #27~24.04.1-Ubuntu
Tainted: [W]=WARN
Hardware name: HP HP Laptop 17-ca1xxx/85B4, BIOS F.66 11/22/2023
RIP: 0010:amdgpu_bo_free_kernel+0x112/0x140 [amdgpu]
Code: 00 00 4d 85 e4 74 08 49 c7 04 24 00 00 00 00 48 83 c4 08 5b 41 5c 41 5d 41 5e 41 5f 5d 31 c0 31 d2 31 f6 31 ff e9 ee 09 ee f4 <0f> 0b e9 35 ff ff ff 3d 00 fe ff ff 74 b5 48 8b ba 80 10 ff ff 48
RSP: 0018:ffffb96dc034fb70 EFLAGS: 00010202
RAX: 0000000000000000 RBX: ffff998a9d114b60 RCX: 0000000000000000
RDX: ffff998a9d10ef80 RSI: ffff998a9d114b70 RDI: ffff998a9d114b60
RBP: ffffb96dc034fba0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000000 R12: ffff998a9d114b68
R13: ffff998a9d114b70 R14: ffff998a971a2c00 R15: 0000000000000001
FS:  0000000000000000(0000) GS:ffff998db1000000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000744b9b1bd000 CR3: 000000010dbb4000 CR4: 00000000003506f0
Call Trace:
 <TASK>
 amdgpu_ih_ring_fini+0x45/0xd0 [amdgpu]
 amdgpu_irq_fini_hw+0x45/0xb0 [amdgpu]
 amdgpu_device_fini_hw+0x179/0x260 [amdgpu]
 amdgpu_driver_unload_kms+0x4b/0x70 [amdgpu]
 amdgpu_pci_remove+0x49/0x90 [amdgpu]
 pci_device_remove+0x41/0xb0
 device_remove+0x43/0x80
 device_release_driver_internal+0x20b/0x270
 device_release_driver+0x12/0x20
 pci_stop_bus_device+0x69/0x90
 pci_stop_and_remove_bus_device+0x12/0x30
 pciehp_unconfigure_device+0x98/0x170
 pciehp_disable_slot+0x69/0x140
 pciehp_handle_presence_or_link_change+0x74/0x220
 pciehp_ist+0x22e/0x260
 irq_thread_fn+0x24/0x70
 irq_thread+0xf1/0x1c0
 ? __pfx_irq_thread_fn+0x10/0x10
 ? __pfx_irq_thread_dtor+0x10/0x10
 ? __pfx_irq_thread+0x10/0x10
 kthread+0xfe/0x230
 ? __pfx_kthread+0x10/0x10
 ret_from_fork+0x47/0x70
 ? __pfx_kthread+0x10/0x10
 ret_from_fork_asm+0x1a/0x30
 </TASK>
---[ end trace 0000000000000000 ]---

Помогала только загрузка с nomodeset, amdgpu.dc=0 не канает, картинка отсутствует вообще (что логично, встройка и дискретка используют один и тот же драйвер). Биос ноута был на всякий случай обновлён до последней версии, что не дало никакого эффекта. Настроек видео в этом биосе нет примерно никаких. Были испробованы разные дистрибутивы с широким спектром версий ядра: Fedora 43 (6.17), Alma 10 (6.12), Rocky 9 (5.14), Alma 8 (4.18). Картина везде одинаковая. Пробовать ядро младше 4.16 бессмысленно по причине отсутствия драйвера amdgpu.

Для верности тот же подход был испробован на deb-based дистрибутивах, и внезапно графика успешно инициализировалась на Ubuntu 18.04 (ядро 5.4). В ходе дальнейших экспериментов это же ядро было установлено на свежую Ubuntu 24.04, на которой выяснилось следующее:

  • kernel 5.4 c linux-firmware из 18.04 - инициализация работает
  • kernel 5.4 c linux-firmware из 24.04 - инициализация также работает, с поправкой на отсутствие поддержки zstd в ядре 5.4 (бинари надо предварительно руками распаковать)
  • kernel 6.14 (стоковое из 24.04) с любыми комбинациями linux-firmware - инициализация не работает, проблемы возвращаются

Можно сделать вывод, что проблема на стороне модуля ядра, и нужно копать в сторону amdgpu_irq и amdgpu_object. Параллельно можно опробовать другие версии ядра с kernel.ubuntu.com (убунтоводы почти каждую минорную версию насобирали) старше 5.4 и попытаться локализовать конкретные версии, между которыми оно сломалось.

В тред приглашаются эксперты по дебагу модулей ядра, с советом по поиску причины неисправности. Остальные приглашаются поугарать над эталоном поддержки линукса среди производителей графики с нерабочим драйвером на десятом году после релиза видеочипа.

★★★★★

Дискретная видеокарта AMD + встроенное видео от них же.

Настроек видео в этом биосе нет примерно никаких.

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

Остальные приглашаются поугарать над эталоном поддержки линукса среди производителей графики с нерабочим драйвером на десятом году после релиза видеочипа.

У меня есть ноут 12-го года на A8, и там драйвер AMD работает как надо. Проблема скорее всего в кривом биосе.

svidrigaylov
()

Nvidia музыка из Интел , потом идёшь заряжать стакан на обновление инитрамфс и ставишь портрет с фак нвидиа и снимаешь проклятье тремя залпами.

anonymous
()