* kernel panic during shutdown in v7.2-rc4 and next-20260722 with PREEMPT_RT @ 2026-07-23 12:34 Bert Karwatzki 2026-07-23 12:43 ` [Re] " Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-23 12:34 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: Bert Karwatzki, linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner When shutting down my Linux system (debian sid with kernel next-20260722 with PREEMPT_RT) I either get an indefinite hang (with cursor blinking in the top left corner of the screen) or a kernel panic qrcode with message "fatal exception in interrupt". Unfortunately the qrcode cannot store the whole kernel message, so I tried to bisect this (from v7.2-rc4 to next-20260722). During the bisection I also had kernel panics occuring when shutting down v7.2-rc4, but these are much harder to reproduce. I'll try to figure out what's going using git bisect but this may take some time as I a) Have to search for a good case b) Go throught 10-20 reboot cycles to declare a commit as good I used netconsole to capture an error message from next-20260722 T1473;BUG: scheduling while atomic: Xorg/1473/0x00000003 T1473,ncfrag=0/961;Modules linked in: netconsole snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e snd_usbmidi_lib snd_ump mt7925_common snd_rawmidi mt792x_lib snd_seq_device mt76_connac_lib intel_rapl_msr iosf_mbi mt76 snd_hda_codec_atihdmi intel_rapl_common snd_hda_codec_hdmi rapl mac80211 snd_hda_intel snd_hda_codec spd5118 regmap_i2c snd_hda_core pcspkr snd_intel_dspcfg snd_hwdep snd_pcm snd_timer libarc4 snd cfg80211 soundcore k10temp rfkill evdev ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci libata drm_kms_helper xhci_pci drm xhci_hcd scsi_mod igc nvme usbcore cec nvme_core scsi_common crc16 video nvme_keyring nvme_au T1473,ncfrag=899/961;th usb_common i2c_piix4 gpio_amdpt wmi gpio_generic i2c_smbus T1473;CPU: 17 UID: 0 PID: 1473 Comm: Xorg Not tainted 7.2.0-rc4-next-20260722-gpuresetfix-00002-ga578edd2a4b3 #601 PREEMPT_RT T1473;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1473;Call Trace: T1473; <TASK> T1473; ? dump_stack_lvl+0x4b/0x70 T1473; ? __schedule_bug.cold+0x3e/0x4a T1473; ? __schedule+0xf5f/0x16e0 T1473; ? dml2_core_calcs_mode_programming_ex+0x2f60/0x6c80 [amdgpu] T1473; ? schedule_rtlock+0x15/0x30 T1473; ? rtlock_slowlock_locked+0x30c/0xe50 T1473; ? rt_spin_lock+0xc3/0x120 T1473; ? get_page_from_freelist+0x248/0x19f0 T1473; ? __alloc_frozen_pages_noprof+0x197/0x330 T1473; ? ___kmalloc_large_node+0xb1/0xd0 T1473; ? __kvmalloc_node_noprof+0x383/0x560 T1473; ? dc_create_plane_state+0x24/0x90 [amdgpu] T1473; ? dc_create_plane_state+0x24/0x90 [amdgpu] T1473; ? dc_state_create_phantom_plane+0x15/0x50 [amdgpu] T1473; ? dml21_handle_phantom_streams_planes+0x292/0x510 [amdgpu] T1473; ? dml21_mode_check_and_programming+0x157/0x7d0 [amdgpu] T1473; ? spl_set_filters_data+0xbc/0xd0 [amdgpu] T1473; ? dcn401_validate_bandwidth+0xb8/0x1f0 [amdgpu] T1473; ? update_planes_and_stream_state+0xffa/0x1630 [amdgpu] T1473; ? update_planes_and_stream_prepare_v3+0xb6/0x440 [amdgpu] T1473; ? dc_update_planes_and_stream+0x87/0x140 [amdgpu] T1473; ? amdgpu_dm_atomic_commit_tail+0x1740/0x3750 [amdgpu] T1473; ? commit_tail+0xcd/0x160 [drm_kms_helper] T1473; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1473; ? drm_atomic_commit+0xac/0xe0 [drm] T1473; ? __drm_universal_plane_init.cold+0x19/0x19 [drm] T1473; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1473; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1473; ? drm_syncobj_transfer_ioctl+0x300/0x300 [drm] T1473; ? rt_spin_trylock+0x1c/0x80 T1473; ? drm_mode_getcrtc+0x180/0x180 [drm] T1473; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1473; ? drm_ioctl+0x27f/0x520 [drm] T1473; ? drm_mode_getcrtc+0x180/0x180 [drm] T1473; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1473; ? __x64_sys_ioctl+0x92/0xe0 T1473; ? do_syscall_64+0xbd/0x500 T1473; ? __futex_wake_mark+0x50/0x50 T1473; ? futex_wait+0x66/0x110 T1473; ? wake_up_q+0x32/0x80 T1473; ? futex_wake+0x101/0x220 T1473; ? do_futex+0xd6/0x210 T1473; ? __x64_sys_futex+0x10d/0x200 T1473; ? do_futex+0x107/0x210 T1473; ? __x64_sys_futex+0x10d/0x200 T1473; ? do_syscall_64+0x1fa/0x500 T1473; ? __task_pid_nr_ns+0x53/0xe0 T1473; ? do_syscall_64+0xbd/0x500 T1473; ? do_syscall_64+0x37/0x500 T1473; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1473; </TASK> C17;------------[ cut here ]------------ T1473;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:97 at dc_fpu_begin+0x4f/0x60 [amdgpu], CPU#17: Xorg/1473 T1473,ncfrag=0/961;Modules linked in: netconsole snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e snd_usbmidi_lib snd_ump mt7925_common snd_rawmidi mt792x_lib snd_seq_device mt76_connac_lib intel_rapl_msr iosf_mbi mt76 snd_hda_codec_atihdmi intel_rapl_common snd_hda_codec_hdmi rapl mac80211 snd_hda_intel snd_hda_codec spd5118 regmap_i2c snd_hda_core pcspkr snd_intel_dspcfg snd_hwdep snd_pcm snd_timer libarc4 snd cfg80211 soundcore k10temp rfkill evdev ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci libata drm_kms_helper xhci_pci drm xhci_hcd scsi_mod igc nvme usbcore cec nvme_core scsi_common crc16 video nvme_keyring nvme_au T1473,ncfrag=899/961;th usb_common i2c_piix4 gpio_amdpt wmi gpio_generic i2c_smbus T1473;CPU: 17 UID: 0 PID: 1473 Comm: Xorg Tainted: G W 7.2.0-rc4-next-20260722-gpuresetfix-00002-ga578edd2a4b3 #601 PREEMPT_RT T1473;Tainted: [W]=WARN T1473;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1473;RIP: 0010:dc_fpu_begin+0x4f/0x60 [amdgpu] T1473;Code: d0 75 27 65 ff 05 a1 e8 db ce b8 01 00 00 00 65 0f c1 05 64 f8 dc ce 85 c0 74 05 c3 cc cc cc cc bf 02 00 00 00 e9 11 6d b8 cd <0f> 0b eb d5 66 90 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 d6 b8 T1473;RSP: 0018:ffffb251c623f5d0 EFLAGS: 00010206 T1473;RAX: 0000000000ff0000 RBX: ffff8a8f21400000 RCX: ffff8a8ed0f00000 T1473;RDX: 0000000000ff0000 RSI: 000000000000073d RDI: ffffffffc11b1540 T1473;RBP: 0000000000000001 R08: ffffb251c623f5a4 R09: 000000000000000a T1473;R10: ffffb251c623f548 R11: 0000000000000002 R12: ffff8a8fa4468000 T1473;R13: ffff8a8ed1888000 R14: ffff8a8f89380000 R15: ffff8a8f21400000 T1473;FS: 00007eff71d77b80(0000) GS:ffff8a9e6e1b0000(0000) knlGS:0000000000000000 T1473;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1473;CR2: 00007ffcab257cc8 CR3: 0000000162691000 CR4: 0000000000f50ef0 T1473;PKRU: 55555554 T1473;Call Trace: T1473; <TASK> T1473; ? dcn401_prepare_mcache_programming+0x2f/0x70 [amdgpu] T1473; ? commit_planes_for_stream+0x155/0x1900 [amdgpu] T1473; ? update_planes_and_stream_execute_v3+0x3c/0xd0 [amdgpu] T1473; ? dc_update_planes_and_stream+0xb6/0x140 [amdgpu] T1473; ? amdgpu_dm_atomic_commit_tail+0x1740/0x3750 [amdgpu] T1473; ? commit_tail+0xcd/0x160 [drm_kms_helper] T1473; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1473; ? drm_atomic_commit+0xac/0xe0 [drm] T1473; ? __drm_universal_plane_init.cold+0x19/0x19 [drm] T1473; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1473; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1473; ? drm_syncobj_transfer_ioctl+0x300/0x300 [drm] T1473; ? rt_spin_trylock+0x1c/0x80 T1473; ? drm_mode_getcrtc+0x180/0x180 [drm] T1473; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1473; ? drm_ioctl+0x27f/0x520 [drm] T1473; ? drm_mode_getcrtc+0x180/0x180 [drm] T1473; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1473; ? __x64_sys_ioctl+0x92/0xe0 T1473; ? do_syscall_64+0xbd/0x500 T1473; ? __futex_wake_mark+0x50/0x50 T1473; ? futex_wait+0x66/0x110 T1473; ? wake_up_q+0x32/0x80 T1473; ? futex_wake+0x101/0x220 T1473; ? do_futex+0xd6/0x210 T1473; ? __x64_sys_futex+0x10d/0x200 T1473; ? do_futex+0x107/0x210 T1473; ? __x64_sys_futex+0x10d/0x200 T1473; ? do_syscall_64+0x1fa/0x500 T1473; ? __task_pid_nr_ns+0x53/0xe0 T1473; ? do_syscall_64+0xbd/0x500 T1473; ? do_syscall_64+0x37/0x500 T1473; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1473; </TASK> T1473;---[ end trace 0000000000000000 ]--- C17;BUG: scheduling while atomic: Xorg/1473/0x7fffffff C17,ncfrag=0/961;Modules linked in: netconsole snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e snd_usbmidi_lib snd_ump mt7925_common snd_rawmidi mt792x_lib snd_seq_device mt76_connac_lib intel_rapl_msr iosf_mbi mt76 snd_hda_codec_atihdmi intel_rapl_common snd_hda_codec_hdmi rapl mac80211 snd_hda_intel snd_hda_codec spd5118 regmap_i2c snd_hda_core pcspkr snd_intel_dspcfg snd_hwdep snd_pcm snd_timer libarc4 snd cfg80211 soundcore k10temp rfkill evdev ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci libata drm_kms_helper xhci_pci drm xhci_hcd scsi_mod igc nvme usbcore cec nvme_core scsi_common crc16 video nvme_keyring nvme_auth C17,ncfrag=901/961; usb_common i2c_piix4 gpio_amdpt wmi gpio_generic i2c_smbus C17;CPU: 17 UID: 0 PID: 1473 Comm: Xorg Tainted: G W 7.2.0-rc4-next-20260722-gpuresetfix-00002-ga578edd2a4b3 #601 PREEMPT_RT C17;Tainted: [W]=WARN C17;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 C17;Call Trace: C17; <TASK> C17; ? dump_stack_lvl+0x4b/0x70 C17; ? __schedule_bug.cold+0x3e/0x4a C17; ? __schedule+0xf5f/0x16e0 C17; ? __hrtimer_rearm_deferred+0x4c/0xd0 C17; ? schedule+0x22/0xa0 C17; ? usleep_range_state+0xbb/0xf0 C17; ? hrtimer_hres_workfn+0x10/0x10 C17; ? dcn10_wait_for_pipe_update_if_needed+0x231/0x240 [amdgpu] C17; ? commit_planes_for_stream+0x2f2/0x1900 [amdgpu] C17; ? update_planes_and_stream_execute_v3+0x3c/0xd0 [amdgpu] C17; ? dc_update_planes_and_stream+0xb6/0x140 [amdgpu] C17; ? amdgpu_dm_atomic_commit_tail+0x1740/0x3750 [amdgpu] C17; ? commit_tail+0xcd/0x160 [drm_kms_helper] C17; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] C17; ? drm_atomic_commit+0xac/0xe0 [drm] C17; ? __drm_universal_plane_init.cold+0x19/0x19 [drm] C17; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] C17; ? drm_mode_setcrtc+0x443/0x8b0 [drm] C17; ? drm_syncobj_transfer_ioctl+0x300/0x300 [drm] C17; ? rt_spin_trylock+0x1c/0x80 C17; ? drm_mode_getcrtc+0x180/0x180 [drm] C17; ? drm_ioctl_kernel+0xa1/0xf0 [drm] C17; ? drm_ioctl+0x27f/0x520 [drm] C17; ? drm_mode_getcrtc+0x180/0x180 [drm] C17; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] C17; ? __x64_sys_ioctl+0x92/0xe0 C17; ? do_syscall_64+0xbd/0x500 C17; ? __futex_wake_mark+0x50/0x50 C17; ? futex_wait+0x66/0x110 C17; ? wake_up_q+0x32/0x80 C17; ? futex_wake+0x101/0x220 C17; ? do_futex+0xd6/0x210 C17; ? __x64_sys_futex+0x10d/0x200 C17; ? do_futex+0x107/0x210 C17; ? __x64_sys_futex+0x10d/0x200 C17; ? do_syscall_64+0x1fa/0x500 C17; ? __task_pid_nr_ns+0x53/0xe0 C17; ? do_syscall_64+0xbd/0x500 C17; ? do_syscall_64+0x37/0x500 C17; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d C17; </TASK> T1473;BUG: scheduling while atomic: Xorg/1473/0x00000003 T1473,ncfrag=0/961;Modules linked in: netconsole snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e snd_usbmidi_lib snd_ump mt7925_common snd_rawmidi mt792x_lib snd_seq_device mt76_connac_lib intel_rapl_msr iosf_mbi mt76 snd_hda_codec_atihdmi intel_rapl_common snd_hda_codec_hdmi rapl mac80211 snd_hda_intel snd_hda_codec spd5118 regmap_i2c snd_hda_core pcspkr snd_intel_dspcfg snd_hwdep snd_pcm snd_timer libarc4 snd cfg80211 soundcore k10temp rfkill evdev ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci libata drm_kms_helper xhci_pci drm xhci_hcd scsi_mod igc nvme usbcore cec nvme_core scsi_common crc16 video nvme_keyring nvme_au T1473,ncfrag=899/961;th usb_common i2c_piix4 gpio_amdpt wmi gpio_generic i2c_smbus T1473;CPU: 17 UID: 0 PID: 1473 Comm: Xorg Tainted: G W 7.2.0-rc4-next-20260722-gpuresetfix-00002-ga578edd2a4b3 #601 PREEMPT_RT T1473;Tainted: [W]=WARN T1473;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1473;Call Trace: T1473; <TASK> T1473; ? dump_stack_lvl+0x4b/0x70 T1473; ? __schedule_bug.cold+0x3e/0x4a T1473; ? __schedule+0xf5f/0x16e0 T1473; ? dml2_core_calcs_mode_programming_ex+0x2f60/0x6c80 [amdgpu] T1473; ? schedule_rtlock+0x15/0x30 T1473; ? rtlock_slowlock_locked+0x30c/0xe50 T1473; ? rt_spin_lock+0xc3/0x120 T1473; ? get_page_from_freelist+0x248/0x19f0 T1473; ? update_cfs_rq_load_avg+0x1a/0x240 T1473; ? __alloc_frozen_pages_noprof+0x197/0x330 T1473; ? ___kmalloc_large_node+0xb1/0xd0 T1473; ? __kvmalloc_node_noprof+0x383/0x560 T1473; ? dc_create_plane_state+0x24/0x90 [amdgpu] T1473; ? dc_create_plane_state+0x24/0x90 [amdgpu] T1473; ? dc_state_create_phantom_plane+0x15/0x50 [amdgpu] T1473; ? dml21_handle_phantom_streams_planes+0x292/0x510 [amdgpu] T1473; ? dml21_mode_check_and_programming+0x157/0x7d0 [amdgpu] T1473; ? ___task_rq_lock+0x2d/0xa0 T1473; ? update_rq_clock+0x70/0x110 T1473; ? rt_mutex_setprio+0x61/0x340 T1473; ? calculate_plane_rec_in_timing_active+0x142/0x1f0 [amdgpu] T1473; ? spl_calculate_number_of_taps.constprop.0.isra.0+0x142/0xf00 [amdgpu] T1473; ? spl_calculate_number_of_taps.constprop.0.isra.0+0xed4/0xf00 [amdgpu] T1473; ? dcn401_validate_bandwidth+0xb8/0x1f0 [amdgpu] T1473; ? dc_validate_with_context+0x5c5/0x6a0 [amdgpu] T1473; ? dc_commit_streams+0x27c/0x4f0 [amdgpu] T1473; ? amdgpu_dm_atomic_commit_tail+0x681/0x3750 [amdgpu] T1473; ? generic_reg_get+0x1c/0x30 [amdgpu] T1473; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1473; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1473; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1473; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1473; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1473; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm] T1473; ? wait_for_completion_timeout+0x122/0x170 T1473; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1473; ? commit_tail+0xcd/0x160 [drm_kms_helper] T1473; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1473; ? drm_atomic_commit+0xac/0xe0 [drm] T1473; ? __drm_universal_plane_init.cold+0x19/0x19 [drm] T1473; ? drm_mode_obj_set_property_ioctl+0x162/0x3b0 [drm] T1473; ? drm_mode_obj_find_prop_id+0x50/0x50 [drm] T1473; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1473; ? drm_ioctl+0x27f/0x520 [drm] T1473; ? drm_mode_obj_find_prop_id+0x50/0x50 [drm] T1473; ? rt_spin_trylock+0x1c/0x80 T1473; ? kmem_cache_free+0x214/0x430 T1473; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1473; ? __x64_sys_ioctl+0x92/0xe0 T1473; ? do_syscall_64+0xbd/0x500 T1473; ? do_epoll_ctl+0xbb/0xe0 T1473; ? __x64_sys_epoll_ctl+0x5f/0xa0 T1473; ? do_syscall_64+0xbd/0x500 T1473; ? count_memcg_events+0x67/0x110 T1473; ? handle_mm_fault+0x1bb/0x2c0 T1473; ? do_user_addr_fault+0x1e3/0x5e0 T1473; ? __flush_smp_call_function_queue+0x16a/0x1f0 T1473; ? do_syscall_64+0x37/0x500 T1473; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1473; </TASK> C17;BUG: scheduling while atomic: Xorg/1473/0x7fffffff C17,ncfrag=0/961;Modules linked in: netconsole snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e snd_usbmidi_lib snd_ump mt7925_common snd_rawmidi mt792x_lib snd_seq_device mt76_connac_lib intel_rapl_msr iosf_mbi mt76 snd_hda_codec_atihdmi intel_rapl_common snd_hda_codec_hdmi rapl mac80211 snd_hda_intel snd_hda_codec spd5118 regmap_i2c snd_hda_core pcspkr snd_intel_dspcfg snd_hwdep snd_pcm snd_timer libarc4 snd cfg80211 soundcore k10temp rfkill evdev ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci libata drm_kms_helper xhci_pci drm xhci_hcd scsi_mod igc nvme usbcore cec nvme_core scsi_common crc16 video nvme_keyring nvme_auth C17,ncfrag=901/961; usb_common i2c_piix4 gpio_amdpt wmi gpio_generic i2c_smbus C17;CPU: 17 UID: 0 PID: 1473 Comm: Xorg Tainted: G W 7.2.0-rc4-next-20260722-gpuresetfix-00002-ga578edd2a4b3 #601 PREEMPT_RT C17;Tainted: [W]=WARN C17;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 C17;Call Trace: C17; <TASK> C17; ? dump_stack_lvl+0x4b/0x70 C17; ? __schedule_bug.cold+0x3e/0x4a C17; ? __schedule+0xf5f/0x16e0 C17; ? schedule+0x22/0xa0 C17; ? usleep_range_state+0xbb/0xf0 C17; ? hrtimer_hres_workfn+0x10/0x10 C17; ? dcn10_wait_for_pipe_update_if_needed+0x231/0x240 [amdgpu] C17; ? dc_commit_state_no_check+0x1b0/0xe00 [amdgpu] C17; ? dc_commit_streams+0x2f4/0x4f0 [amdgpu] C17; ? amdgpu_dm_atomic_commit_tail+0x681/0x3750 [amdgpu] C17; ? generic_reg_get+0x1c/0x30 [amdgpu] C17; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] C17; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] C17; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] C17; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] C17; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] C17; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm] C17; ? wait_for_completion_timeout+0x122/0x170 C17; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] C17; ? commit_tail+0xcd/0x160 [drm_kms_helper] C17; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] C17; ? drm_atomic_commit+0xac/0xe0 [drm] C17; ? __drm_universal_plane_init.cold+0x19/0x19 [drm] C17; ? drm_mode_obj_set_property_ioctl+0x162/0x3b0 [drm] C17; ? drm_mode_obj_find_prop_id+0x50/0x50 [drm] C17; ? drm_ioctl_kernel+0xa1/0xf0 [drm] C17; ? drm_ioctl+0x27f/0x520 [drm] C17; ? drm_mode_obj_find_prop_id+0x50/0x50 [drm] C17; ? rt_spin_trylock+0x1c/0x80 C17; ? kmem_cache_free+0x214/0x430 C17; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] C17; ? __x64_sys_ioctl+0x92/0xe0 C17; ? do_syscall_64+0xbd/0x500 C17; ? do_epoll_ctl+0xbb/0xe0 C17; ? __x64_sys_epoll_ctl+0x5f/0xa0 C17; ? do_syscall_64+0xbd/0x500 C17; ? count_memcg_events+0x67/0x110 C17; ? handle_mm_fault+0x1bb/0x2c0 C17; ? do_user_addr_fault+0x1e3/0x5e0 C17; ? __flush_smp_call_function_queue+0x16a/0x1f0 C17; ? do_syscall_64+0x37/0x500 C17; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d C17; </TASK> T1273;wlp9s0: deauthenticating from 54:67:51:3d:a2:d2 by local choice (Reason: 3=DEAUTH_LEAVING) T23080;EXT4-fs (nvme0n1p5): unmounting filesystem 15783f8d-d7dd-4c1a-a7f8-84d944f03886. T23079;EXT4-fs (nvme0n1p4): unmounting filesystem ab8e4bed-5cab-4ae8-875a-8a42e075b551. T1;systemd-shutdown[1]: Syncing filesystems and block devices. T1;systemd-shutdown[1]: Sending SIGTERM to remaining processes... T752;systemd-journald[752]: Received SIGTERM from PID 1 (systemd-shutdow). T1;systemd-shutdown[1]: Sending SIGKILL to remaining processes... T1;systemd-shutdown[1]: Unmounting file systems. T23096;(sd-umount)[23096]: Unmounting '/run/credentials/systemd-journald.service'. T23097;(sd-remount)[23097]: Remounting '/' read-only with options 'errors=remount-ro'. T23097;EXT4-fs (nvme0n1p2): re-mounted 3d5cdc5d-1902-40bf-9e16-ca819372d350 ro. T1;systemd-shutdown[1]: All filesystems unmounted. T1;systemd-shutdown[1]: Deactivating swaps. T1;systemd-shutdown[1]: All swaps deactivated. T1;systemd-shutdown[1]: Detaching loop devices. T1;systemd-shutdown[1]: All loop devices detached. T1;systemd-shutdown[1]: Stopping MD devices. T1;systemd-shutdown[1]: All MD devices stopped. T1;systemd-shutdown[1]: Detaching DM devices. T1;systemd-shutdown[1]: All DM devices detached. T1;systemd-shutdown[1]: All filesystems, swaps, loop devices, MD devices and DM devices detached. T1;systemd-shutdown[1]: Syncing filesystems and block devices. T1;systemd-shutdown[1]: Rebooting. This error message shows that this is an amdgpu problem and also probably a PREEMPT_RT problem (due to the scheduling while atomic message). @rafal.ostrowski: This looks vaguely similar to the bug I reported in april, so maybe you have an idea what's going on: https://lore.kernel.org/all/20260409131411.10598-1-spasswolf@web.de/ Hardware: $ lspci -nn 00:00.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Root Complex [1022:14d8] 00:00.2 IOMMU [0806]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge IOMMU [1022:14d9] 00:01.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Dummy Host Bridge [1022:14da] 00:01.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge GPP Bridge [1022:14db] 00:01.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge GPP Bridge [1022:14db] 00:02.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Dummy Host Bridge [1022:14da] 00:02.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge GPP Bridge [1022:14db] 00:03.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Dummy Host Bridge [1022:14da] 00:04.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Dummy Host Bridge [1022:14da] 00:08.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Dummy Host Bridge [1022:14da] 00:08.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Internal GPP Bridge to Bus [C:A] [1022:14dd] 00:08.3 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Internal GPP Bridge to Bus [C:A] [1022:14dd] 00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 71) 00:14.3 ISA bridge [0601]: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e] (rev 51) 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 0 [1022:14e0] 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 1 [1022:14e1] 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 2 [1022:14e2] 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 3 [1022:14e3] 00:18.4 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 4 [1022:14e4] 00:18.5 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 5 [1022:14e5] 00:18.6 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 6 [1022:14e6] 00:18.7 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 7 [1022:14e7] 01:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch [1002:1478] (rev 25) 02:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch [1002:1479] (rev 25) 03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 44 [Radeon RX 9060 XT] [1002:7590] (rev c0) 03:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 48 HDMI/DP Audio Controller [1002:ab40] 04:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD 9100 PRO [PM9E1] [144d:a810] 05:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Upstream Port [1022:43f4] (rev 01) 06:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01) 06:06.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01) 06:07.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01) 06:08.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01) 06:0c.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01) 06:0d.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01) 08:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller I226-V [8086:125c] (rev 06) 09:00.0 Network controller [0280]: MEDIATEK Corp. MT7925 802.11be 160MHz 2x2 PCIe Wireless Network Adapter [Filogic 360] [14c3:7925] 0b:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 800 Series Chipset USB 3.x XHCI Controller [1022:43fc] (rev 01) 0c:00.0 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset SATA Controller [1022:43f6] (rev 01) 0d:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge PCIe Dummy Function [1022:14de] (rev c1) 0d:00.2 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Family 19h PSP/CCP [1022:1649] 0d:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge USB 3.1 xHCI [1022:15b6] 0d:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge USB 3.1 xHCI [1022:15b7] 0e:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge USB 2.0 xHCI [1022:15b8] $ cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 26 model : 68 model name : AMD Ryzen 9 9950X 16-Core Processor stepping : 0 microcode : 0xb404035 cpu MHz : 624.194 cache size : 1024 KB physical id : 0 siblings : 32 core id : 0 cpu cores : 16 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 16 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpuid_fault cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx_vnni avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid bus_lock_detect movdiri movdir64b overflow_recov succor smca fsrm avx512_vp2intersect flush_l1d amd_lbr_pmc_freeze bugs : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso spectre_v2_user vmscape bogomips : 8599.98 TLB size : 192 4K pages clflush size : 64 cache_alignment : 64 address sizes : 48 bits physical, 48 bits virtual power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* [Re] kernel panic during shutdown in v7.2-rc4 and next-20260722 with PREEMPT_RT 2026-07-23 12:34 kernel panic during shutdown in v7.2-rc4 and next-20260722 with PREEMPT_RT Bert Karwatzki @ 2026-07-23 12:43 ` Bert Karwatzki 2026-07-23 13:10 ` [Re] kernel panic during shutdown in v7.2-rc{3,4} " Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-23 12:43 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: Bert Karwatzki, linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner I was able to gather an error message from a failed shutdwon in v7.2-rc4: T1475;BUG: scheduling while atomic: Xorg/1475/0x00000003 T1475,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e snd_usbmidi_lib mt7925_common snd_ump mt792x_lib snd_rawmidi intel_rapl_msr snd_seq_device mt76_connac_lib iosf_mbi intel_rapl_common mt76 snd_hda_codec_atihdmi rapl snd_hda_codec_hdmi mac80211 snd_hda_intel pcspkr wmi_bmof snd_hda_codec snd_hda_core snd_intel_dspcfg snd_hwdep snd_pcm libarc4 spd5118 snd_timer cfg80211 regmap_i2c snd soundcore rfkill aead evdev ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid drm_client_lib i2c_algo_bit hid drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec nvme_core scsi_common crc16 video nvme_keyring i2c_piix4 gpio_amdpt usb_common nvme_auth wmi T1475,ncfrag=955/979; i2c_smbus gpio_generic T1475;CPU: 22 UID: 0 PID: 1475 Comm: Xorg Not tainted 7.2.0-rc4-stable #16 PREEMPT_{RT,(full)} T1475;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1475;Call Trace: T1475; <TASK> T1475; ? dump_stack_lvl+0x4b/0x70 T1475; ? __schedule_bug.cold+0x3e/0x4a T1475; ? __schedule+0xf64/0x16f0 T1475; ? pick_task_fair+0x4b/0x6e0 T1475; ? schedule_rtlock+0x15/0x30 T1475; ? rtlock_slowlock_locked+0x30c/0xe50 T1475; ? rt_spin_lock+0xc3/0x120 T1475; ? get_page_from_freelist+0x22e/0x1640 T1475; ? __alloc_frozen_pages_noprof+0x146/0x2b0 T1475; ? ___kmalloc_large_node+0xae/0xd0 T1475; ? __kvmalloc_node_noprof+0x36c/0x580 T1475; ? dc_create_plane_state+0x24/0x80 [amdgpu] T1475; ? dc_create_plane_state+0x24/0x80 [amdgpu] T1475; ? dc_state_create_phantom_plane+0x15/0x50 [amdgpu] T1475; ? dml21_handle_phantom_streams_planes+0x292/0x510 [amdgpu] T1475; ? dml21_mode_check_and_programming+0x157/0x7e0 [amdgpu] T1475; ? spl_set_filters_data+0xbc/0xd0 [amdgpu] T1475; ? spl_calculate_scaler_params+0x39d/0x1c00 [amdgpu] T1475; ? dc_state_remove_plane+0xaf/0x150 [amdgpu] T1475; ? dcn401_validate_bandwidth+0xb8/0x1f0 [amdgpu] T1475; ? update_planes_and_stream_state+0xfc7/0x16a0 [amdgpu] T1475; ? update_planes_and_stream_prepare_v3+0xb6/0x430 [amdgpu] T1475; ? dc_update_planes_and_stream+0x87/0x140 [amdgpu] T1475; ? amdgpu_dm_atomic_commit_tail+0x16c0/0x3800 [amdgpu] T1475; ? commit_tail+0xad/0x140 [drm_kms_helper] T1475; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1475; ? drm_atomic_commit+0xac/0xe0 [drm] T1475; ? __drm_universal_plane_init.cold+0x11/0x11 [drm] T1475; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1475; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1475; ? rt_spin_lock+0x35/0x120 T1475; ? drm_mode_getcrtc+0x180/0x180 [drm] T1475; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1475; ? drm_ioctl+0x27f/0x500 [drm] T1475; ? drm_mode_getcrtc+0x180/0x180 [drm] T1475; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1475; ? __x64_sys_ioctl+0x92/0xe0 T1475; ? do_syscall_64+0xdd/0x5d0 T1475; ? amdgpu_drm_ioctl+0x65/0x80 [amdgpu] T1475; ? __x64_sys_ioctl+0xac/0xe0 T1475; ? switch_fpu_return+0x42/0x70 T1475; ? do_syscall_64+0x226/0x5d0 T1475; ? __ext4_journal_stop+0x3a/0xc0 [ext4] T1475; ? ext4_da_write_end+0x2de/0x340 [ext4] T1475; ? generic_perform_write+0x131/0x280 T1475; ? up_write+0x29/0x50 T1475; ? psi_group_change+0x112/0x2c0 T1475; ? update_cfs_rq_load_avg+0x1a/0x240 T1475; ? psi_task_switch+0x105/0x280 T1475; ? finish_task_switch.isra.0+0xc2/0x3c0 T1475; ? __schedule+0x374/0x16f0 T1475; ? do_syscall_64+0x572/0x5d0 T1475; ? do_syscall_64+0x572/0x5d0 T1475; ? do_syscall_64+0x572/0x5d0 T1475; ? do_syscall_64+0x94/0x5d0 T1475; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1475; </TASK> T1475;------------[ cut here ]------------ T1475;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:126 at dc_fpu_end+0x36/0x40 [amdgpu], CPU#1: Xorg/1475 T1475,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e snd_usbmidi_lib mt7925_common snd_ump mt792x_lib snd_rawmidi intel_rapl_msr snd_seq_device mt76_connac_lib iosf_mbi intel_rapl_common mt76 snd_hda_codec_atihdmi rapl snd_hda_codec_hdmi mac80211 snd_hda_intel pcspkr wmi_bmof snd_hda_codec snd_hda_core snd_intel_dspcfg snd_hwdep snd_pcm libarc4 spd5118 snd_timer cfg80211 regmap_i2c snd soundcore rfkill aead evdev ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid drm_client_lib i2c_algo_bit hid drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec nvme_core scsi_common crc16 video nvme_keyring i2c_piix4 gpio_amdpt usb_common nvme_auth wmi T1475,ncfrag=955/979; i2c_smbus gpio_generic T1475;CPU: 1 UID: 0 PID: 1475 Comm: Xorg Tainted: G W 7.2.0-rc4-stable #16 PREEMPT_{RT,(full)} T1475;Tainted: [W]=WARN T1475;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1475;RIP: 0010:dc_fpu_end+0x36/0x40 [amdgpu] T1475;Code: 05 4f df 16 c7 ff c8 74 10 78 1f 65 ff 0d 72 cf 15 c7 74 0c c3 cc cc cc cc e8 96 95 12 c6 eb eb e8 ef 09 11 c6 c3 cc cc cc cc <0f> 0b eb dd 66 0f 1f 44 00 00 41 56 41 55 41 54 55 53 48 83 ec 10 T1475;RSP: 0018:ffffb6c2059d7118 EFLAGS: 00010296 T1475;RAX: 00000000ffffffff RBX: ffff9e1a61f00000 RCX: 0000000000000008 T1475;RDX: 0000000000000000 RSI: 0000000000000719 RDI: ffffffffc13b3550 T1475;RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000001 T1475;R10: ffff9e1a61f00000 R11: 0000000000000002 R12: ffff9e16cc280000 T1475;R13: ffff9e1721c00000 R14: 0000000000000000 R15: 0000000000000001 T1475;FS: 00007fbc7ca7eb80(0000) GS:ffff9e26757b5000(0000) knlGS:0000000000000000 T1475;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1475;CR2: 00007ff1aa4e5000 CR3: 000000010d0d3000 CR4: 0000000000f50ef0 T1475;PKRU: 55555554 T1475;Call Trace: T1475; <TASK> T1475; ? dcn401_validate_bandwidth+0xd1/0x1f0 [amdgpu] T1475; ? update_planes_and_stream_state+0xfc7/0x16a0 [amdgpu] T1475; ? update_planes_and_stream_prepare_v3+0xb6/0x430 [amdgpu] T1475; ? dc_update_planes_and_stream+0x87/0x140 [amdgpu] T1475; ? amdgpu_dm_atomic_commit_tail+0x16c0/0x3800 [amdgpu] T1475; ? commit_tail+0xad/0x140 [drm_kms_helper] T1475; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1475; ? drm_atomic_commit+0xac/0xe0 [drm] T1475; ? __drm_universal_plane_init.cold+0x11/0x11 [drm] T1475; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1475; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1475; ? rt_spin_lock+0x35/0x120 T1475; ? drm_mode_getcrtc+0x180/0x180 [drm] T1475; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1475; ? drm_ioctl+0x27f/0x500 [drm] T1475; ? drm_mode_getcrtc+0x180/0x180 [drm] T1475; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1475; ? __x64_sys_ioctl+0x92/0xe0 T1475; ? do_syscall_64+0xdd/0x5d0 T1475; ? amdgpu_drm_ioctl+0x65/0x80 [amdgpu] T1475; ? __x64_sys_ioctl+0xac/0xe0 T1475; ? switch_fpu_return+0x42/0x70 T1475; ? do_syscall_64+0x226/0x5d0 T1475; ? __ext4_journal_stop+0x3a/0xc0 [ext4] T1475; ? ext4_da_write_end+0x2de/0x340 [ext4] T1475; ? generic_perform_write+0x131/0x280 T1475; ? up_write+0x29/0x50 T1475; ? psi_group_change+0x112/0x2c0 T1475; ? update_cfs_rq_load_avg+0x1a/0x240 T1475; ? psi_task_switch+0x105/0x280 T1475; ? finish_task_switch.isra.0+0xc2/0x3c0 T1475; ? __schedule+0x374/0x16f0 T1475; ? do_syscall_64+0x572/0x5d0 T1475; ? do_syscall_64+0x572/0x5d0 T1475; ? do_syscall_64+0x572/0x5d0 T1475; ? do_syscall_64+0x94/0x5d0 T1475; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1475; </TASK> T1475;---[ end trace 0000000000000000 ]--- T1475;------------[ cut here ]------------ T1475;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:97 at dc_fpu_begin+0x4f/0x60 [amdgpu], CPU#23: Xorg/1475 T1475,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e snd_usbmidi_lib mt7925_common snd_ump mt792x_lib snd_rawmidi intel_rapl_msr snd_seq_device mt76_connac_lib iosf_mbi intel_rapl_common mt76 snd_hda_codec_atihdmi rapl snd_hda_codec_hdmi mac80211 snd_hda_intel pcspkr wmi_bmof snd_hda_codec snd_hda_core snd_intel_dspcfg snd_hwdep snd_pcm libarc4 spd5118 snd_timer cfg80211 regmap_i2c snd soundcore rfkill aead evdev ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid drm_client_lib i2c_algo_bit hid drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec nvme_core scsi_common crc16 video nvme_keyring i2c_piix4 gpio_amdpt usb_common nvme_auth wmi T1475,ncfrag=955/979; i2c_smbus gpio_generic T1475;CPU: 23 UID: 0 PID: 1475 Comm: Xorg Tainted: G W 7.2.0-rc4-stable #16 PREEMPT_{RT,(full)} T1475;Tainted: [W]=WARN T1475;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1475;RIP: 0010:dc_fpu_begin+0x4f/0x60 [amdgpu] T1475;Code: d0 75 27 65 ff 05 c1 cf 15 c7 b8 01 00 00 00 65 0f c1 05 84 df 16 c7 85 c0 74 05 c3 cc cc cc cc bf 02 00 00 00 e9 51 96 12 c6 <0f> 0b eb d5 66 90 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 d6 b8 T1475;RSP: 0018:ffffb6c2059d7448 EFLAGS: 00010206 T1475;RAX: 0000000000ff0000 RBX: ffff9e1721c00000 RCX: ffff9e1703380000 T1475;RDX: 0000000000ff0000 RSI: 000000000000073d RDI: ffffffffc13b3520 T1475;RBP: 0000000000000001 R08: ffffb6c2059d741c R09: 000000000000000a T1475;R10: ffffb6c2059d73c0 R11: 0000000000000002 R12: ffff9e16cc280000 T1475;R13: ffff9e16c14f7000 R14: ffff9e1a61f00000 R15: ffff9e1721c00000 T1475;FS: 00007fbc7ca7eb80(0000) GS:ffff9e2675d35000(0000) knlGS:0000000000000000 T1475;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1475;CR2: 0000557a0c9a9cc8 CR3: 000000010d0d3000 CR4: 0000000000f50ef0 T1475;PKRU: 55555554 T1475;Call Trace: T1475; <TASK> T1475; ? dcn401_prepare_mcache_programming+0x2f/0x70 [amdgpu] T1475; ? commit_planes_for_stream+0x155/0x1900 [amdgpu] T1475; ? update_planes_and_stream_execute_v3+0x3c/0xd0 [amdgpu] T1475; ? dc_update_planes_and_stream+0xb6/0x140 [amdgpu] T1475; ? amdgpu_dm_atomic_commit_tail+0x16c0/0x3800 [amdgpu] T1475; ? commit_tail+0xad/0x140 [drm_kms_helper] T1475; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1475; ? drm_atomic_commit+0xac/0xe0 [drm] T1475; ? __drm_universal_plane_init.cold+0x11/0x11 [drm] T1475; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1475; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1475; ? rt_spin_lock+0x35/0x120 T1475; ? drm_mode_getcrtc+0x180/0x180 [drm] T1475; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1475; ? drm_ioctl+0x27f/0x500 [drm] T1475; ? drm_mode_getcrtc+0x180/0x180 [drm] T1475; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1475; ? __x64_sys_ioctl+0x92/0xe0 T1475; ? do_syscall_64+0xdd/0x5d0 T1475; ? amdgpu_drm_ioctl+0x65/0x80 [amdgpu] T1475; ? __x64_sys_ioctl+0xac/0xe0 T1475; ? switch_fpu_return+0x42/0x70 T1475; ? do_syscall_64+0x226/0x5d0 T1475; ? __ext4_journal_stop+0x3a/0xc0 [ext4] T1475; ? ext4_da_write_end+0x2de/0x340 [ext4] T1475; ? generic_perform_write+0x131/0x280 T1475; ? up_write+0x29/0x50 T1475; ? psi_group_change+0x112/0x2c0 T1475; ? update_cfs_rq_load_avg+0x1a/0x240 T1475; ? psi_task_switch+0x105/0x280 T1475; ? finish_task_switch.isra.0+0xc2/0x3c0 T1475; ? __schedule+0x374/0x16f0 T1475; ? do_syscall_64+0x572/0x5d0 T1475; ? do_syscall_64+0x572/0x5d0 T1475; ? do_syscall_64+0x572/0x5d0 T1475; ? do_syscall_64+0x94/0x5d0 T1475; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1475; </TASK> T1475;---[ end trace 0000000000000000 ]--- T1475;BUG: scheduling while atomic: Xorg/1475/0x00000000 T1475,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e snd_usbmidi_lib mt7925_common snd_ump mt792x_lib snd_rawmidi intel_rapl_msr snd_seq_device mt76_connac_lib iosf_mbi intel_rapl_common mt76 snd_hda_codec_atihdmi rapl snd_hda_codec_hdmi mac80211 snd_hda_intel pcspkr wmi_bmof snd_hda_codec snd_hda_core snd_intel_dspcfg snd_hwdep snd_pcm libarc4 spd5118 snd_timer cfg80211 regmap_i2c snd soundcore rfkill aead evdev ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid drm_client_lib i2c_algo_bit hid drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec nvme_core scsi_common crc16 video nvme_keyring i2c_piix4 gpio_amdpt usb_common nvme_auth wmi T1475,ncfrag=955/979; i2c_smbus gpio_generic T1475;CPU: 20 UID: 0 PID: 1475 Comm: Xorg Tainted: G W 7.2.0-rc4-stable #16 PREEMPT_{RT,(full)} T1475;Tainted: [W]=WARN T1475;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1475;Call Trace: T1475; <TASK> T1475; ? dump_stack_lvl+0x4b/0x70 I'll probably try CONFIG_LOCKDEP=y next. Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* [Re] kernel panic during shutdown in v7.2-rc{3,4} and next-20260722 with PREEMPT_RT 2026-07-23 12:43 ` [Re] " Bert Karwatzki @ 2026-07-23 13:10 ` Bert Karwatzki 2026-07-23 13:23 ` Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-23 13:10 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: Bert Karwatzki, linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner I was able to gather the panic error message from a failed shutdown via netconsole, this time the kernel used was v7.2-rc3: T6298;netconsole: network logging started T6298;netconsole-setup: Test log message to verify netconsole configuration. T1575;BUG: scheduling while atomic: Xorg/1575/0x00000003 T1575,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_rawmidi mt76_connac_lib snd_seq_device intel_rapl_msr iosf_mbi mt76 intel_rapl_common rapl mac80211 snd_hda_codec_atihdmi snd_hda_codec_hdmi pcspkr wmi_bmof snd_hda_intel snd_hda_codec libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm spd5118 regmap_i2c snd_timer snd rfkill soundcore aead evdev k10temp ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec scsi_common nvme_core crc16 video nvme_keyring gpio_amdpt i2c_piix4 nvme_auth usb_common gpi T1575,ncfrag=955/979;o_generic i2c_smbus wmi T1575;CPU: 16 UID: 0 PID: 1575 Comm: Xorg Not tainted 7.2.0-rc3-stable #1255 PREEMPT_{RT,(full)} T1575;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1575;Call Trace: T1575; <TASK> T1575; ? dump_stack_lvl+0x4b/0x70 T1575; ? __schedule_bug.cold+0x3e/0x4a T1575; ? __schedule+0xf64/0x16f0 T1575; ? schedule_rtlock+0x15/0x30 T1575; ? rtlock_slowlock_locked+0x30c/0xe50 T1575; ? rt_spin_lock+0xc3/0x120 T1575; ? get_page_from_freelist+0x22e/0x1640 T1575; ? __alloc_frozen_pages_noprof+0x146/0x2b0 T1575; ? ___kmalloc_large_node+0xae/0xd0 T1575; ? __kvmalloc_node_noprof+0x36c/0x580 T1575; ? dc_create_plane_state+0x24/0x80 [amdgpu] T1575; ? dc_create_plane_state+0x24/0x80 [amdgpu] T1575; ? dc_state_create_phantom_plane+0x15/0x50 [amdgpu] T1575; ? dml21_handle_phantom_streams_planes+0x292/0x510 [amdgpu] T1575; ? dml21_mode_check_and_programming+0x157/0x7e0 [amdgpu] T1575; ? try_to_wake_up+0x120/0x530 T1575; ? rt_mutex_setprio+0x61/0x340 T1575; ? calculate_plane_rec_in_timing_active+0x142/0x1f0 [amdgpu] T1575; ? spl_calculate_number_of_taps.constprop.0.isra.0+0x142/0xf00 [amdgpu] T1575; ? spl_calculate_number_of_taps.constprop.0.isra.0+0xed4/0xf00 [amdgpu] T1575; ? dcn401_validate_bandwidth+0xb8/0x1f0 [amdgpu] T1575; ? dc_validate_with_context+0x5ed/0x6b0 [amdgpu] T1575; ? dc_commit_streams+0x27c/0x4e0 [amdgpu] T1575; ? amdgpu_dm_atomic_commit_tail+0x61f/0x3650 [amdgpu] T1575; ? generic_reg_get+0x1c/0x30 [amdgpu] T1575; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1575; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1575; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1575; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1575; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1575; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm] T1575; ? wait_for_completion_timeout+0x127/0x170 T1575; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1575; ? commit_tail+0xad/0x140 [drm_kms_helper] T1575; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1575; ? drm_atomic_commit+0xac/0xe0 [drm] T1575; ? __drm_universal_plane_init.cold+0x11/0x11 [drm] T1575; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1575; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1575; ? drm_mode_getcrtc+0x180/0x180 [drm] T1575; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1575; ? drm_ioctl+0x27f/0x500 [drm] T1575; ? drm_mode_getcrtc+0x180/0x180 [drm] T1575; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1575; ? __x64_sys_ioctl+0x92/0xe0 T1575; ? do_syscall_64+0xdd/0x5d0 T1575; ? do_syscall_64+0x94/0x5d0 T1575; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1575; </TASK> T1575;------------[ cut here ]------------ T1575;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:126 at dc_fpu_end+0x36/0x40 [amdgpu], CPU#22: Xorg/1575 T1575,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_rawmidi mt76_connac_lib snd_seq_device intel_rapl_msr iosf_mbi mt76 intel_rapl_common rapl mac80211 snd_hda_codec_atihdmi snd_hda_codec_hdmi pcspkr wmi_bmof snd_hda_intel snd_hda_codec libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm spd5118 regmap_i2c snd_timer snd rfkill soundcore aead evdev k10temp ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec scsi_common nvme_core crc16 video nvme_keyring gpio_amdpt i2c_piix4 nvme_auth usb_common gpi T1575,ncfrag=955/979;o_generic i2c_smbus wmi T1575;CPU: 22 UID: 0 PID: 1575 Comm: Xorg Tainted: G W 7.2.0-rc3-stable #1255 PREEMPT_{RT,(full)} T1575;Tainted: [W]=WARN T1575;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1575;RIP: 0010:dc_fpu_end+0x36/0x40 [amdgpu] T1575;Code: 05 cf e5 16 e6 ff c8 74 10 78 1f 65 ff 0d f2 d5 15 e6 74 0c c3 cc cc cc cc e8 16 9c 12 e5 eb eb e8 6f 10 11 e5 c3 cc cc cc cc <0f> 0b eb dd 66 0f 1f 44 00 00 41 56 41 55 41 54 55 53 48 83 ec 10 T1575;RSP: 0018:ffffa11ac5bfb638 EFLAGS: 00010296 T1575;RAX: 00000000ffffffff RBX: ffff9490f7480000 RCX: 0000000000000008 T1575;RDX: 0000000000000000 RSI: 0000000000000719 RDI: ffffffffc15b3550 T1575;RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000001 T1575;R10: ffff9490f7480000 R11: 0000000000000002 R12: ffff948e09668000 T1575;R13: ffff948e11400000 R14: 0000000000000000 R15: 0000000000000001 T1575;FS: 00007f2b496ccb80(0000) GS:ffff949d96af5000(0000) knlGS:0000000000000000 T1575;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1575;CR2: 0000557ef27b3000 CR3: 000000011543b000 CR4: 0000000000f50ef0 T1575;PKRU: 55555554 T1575;Call Trace: T1575; <TASK> T1575; ? dcn401_validate_bandwidth+0xd1/0x1f0 [amdgpu] T1575; ? dc_validate_with_context+0x5ed/0x6b0 [amdgpu] T1575; ? dc_commit_streams+0x27c/0x4e0 [amdgpu] T1575; ? amdgpu_dm_atomic_commit_tail+0x61f/0x3650 [amdgpu] T1575; ? generic_reg_get+0x1c/0x30 [amdgpu] T1575; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1575; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1575; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1575; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1575; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1575; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm] T1575; ? wait_for_completion_timeout+0x127/0x170 T1575; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1575; ? commit_tail+0xad/0x140 [drm_kms_helper] T1575; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1575; ? drm_atomic_commit+0xac/0xe0 [drm] T1575; ? __drm_universal_plane_init.cold+0x11/0x11 [drm] T1575; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1575; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1575; ? drm_mode_getcrtc+0x180/0x180 [drm] T1575; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1575; ? drm_ioctl+0x27f/0x500 [drm] T1575; ? drm_mode_getcrtc+0x180/0x180 [drm] T1575; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1575; ? __x64_sys_ioctl+0x92/0xe0 T1575; ? do_syscall_64+0xdd/0x5d0 T1575; ? do_syscall_64+0x94/0x5d0 T1575; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1575; </TASK> T1575;---[ end trace 0000000000000000 ]--- T1575;------------[ cut here ]------------ T1575;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:97 at dc_fpu_begin+0x4f/0x60 [amdgpu], CPU#17: Xorg/1575 T1575,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_rawmidi mt76_connac_lib snd_seq_device intel_rapl_msr iosf_mbi mt76 intel_rapl_common rapl mac80211 snd_hda_codec_atihdmi snd_hda_codec_hdmi pcspkr wmi_bmof snd_hda_intel snd_hda_codec libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm spd5118 regmap_i2c snd_timer snd rfkill soundcore aead evdev k10temp ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec scsi_common nvme_core crc16 video nvme_keyring gpio_amdpt i2c_piix4 nvme_auth usb_common gpi T1575,ncfrag=955/979;o_generic i2c_smbus wmi T1575;CPU: 17 UID: 0 PID: 1575 Comm: Xorg Tainted: G W 7.2.0-rc3-stable #1255 PREEMPT_{RT,(full)} T1575;Tainted: [W]=WARN T1575;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1575;RIP: 0010:dc_fpu_begin+0x4f/0x60 [amdgpu] T1575;Code: d0 75 27 65 ff 05 41 d6 15 e6 b8 01 00 00 00 65 0f c1 05 04 e6 16 e6 85 c0 74 05 c3 cc cc cc cc bf 02 00 00 00 e9 d1 9c 12 e5 <0f> 0b eb d5 66 90 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 d6 b8 T1575;RSP: 0018:ffffa11ac5bfb6c8 EFLAGS: 00010206 T1575;RAX: 0000000000ff0000 RBX: ffff949040380000 RCX: ffff9490a92f96a0 T1575;RDX: 0000000000ff0000 RSI: 000000000000011f RDI: ffffffffc15de7a0 T1575;RBP: ffff948e14700000 R08: ffffffffa6d02440 R09: 0000000000000006 T1575;R10: ffffffffa6eb6440 R11: 0000000000000066 R12: ffff949040380000 T1575;R13: 0000000000000001 R14: 0000000000000000 R15: 0000000000000000 T1575;FS: 00007f2b496ccb80(0000) GS:ffff949d969b5000(0000) knlGS:0000000000000000 T1575;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1575;CR2: 00007fb5ea0bfa7c CR3: 000000011543b000 CR4: 0000000000f50ef0 T1575;PKRU: 55555554 T1575;Call Trace: T1575; <TASK> T1575; ? dc_state_create_copy+0x76/0x120 [amdgpu] T1575; ? dc_commit_state_no_check+0x271/0xe00 [amdgpu] T1575; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu] T1575; ? amdgpu_dm_atomic_commit_tail+0x61f/0x3650 [amdgpu] T1575; ? generic_reg_get+0x1c/0x30 [amdgpu] T1575; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1575; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1575; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1575; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1575; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1575; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm] T1575; ? wait_for_completion_timeout+0x127/0x170 T1575; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1575; ? commit_tail+0xad/0x140 [drm_kms_helper] T1575; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1575; ? drm_atomic_commit+0xac/0xe0 [drm] T1575; ? __drm_universal_plane_init.cold+0x11/0x11 [drm] T1575; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1575; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1575; ? drm_mode_getcrtc+0x180/0x180 [drm] T1575; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1575; ? drm_ioctl+0x27f/0x500 [drm] T1575; ? drm_mode_getcrtc+0x180/0x180 [drm] T1575; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1575; ? __x64_sys_ioctl+0x92/0xe0 T1575; ? do_syscall_64+0xdd/0x5d0 T1575; ? do_syscall_64+0x94/0x5d0 T1575; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1575; </TASK> T1575;---[ end trace 0000000000000000 ]--- T1575;------------[ cut here ]------------ T1575;kernel BUG at mm/vmalloc.c:3206! T1575;Oops: invalid opcode: 0000 [#1] SMP NOPTI T1575;CPU: 17 UID: 0 PID: 1575 Comm: Xorg Tainted: G W 7.2.0-rc3-stable #1255 PREEMPT_{RT,(full)} T1575;Tainted: [W]=WARN T1575;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1575;RIP: 0010:__get_vm_area_node+0x113/0x130 T1575;Code: ff bd ff ff ff ff 48 0f bd e8 b8 0c 00 00 00 ff c5 39 c5 0f 4c e8 b8 1e 00 00 00 39 c5 0f 4f e8 c4 e2 d1 f7 ee e9 34 ff ff ff <0f> 0b 4c 89 ef e8 e3 46 01 00 45 31 ed eb ae 0f 1f 00 66 66 2e 0f T1575;RSP: 0018:ffffa11ac5bfb580 EFLAGS: 00010286 T1575;RAX: 00000000ffffffff RBX: 0000000000000001 RCX: 0000000000000022 T1575;RDX: 000000000000000c RSI: 0000000000000001 RDI: 000000000000f720 T1575;RBP: 000000000000000c R08: ffffa11ac0000000 R09: ffffc11abfffffff T1575;R10: 00000000ffffffff R11: 0000000000000066 R12: ffff949040380000 T1575;R13: 0000000000000001 R14: 0000000000000dc0 R15: 000000000000f720 T1575;FS: 00007f2b496ccb80(0000) GS:ffff949d969b5000(0000) knlGS:0000000000000000 T1575;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1575;CR2: 00007fb5ea0bfa7c CR3: 000000011543b000 CR4: 0000000000f50ef0 T1575;PKRU: 55555554 T1575;Call Trace: T1575; <TASK> T1575; ? __vmalloc_node_range_noprof+0x14a/0x920 T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1575; ? dc_fpu_begin+0x51/0x60 [amdgpu] T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1575; ? asm_exc_invalid_op+0x1a/0x20 T1575; ? __vmalloc_node_noprof+0x47/0x60 T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1575; ? dml21_create_copy+0x16/0x40 [amdgpu] T1575; ? dc_state_create_copy+0x89/0x120 [amdgpu] T1575; ? dc_commit_state_no_check+0x271/0xe00 [amdgpu] T1575; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu] T1575; ? amdgpu_dm_atomic_commit_tail+0x61f/0x3650 [amdgpu] T1575; ? generic_reg_get+0x1c/0x30 [amdgpu] T1575; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1575; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1575; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1575; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1575; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1575; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm] T1575; ? wait_for_completion_timeout+0x127/0x170 T1575; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1575; ? commit_tail+0xad/0x140 [drm_kms_helper] T1575; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1575; ? drm_atomic_commit+0xac/0xe0 [drm] T1575; ? __drm_universal_plane_init.cold+0x11/0x11 [drm] T1575; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1575; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1575; ? drm_mode_getcrtc+0x180/0x180 [drm] T1575; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1575; ? drm_ioctl+0x27f/0x500 [drm] T1575; ? drm_mode_getcrtc+0x180/0x180 [drm] T1575; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1575; ? __x64_sys_ioctl+0x92/0xe0 T1575; ? do_syscall_64+0xdd/0x5d0 T1575; ? do_syscall_64+0x94/0x5d0 T1575; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1575; </TASK> T1575,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_rawmidi mt76_connac_lib snd_seq_device intel_rapl_msr iosf_mbi mt76 intel_rapl_common rapl mac80211 snd_hda_codec_atihdmi snd_hda_codec_hdmi pcspkr wmi_bmof snd_hda_intel snd_hda_codec libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm spd5118 regmap_i2c snd_timer snd rfkill soundcore aead evdev k10temp ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec scsi_common nvme_core crc16 video nvme_keyring gpio_amdpt i2c_piix4 nvme_auth usb_common gpi T1575,ncfrag=955/979;o_generic i2c_smbus wmi T1575;---[ end trace 0000000000000000 ]--- T1575;------------[ cut here ]------------ T1575;WARNING: kernel/printk/nbcon.c:1739 at nbcon_cpu_emergency_exit+0x85/0xa0, CPU#23: Xorg/1575 T1575,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_rawmidi mt76_connac_lib snd_seq_device intel_rapl_msr iosf_mbi mt76 intel_rapl_common rapl mac80211 snd_hda_codec_atihdmi snd_hda_codec_hdmi pcspkr wmi_bmof snd_hda_intel snd_hda_codec libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm spd5118 regmap_i2c snd_timer snd rfkill soundcore aead evdev k10temp ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec scsi_common nvme_core crc16 video nvme_keyring gpio_amdpt i2c_piix4 nvme_auth usb_common gpi T1575,ncfrag=955/979;o_generic i2c_smbus wmi T1575;CPU: 23 UID: 0 PID: 1575 Comm: Xorg Tainted: G D W 7.2.0-rc3-stable #1255 PREEMPT_{RT,(full)} T1575;Tainted: [D]=DIE, [W]=WARN T1575;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1575;RIP: 0010:nbcon_cpu_emergency_exit+0x85/0xa0 T1575;Code: 75 38 48 83 c4 10 c3 cc cc cc cc 48 8d 7c 24 04 e8 e0 ef ff ff 80 7c 24 05 00 74 ce e8 74 fc ff ff eb c7 e8 8d 67 f2 ff eb c9 <0f> 0b 8b 05 43 6a fc 00 85 c0 75 a2 0f 0b eb b0 e8 16 15 8b 00 66 T1575;RSP: 0018:ffffa11ac5bfb3f8 EFLAGS: 00010246 T1575;RAX: 0000000000000000 RBX: 000000000000000b RCX: 0000000000000000 T1575;RDX: ffff949d3d9db204 RSI: 0000000000000001 RDI: ffff949d3d9db040 T1575;RBP: 0000000000000246 R08: 0000000000000000 R09: 3fffffffffffdfff T1575;R10: ffffffffa6ed4e20 R11: ffffa11ac5bfb200 R12: ffffa11ac5bfb4d8 T1575;R13: ffffffffa60d2ad3 R14: 0000000000000002 R15: 0000000000000004 T1575;FS: 00007f2b496ccb80(0000) GS:ffff949d96b35000(0000) knlGS:0000000000000000 T1575;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1575;CR2: 0000557ef2780ef8 CR3: 000000011543b000 CR4: 0000000000f50ef0 T1575;PKRU: 55555554 T1575;Call Trace: T1575; <TASK> T1575; ? oops_exit.cold+0x13/0x1f T1575; ? oops_end+0x66/0xe0 T1575; ? do_trap+0xc5/0x110 T1575; ? do_error_trap+0x60/0x80 T1575; ? __get_vm_area_node+0x113/0x130 T1575; ? exc_invalid_op+0x4f/0x70 T1575; ? __get_vm_area_node+0x113/0x130 T1575; ? asm_exc_invalid_op+0x1a/0x20 T1575; ? __get_vm_area_node+0x113/0x130 T1575; ? __vmalloc_node_range_noprof+0x14a/0x920 T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1575; ? dc_fpu_begin+0x51/0x60 [amdgpu] T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1575; ? asm_exc_invalid_op+0x1a/0x20 T1575; ? __vmalloc_node_noprof+0x47/0x60 T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1575; ? dml21_create_copy+0x16/0x40 [amdgpu] T1575; ? dc_state_create_copy+0x89/0x120 [amdgpu] T1575; ? dc_commit_state_no_check+0x271/0xe00 [amdgpu] T1575; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu] T1575; ? amdgpu_dm_atomic_commit_tail+0x61f/0x3650 [amdgpu] T1575; ? generic_reg_get+0x1c/0x30 [amdgpu] T1575; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1575; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1575; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1575; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1575; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1575; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm] T1575; ? wait_for_completion_timeout+0x127/0x170 T1575; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1575; ? commit_tail+0xad/0x140 [drm_kms_helper] T1575; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1575; ? drm_atomic_commit+0xac/0xe0 [drm] T1575; ? __drm_universal_plane_init.cold+0x11/0x11 [drm] T1575; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1575; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1575; ? drm_mode_getcrtc+0x180/0x180 [drm] T1575; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1575; ? drm_ioctl+0x27f/0x500 [drm] T1575; ? drm_mode_getcrtc+0x180/0x180 [drm] T1575; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1575; ? __x64_sys_ioctl+0x92/0xe0 T1575; ? do_syscall_64+0xdd/0x5d0 T1575; ? do_syscall_64+0x94/0x5d0 T1575; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1575; </TASK> T1575;---[ end trace 0000000000000000 ]--- C23;RIP: 0010:__get_vm_area_node+0x113/0x130 C5;Code: ff bd ff ff ff ff 48 0f bd e8 b8 0c 00 00 00 ff c5 39 c5 0f 4c e8 b8 1e 00 00 00 39 c5 0f 4f e8 c4 e2 d1 f7 ee e9 34 ff ff ff <0f> 0b 4c 89 ef e8 e3 46 01 00 45 31 ed eb ae 0f 1f 00 66 66 2e 0f C5;RSP: 0018:ffffa11ac5bfb580 EFLAGS: 00010286 C5;RAX: 00000000ffffffff RBX: 0000000000000001 RCX: 0000000000000022 C5;RDX: 000000000000000c RSI: 0000000000000001 RDI: 000000000000f720 C5;RBP: 000000000000000c R08: ffffa11ac0000000 R09: ffffc11abfffffff C5;R10: 00000000ffffffff R11: 0000000000000066 R12: ffff949040380000 C5;R13: 0000000000000001 R14: 0000000000000dc0 R15: 000000000000f720 C5;FS: 00007f2b496ccb80(0000) GS:ffff949d966b5000(0000) knlGS:0000000000000000 C5;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 C5;CR2: 00007f17b8093940 CR3: 000000011543b000 CR4: 0000000000f50ef0 C5;PKRU: 55555554 T1575;Kernel panic - not syncing: Fatal exception in interrupt T1575;Kernel Offset: 0x24c00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff) T1575;---[ end Kernel panic - not syncing: Fatal exception in interrupt ]--- Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Re] kernel panic during shutdown in v7.2-rc{3,4} and next-20260722 with PREEMPT_RT 2026-07-23 13:10 ` [Re] kernel panic during shutdown in v7.2-rc{3,4} " Bert Karwatzki @ 2026-07-23 13:23 ` Bert Karwatzki 2026-07-23 16:17 ` Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-23 13:23 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswolf Am Donnerstag, dem 23.07.2026 um 15:10 +0200 schrieb Bert Karwatzki: > I was able to gather the panic error message from a failed shutdown via netconsole, > this time the kernel used was v7.2-rc3: > # > Bert Karwatzki Unfortunatetly I can now reproduce these kernel panics in v7.1: T1581;BUG: scheduling while atomic: Xorg/1581/0x00000003 T1581,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib mt792x_lib snd_ump mt76_connac_lib snd_rawmidi mt76 snd_seq_device intel_rapl_msr iosf_mbi intel_rapl_common snd_hda_codec_atihdmi mac80211 rapl wmi_bmof snd_hda_codec_hdmi snd_hda_intel snd_hda_codec pcspkr libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm snd_timer snd rfkill soundcore aead evdev spd5118 regmap_i2c ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm usbhid drm_exec drm_suballoc_helper mfd_core hid drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper drm_kms_helper ahci libahci xhci_pci drm libata xhci_hcd nvme scsi_mod usbcore igc nvme_core video cec scsi_common nvme_keyring crc16 nvme_auth i2c_piix4 gpio_amdpt usb_common i2c T1581,ncfrag=955/979;_smbus gpio_generic wmi T1581;CPU: 19 UID: 0 PID: 1581 Comm: Xorg Not tainted 7.1.0-stable #1241 PREEMPT_{RT,(full)} T1581;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1581;Call Trace: T1581; <TASK> T1581; ? dump_stack_lvl+0x4b/0x70 T1581; ? __schedule_bug.cold+0x3e/0x4a T1581; ? __schedule+0xf6f/0x1700 T1581; ? try_to_take_rt_mutex+0x191/0x300 T1581; ? rtlock_slowlock_locked+0x39/0xe50 T1581; ? schedule_rtlock+0x15/0x30 T1581; ? rtlock_slowlock_locked+0x30b/0xe50 T1581; ? rt_spin_lock+0xc3/0x120 T1581; ? get_page_from_freelist+0x221/0x15f0 T1581; ? dc_link_get_highest_encoding_format+0x61/0xb0 [amdgpu] T1581; ? __alloc_frozen_pages_noprof+0x146/0x2b0 T1581; ? ___kmalloc_large_node+0xae/0xd0 T1581; ? __kvmalloc_node_noprof+0x398/0x540 T1581; ? dcn401_build_pipe_pix_clk_params+0x10a/0x1f0 [amdgpu] T1581; ? dc_create_plane_state+0x24/0x80 [amdgpu] T1581; ? dc_state_create_phantom_plane+0x15/0x50 [amdgpu] T1581; ? dml21_handle_phantom_streams_planes+0x292/0x510 [amdgpu] T1581; ? dml21_mode_check_and_programming+0x157/0x7e0 [amdgpu] T1581; ? sysvec_call_function_single+0xe/0x80 T1581; ? asm_sysvec_call_function_single+0x1a/0x20 T1581; ? try_to_take_rt_mutex+0x191/0x300 T1581; ? calculate_plane_rec_in_timing_active+0x142/0x1f0 [amdgpu] T1581; ? spl_calculate_number_of_taps.constprop.0.isra.0+0x142/0xf00 [amdgpu] T1581; ? spl_calculate_number_of_taps.constprop.0.isra.0+0xed4/0xf00 [amdgpu] T1581; ? dcn401_validate_bandwidth+0xb8/0x1f0 [amdgpu] T1581; ? dc_validate_with_context+0x5cf/0x6b0 [amdgpu] T1581; ? dc_commit_streams+0x27c/0x4e0 [amdgpu] T1581; ? amdgpu_dm_atomic_commit_tail+0x4ec/0x3610 [amdgpu] T1581; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1581; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1581; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1581; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1581; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1581; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x176/0x3a0 [drm] T1581; ? wait_for_completion_timeout+0x127/0x170 T1581; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1581; ? commit_tail+0xad/0x140 [drm_kms_helper] T1581; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1581; ? drm_atomic_commit+0xac/0xe0 [drm] T1581; ? __drm_universal_plane_init.cold+0x12/0x12 [drm] T1581; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1581; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1581; ? __schedule+0x389/0x1700 T1581; ? rt_spin_lock+0x35/0x120 T1581; ? drm_mode_getcrtc+0x180/0x180 [drm] T1581; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1581; ? drm_ioctl+0x27f/0x520 [drm] T1581; ? drm_mode_getcrtc+0x180/0x180 [drm] T1581; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1581; ? __x64_sys_ioctl+0x92/0xe0 T1581; ? do_syscall_64+0xdd/0x5d0 T1581; ? switch_fpu_return+0x42/0x70 T1581; ? handle_irq_event+0x4c/0x80 T1581; ? do_syscall_64+0x94/0x5d0 T1581; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1581; </TASK> T1581;------------[ cut here ]------------ T1581;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:126 at dc_fpu_end+0x36/0x40 [amdgpu], CPU#20: Xorg/1581 T1581,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib mt792x_lib snd_ump mt76_connac_lib snd_rawmidi mt76 snd_seq_device intel_rapl_msr iosf_mbi intel_rapl_common snd_hda_codec_atihdmi mac80211 rapl wmi_bmof snd_hda_codec_hdmi snd_hda_intel snd_hda_codec pcspkr libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm snd_timer snd rfkill soundcore aead evdev spd5118 regmap_i2c ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm usbhid drm_exec drm_suballoc_helper mfd_core hid drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper drm_kms_helper ahci libahci xhci_pci drm libata xhci_hcd nvme scsi_mod usbcore igc nvme_core video cec scsi_common nvme_keyring crc16 nvme_auth i2c_piix4 gpio_amdpt usb_common i2c T1581,ncfrag=955/979;_smbus gpio_generic wmi T1581;CPU: 20 UID: 0 PID: 1581 Comm: Xorg Tainted: G W 7.1.0-stable #1241 PREEMPT_{RT,(full)} T1581;Tainted: [W]=WARN T1581;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1581;RIP: 0010:dc_fpu_end+0x36/0x40 [amdgpu] T1581;Code: 05 0f 2b f7 d6 ff c8 74 10 78 1f 65 ff 0d 32 1b f6 d6 74 0c c3 cc cc cc cc e8 96 f7 f2 d5 eb eb e8 4f 65 f1 d5 c3 cc cc cc cc <0f> 0b eb dd 66 0f 1f 44 00 00 41 56 41 55 41 54 55 53 48 83 ec 10 T1581;RSP: 0018:ffff9d3305d835b8 EFLAGS: 00010296 T1581;RAX: 00000000ffffffff RBX: ffff8face4600000 RCX: 0000000000000008 T1581;RDX: 0000000000000000 RSI: 00000000000006a4 RDI: ffffffffc15999d0 T1581;RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000001 T1581;R10: ffff8face4600000 R11: 0000000000000002 R12: ffff8fac0d6c0000 T1581;R13: ffff8faca1000000 R14: 0000000000000000 R15: ffff8faca1000000 T1581;FS: 00007ff40af34b80(0000) GS:ffff8fbba5c76000(0000) knlGS:0000000000000000 T1581;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1581;CR2: 0000559cb13d5018 CR3: 0000000120bd9000 CR4: 0000000000f50ef0 T1581;PKRU: 55555554 T1581;Call Trace: T1581; <TASK> T1581; ? dcn401_validate_bandwidth+0xd1/0x1f0 [amdgpu] T1581; ? dc_validate_with_context+0x5cf/0x6b0 [amdgpu] T1581; ? dc_commit_streams+0x27c/0x4e0 [amdgpu] T1581; ? amdgpu_dm_atomic_commit_tail+0x4ec/0x3610 [amdgpu] T1581; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1581; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1581; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1581; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1581; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1581; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x176/0x3a0 [drm] T1581; ? wait_for_completion_timeout+0x127/0x170 T1581; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1581; ? commit_tail+0xad/0x140 [drm_kms_helper] T1581; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1581; ? drm_atomic_commit+0xac/0xe0 [drm] T1581; ? __drm_universal_plane_init.cold+0x12/0x12 [drm] T1581; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1581; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1581; ? __schedule+0x389/0x1700 T1581; ? rt_spin_lock+0x35/0x120 T1581; ? drm_mode_getcrtc+0x180/0x180 [drm] T1581; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1581; ? drm_ioctl+0x27f/0x520 [drm] T1581; ? drm_mode_getcrtc+0x180/0x180 [drm] T1581; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1581; ? __x64_sys_ioctl+0x92/0xe0 T1581; ? do_syscall_64+0xdd/0x5d0 T1581; ? switch_fpu_return+0x42/0x70 T1581; ? handle_irq_event+0x4c/0x80 T1581; ? do_syscall_64+0x94/0x5d0 T1581; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1581; </TASK> T1581;---[ end trace 0000000000000000 ]--- T1581;------------[ cut here ]------------ T1581;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:97 at dc_fpu_begin+0x4f/0x60 [amdgpu], CPU#1: Xorg/1581 T1581,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib mt792x_lib snd_ump mt76_connac_lib snd_rawmidi mt76 snd_seq_device intel_rapl_msr iosf_mbi intel_rapl_common snd_hda_codec_atihdmi mac80211 rapl wmi_bmof snd_hda_codec_hdmi snd_hda_intel snd_hda_codec pcspkr libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm snd_timer snd rfkill soundcore aead evdev spd5118 regmap_i2c ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm usbhid drm_exec drm_suballoc_helper mfd_core hid drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper drm_kms_helper ahci libahci xhci_pci drm libata xhci_hcd nvme scsi_mod usbcore igc nvme_core video cec scsi_common nvme_keyring crc16 nvme_auth i2c_piix4 gpio_amdpt usb_common i2c T1581,ncfrag=955/979;_smbus gpio_generic wmi T1581;CPU: 1 UID: 0 PID: 1581 Comm: Xorg Tainted: G W 7.1.0-stable #1241 PREEMPT_{RT,(full)} T1581;Tainted: [W]=WARN T1581;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1581;RIP: 0010:dc_fpu_begin+0x4f/0x60 [amdgpu] T1581;Code: d0 75 27 65 ff 05 81 1b f6 d6 b8 01 00 00 00 65 0f c1 05 44 2b f7 d6 85 c0 74 05 c3 cc cc cc cc bf 02 00 00 00 e9 51 f8 f2 d5 <0f> 0b eb d5 66 90 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 d6 b8 T1581;RSP: 0018:ffff9d3305d83640 EFLAGS: 00010206 T1581;RAX: 0000000000ff0000 RBX: ffff8fad48480000 RCX: ffff8face86d3e28 T1581;RDX: 0000000000ff0000 RSI: 000000000000011f RDI: ffffffffc15bcda0 T1581;RBP: ffff8fad65380000 R08: ffffffff97b01fc0 R09: 0000000000000006 T1581;R10: ffffffff97cb5440 R11: 0000000000000076 R12: ffff8fad48480000 T1581;R13: 0000000000000001 R14: ffff8faca1000000 R15: 0000000000000000 T1581;FS: 00007ff40af34b80(0000) GS:ffff8fbba57b6000(0000) knlGS:0000000000000000 T1581;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1581;CR2: 00007f593eec2478 CR3: 0000000120bd9000 CR4: 0000000000f50ef0 T1581;PKRU: 55555554 T1581;Call Trace: T1581; <TASK> T1581; ? dc_state_create_copy+0x76/0x120 [amdgpu] T1581; ? dc_commit_state_no_check+0x271/0xde0 [amdgpu] T1581; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu] T1581; ? amdgpu_dm_atomic_commit_tail+0x4ec/0x3610 [amdgpu] T1581; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1581; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1581; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1581; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1581; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1581; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x176/0x3a0 [drm] T1581; ? wait_for_completion_timeout+0x127/0x170 T1581; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1581; ? commit_tail+0xad/0x140 [drm_kms_helper] T1581; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1581; ? drm_atomic_commit+0xac/0xe0 [drm] T1581; ? __drm_universal_plane_init.cold+0x12/0x12 [drm] T1581; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1581; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1581; ? __schedule+0x389/0x1700 T1581; ? rt_spin_lock+0x35/0x120 T1581; ? drm_mode_getcrtc+0x180/0x180 [drm] T1581; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1581; ? drm_ioctl+0x27f/0x520 [drm] T1581; ? drm_mode_getcrtc+0x180/0x180 [drm] T1581; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1581; ? __x64_sys_ioctl+0x92/0xe0 T1581; ? do_syscall_64+0xdd/0x5d0 T1581; ? switch_fpu_return+0x42/0x70 T1581; ? handle_irq_event+0x4c/0x80 T1581; ? do_syscall_64+0x94/0x5d0 T1581; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1581; </TASK> T1581;---[ end trace 0000000000000000 ]--- T1581;------------[ cut here ]------------ T1581;kernel BUG at mm/vmalloc.c:3206! T1581;Oops: invalid opcode: 0000 [#1] SMP NOPTI T1581;CPU: 29 UID: 0 PID: 1581 Comm: Xorg Tainted: G W 7.1.0-stable #1241 PREEMPT_{RT,(full)} T1581;Tainted: [W]=WARN T1581;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1581;RIP: 0010:__get_vm_area_node+0x113/0x130 T1581;Code: ff bd ff ff ff ff 48 0f bd e8 b8 0c 00 00 00 ff c5 39 c5 0f 4c e8 b8 1e 00 00 00 39 c5 0f 4f e8 c4 e2 d1 f7 ee e9 34 ff ff ff <0f> 0b 4c 89 ef e8 23 51 01 00 45 31 ed eb ae 0f 1f 00 66 66 2e 0f T1581;RSP: 0018:ffff9d3305d834f8 EFLAGS: 00010286 T1581;RAX: 00000000ffffffff RBX: 0000000000000001 RCX: 0000000000000022 T1581;RDX: 000000000000000c RSI: 0000000000000001 RDI: 000000000000f720 T1581;RBP: 000000000000000c R08: ffff9d3300000000 R09: ffffbd32ffffffff T1581;R10: 00000000ffffffff R11: 0000000000000076 R12: ffff8fad48480000 T1581;R13: 0000000000000001 R14: 0000000000000dc0 R15: 000000000000f720 T1581;FS: 00007ff40af34b80(0000) GS:ffff8fbba5eb6000(0000) knlGS:0000000000000000 T1581;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1581;CR2: 00007f6ae0f90110 CR3: 0000000120bd9000 CR4: 0000000000f50ef0 T1581;PKRU: 55555554 T1581;Call Trace: T1581; <TASK> T1581; ? __vmalloc_node_range_noprof+0x14a/0x920 T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1581; ? exc_invalid_op+0x18/0x70 T1581; ? __vmalloc_node_noprof+0x47/0x60 T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1581; ? dml21_create_copy+0x16/0x40 [amdgpu] T1581; ? dc_state_create_copy+0x89/0x120 [amdgpu] T1581; ? dc_commit_state_no_check+0x271/0xde0 [amdgpu] T1581; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu] T1581; ? amdgpu_dm_atomic_commit_tail+0x4ec/0x3610 [amdgpu] T1581; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1581; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1581; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1581; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1581; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1581; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x176/0x3a0 [drm] T1581; ? wait_for_completion_timeout+0x127/0x170 T1581; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1581; ? commit_tail+0xad/0x140 [drm_kms_helper] T1581; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1581; ? drm_atomic_commit+0xac/0xe0 [drm] T1581; ? __drm_universal_plane_init.cold+0x12/0x12 [drm] T1581; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1581; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1581; ? __schedule+0x389/0x1700 T1581; ? rt_spin_lock+0x35/0x120 T1581; ? drm_mode_getcrtc+0x180/0x180 [drm] T1581; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1581; ? drm_ioctl+0x27f/0x520 [drm] T1581; ? drm_mode_getcrtc+0x180/0x180 [drm] T1581; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1581; ? __x64_sys_ioctl+0x92/0xe0 T1581; ? do_syscall_64+0xdd/0x5d0 T1581; ? switch_fpu_return+0x42/0x70 T1581; ? handle_irq_event+0x4c/0x80 T1581; ? do_syscall_64+0x94/0x5d0 T1581; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1581; </TASK> T1581,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib mt792x_lib snd_ump mt76_connac_lib snd_rawmidi mt76 snd_seq_device intel_rapl_msr iosf_mbi intel_rapl_common snd_hda_codec_atihdmi mac80211 rapl wmi_bmof snd_hda_codec_hdmi snd_hda_intel snd_hda_codec pcspkr libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm snd_timer snd rfkill soundcore aead evdev spd5118 regmap_i2c ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm usbhid drm_exec drm_suballoc_helper mfd_core hid drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper drm_kms_helper ahci libahci xhci_pci drm libata xhci_hcd nvme scsi_mod usbcore igc nvme_core video cec scsi_common nvme_keyring crc16 nvme_auth i2c_piix4 gpio_amdpt usb_common i2c T1581,ncfrag=955/979;_smbus gpio_generic wmi T1581;---[ end trace 0000000000000000 ]--- T1581;------------[ cut here ]------------ T1581;WARNING: kernel/printk/nbcon.c:1739 at nbcon_cpu_emergency_exit+0x85/0xa0, CPU#26: Xorg/1581 T1581,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib mt792x_lib snd_ump mt76_connac_lib snd_rawmidi mt76 snd_seq_device intel_rapl_msr iosf_mbi intel_rapl_common snd_hda_codec_atihdmi mac80211 rapl wmi_bmof snd_hda_codec_hdmi snd_hda_intel snd_hda_codec pcspkr libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm snd_timer snd rfkill soundcore aead evdev spd5118 regmap_i2c ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm usbhid drm_exec drm_suballoc_helper mfd_core hid drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper drm_kms_helper ahci libahci xhci_pci drm libata xhci_hcd nvme scsi_mod usbcore igc nvme_core video cec scsi_common nvme_keyring crc16 nvme_auth i2c_piix4 gpio_amdpt usb_common i2c T1581,ncfrag=955/979;_smbus gpio_generic wmi T1581;CPU: 26 UID: 0 PID: 1581 Comm: Xorg Tainted: G D W 7.1.0-stable #1241 PREEMPT_{RT,(full)} T1581;Tainted: [D]=DIE, [W]=WARN T1581;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1581;RIP: 0010:nbcon_cpu_emergency_exit+0x85/0xa0 T1581;Code: 75 38 48 83 c4 10 c3 cc cc cc cc 48 8d 7c 24 04 e8 e0 ef ff ff 80 7c 24 05 00 74 ce e8 74 fc ff ff eb c7 e8 0d 86 f2 ff eb c9 <0f> 0b 8b 05 c3 78 fc 00 85 c0 75 a2 0f 0b eb b0 e8 46 01 8a 00 66 T1581;RSP: 0018:ffff9d3305d83368 EFLAGS: 00010246 T1581;RAX: 0000000000000000 RBX: 000000000000000b RCX: 0000000000000000 T1581;RDX: ffff8fbb3da9b3c4 RSI: 0000000000000001 RDI: ffff8fbb3da9b200 T1581;RBP: 0000000000000246 R08: 0000000000000000 R09: 3fffffffffffdfff T1581;R10: ffffffff97cd3dc0 R11: ffff9d3305d83170 R12: ffff9d3305d83448 T1581;R13: ffffffff96ec5913 R14: 0000000000000002 R15: 0000000000000004 T1581;FS: 00007ff40af34b80(0000) GS:ffff8fbba5df6000(0000) knlGS:0000000000000000 T1581;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1581;CR2: 00007f4d92ce39d0 CR3: 0000000120bd9000 CR4: 0000000000f50ef0 T1581;PKRU: 55555554 T1581;Call Trace: T1581; <TASK> T1581; ? oops_exit.cold+0x13/0x1f T1581; ? oops_end+0x66/0xe0 T1581; ? do_trap+0xc5/0x110 T1581; ? do_error_trap+0x60/0x80 T1581; ? __get_vm_area_node+0x113/0x130 T1581; ? exc_invalid_op+0x4f/0x70 T1581; ? __get_vm_area_node+0x113/0x130 T1581; ? asm_exc_invalid_op+0x1a/0x20 T1581; ? __get_vm_area_node+0x113/0x130 T1581; ? __vmalloc_node_range_noprof+0x14a/0x920 T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1581; ? exc_invalid_op+0x18/0x70 T1581; ? __vmalloc_node_noprof+0x47/0x60 T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu] T1581; ? dml21_create_copy+0x16/0x40 [amdgpu] T1581; ? dc_state_create_copy+0x89/0x120 [amdgpu] T1581; ? dc_commit_state_no_check+0x271/0xde0 [amdgpu] T1581; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu] T1581; ? amdgpu_dm_atomic_commit_tail+0x4ec/0x3610 [amdgpu] T1581; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu] T1581; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu] T1581; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu] T1581; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu] T1581; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu] T1581; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x176/0x3a0 [drm] T1581; ? wait_for_completion_timeout+0x127/0x170 T1581; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm] T1581; ? commit_tail+0xad/0x140 [drm_kms_helper] T1581; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1581; ? drm_atomic_commit+0xac/0xe0 [drm] T1581; ? __drm_universal_plane_init.cold+0x12/0x12 [drm] T1581; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1581; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1581; ? __schedule+0x389/0x1700 T1581; ? rt_spin_lock+0x35/0x120 T1581; ? drm_mode_getcrtc+0x180/0x180 [drm] T1581; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1581; ? drm_ioctl+0x27f/0x520 [drm] T1581; ? drm_mode_getcrtc+0x180/0x180 [drm] T1581; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1581; ? __x64_sys_ioctl+0x92/0xe0 T1581; ? do_syscall_64+0xdd/0x5d0 T1581; ? switch_fpu_return+0x42/0x70 T1581; ? handle_irq_event+0x4c/0x80 T1581; ? do_syscall_64+0x94/0x5d0 T1581; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1581; </TASK> T1581;---[ end trace 0000000000000000 ]--- C19;RIP: 0010:__get_vm_area_node+0x113/0x130 C28;Code: ff bd ff ff ff ff 48 0f bd e8 b8 0c 00 00 00 ff c5 39 c5 0f 4c e8 b8 1e 00 00 00 39 c5 0f 4f e8 c4 e2 d1 f7 ee e9 34 ff ff ff <0f> 0b 4c 89 ef e8 23 51 01 00 45 31 ed eb ae 0f 1f 00 66 66 2e 0f C28;RSP: 0018:ffff9d3305d834f8 EFLAGS: 00010286 C28;RAX: 00000000ffffffff RBX: 0000000000000001 RCX: 0000000000000022 C28;RDX: 000000000000000c RSI: 0000000000000001 RDI: 000000000000f720 C28;RBP: 000000000000000c R08: ffff9d3300000000 R09: ffffbd32ffffffff C28;R10: 00000000ffffffff R11: 0000000000000076 R12: ffff8fad48480000 C28;R13: 0000000000000001 R14: 0000000000000dc0 R15: 000000000000f720 C28;FS: 00007ff40af34b80(0000) GS:ffff8fbba5e76000(0000) knlGS:0000000000000000 C28;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 C28;CR2: 00007f6ae2fa7010 CR3: 0000000120bd9000 CR4: 0000000000f50ef0 C28;PKRU: 55555554 T1581;Kernel panic - not syncing: Fatal exception in interrupt T1581;Kernel Offset: 0x15a00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff) T1581;---[ end Kernel panic - not syncing: Fatal exception in interrupt ]--- So now I'm going to use memtest86+ on my machine and then look at the changes I had in my userspace as the first error occured on 22.7.2026. Let's hope this does not escalate ... Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Re] kernel panic during shutdown in v7.2-rc{3,4} and next-20260722 with PREEMPT_RT 2026-07-23 13:23 ` Bert Karwatzki @ 2026-07-23 16:17 ` Bert Karwatzki 2026-07-23 22:51 ` [Re] kernel panic during shutdown in next-20260722 Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-23 16:17 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswolf Am Donnerstag, dem 23.07.2026 um 15:23 +0200 schrieb Bert Karwatzki: > Am Donnerstag, dem 23.07.2026 um 15:10 +0200 schrieb Bert Karwatzki: > > I was able to gather the panic error message from a failed shutdown via netconsole, > > this time the kernel used was v7.2-rc3: > > # > > Bert Karwatzki > > Unfortunatetly I can now reproduce these kernel panics in v7.1: > > > So now I'm going to use memtest86+ on my machine and then look at the changes I had in > my userspace as the first error occured on 22.7.2026. Let's hope this does not escalate ... > > Bert Karwatzki So I've run memtest86+ for ~2.5h (2.6 complete runs) and found no error. Even if my memory contained an error, if it's that hard to trigger it would not cause frequent crashes. But I found out an exciting thing: I can only reproduce the crashes in v7.2-rc4 when watching the reboot via netconsole, without netconsole no crash occurs!(This also explains why I had not seen this crashes before ...) In next-20260722 the crash is reproducible without netconsole. So I'm going back to bisecting from v7.2-rc4 to next-20260722. Once I'm finished with that I'm going to look at the "netconsole triggerred" crashes. Does anyone have an idea what's going on? Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Re] kernel panic during shutdown in next-20260722 2026-07-23 16:17 ` Bert Karwatzki @ 2026-07-23 22:51 ` Bert Karwatzki 2026-07-24 15:08 ` Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-23 22:51 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswolf Am Donnerstag, dem 23.07.2026 um 18:17 +0200 schrieb Bert Karwatzki: > Am Donnerstag, dem 23.07.2026 um 15:23 +0200 schrieb Bert Karwatzki: > > Am Donnerstag, dem 23.07.2026 um 15:10 +0200 schrieb Bert Karwatzki: > > > I was able to gather the panic error message from a failed shutdown via netconsole, > > > this time the kernel used was v7.2-rc3: > > > # > > > Bert Karwatzki > > > > Unfortunatetly I can now reproduce these kernel panics in v7.1: > > > > > > So now I'm going to use memtest86+ on my machine and then look at the changes I had in > > my userspace as the first error occured on 22.7.2026. Let's hope this does not escalate ... > > > > Bert Karwatzki > > > But I found out an exciting thing: > I can only reproduce the crashes in v7.2-rc4 when watching the reboot via netconsole, > without netconsole no crash occurs!(This also explains why I had not seen this crashes before ...) > Actually this is not cause by netconsole, but by rebooting right after a crash. Some broken state seems to be preserved across reboots. Switching off the power supply after a crash or even a ~30s wait after switching off the crashed machine seems to be enough to get around this. Also the hang when rebooting next-20260722 also occurs when compiling without PREEMPT_RT. Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Re] kernel panic during shutdown in next-20260722 2026-07-23 22:51 ` [Re] kernel panic during shutdown in next-20260722 Bert Karwatzki @ 2026-07-24 15:08 ` Bert Karwatzki 2026-07-25 19:58 ` Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-24 15:08 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswolf Am Freitag, dem 24.07.2026 um 00:51 +0200 schrieb Bert Karwatzki: > Am Donnerstag, dem 23.07.2026 um 18:17 +0200 schrieb Bert Karwatzki: > > Am Donnerstag, dem 23.07.2026 um 15:23 +0200 schrieb Bert Karwatzki: > > > Am Donnerstag, dem 23.07.2026 um 15:10 +0200 schrieb Bert Karwatzki: > > > > I was able to gather the panic error message from a failed shutdown via netconsole, > > > > this time the kernel used was v7.2-rc3: > > > > # > > > > Bert Karwatzki > > > > > > Unfortunatetly I can now reproduce these kernel panics in v7.1: > > > > > > > > > So now I'm going to use memtest86+ on my machine and then look at the changes I had in > > > my userspace as the first error occured on 22.7.2026. Let's hope this does not escalate ... > > > > > > Bert Karwatzki > > > > > > But I found out an exciting thing: > > I can only reproduce the crashes in v7.2-rc4 when watching the reboot via netconsole, > > without netconsole no crash occurs!(This also explains why I had not seen this crashes before ...) > > > Actually this is not cause by netconsole, but by rebooting right after a crash. Some > broken state seems to be preserved across reboots. Switching off the power supply after > a crash or even a ~30s wait after switching off the crashed machine seems to be enough > to get around this. > Also the hang when rebooting next-20260722 also occurs when compiling without PREEMPT_RT. > > Bert Karwatzki There are actually several errors here: 1) The shutdown hang wich occurs in next-20260722+ (PREMPT_RT or not) This error is caused by (I'll open a separate thread for this): commit 13b7e6a96a005c656d38f3da51581deaf9866375 Author: Nicolas Cavallari <nicolas.cavallari@green-communications.fr> Date: Wed Jul 8 16:43:47 2026 +0200 wifi: mt76: Disable napi when removing device Unloading the mt7915e module with a MT7916 triggers multiples WARN in __netif_napi_del_locked() and in page_pool_disable_direct_recycling() because the driver does not disable the napi before destroying it. This is troublesome since on MT7916 it is required to unload the module and reinsert it with a different enable_6ghz parameter to change the frequency. The system generally becomes unstable after reinserting the module. Fix it by disabling napi before deleting it. Also, do not delete napi on WED queues since napi is neither used nor initialized on them. Fixes: 17f1de56df05 ("mt76: add common code shared between multiple chipsets") Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr> Link: https://patch.msgid.link/20260708144615.24092-1-nicolas.cavallari@green-communications.fr Signed-off-by: Felix Fietkau <nbd@nbd.name> diff --git a/drivers/net/wireless/mediatek/mt76/dma.c b/drivers/net/wireless/mediatek/mt76/dma.c index f8c2fe5f2f58..322041859217 100644 --- a/drivers/net/wireless/mediatek/mt76/dma.c +++ b/drivers/net/wireless/mediatek/mt76/dma.c @@ -1189,7 +1189,10 @@ void mt76_dma_cleanup(struct mt76_dev *dev) mt76_for_each_q_rx(dev, i) { struct mt76_queue *q = &dev->q_rx[i]; - netif_napi_del(&dev->napi[i]); + if (!mt76_queue_is_wed_rro(q)) { + napi_disable(&dev->napi[i]); + netif_napi_del(&dev->napi[i]); + } mt76_dma_rx_cleanup(dev, q); page_pool_destroy(q->page_pool); 2) The "scheduling while atomic" errors which occur in v7.2-rc4 and earlier, once I figure out these I'll contiue here (v6.19 is free from these errors) Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Re] kernel panic during shutdown in next-20260722 2026-07-24 15:08 ` Bert Karwatzki @ 2026-07-25 19:58 ` Bert Karwatzki 2026-07-25 23:16 ` Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-25 19:58 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswolf Am Freitag, dem 24.07.2026 um 17:08 +0200 schrieb Bert Karwatzki: > > > 2) The "scheduling while atomic" errors which occur in v7.2-rc4 and earlier, once I figure out > these I'll contiue here (v6.19 is free from these errors) > > Bert Karwatzki To figure out the "scheduling while atomic" errors when rebooting from v7.1 I first retested commit 8bf0cb97edb ("drm/amd/display: Move dml2_destroy to non-FPU compilation unit") which was supposed to fix "scheduling while atomic" errors introduced by these patches: 32c1c35b6d8b drm/amd/display: Move FPU Guards From DML To DC - Part 3 4bb2f0721ed8 drm/amd/display: Move FPU Guards From DML To DC - Part 2 3539437f354b drm/amd/display: Move FPU Guards From DML To DC - Part 1 https://lore.kernel.org/lkml/20260409131411.10598-1-spasswolf@web.de/ On the 8th reboot I got an "scheduling while atomic" error (no panic though): T4874;netconsole: network logging started T4874;netconsole-setup: Test log message to verify netconsole configuration. T1499;BUG: scheduling while atomic: Xorg/1499/0x00000003 T1499,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e intel_rapl_msr mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_hda_codec_atihdmi snd_rawmidi snd_hda_codec_hdmi snd_seq_device mt76_connac_lib intel_rapl_common mt76 iosf_mbi rapl snd_hda_intel mac80211 wmi_bmof snd_hda_codec snd_hda_core snd_intel_dspcfg pcspkr snd_hwdep spd5118 regmap_i2c snd_pcm libarc4 snd_timer cfg80211 snd soundcore k10temp rfkill evdev ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic drm_client_lib i2c_algo_bit usbhid drm_buddy drm_ttm_helper hid ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm usbcore scsi_mod nvme igc nvme_core cec scsi_common crc16 video usb_common nvme_keyring nvm T1499,ncfrag=919/979;e_auth i2c_piix4 hkdf gpio_amdpt gpio_generic i2c_smbus wmi T1499;CPU: 18 UID: 0 PID: 1499 Comm: Xorg Not tainted 7.0.0-rc7-bisect-01908-g8bf0cb97edb6 #1259 PREEMPT_{RT,(full)} T1499;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1499;Call Trace: T1499; <TASK> T1499; ? dump_stack_lvl+0x4b/0x70 T1499; ? __schedule_bug.cold+0x3e/0x4a T1499; ? __schedule+0xedf/0x15c0 T1499; ? schedule_rtlock+0x15/0x30 T1499; ? rtlock_slowlock_locked+0x30b/0xe50 T1499; ? rt_spin_lock+0xc3/0x120 T1499; ? get_page_from_freelist+0x243/0x1630 T1499; ? rt_spin_unlock+0x5a/0xa0 T1499; ? __alloc_frozen_pages_noprof+0x146/0x2b0 T1499; ? ___kmalloc_large_node+0xd7/0xf0 T1499; ? __kvmalloc_node_noprof+0x398/0x540 T1499; ? dcn401_build_pipe_pix_clk_params+0x10a/0x1f0 [amdgpu] T1499; ? dc_create_plane_state+0x24/0x80 [amdgpu] T1499; ? dc_state_create_phantom_plane+0x15/0x50 [amdgpu] T1499; ? dml21_handle_phantom_streams_planes+0x292/0x510 [amdgpu] T1499; ? dml21_mode_check_and_programming+0x157/0x7e0 [amdgpu] T1499; ? spl_set_filters_data+0xbc/0xd0 [amdgpu] T1499; ? dcn401_validate_bandwidth+0xb8/0x1f0 [amdgpu] T1499; ? update_planes_and_stream_state+0xeb5/0x1520 [amdgpu] T1499; ? update_planes_and_stream_prepare_v3+0xb3/0x430 [amdgpu] T1499; ? amdgpu_device_wreg+0x1e/0xe0 [amdgpu] T1499; ? amdgpu_device_wreg+0x1e/0xe0 [amdgpu] T1499; ? dc_update_planes_and_stream+0x87/0x130 [amdgpu] T1499; ? amdgpu_dm_atomic_commit_tail+0x1239/0x35e0 [amdgpu] T1499; ? commit_tail+0xcd/0x160 [drm_kms_helper] T1499; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1499; ? drm_atomic_commit+0xac/0xe0 [drm] T1499; ? __drm_universal_plane_init.cold+0x12/0x12 [drm] T1499; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1499; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1499; ? do_futex+0xc0/0x180 T1499; ? __x64_sys_futex+0x10d/0x200 T1499; ? drm_mode_getcrtc+0x180/0x180 [drm] T1499; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1499; ? drm_ioctl+0x27f/0x520 [drm] T1499; ? drm_mode_getcrtc+0x180/0x180 [drm] T1499; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1499; ? __x64_sys_ioctl+0x92/0xe0 T1499; ? do_syscall_64+0x118/0x5e0 T1499; ? irqentry_exit+0x325/0x560 T1499; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1499; </TASK> T1499;------------[ cut here ]------------ T1499;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:126 at dc_fpu_end+0x36/0x40 [amdgpu], CPU#17: Xorg/1499 T1499,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e intel_rapl_msr mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_hda_codec_atihdmi snd_rawmidi snd_hda_codec_hdmi snd_seq_device mt76_connac_lib intel_rapl_common mt76 iosf_mbi rapl snd_hda_intel mac80211 wmi_bmof snd_hda_codec snd_hda_core snd_intel_dspcfg pcspkr snd_hwdep spd5118 regmap_i2c snd_pcm libarc4 snd_timer cfg80211 snd soundcore k10temp rfkill evdev ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic drm_client_lib i2c_algo_bit usbhid drm_buddy drm_ttm_helper hid ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm usbcore scsi_mod nvme igc nvme_core cec scsi_common crc16 video usb_common nvme_keyring nvm T1499,ncfrag=919/979;e_auth i2c_piix4 hkdf gpio_amdpt gpio_generic i2c_smbus wmi T1499;CPU: 17 UID: 0 PID: 1499 Comm: Xorg Tainted: G W 7.0.0-rc7-bisect-01908-g8bf0cb97edb6 #1259 PREEMPT_{RT,(full)} T1499;Tainted: [W]=WARN T1499;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1499;RIP: 0010:dc_fpu_end+0x36/0x40 [amdgpu] T1499;Code: 05 7f f9 76 f1 ff c8 74 10 78 1f 65 ff 0d a2 e9 75 f1 74 0c c3 cc cc cc cc e8 86 f3 72 f0 eb eb e8 6f 63 71 f0 c3 cc cc cc cc <0f> 0b eb dd 66 0f 1f 44 00 00 41 56 41 55 41 54 55 53 48 83 ec 10 T1499;RSP: 0018:ffffb02c0a13f670 EFLAGS: 00010296 T1499;RAX: 00000000ffffffff RBX: ffff973c82b80000 RCX: 0000000000000008 T1499;RDX: 0000000000000000 RSI: 00000000000006a4 RDI: ffffffffc1599830 T1499;RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000001 T1499;R10: ffff973c82b80000 R11: 0000000000000002 R12: ffff973c40290000 T1499;R13: ffff973be0c00000 R14: 0000000000000000 R15: 0000000000000001 T1499;FS: 00007f0caaec0b80(0000) GS:ffff974acb3b9000(0000) knlGS:0000000000000000 T1499;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1499;CR2: 00007fb6d8830990 CR3: 000000010a518000 CR4: 0000000000f50ef0 T1499;PKRU: 55555554 T1499;Call Trace: T1499; <TASK> T1499; ? dcn401_validate_bandwidth+0xd1/0x1f0 [amdgpu] T1499; ? update_planes_and_stream_state+0xeb5/0x1520 [amdgpu] T1499; ? update_planes_and_stream_prepare_v3+0xb3/0x430 [amdgpu] T1499; ? amdgpu_device_wreg+0x1e/0xe0 [amdgpu] T1499; ? amdgpu_device_wreg+0x1e/0xe0 [amdgpu] T1499; ? dc_update_planes_and_stream+0x87/0x130 [amdgpu] T1499; ? amdgpu_dm_atomic_commit_tail+0x1239/0x35e0 [amdgpu] T1499; ? commit_tail+0xcd/0x160 [drm_kms_helper] T1499; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1499; ? drm_atomic_commit+0xac/0xe0 [drm] T1499; ? __drm_universal_plane_init.cold+0x12/0x12 [drm] T1499; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1499; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1499; ? do_futex+0xc0/0x180 T1499; ? __x64_sys_futex+0x10d/0x200 T1499; ? drm_mode_getcrtc+0x180/0x180 [drm] T1499; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1499; ? drm_ioctl+0x27f/0x520 [drm] T1499; ? drm_mode_getcrtc+0x180/0x180 [drm] T1499; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1499; ? __x64_sys_ioctl+0x92/0xe0 T1499; ? do_syscall_64+0x118/0x5e0 T1499; ? irqentry_exit+0x325/0x560 T1499; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1499; </TASK> T1499;---[ end trace 0000000000000000 ]--- T1499;------------[ cut here ]------------ T1499;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:97 at dc_fpu_begin+0x4f/0x60 [amdgpu], CPU#17: Xorg/1499 T1499,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e intel_rapl_msr mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_hda_codec_atihdmi snd_rawmidi snd_hda_codec_hdmi snd_seq_device mt76_connac_lib intel_rapl_common mt76 iosf_mbi rapl snd_hda_intel mac80211 wmi_bmof snd_hda_codec snd_hda_core snd_intel_dspcfg pcspkr snd_hwdep spd5118 regmap_i2c snd_pcm libarc4 snd_timer cfg80211 snd soundcore k10temp rfkill evdev ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic drm_client_lib i2c_algo_bit usbhid drm_buddy drm_ttm_helper hid ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm usbcore scsi_mod nvme igc nvme_core cec scsi_common crc16 video usb_common nvme_keyring nvm T1499,ncfrag=919/979;e_auth i2c_piix4 hkdf gpio_amdpt gpio_generic i2c_smbus wmi T1499;CPU: 17 UID: 0 PID: 1499 Comm: Xorg Tainted: G W 7.0.0-rc7-bisect-01908-g8bf0cb97edb6 #1259 PREEMPT_{RT,(full)} T1499;Tainted: [W]=WARN T1499;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1499;RIP: 0010:dc_fpu_begin+0x4f/0x60 [amdgpu] T1499;Code: d0 75 27 65 ff 05 f1 e9 75 f1 b8 01 00 00 00 65 0f c1 05 b4 f9 76 f1 85 c0 74 05 c3 cc cc cc cc bf 02 00 00 00 e9 41 f4 72 f0 <0f> 0b eb d5 66 90 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 d6 b8 T1499;RSP: 0018:ffffb02c0a13f7e8 EFLAGS: 00010206 T1499;RAX: 0000000000ff0000 RBX: ffff973be0c00000 RCX: 0000000000000000 T1499;RDX: 0000000000ff0000 RSI: 00000000000006c8 RDI: ffffffffc1599800 T1499;RBP: ffff973c82b80000 R08: ffffb02c0a13f7bc R09: 000000000000000a T1499;R10: ffffb02c0a13f760 R11: 0000000000000002 R12: ffff973c40290000 T1499;R13: 0000000000000001 R14: ffff973be0c00000 R15: ffff973b4e999000 T1499;FS: 00007f0caaec0b80(0000) GS:ffff974acb3b9000(0000) knlGS:0000000000000000 T1499;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1499;CR2: 00007fb6d8830990 CR3: 000000010a518000 CR4: 0000000000f50ef0 T1499;PKRU: 55555554 T1499;Call Trace: T1499; <TASK> T1499; ? dcn401_prepare_mcache_programming+0x2f/0x70 [amdgpu] T1499; ? commit_planes_for_stream+0x157/0x1870 [amdgpu] T1499; ? update_planes_and_stream_execute_v3+0x3c/0xd0 [amdgpu] T1499; ? dc_update_planes_and_stream+0xb6/0x130 [amdgpu] T1499; ? amdgpu_dm_atomic_commit_tail+0x1239/0x35e0 [amdgpu] T1499; ? commit_tail+0xcd/0x160 [drm_kms_helper] T1499; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1499; ? drm_atomic_commit+0xac/0xe0 [drm] T1499; ? __drm_universal_plane_init.cold+0x12/0x12 [drm] T1499; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1499; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1499; ? do_futex+0xc0/0x180 T1499; ? __x64_sys_futex+0x10d/0x200 T1499; ? drm_mode_getcrtc+0x180/0x180 [drm] T1499; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1499; ? drm_ioctl+0x27f/0x520 [drm] T1499; ? drm_mode_getcrtc+0x180/0x180 [drm] T1499; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1499; ? __x64_sys_ioctl+0x92/0xe0 T1499; ? do_syscall_64+0x118/0x5e0 T1499; ? irqentry_exit+0x325/0x560 T1499; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1499; </TASK> T1499;---[ end trace 0000000000000000 ]--- T1499;BUG: scheduling while atomic: Xorg/1499/0x00000000 T1499,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e intel_rapl_msr mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_hda_codec_atihdmi snd_rawmidi snd_hda_codec_hdmi snd_seq_device mt76_connac_lib intel_rapl_common mt76 iosf_mbi rapl snd_hda_intel mac80211 wmi_bmof snd_hda_codec snd_hda_core snd_intel_dspcfg pcspkr snd_hwdep spd5118 regmap_i2c snd_pcm libarc4 snd_timer cfg80211 snd soundcore k10temp rfkill evdev ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic drm_client_lib i2c_algo_bit usbhid drm_buddy drm_ttm_helper hid ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm usbcore scsi_mod nvme igc nvme_core cec scsi_common crc16 video usb_common nvme_keyring nvm T1499,ncfrag=919/979;e_auth i2c_piix4 hkdf gpio_amdpt gpio_generic i2c_smbus wmi T1499;CPU: 17 UID: 0 PID: 1499 Comm: Xorg Tainted: G W 7.0.0-rc7-bisect-01908-g8bf0cb97edb6 #1259 PREEMPT_{RT,(full)} T1499;Tainted: [W]=WARN T1499;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1499;Call Trace: T1499; <TASK> T1499; ? dump_stack_lvl+0x4b/0x70 T1499; ? __schedule_bug.cold+0x3e/0x4a T1499; ? __schedule+0xedf/0x15c0 T1499; ? psi_task_change+0xbf/0xd0 T1499; ? lock_timer_base+0x6b/0x90 T1499; ? __mod_timer+0x116/0x330 T1499; ? schedule+0x22/0xd0 T1499; ? schedule_timeout+0x76/0xf0 T1499; ? hrtimers_cpu_dying+0x1a0/0x1a0 T1499; ? wait_for_completion_timeout+0x78/0x170 T1499; ? drm_atomic_helper_wait_for_flip_done+0x46/0x90 [drm_kms_helper] T1499; ? amdgpu_dm_atomic_commit_tail+0x2c6d/0x35e0 [amdgpu] T1499; ? commit_tail+0xcd/0x160 [drm_kms_helper] T1499; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper] T1499; ? drm_atomic_commit+0xac/0xe0 [drm] T1499; ? __drm_universal_plane_init.cold+0x12/0x12 [drm] T1499; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] T1499; ? drm_mode_setcrtc+0x443/0x8b0 [drm] T1499; ? do_futex+0xc0/0x180 T1499; ? __x64_sys_futex+0x10d/0x200 T1499; ? drm_mode_getcrtc+0x180/0x180 [drm] T1499; ? drm_ioctl_kernel+0xa1/0xf0 [drm] T1499; ? drm_ioctl+0x27f/0x520 [drm] T1499; ? drm_mode_getcrtc+0x180/0x180 [drm] T1499; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu] T1499; ? __x64_sys_ioctl+0x92/0xe0 T1499; ? do_syscall_64+0x118/0x5e0 T1499; ? irqentry_exit+0x325/0x560 T1499; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1499; </TASK> T1499;------------[ cut here ]------------ T1499;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:58 at dc_assert_fp_enabled+0x14/0x20 [amdgpu], CPU#17: Xorg/1499 T1499,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e intel_rapl_msr mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_hda_codec_atihdmi snd_rawmidi snd_hda_codec_hdmi snd_seq_device mt76_connac_lib intel_rapl_common mt76 iosf_mbi rapl snd_hda_intel mac80211 wmi_bmof snd_hda_codec snd_hda_core snd_intel_dspcfg pcspkr snd_hwdep spd5118 regmap_i2c snd_pcm libarc4 snd_timer cfg80211 snd soundcore k10temp rfkill evdev ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic drm_client_lib i2c_algo_bit usbhid drm_buddy drm_ttm_helper hid ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm usbcore scsi_mod nvme igc nvme_core cec scsi_common crc16 video usb_common nvme_keyring nvm T1499,ncfrag=919/979;e_auth i2c_piix4 hkdf gpio_amdpt gpio_generic i2c_smbus wmi T1499;CPU: 17 UID: 0 PID: 1499 Comm: Xorg Tainted: G W 7.0.0-rc7-bisect-01908-g8bf0cb97edb6 #1259 PREEMPT_{RT,(full)} T1499;Tainted: [W]=WARN T1499;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1499;RIP: 0010:dc_assert_fp_enabled+0x14/0x20 [amdgpu] T1499;Code: 00 5b e9 ff 33 79 f0 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 0f 1f 40 d6 65 8b 05 25 fa 76 f1 85 c0 7e 05 c3 cc cc cc cc <0f> 0b c3 cc cc cc cc 0f 1f 44 00 00 0f 1f 40 d6 65 8b 05 05 fa 76 T1499;RSP: 0018:ffffb02c0a13f418 EFLAGS: 00010246 T1499;RAX: 0000000000000000 RBX: ffffb02c0a7c3128 RCX: 0000000000000000 T1499;RDX: 00000000000003d8 RSI: ffffffffc15b1c18 RDI: ffffb02c0a7c3cf0 T1499;RBP: ffff973be0c00000 R08: 0000000000000008 R09: ffffe3ef8492ebc0 T1499;R10: ffffe3ef8492ea00 R11: ffff974a7d86b408 R12: ffffb02c0a7c1008 T1499;R13: ffff973b83900010 R14: ffff973be0ee9fc8 R15: ffff973be0c00000 T1499;FS: 00007f0caaec0b80(0000) GS:ffff974acb3b9000(0000) knlGS:0000000000000000 T1499;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1499;CR2: 0000564066480de0 CR3: 000000010a518000 CR4: 0000000000f50ef0 T1499;PKRU: 55555554 T1499;Call Trace: T1499; <TASK> T1499; ? dcn401_get_soc_bb+0x3f/0x70 [amdgpu] T1499; ? dml21_populate_dml_init_params+0x61/0x1d0 [amdgpu] T1499; ? dml21_init+0x6a/0x90 [amdgpu] T1499; ? dml21_create+0x34/0x50 [amdgpu] T1499; ? dc_state_create+0xc8/0x140 [amdgpu] T1499; ? create_validate_stream_for_sink+0xb7/0x510 [amdgpu] T1499; ? dm_update_crtc_state+0x2d0/0x810 [amdgpu] T1499; ? amdgpu_dm_atomic_check+0x98f/0x1840 [amdgpu] T1499; ? drm_atomic_check_only+0x5d9/0xa00 [drm] T1499; ? drm_atomic_commit+0x6c/0xe0 [drm] T1499; ? __drm_universal_plane_init.cold+0x12/0x12 [drm] T1499; ? drm_client_modeset_commit_atomic+0x1c6/0x210 [drm] T1499; ? drm_client_modeset_commit_locked+0x56/0x160 [drm] T1499; ? __drm_fb_helper_restore_fbdev_mode_unlocked.part.0+0x22/0x80 [drm_kms_helper] T1499; ? drm_fb_helper_set_par+0x52/0x70 [drm_kms_helper] T1499; ? fb_set_var+0x234/0x3e0 T1499; ? prepend_copy+0x10/0x40 T1499; ? prepend_path+0x214/0x340 T1499; ? aa_audit_file+0x6e/0x1d0 T1499; ? mas_wr_node_store+0x1f2/0x390 T1499; ? fbcon_blank+0x1e4/0x2f0 T1499; ? do_unblank_screen+0xc3/0x1b0 T1499; ? down+0x19/0x60 T1499; ? vt_ioctl+0x563/0x13a0 T1499; ? rt_spin_lock+0x35/0x120 T1499; ? fsnotify_grab_connector+0x45/0x80 T1499; ? rt_spin_unlock+0x5a/0xa0 T1499; ? tty_ioctl+0xdf/0x960 T1499; ? __memcg_slab_free_hook+0xd0/0x120 T1499; ? rt_spin_unlock+0x5a/0xa0 T1499; ? kmem_cache_free+0x210/0x420 T1499; ? __x64_sys_ioctl+0x92/0xe0 T1499; ? do_syscall_64+0x118/0x5e0 T1499; ? do_syscall_64+0x574/0x5e0 T1499; ? filename_unlinkat+0xd2/0x290 T1499; ? rt_spin_unlock+0x5a/0xa0 T1499; ? kmem_cache_free+0x210/0x420 T1499; ? do_syscall_64+0x574/0x5e0 T1499; ? obj_cgroup_uncharge_pages+0x58/0xd0 T1499; ? __memcg_slab_free_hook+0xd0/0x120 T1499; ? rt_spin_unlock+0x5a/0xa0 T1499; ? do_wp_page+0x7f2/0xee0 T1499; ? rt_spin_unlock+0x5a/0xa0 T1499; ? refill_obj_stock+0x1be/0x340 T1499; ? __handle_mm_fault+0x393/0x3f0 T1499; ? do_epoll_ctl+0x2a2/0xe00 T1499; ? refill_obj_stock+0x1be/0x340 T1499; ? count_memcg_events+0x66/0x100 T1499; ? handle_mm_fault+0x1b4/0x2b0 T1499; ? do_user_addr_fault+0x203/0x640 T1499; ? irqentry_exit+0x325/0x560 T1499; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1499; </TASK> T1499;---[ end trace 0000000000000000 ]--- T1265;wlp9s0: deauthenticating from 54:67:51:3d:a2:d2 by local choice (Reason: 3=DEAUTH_LEAVING) T5206;EXT4-fs (nvme0n1p5): unmounting filesystem 15783f8d-d7dd-4c1a-a7f8-84d944f03886. T5205;EXT4-fs (nvme0n1p4): unmounting filesystem ab8e4bed-5cab-4ae8-875a-8a42e075b551. T1;systemd-shutdown[1]: Syncing filesystems and block devices. T1;systemd-shutdown[1]: Sending SIGTERM to remaining processes... T754;systemd-journald[754]: Received SIGTERM from PID 1 (systemd-shutdow). T1;systemd-shutdown[1]: Sending SIGKILL to remaining processes... T1;systemd-shutdown[1]: Unmounting file systems. T5222;(sd-umount)[5222]: Unmounting '/run/credentials/systemd-journald.service'. T5224;(sd-remount)[5224]: Remounting '/' read-only with options 'errors=remount-ro'. T5224;EXT4-fs (nvme0n1p2): re-mounted 3d5cdc5d-1902-40bf-9e16-ca819372d350 ro. T1;systemd-shutdown[1]: All filesystems unmounted. T1;systemd-shutdown[1]: Deactivating swaps. T1;systemd-shutdown[1]: All swaps deactivated. T1;systemd-shutdown[1]: Detaching loop devices. T1;systemd-shutdown[1]: All loop devices detached. T1;systemd-shutdown[1]: Stopping MD devices. T1;systemd-shutdown[1]: All MD devices stopped. T1;systemd-shutdown[1]: Detaching DM devices. T1;systemd-shutdown[1]: All DM devices detached. T1;systemd-shutdown[1]: All filesystems, swaps, loop devices, MD devices and DM devices detached. T1;systemd-shutdown[1]: Syncing filesystems and block devices. T1;systemd-shutdown[1] Which shows that the fix in commit 8bf0cb97edb may be incomplete. Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Re] kernel panic during shutdown in next-20260722 2026-07-25 19:58 ` Bert Karwatzki @ 2026-07-25 23:16 ` Bert Karwatzki 2026-07-26 18:47 ` Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-25 23:16 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswolf Am Samstag, dem 25.07.2026 um 21:58 +0200 schrieb Bert Karwatzki: > Am Freitag, dem 24.07.2026 um 17:08 +0200 schrieb Bert Karwatzki: > > > > > > 2) The "scheduling while atomic" errors which occur in v7.2-rc4 and earlier, once I figure out > > these I'll contiue here (v6.19 is free from these errors) > > > > Bert Karwatzki > > To figure out the "scheduling while atomic" errors when rebooting from v7.1 I first retested > > commit 8bf0cb97edb ("drm/amd/display: Move dml2_destroy to non-FPU compilation unit") > > which was supposed to fix "scheduling while atomic" errors introduced by these patches: > > 32c1c35b6d8b drm/amd/display: Move FPU Guards From DML To DC - Part 3 > 4bb2f0721ed8 drm/amd/display: Move FPU Guards From DML To DC - Part 2 > 3539437f354b drm/amd/display: Move FPU Guards From DML To DC - Part 1 > > https://lore.kernel.org/lkml/20260409131411.10598-1-spasswolf@web.de/ > > > Which shows that the fix in commit 8bf0cb97edb may be incomplete. > > Bert Karwatzki I did yet another test of commit 8bf0cb97edb ("drm/amd/display: Move dml2_destroy to non-FPU compilation unit") this time with CONFIG_LOCKDEP=y and got a kernel panic: T4648;netconsole: network logging started T4648;netconsole-setup: Test log message to verify netconsole configuration. T1508;BUG: scheduling while atomic: Xorg/1508/0x00000003 T1508;4 locks held by Xorg/1508: T1508; #0: ffffb949cd76b9f8 (crtc_ww_class_acquire){+.+.}-{0:0}, at: set_property_atomic+0x51/0x150 [drm] T1508; #1: ffffb949cd76ba20 (crtc_ww_class_mutex){+.+.}-{4:4}, at: set_property_atomic+0x51/0x150 [drm] T1508; #2: ffff980422565478 (&adev->dm.dc_lock){+.+.}-{4:4}, at: amdgpu_dm_atomic_commit_tail+0x120a/0x3460 [amdgpu] T1508; #3: ffffffff9cdbcc50 (&zone->lock){+.+.}-{3:3}, at: get_page_from_freelist+0x261/0x19f0 T1508,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat mt7925e mt7925_common snd_hda_codec_atihdmi joydev snd_usb_audio mt792x_lib snd_hda_codec_hdmi intel_rapl_msr mt76_connac_lib snd_usbmidi_lib snd_ump intel_rapl_common mt76 snd_rawmidi iosf_mbi snd_seq_device snd_hda_intel mac80211 rapl wmi_bmof snd_hda_codec snd_hda_core libarc4 snd_intel_dspcfg spd5118 snd_hwdep cfg80211 regmap_i2c snd_pcm pcspkr snd_timer snd rfkill soundcore evdev ccp k10temp nct6775 nct6775_core hwmon_vid efi_pstore configfs efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper drm_kms_helper ahci libahci drm libata scsi_mod cec xhci_pci igc scsi_common crc16 xhci_hcd nvme nvme_core video usbcore nvme_keyring nvme_auth hkd T1508,ncfrag=918/979;f usb_common i2c_piix4 gpio_amdpt gpio_generic i2c_smbus wmi T1508;CPU: 23 UID: 0 PID: 1508 Comm: Xorg Tainted: G W 7.0.0-rc7-lockdep-01908-g8bf0cb97edb6 #1264 PREEMPT_{RT,(full)} T1508;Tainted: [W]=WARN T1508;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1508;Call Trace: T1508; <TASK> T1508; ? dump_stack_lvl+0x5b/0x80 T1508; ? __schedule_bug.cold+0x5a/0x67 T1508; ? __schedule+0x1468/0x1ae0 T1508; ? rtlock_slowlock_locked+0x281/0x1aa0 T1508; ? mark_held_locks+0x40/0x70 T1508; ? schedule_rtlock+0x15/0x30 T1508; ? rtlock_slowlock_locked+0x5b4/0x1aa0 T1508; ? lock_acquire+0xbf/0x2e0 T1508; ? rt_spin_lock+0x85/0x1b0 T1508; ? get_page_from_freelist+0x261/0x19f0 T1508; ? __lock_acquire+0x49a/0x2590 T1508; ? dc_link_get_highest_encoding_format+0x61/0xb0 [amdgpu] T1508; ? __alloc_frozen_pages_noprof+0x158/0x370 T1508; ? ___kmalloc_large_node+0xd7/0xf0 T1508; ? __kmalloc_large_node_noprof+0x1b/0x130 T1508; ? __kvmalloc_node_noprof+0x4ad/0x730 T1508; ? dc_create_plane_state+0x24/0x80 [amdgpu] T1508; ? dc_create_plane_state+0x24/0x80 [amdgpu] T1508; ? dc_state_create_phantom_plane+0x15/0x50 [amdgpu] T1508; ? dml21_handle_phantom_streams_planes+0x292/0x510 [amdgpu] T1508; ? dml21_mode_check_and_programming+0x157/0x7e0 [amdgpu] T1508; ? spl_set_filters_data+0xbc/0xd0 [amdgpu] T1508; ? spl_calculate_scaler_params+0x39d/0x1c00 [amdgpu] T1508; ? dc_state_remove_plane+0xbf/0x160 [amdgpu] T1508; ? dcn401_validate_bandwidth+0xb8/0x1f0 [amdgpu] T1508; ? update_planes_and_stream_state+0xeb5/0x1520 [amdgpu] T1508; ? __lock_acquire+0x49a/0x2590 T1508; ? update_planes_and_stream_prepare_v3+0xb3/0x430 [amdgpu] T1508; ? dc_update_planes_and_stream+0x87/0x130 [amdgpu] T1508; ? amdgpu_dm_atomic_commit_tail+0x126b/0x3460 [amdgpu] T1508; ? commit_tail+0x9d/0x130 [drm_kms_helper] T1508; ? drm_atomic_helper_commit+0x15a/0x1a0 [drm_kms_helper] T1508; ? drm_atomic_commit+0xac/0xe0 [drm] T1508; ? __drm_universal_plane_init.cold+0x17/0x17 [drm] T1508; ? set_property_atomic+0x82/0x150 [drm] T1508; ? drm_mode_obj_find_prop_id+0x60/0x60 [drm] T1508; ? drm_mode_obj_set_property_ioctl+0xe6/0x150 [drm] T1508; ? drm_ioctl_kernel+0xa7/0x100 [drm] T1508; ? drm_ioctl+0x288/0x510 [drm] T1508; ? drm_mode_obj_find_prop_id+0x60/0x60 [drm] T1508; ? rt_mutex_slowunlock+0x3bd/0x420 T1508; ? amdgpu_drm_ioctl+0x4b/0x80 [amdgpu] T1508; ? __x64_sys_ioctl+0x95/0xe0 T1508; ? do_syscall_64+0x129/0x6b0 T1508; ? kmem_cache_free+0x179/0x4c0 T1508; ? lockdep_hardirqs_on_prepare+0xd7/0x180 T1508; ? trace_hardirqs_on_prepare+0xdc/0x100 T1508; ? do_syscall_64+0x238/0x6b0 T1508; ? trace_hardirqs_off+0x4e/0xf0 T1508; ? exit_to_user_mode_loop+0xf8/0x460 T1508; ? trace_hardirqs_on_prepare+0xdc/0x100 T1508; ? do_syscall_64+0x238/0x6b0 T1508; ? vfs_writev+0x9a/0x490 T1508; ? find_held_lock+0x2b/0x80 T1508; ? __fget_files+0xbf/0x190 T1508; ? lock_release+0xd3/0x2f0 T1508; ? do_writev+0xf4/0x110 T1508; ? trace_hardirqs_on_prepare+0xdc/0x100 T1508; ? do_syscall_64+0x238/0x6b0 T1508; ? flush_tlb_func+0x74/0x340 T1508; ? do_writev+0xf4/0x110 T1508; ? trace_hardirqs_on_prepare+0xdc/0x100 T1508; ? do_syscall_64+0x238/0x6b0 T1508; ? trace_hardirqs_on_prepare+0xdc/0x100 T1508; ? lockdep_hardirqs_on_prepare+0xd7/0x180 T1508; ? irqentry_exit+0xbd/0x5a0 T1508; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1508; </TASK> C23;------------[ cut here ]------------ T1508;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:97 at dc_fpu_begin+0x160/0x170 [amdgpu], CPU#23: Xorg/1508 T1508,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat mt7925e mt7925_common snd_hda_codec_atihdmi joydev snd_usb_audio mt792x_lib snd_hda_codec_hdmi intel_rapl_msr mt76_connac_lib snd_usbmidi_lib snd_ump intel_rapl_common mt76 snd_rawmidi iosf_mbi snd_seq_device snd_hda_intel mac80211 rapl wmi_bmof snd_hda_codec snd_hda_core libarc4 snd_intel_dspcfg spd5118 snd_hwdep cfg80211 regmap_i2c snd_pcm pcspkr snd_timer snd rfkill soundcore evdev ccp k10temp nct6775 nct6775_core hwmon_vid efi_pstore configfs efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper drm_kms_helper ahci libahci drm libata scsi_mod cec xhci_pci igc scsi_common crc16 xhci_hcd nvme nvme_core video usbcore nvme_keyring nvme_auth hkd T1508,ncfrag=918/979;f usb_common i2c_piix4 gpio_amdpt gpio_generic i2c_smbus wmi T1508;CPU: 23 UID: 0 PID: 1508 Comm: Xorg Tainted: G W 7.0.0-rc7-lockdep-01908-g8bf0cb97edb6 #1264 PREEMPT_{RT,(full)} T1508;Tainted: [W]=WARN T1508;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 T1508;RIP: 0010:dc_fpu_begin+0x160/0x170 [amdgpu] T1508;Code: ff bf 02 00 00 00 89 4c 24 14 4c 89 4c 24 08 44 89 04 24 e8 c2 63 12 db 8b 4c 24 14 4c 8b 4c 24 08 44 8b 04 24 e9 f5 fe ff ff <0f> 0b e9 ce fe ff ff 66 0f 1f 84 00 00 00 00 00 0f 1f 40 d6 41 56 T1508;RSP: 0018:ffffb949cd76b570 EFLAGS: 00010206 T1508;RAX: 0000000000ff0000 RBX: ffff980423000000 RCX: 00000000000006c8 T1508;RDX: 0000000000ff0000 RSI: 00000000000006c8 RDI: ffffffffc11c3960 T1508;RBP: ffff980522a00000 R08: 0000000000005183 R09: ffffffffc11c3960 T1508;R10: ffffb949cd76b508 R11: 0000000000000002 R12: ffff980448140000 T1508;R13: 0000000000000001 R14: ffff980423000000 R15: ffff980566daa000 T1508;FS: 00007f93c3e6fb80(0000) GS:ffff9813a0a46000(0000) knlGS:0000000000000000 T1508;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 T1508;CR2: 00007ff941d9d000 CR3: 000000011261e000 CR4: 0000000000f50ef0 T1508;PKRU: 55555554 T1508;Call Trace: T1508; <TASK> T1508; ? determine_pipe_unlock_order+0x78/0xf0 [amdgpu] T1508; ? dcn401_prepare_mcache_programming+0x2f/0x70 [amdgpu] T1508; ? commit_planes_for_stream+0x157/0x1870 [amdgpu] T1508; ? update_planes_and_stream_execute_v3+0x3c/0xd0 [amdgpu] T1508; ? dc_update_planes_and_stream+0xb6/0x130 [amdgpu] T1508; ? amdgpu_dm_atomic_commit_tail+0x126b/0x3460 [amdgpu] T1508; ? commit_tail+0x9d/0x130 [drm_kms_helper] T1508; ? drm_atomic_helper_commit+0x15a/0x1a0 [drm_kms_helper] T1508; ? drm_atomic_commit+0xac/0xe0 [drm] T1508; ? __drm_universal_plane_init.cold+0x17/0x17 [drm] T1508; ? set_property_atomic+0x82/0x150 [drm] T1508; ? drm_mode_obj_find_prop_id+0x60/0x60 [drm] T1508; ? drm_mode_obj_set_property_ioctl+0xe6/0x150 [drm] T1508; ? drm_ioctl_kernel+0xa7/0x100 [drm] T1508; ? drm_ioctl+0x288/0x510 [drm] T1508; ? drm_mode_obj_find_prop_id+0x60/0x60 [drm] T1508; ? rt_mutex_slowunlock+0x3bd/0x420 T1508; ? amdgpu_drm_ioctl+0x4b/0x80 [amdgpu] T1508; ? __x64_sys_ioctl+0x95/0xe0 T1508; ? do_syscall_64+0x129/0x6b0 T1508; ? kmem_cache_free+0x179/0x4c0 T1508; ? lockdep_hardirqs_on_prepare+0xd7/0x180 T1508; ? trace_hardirqs_on_prepare+0xdc/0x100 T1508; ? do_syscall_64+0x238/0x6b0 T1508; ? trace_hardirqs_off+0x4e/0xf0 T1508; ? exit_to_user_mode_loop+0xf8/0x460 T1508; ? trace_hardirqs_on_prepare+0xdc/0x100 T1508; ? do_syscall_64+0x238/0x6b0 T1508; ? vfs_writev+0x9a/0x490 T1508; ? find_held_lock+0x2b/0x80 T1508; ? __fget_files+0xbf/0x190 T1508; ? lock_release+0xd3/0x2f0 T1508; ? do_writev+0xf4/0x110 T1508; ? trace_hardirqs_on_prepare+0xdc/0x100 T1508; ? do_syscall_64+0x238/0x6b0 T1508; ? flush_tlb_func+0x74/0x340 T1508; ? do_writev+0xf4/0x110 T1508; ? trace_hardirqs_on_prepare+0xdc/0x100 T1508; ? do_syscall_64+0x238/0x6b0 T1508; ? trace_hardirqs_on_prepare+0xdc/0x100 T1508; ? lockdep_hardirqs_on_prepare+0xd7/0x180 T1508; ? irqentry_exit+0xbd/0x5a0 T1508; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d T1508; </TASK> T1508;irq event stamp: 11300063 T1508;hardirqs last enabled at (11300065): [<ffffffff9bb6683d>] vprintk_store+0x36d/0x5e0 T1508;hardirqs last disabled at (11300066): [<ffffffff9bb6685f>] vprintk_store+0x38f/0x5e0 T1508;softirqs last enabled at (11293958): [<ffffffff9bacb56b>] __local_bh_enable_ip+0xfb/0x140 T1508;softirqs last disabled at (11293948): [<ffffffff9c49b14d>] unix_release_sock+0xfd/0x540 T1508;---[ end trace 0000000000000000 ]--- C23;------------[ cut here ]------------ C23;kernel BUG at mm/vmalloc.c:3412! C23;Oops: invalid opcode: 0000 [#1] SMP NOPTI C23;CPU: 23 UID: 0 PID: 1508 Comm: Xorg Tainted: G W 7.0.0-rc7-lockdep-01908-g8bf0cb97edb6 #1264 PREEMPT_{RT,(full)} C23;Tainted: [W]=WARN C23;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 C23;RIP: 0010:vfree_atomic+0x55/0x60 C23;Code: 07 48 89 c1 f0 48 0f b1 3a 75 f3 48 85 c9 74 05 c3 cc cc cc cc 48 8b 35 a1 70 c1 00 48 83 c2 08 bf 20 00 00 00 e9 cb 29 d6 ff <0f> 0b 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 41 56 41 54 55 53 48 C23;RSP: 0018:ffffb949cd76b5f8 EFLAGS: 00010286 C23;RAX: 0000000000ff0000 RBX: ffffb949cdfd5000 RCX: 0000000000000183 C23;RDX: 0000000000ff0000 RSI: 000000000000003d RDI: ffffb949e08ad000 C23;RBP: ffff98058f900000 R08: 0000000000000000 R09: ffffffffc11e6d50 C23;R10: 0000000000000006 R11: ffff9804480c8ad0 R12: ffff980448140000 C23;R13: ffff980423000000 R14: 0000000000000001 R15: ffff980566daa000 C23;FS: 00007f93c3e6fb80(0000) GS:ffff9813a0a46000(0000) knlGS:0000000000000000 C23;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 C23;CR2: 00007ff941d9d000 CR3: 000000011261e000 CR4: 0000000000f50ef0 C23;PKRU: 55555554 C23;Call Trace: C23; <TASK> C23; ? dml21_destroy+0x50/0xa0 [amdgpu] C23; ? dml2_destroy+0x59/0x60 [amdgpu] C23; ? dc_state_free+0x31/0x70 [amdgpu] C23; ? update_planes_and_stream_cleanup_v3+0x4f/0x3e0 [amdgpu] C23; ? dc_update_planes_and_stream+0xc4/0x130 [amdgpu] C23; ? amdgpu_dm_atomic_commit_tail+0x126b/0x3460 [amdgpu] C23; ? commit_tail+0x9d/0x130 [drm_kms_helper] C23; ? drm_atomic_helper_commit+0x15a/0x1a0 [drm_kms_helper] C23; ? drm_atomic_commit+0xac/0xe0 [drm] C23; ? __drm_universal_plane_init.cold+0x17/0x17 [drm] C23; ? set_property_atomic+0x82/0x150 [drm] C23; ? drm_mode_obj_find_prop_id+0x60/0x60 [drm] C23; ? drm_mode_obj_set_property_ioctl+0xe6/0x150 [drm] C23; ? drm_ioctl_kernel+0xa7/0x100 [drm] C23; ? drm_ioctl+0x288/0x510 [drm] C23; ? drm_mode_obj_find_prop_id+0x60/0x60 [drm] C23; ? rt_mutex_slowunlock+0x3bd/0x420 C23; ? amdgpu_drm_ioctl+0x4b/0x80 [amdgpu] C23; ? __x64_sys_ioctl+0x95/0xe0 C23; ? do_syscall_64+0x129/0x6b0 C23; ? kmem_cache_free+0x179/0x4c0 C23; ? lockdep_hardirqs_on_prepare+0xd7/0x180 C23; ? trace_hardirqs_on_prepare+0xdc/0x100 C23; ? do_syscall_64+0x238/0x6b0 C23; ? trace_hardirqs_off+0x4e/0xf0 C23; ? exit_to_user_mode_loop+0xf8/0x460 C23; ? trace_hardirqs_on_prepare+0xdc/0x100 C23; ? do_syscall_64+0x238/0x6b0 C23; ? vfs_writev+0x9a/0x490 C23; ? find_held_lock+0x2b/0x80 C23; ? __fget_files+0xbf/0x190 C23; ? lock_release+0xd3/0x2f0 C23; ? do_writev+0xf4/0x110 C23; ? trace_hardirqs_on_prepare+0xdc/0x100 C23; ? do_syscall_64+0x238/0x6b0 C23; ? flush_tlb_func+0x74/0x340 C23; ? do_writev+0xf4/0x110 C23; ? trace_hardirqs_on_prepare+0xdc/0x100 C23; ? do_syscall_64+0x238/0x6b0 C23; ? trace_hardirqs_on_prepare+0xdc/0x100 C23; ? lockdep_hardirqs_on_prepare+0xd7/0x180 C23; ? irqentry_exit+0xbd/0x5a0 C23; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d C23; </TASK> C23,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat mt7925e mt7925_common snd_hda_codec_atihdmi joydev snd_usb_audio mt792x_lib snd_hda_codec_hdmi intel_rapl_msr mt76_connac_lib snd_usbmidi_lib snd_ump intel_rapl_common mt76 snd_rawmidi iosf_mbi snd_seq_device snd_hda_intel mac80211 rapl wmi_bmof snd_hda_codec snd_hda_core libarc4 snd_intel_dspcfg spd5118 snd_hwdep cfg80211 regmap_i2c snd_pcm pcspkr snd_timer snd rfkill soundcore evdev ccp k10temp nct6775 nct6775_core hwmon_vid efi_pstore configfs efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper drm_kms_helper ahci libahci drm libata scsi_mod cec xhci_pci igc scsi_common crc16 xhci_hcd nvme nvme_core video usbcore nvme_keyring nvme_auth hkdf C23,ncfrag=920/979;usb_common i2c_piix4 gpio_amdpt gpio_generic i2c_smbus wmi C23;---[ end trace 0000000000000000 ]--- C23;RIP: 0010:vfree_atomic+0x55/0x60 C23;Code: 07 48 89 c1 f0 48 0f b1 3a 75 f3 48 85 c9 74 05 c3 cc cc cc cc 48 8b 35 a1 70 c1 00 48 83 c2 08 bf 20 00 00 00 e9 cb 29 d6 ff <0f> 0b 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 41 56 41 54 55 53 48 C23;RSP: 0018:ffffb949cd76b5f8 EFLAGS: 00010286 C23;RAX: 0000000000ff0000 RBX: ffffb949cdfd5000 RCX: 0000000000000183 C23;RDX: 0000000000ff0000 RSI: 000000000000003d RDI: ffffb949e08ad000 C23;RBP: ffff98058f900000 R08: 0000000000000000 R09: ffffffffc11e6d50 C23;R10: 0000000000000006 R11: ffff9804480c8ad0 R12: ffff980448140000 C23;R13: ffff980423000000 R14: 0000000000000001 R15: ffff980566daa000 C23;FS: 00007f93c3e6fb80(0000) GS:ffff9813a0a46000(0000) knlGS:0000000000000000 C23;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 C23;CR2: 00007ff941d9d000 CR3: 000000011261e000 CR4: 0000000000f50ef0 C23;PKRU: 55555554 C23;Kernel panic - not syncing: Fatal exception in interrupt C23;Kernel Offset: 0x1a800000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff) C23;---[ end Kernel panic - not syncing: Fatal exception in interrupt ]--- This BUG_ON() is triggered: void vfree_atomic(const void *addr) { struct vfree_deferred *p = raw_cpu_ptr(&vfree_deferred); BUG_ON(in_nmi()); Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Re] kernel panic during shutdown in next-20260722 2026-07-25 23:16 ` Bert Karwatzki @ 2026-07-26 18:47 ` Bert Karwatzki 2026-07-26 22:52 ` Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-26 18:47 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswolf Am Sonntag, dem 26.07.2026 um 01:16 +0200 schrieb Bert Karwatzki: Now I've run a test with commit 8bf0cb97edb ("drm/amd/display: Move dml2_destroy to non-FPU compilation unit") with the following debugging patch: diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c b/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c index 172999cc84e5..5015aea1b988 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c @@ -95,7 +95,9 @@ void dc_fpu_begin(const char *function_name, const int line) int depth; WARN_ON_ONCE(!in_task()); + printk(KERN_INFO "%s 0: preempt_count=%d %s %d\n", __func__, preempt_count(), function_name, line); preempt_disable(); + printk(KERN_INFO "%s 1: preempt_count=%d %s %d\n", __func__, preempt_count(), function_name, line); depth = this_cpu_inc_return(fpu_recursion_depth); if (depth == 1) { BUG_ON(!kernel_fpu_available()); @@ -127,5 +129,7 @@ void dc_fpu_end(const char *function_name, const int line) } TRACE_DCN_FPU(false, function_name, line, depth); + printk(KERN_INFO "%s 0: preempt_count=%d %s %d\n", __func__, preempt_count(), function_name, line); preempt_enable(); + printk(KERN_INFO "%s 1: preempt_count=%d %s %d\n", __func__, preempt_count(), function_name, line); } This gives this log via netconsole in case of a kernel panic, after the "schduling while atomic" message a preempt_count underflow occurs: 2026-07-26T16:32:29.090401+02:00 T4198;netconsole: network logging started 2026-07-26T16:32:29.091016+02:00 T4198;netconsole-setup: Test log message to verify netconsole configuration. 2026-07-26T16:32:32.377992+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_state_create_copy 287 2026-07-26T16:32:32.377992+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_state_create_copy 287 2026-07-26T16:32:32.378660+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 26 2026-07-26T16:32:32.386022+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 26 2026-07-26T16:32:32.386022+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 26 2026-07-26T16:32:32.386022+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 26 2026-07-26T16:32:32.386022+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 30 2026-07-26T16:32:32.386022+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 30 2026-07-26T16:32:32.389301+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 30 2026-07-26T16:32:32.389301+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 30 2026-07-26T16:32:32.389301+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 40 2026-07-26T16:32:32.389301+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 40 2026-07-26T16:32:32.389301+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 40 2026-07-26T16:32:32.389301+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 40 2026-07-26T16:32:32.390204+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_state_create_copy 289 2026-07-26T16:32:32.390204+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_state_create_copy 289 2026-07-26T16:32:32.390204+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dcn401_validate_bandwidth 1696 2026-07-26T16:32:32.390204+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dcn401_validate_bandwidth 1696 2026-07-26T16:32:32.395783+02:00 T1596;dc_fpu_end 0: preempt_count=1 dcn401_validate_bandwidth 1700 2026-07-26T16:32:32.395783+02:00 T1596;dc_fpu_end 1: preempt_count=0 dcn401_validate_bandwidth 1700 2026-07-26T16:32:32.395783+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_state_free 387 2026-07-26T16:32:32.395783+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_state_free 387 2026-07-26T16:32:32.395783+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_destroy 61 2026-07-26T16:32:32.395783+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_destroy 61 2026-07-26T16:32:32.395783+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_destroy 61 2026-07-26T16:32:32.395783+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_destroy 61 2026-07-26T16:32:32.395836+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_destroy 62 2026-07-26T16:32:32.395836+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_destroy 62 2026-07-26T16:32:32.395836+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_destroy 62 2026-07-26T16:32:32.395836+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_destroy 62 2026-07-26T16:32:32.399013+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml2_destroy 119 2026-07-26T16:32:32.399085+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml2_destroy 119 2026-07-26T16:32:32.399085+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml2_destroy 119 2026-07-26T16:32:32.399085+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml2_destroy 119 2026-07-26T16:32:32.399085+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_state_free 393 2026-07-26T16:32:32.399085+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_state_free 393 2026-07-26T16:32:32.405402+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_state_create_copy 287 2026-07-26T16:32:32.405402+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_state_create_copy 287 2026-07-26T16:32:32.406122+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 26 2026-07-26T16:32:32.406122+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 26 2026-07-26T16:32:32.408876+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 26 2026-07-26T16:32:32.408876+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 26 2026-07-26T16:32:32.408876+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 30 2026-07-26T16:32:32.408876+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 30 2026-07-26T16:32:32.416499+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 30 2026-07-26T16:32:32.416961+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 30 2026-07-26T16:32:32.416961+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 40 2026-07-26T16:32:32.416961+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 40 2026-07-26T16:32:32.431307+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 40 2026-07-26T16:32:32.431307+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 40 2026-07-26T16:32:32.431984+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_state_create_copy 289 2026-07-26T16:32:32.431984+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_state_create_copy 289 2026-07-26T16:32:32.431984+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dcn401_validate_bandwidth 1696 2026-07-26T16:32:32.431984+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dcn401_validate_bandwidth 1696 2026-07-26T16:32:32.431984+02:00 T1596;dc_fpu_end 0: preempt_count=1 dcn401_validate_bandwidth 1700 2026-07-26T16:32:32.431984+02:00 T1596;dc_fpu_end 1: preempt_count=0 dcn401_validate_bandwidth 1700 2026-07-26T16:32:32.431984+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_state_create_copy 287 2026-07-26T16:32:32.431984+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_state_create_copy 287 2026-07-26T16:32:32.431984+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 26 2026-07-26T16:32:32.431984+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 26 2026-07-26T16:32:32.432058+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 26 2026-07-26T16:32:32.432058+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 26 2026-07-26T16:32:32.432058+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 30 2026-07-26T16:32:32.432058+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 30 2026-07-26T16:32:32.432058+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 30 2026-07-26T16:32:32.432058+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 30 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 40 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 40 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 40 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 40 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_state_create_copy 289 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_state_create_copy 289 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dcn401_validate_bandwidth 1696 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dcn401_validate_bandwidth 1696 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_create_stream_for_sink 180 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_create_stream_for_sink 180 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_create_stream_for_sink 180 2026-07-26T16:32:32.432089+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_create_stream_for_sink 180 2026-07-26T16:32:32.432579+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_create_stream_for_sink 185 2026-07-26T16:32:32.432579+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_create_stream_for_sink 185 2026-07-26T16:32:32.432579+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_create_stream_for_sink 185 2026-07-26T16:32:32.432579+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_create_stream_for_sink 185 2026-07-26T16:32:32.432579+02:00 T1596;dc_fpu_end 0: preempt_count=1 dcn401_validate_bandwidth 1700 2026-07-26T16:32:32.432579+02:00 T1596;dc_fpu_end 1: preempt_count=0 dcn401_validate_bandwidth 1700 2026-07-26T16:32:32.432579+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_state_create_copy 287 2026-07-26T16:32:32.432579+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_state_create_copy 287 2026-07-26T16:32:32.432579+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 26 2026-07-26T16:32:32.432579+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 26 2026-07-26T16:32:32.433667+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 26 2026-07-26T16:32:32.433667+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 26 2026-07-26T16:32:32.433667+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 30 2026-07-26T16:32:32.433667+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 30 2026-07-26T16:32:32.434556+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 30 2026-07-26T16:32:32.434556+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 30 2026-07-26T16:32:32.434556+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 40 2026-07-26T16:32:32.434556+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 40 2026-07-26T16:32:32.434582+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 40 2026-07-26T16:32:32.434582+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 40 2026-07-26T16:32:32.434962+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_state_create_copy 289 2026-07-26T16:32:32.434962+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_state_create_copy 289 2026-07-26T16:32:32.434962+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dcn401_prepare_mcache_programming 1736 2026-07-26T16:32:32.434962+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dcn401_prepare_mcache_programming 1736 2026-07-26T16:32:32.434962+02:00 T1596;dc_fpu_end 0: preempt_count=1 dcn401_prepare_mcache_programming 1740 2026-07-26T16:32:32.434962+02:00 T1596;dc_fpu_end 1: preempt_count=0 dcn401_prepare_mcache_programming 1740 2026-07-26T16:32:32.434984+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_state_free 387 2026-07-26T16:32:32.434984+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_state_free 387 2026-07-26T16:32:32.434984+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_destroy 61 2026-07-26T16:32:32.434984+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_destroy 61 2026-07-26T16:32:32.434984+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_destroy 61 2026-07-26T16:32:32.434984+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_destroy 61 2026-07-26T16:32:32.434984+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_destroy 62 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_destroy 62 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_destroy 62 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_destroy 62 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml2_destroy 119 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml2_destroy 119 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml2_destroy 119 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml2_destroy 119 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_state_free 393 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_state_free 393 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dcn401_prepare_mcache_programming 1736 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dcn401_prepare_mcache_programming 1736 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_end 0: preempt_count=1 dcn401_prepare_mcache_programming 1740 2026-07-26T16:32:32.435010+02:00 T1596;dc_fpu_end 1: preempt_count=0 dcn401_prepare_mcache_programming 1740 2026-07-26T16:32:32.435305+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_state_free 387 2026-07-26T16:32:32.435305+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_state_free 387 2026-07-26T16:32:32.435305+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_destroy 61 2026-07-26T16:32:32.435305+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_destroy 61 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_destroy 61 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_destroy 61 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_destroy 62 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_destroy 62 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_destroy 62 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_destroy 62 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml2_destroy 119 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml2_destroy 119 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml2_destroy 119 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml2_destroy 119 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_state_free 393 2026-07-26T16:32:32.463118+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_state_free 393 2026-07-26T16:32:32.485076+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_state_create_copy 287 2026-07-26T16:32:32.485076+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_state_create_copy 287 2026-07-26T16:32:32.485076+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 26 2026-07-26T16:32:32.485076+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 26 2026-07-26T16:32:32.488796+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 26 2026-07-26T16:32:32.488796+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 26 2026-07-26T16:32:32.488796+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 30 2026-07-26T16:32:32.488796+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 30 2026-07-26T16:32:32.489469+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 30 2026-07-26T16:32:32.489469+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 30 2026-07-26T16:32:32.489469+02:00 T1596;dc_fpu_end 0: preempt_count=1 dml21_allocate_memory 40 2026-07-26T16:32:32.489469+02:00 T1596;dc_fpu_end 1: preempt_count=0 dml21_allocate_memory 40 2026-07-26T16:32:32.489469+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dml21_allocate_memory 40 2026-07-26T16:32:32.489469+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dml21_allocate_memory 40 2026-07-26T16:32:32.490008+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_state_create_copy 289 2026-07-26T16:32:32.490008+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_state_create_copy 289 2026-07-26T16:32:32.490008+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dcn401_validate_bandwidth 1696 2026-07-26T16:32:32.490008+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dcn401_validate_bandwidth 1696 2026-07-26T16:32:32.490008+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_create_stream_for_sink 180 2026-07-26T16:32:32.490008+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_create_stream_for_sink 180 2026-07-26T16:32:32.490408+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_create_stream_for_sink 180 2026-07-26T16:32:32.490408+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_create_stream_for_sink 180 2026-07-26T16:32:32.490408+02:00 T1596;dc_fpu_end 0: preempt_count=1 dc_create_stream_for_sink 185 2026-07-26T16:32:32.490408+02:00 T1596;dc_fpu_end 1: preempt_count=0 dc_create_stream_for_sink 185 2026-07-26T16:32:32.490408+02:00 T1596;dc_fpu_begin 0: preempt_count=0 dc_create_stream_for_sink 185 2026-07-26T16:32:32.492405+02:00 T1596;dc_fpu_begin 1: preempt_count=1 dc_create_stream_for_sink 185 2026-07-26T16:32:32.492405+02:00 T1596;BUG: scheduling while atomic: Xorg/1596/0x00000003 2026-07-26T16:32:32.492405+02:00 T1596;4 locks held by Xorg/1596: 2026-07-26T16:32:32.492405+02:00 T1596; #0: ffffaa7487f93ab0 (crtc_ww_class_acquire){+.+.}-{0:0}, at: drm_mode_setcrtc+0x153/0x8e0 [drm] 2026-07-26T16:32:32.492405+02:00 T1596; #1: ffffaa7487f93ad8 (crtc_ww_class_mutex){+.+.}-{4:4}, at: drm_mode_setcrtc+0x153/0x8e0 [drm] 2026-07-26T16:32:32.492405+02:00 T1596; #2: ffff9b1cd5b65478 (&adev->dm.dc_lock){+.+.}-{4:4}, at: amdgpu_dm_atomic_commit_tail+0x120a/0x3460 [amdgpu] 2026-07-26T16:32:32.492405+02:00 T1596; #3: ffffffff9afbcc50 (&zone->lock){+.+.}-{3:3}, at: get_page_from_freelist+0x261/0x19f0 2026-07-26T16:32:32.492454+02:00 T1596;Modules linked in: netconsole snd_seq_dummy snd_hrtimer snd_seq cfg80211 nls_ascii nls_cp437 vfat fat joydev snd_usb_audio snd_usbmidi_lib intel_rapl_msr snd_ump snd_rawmidi intel_rapl_common snd_hda_codec_atihdmi snd_seq_device iosf_mbi snd_hda_codec_hdmi wmi_bmof rapl snd_hda_intel pcspkr snd_hda_codec snd_hda_core spd5118 snd_intel_dspcfg regmap_i2c k10temp snd_hwdep snd_pcm snd_timer snd soundcore rfkill evdev ccp nct6775 nct6775_core hwmon_vid efi_pstore configfs efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci drm_kms_helper libahci xhci_pci drm libata xhci_hcd nvme scsi_mod cec video nvme_core usbcore igc crc16 scsi_common nvme_keyring usb_common nvme_auth hkdf i2c_piix4 gpio_amdpt i2c_smbus wmi gpio_generic 2026-07-26T16:32:32.492454+02:00 T1596;CPU: 25 UID: 0 PID: 1596 Comm: Xorg Not tainted 7.0.0-rc7-dcfpubad-01910-g3c2692d1b40e #1272 PREEMPT_{RT,(full)} 2026-07-26T16:32:32.492454+02:00 T1596;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 2026-07-26T16:32:32.492454+02:00 T1596;Call Trace: 2026-07-26T16:32:32.492454+02:00 T1596; <TASK> 2026-07-26T16:32:32.492454+02:00 T1596; ? dump_stack_lvl+0x5b/0x80 2026-07-26T16:32:32.492454+02:00 T1596; ? __schedule_bug.cold+0x5a/0x67 2026-07-26T16:32:32.492454+02:00 T1596; ? __schedule+0x1468/0x1ae0 2026-07-26T16:32:32.492454+02:00 T1596; ? rtlock_slowlock_locked+0x281/0x1aa0 2026-07-26T16:32:32.492454+02:00 T1596; ? mark_held_locks+0x40/0x70 2026-07-26T16:32:32.492454+02:00 T1596; ? schedule_rtlock+0x15/0x30 2026-07-26T16:32:32.492454+02:00 T1596; ? rtlock_slowlock_locked+0x5b4/0x1aa0 2026-07-26T16:32:32.492454+02:00 T1596; ? lock_acquire+0xbf/0x2e0 2026-07-26T16:32:32.492454+02:00 T1596; ? rt_spin_lock+0x85/0x1b0 2026-07-26T16:32:32.492454+02:00 T1596; ? get_page_from_freelist+0x261/0x19f0 2026-07-26T16:32:32.492454+02:00 T1596; ? mark_held_locks+0x40/0x70 2026-07-26T16:32:32.492476+02:00 T1596; ? dc_link_get_highest_encoding_format+0x61/0xb0 [amdgpu] 2026-07-26T16:32:32.492476+02:00 T1596; ? __alloc_frozen_pages_noprof+0x158/0x370 2026-07-26T16:32:32.493359+02:00 T1596; ? ___kmalloc_large_node+0xd7/0xf0 2026-07-26T16:32:32.494837+02:00 T1596; ? __kmalloc_large_node_noprof+0x1b/0x130 2026-07-26T16:32:32.494837+02:00 T1596; ? __kvmalloc_node_noprof+0x4ad/0x730 2026-07-26T16:32:32.494837+02:00 T1596; ? dc_create_plane_state+0x24/0x80 [amdgpu] 2026-07-26T16:32:32.494837+02:00 T1596; ? dc_create_plane_state+0x24/0x80 [amdgpu] 2026-07-26T16:32:32.494837+02:00 T1596; ? dc_state_create_phantom_plane+0x15/0x50 [amdgpu] 2026-07-26T16:32:32.494837+02:00 T1596; ? dml21_handle_phantom_streams_planes+0x292/0x510 [amdgpu] 2026-07-26T16:32:32.494860+02:00 T1596; ? dml21_mode_check_and_programming+0x157/0x7e0 [amdgpu] 2026-07-26T16:32:32.494860+02:00 T1596; ? number+0x47c/0x580 2026-07-26T16:32:32.494860+02:00 T1596; ? desc_read_finalized_seq+0x27/0x80 2026-07-26T16:32:32.494860+02:00 T1596; ? _prb_read_valid+0x203/0x290 2026-07-26T16:32:32.494860+02:00 T1596; ? dcn401_validate_bandwidth+0xb8/0x1f0 [amdgpu] 2026-07-26T16:32:32.494860+02:00 T1596; ? update_planes_and_stream_state+0xeb5/0x1520 [amdgpu] 2026-07-26T16:32:32.495056+02:00 T1596; ? update_planes_and_stream_prepare_v3+0xb3/0x430 [amdgpu] 2026-07-26T16:32:32.495056+02:00 T1596; ? dc_update_planes_and_stream+0x87/0x130 [amdgpu] 2026-07-26T16:32:32.495056+02:00 T1596; ? amdgpu_dm_atomic_commit_tail+0x126b/0x3460 [amdgpu] 2026-07-26T16:32:32.495056+02:00 T1596; ? commit_tail+0x9d/0x130 [drm_kms_helper] 2026-07-26T16:32:32.495088+02:00 T1596; ? drm_atomic_helper_commit+0x15a/0x1a0 [drm_kms_helper] 2026-07-26T16:32:32.495088+02:00 T1596; ? drm_atomic_commit+0xac/0xe0 [drm] 2026-07-26T16:32:32.495088+02:00 T1596; ? __drm_universal_plane_init.cold+0x17/0x17 [drm] 2026-07-26T16:32:32.495088+02:00 T1596; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] 2026-07-26T16:32:32.495116+02:00 T1596; ? drm_mode_setcrtc+0x466/0x8e0 [drm] 2026-07-26T16:32:32.495116+02:00 T1596; ? lock_acquire+0xbf/0x2e0 2026-07-26T16:32:32.495116+02:00 T1596; ? rt_mutex_slowunlock+0x46/0x420 2026-07-26T16:32:32.495116+02:00 T1596; ? drm_mode_getcrtc+0x190/0x190 [drm] 2026-07-26T16:32:32.495116+02:00 T1596; ? drm_ioctl_kernel+0xa7/0x100 [drm] 2026-07-26T16:32:32.495116+02:00 T1596; ? drm_ioctl+0x288/0x510 [drm] 2026-07-26T16:32:32.495116+02:00 T1596; ? drm_mode_getcrtc+0x190/0x190 [drm] 2026-07-26T16:32:32.495141+02:00 T1596; ? amdgpu_drm_ioctl+0x4b/0x80 [amdgpu] 2026-07-26T16:32:32.495141+02:00 T1596; ? __x64_sys_ioctl+0x95/0xe0 2026-07-26T16:32:32.495141+02:00 T1596; ? do_syscall_64+0x129/0x6b0 2026-07-26T16:32:32.495141+02:00 T1596; ? rt_mutex_slowunlock+0x3bd/0x420 2026-07-26T16:32:32.495141+02:00 T1596; ? wake_up_q+0x32/0x80 2026-07-26T16:32:32.495141+02:00 T1596; ? futex_wake+0xa7/0x1c0 2026-07-26T16:32:32.495171+02:00 T1596; ? do_futex+0x11a/0x180 2026-07-26T16:32:32.495171+02:00 T1596; ? __x64_sys_futex+0x10d/0x200 2026-07-26T16:32:32.495171+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:32.495171+02:00 T1596; ? lockdep_hardirqs_on_prepare+0xd7/0x180 2026-07-26T16:32:32.495171+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:32.495171+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:32.495171+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:32.495171+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:32.495189+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:32.495189+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:32.495189+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:32.495189+02:00 T1596; ? lockdep_hardirqs_on_prepare+0xd7/0x180 2026-07-26T16:32:32.495189+02:00 T1596; ? irqentry_exit+0xbd/0x5a0 2026-07-26T16:32:32.495189+02:00 T1596; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d 2026-07-26T16:32:32.495189+02:00 T1596; </TASK> 2026-07-26T16:32:32.495189+02:00 T1596;------------[ cut here ]------------ 2026-07-26T16:32:32.495189+02:00 T1596;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:128 at dc_fpu_end+0x145/0x150 [amdgpu], CPU#31: Xorg/1596 2026-07-26T16:32:32.495189+02:00 T1596;Modules linked in: netconsole snd_seq_dummy snd_hrtimer snd_seq cfg80211 nls_ascii nls_cp437 vfat fat joydev snd_usb_audio snd_usbmidi_lib intel_rapl_msr snd_ump snd_rawmidi intel_rapl_common snd_hda_codec_atihdmi snd_seq_device iosf_mbi snd_hda_codec_hdmi wmi_bmof rapl snd_hda_intel pcspkr snd_hda_codec snd_hda_core spd5118 snd_intel_dspcfg regmap_i2c k10temp snd_hwdep snd_pcm snd_timer snd soundcore rfkill evdev ccp nct6775 nct6775_core hwmon_vid efi_pstore configfs efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci drm_kms_helper libahci xhci_pci drm libata xhci_hcd nvme scsi_mod cec video nvme_core usbcore igc crc16 scsi_common nvme_keyring usb_common nvme_auth hkdf i2c_piix4 gpio_amdpt i2c_smbus wmi gpio_generic 2026-07-26T16:32:32.495189+02:00 T1596;CPU: 31 UID: 0 PID: 1596 Comm: Xorg Tainted: G W 7.0.0-rc7-dcfpubad-01910-g3c2692d1b40e #1272 PREEMPT_{RT,(full)} 2026-07-26T16:32:32.495189+02:00 T1596;Tainted: [W]=WARN 2026-07-26T16:32:32.495238+02:00 T1596;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 2026-07-26T16:32:32.495238+02:00 T1596;RIP: 0010:dc_fpu_end+0x145/0x150 [amdgpu] 2026-07-26T16:32:32.495238+02:00 T1596;Code: c0 0f 85 22 ff ff ff 48 8d 3d 07 1f 4b 00 67 48 0f b9 3a e9 11 ff ff ff 44 89 04 24 e8 94 60 12 d9 44 8b 04 24 e9 e8 fe ff ff <0f> 0b e9 e1 fe ff ff 0f 1f 40 00 41 56 41 55 41 54 55 53 48 83 ec 2026-07-26T16:32:32.495238+02:00 T1596;RSP: 0018:ffffaa7487f93400 EFLAGS: 00010296 2026-07-26T16:32:32.495238+02:00 T1596;RAX: 0000000000000001 RBX: ffffffffc13c39b0 RCX: 0000000000000008 2026-07-26T16:32:32.495238+02:00 T1596;RDX: 0000000000000000 RSI: 00000000000006a4 RDI: ffffffffc13c39b0 2026-07-26T16:32:32.495238+02:00 T1596;RBP: 00000000000006a4 R08: 00000000ffffffff R09: 0000000000000001 2026-07-26T16:32:32.495238+02:00 T1596;R10: ffff9b1d19c80000 R11: 0000000000000002 R12: ffff9b1d066e0000 2026-07-26T16:32:32.495238+02:00 T1596;R13: ffff9b1ce5c00000 R14: 0000000000000000 R15: 0000000000000001 2026-07-26T16:32:32.495238+02:00 T1596;FS: 00007f92f4c39b80(0000) GS:ffff9b2c62a46000(0000) knlGS:0000000000000000 2026-07-26T16:32:32.496222+02:00 T1596;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 2026-07-26T16:32:32.496222+02:00 T1596;CR2: 00007f2cedfb8990 CR3: 0000000127bee000 CR4: 0000000000f50ef0 2026-07-26T16:32:32.496222+02:00 T1596;PKRU: 55555554 2026-07-26T16:32:32.496222+02:00 T1596;Call Trace: 2026-07-26T16:32:32.496222+02:00 T1596; <TASK> 2026-07-26T16:32:32.496234+02:00 T1596; ? dcn401_validate_bandwidth+0xd1/0x1f0 [amdgpu] 2026-07-26T16:32:32.496234+02:00 T1596; ? update_planes_and_stream_state+0xeb5/0x1520 [amdgpu] 2026-07-26T16:32:32.496234+02:00 T1596; ? update_planes_and_stream_prepare_v3+0xb3/0x430 [amdgpu] 2026-07-26T16:32:32.496234+02:00 T1596; ? dc_update_planes_and_stream+0x87/0x130 [amdgpu] 2026-07-26T16:32:32.496269+02:00 T1596; ? amdgpu_dm_atomic_commit_tail+0x126b/0x3460 [amdgpu] 2026-07-26T16:32:32.496269+02:00 T1596; ? commit_tail+0x9d/0x130 [drm_kms_helper] 2026-07-26T16:32:32.496269+02:00 T1596; ? drm_atomic_helper_commit+0x15a/0x1a0 [drm_kms_helper] 2026-07-26T16:32:32.496269+02:00 T1596; ? drm_atomic_commit+0xac/0xe0 [drm] 2026-07-26T16:32:32.496269+02:00 T1596; ? __drm_universal_plane_init.cold+0x17/0x17 [drm] 2026-07-26T16:32:32.496269+02:00 T1596; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] 2026-07-26T16:32:32.496269+02:00 T1596; ? drm_mode_setcrtc+0x466/0x8e0 [drm] 2026-07-26T16:32:32.496269+02:00 T1596; ? lock_acquire+0xbf/0x2e0 2026-07-26T16:32:32.496269+02:00 T1596; ? rt_mutex_slowunlock+0x46/0x420 2026-07-26T16:32:32.496269+02:00 T1596; ? drm_mode_getcrtc+0x190/0x190 [drm] 2026-07-26T16:32:32.496269+02:00 T1596; ? drm_ioctl_kernel+0xa7/0x100 [drm] 2026-07-26T16:32:32.496269+02:00 T1596; ? drm_ioctl+0x288/0x510 [drm] 2026-07-26T16:32:32.496269+02:00 T1596; ? drm_mode_getcrtc+0x190/0x190 [drm] 2026-07-26T16:32:32.496269+02:00 T1596; ? amdgpu_drm_ioctl+0x4b/0x80 [amdgpu] 2026-07-26T16:32:32.496269+02:00 T1596; ? __x64_sys_ioctl+0x95/0xe0 2026-07-26T16:32:32.496313+02:00 T1596; ? do_syscall_64+0x129/0x6b0 2026-07-26T16:32:32.496313+02:00 T1596; ? rt_mutex_slowunlock+0x3bd/0x420 2026-07-26T16:32:32.496313+02:00 T1596; ? wake_up_q+0x32/0x80 2026-07-26T16:32:32.496313+02:00 T1596; ? futex_wake+0xa7/0x1c0 2026-07-26T16:32:32.496313+02:00 T1596; ? do_futex+0x11a/0x180 2026-07-26T16:32:32.496313+02:00 T1596; ? __x64_sys_futex+0x10d/0x200 2026-07-26T16:32:32.496313+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:32.496313+02:00 T1596; ? lockdep_hardirqs_on_prepare+0xd7/0x180 2026-07-26T16:32:32.496313+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:32.496313+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:32.496313+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:32.496313+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:32.496313+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:32.496313+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:32.496351+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:32.496351+02:00 T1596; ? lockdep_hardirqs_on_prepare+0xd7/0x180 2026-07-26T16:32:32.496351+02:00 T1596; ? irqentry_exit+0xbd/0x5a0 2026-07-26T16:32:32.496351+02:00 T1596; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d 2026-07-26T16:32:32.496351+02:00 T1596; </TASK> 2026-07-26T16:32:32.496351+02:00 T1596;irq event stamp: 9309205 2026-07-26T16:32:32.496475+02:00 T1596;hardirqs last enabled at (9309207): [<ffffffff99d6683d>] vprintk_store+0x36d/0x5e0 2026-07-26T16:32:32.496475+02:00 T1596;hardirqs last disabled at (9309208): [<ffffffff99d6685f>] vprintk_store+0x38f/0x5e0 2026-07-26T16:32:32.496475+02:00 T1596;softirqs last enabled at (9297620): [<ffffffff99ccb56b>] __local_bh_enable_ip+0xfb/0x140 2026-07-26T16:32:32.496475+02:00 T1596;softirqs last disabled at (9297614): [<ffffffff9a4ea8bb>] __alloc_skb+0x24b/0x360 2026-07-26T16:32:32.496475+02:00 T1596;---[ end trace 0000000000000000 ]--- 2026-07-26T16:32:32.496475+02:00 T1596;dc_fpu_end 0: preempt_count=0 dcn401_validate_bandwidth 1700 Here a preempt_count underflow is happening: 2147483647 is actually (-1 & ~PREEMPT_NEED_RESCHED) static __always_inline int preempt_count(void) { return raw_cpu_read_4(__preempt_count) & ~PREEMPT_NEED_RESCHED; } 2026-07-26T16:32:32.496475+02:00 C15;dc_fpu_end 1: preempt_count=2147483647 dcn401_validate_bandwidth 1700 2026-07-26T16:32:32.496475+02:00 T1596;------------[ cut here ]------------ 2026-07-26T16:32:32.496496+02:00 T1596;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:97 at dc_fpu_begin+0x39/0x40 [amdgpu], CPU#15: Xorg/1596 2026-07-26T16:32:32.496496+02:00 T1596;Modules linked in: netconsole snd_seq_dummy snd_hrtimer snd_seq cfg80211 nls_ascii nls_cp437 vfat fat joydev snd_usb_audio snd_usbmidi_lib intel_rapl_msr snd_ump snd_rawmidi intel_rapl_common snd_hda_codec_atihdmi snd_seq_device iosf_mbi snd_hda_codec_hdmi wmi_bmof rapl snd_hda_intel pcspkr snd_hda_codec snd_hda_core spd5118 snd_intel_dspcfg regmap_i2c k10temp snd_hwdep snd_pcm snd_timer snd soundcore rfkill evdev ccp nct6775 nct6775_core hwmon_vid efi_pstore configfs efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci drm_kms_helper libahci xhci_pci drm libata xhci_hcd nvme scsi_mod cec video nvme_core usbcore igc crc16 scsi_common nvme_keyring usb_common nvme_auth hkdf i2c_piix4 gpio_amdpt i2c_smbus wmi gpio_generic 2026-07-26T16:32:32.496496+02:00 T1596;CPU: 15 UID: 0 PID: 1596 Comm: Xorg Tainted: G W 7.0.0-rc7-dcfpubad-01910-g3c2692d1b40e #1272 PREEMPT_{RT,(full)} 2026-07-26T16:32:32.496496+02:00 T1596;Tainted: [W]=WARN 2026-07-26T16:32:32.496496+02:00 T1596;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 2026-07-26T16:32:32.496496+02:00 T1596;RIP: 0010:dc_fpu_begin+0x39/0x40 [amdgpu] 2026-07-26T16:32:32.496496+02:00 T1596;Code: 65 48 8b 05 d9 f2 63 da 65 8b 15 e2 f2 63 da 8b 80 6c 0a 00 00 89 d1 81 e1 00 00 ff 00 25 00 01 00 00 09 c8 0f 84 32 63 3a 00 <0f> 0b e9 2b 63 3a 00 0f 1f 40 d6 55 53 89 f5 48 89 fb 48 83 ec 10 2026-07-26T16:32:32.496496+02:00 T1596;RSP: 0018:ffffaa7487f93578 EFLAGS: 00010206 2026-07-26T16:32:32.496513+02:00 T1596;RAX: 0000000000ff0000 RBX: ffff9b1ce5c00000 RCX: 0000000000ff0000 2026-07-26T16:32:32.496513+02:00 T1596;RDX: 000000007fffffff RSI: 00000000000006c8 RDI: ffffffffc13c3980 2026-07-26T16:32:32.496513+02:00 T1596;RBP: ffff9b1d19c80000 R08: 0000000000005183 R09: ffffffffc13c3980 2026-07-26T16:32:32.496513+02:00 T1596;R10: 00000000000006c8 R11: 0000000000000000 R12: ffff9b1d066e0000 2026-07-26T16:32:32.496513+02:00 T1596;R13: 0000000000000001 R14: ffff9b1ce5c00000 R15: ffff9b1d043a0000 2026-07-26T16:32:32.496513+02:00 T1596;FS: 00007f92f4c39b80(0000) GS:ffff9b2c62646000(0000) knlGS:0000000000000000 2026-07-26T16:32:32.496513+02:00 T1596;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 2026-07-26T16:32:32.496568+02:00 T1596;CR2: 00007ffb1496aff8 CR3: 0000000127bee000 CR4: 0000000000f50ef0 2026-07-26T16:32:32.496568+02:00 T1596;PKRU: 55555554 2026-07-26T16:32:32.496568+02:00 T1596;Call Trace: 2026-07-26T16:32:32.496568+02:00 T1596; <TASK> 2026-07-26T16:32:32.496568+02:00 T1596; ? determine_pipe_unlock_order+0x78/0xf0 [amdgpu] 2026-07-26T16:32:32.496568+02:00 T1596; ? dcn401_prepare_mcache_programming+0x2f/0x70 [amdgpu] 2026-07-26T16:32:32.496568+02:00 T1596; ? commit_planes_for_stream+0x157/0x1870 [amdgpu] 2026-07-26T16:32:32.496568+02:00 T1596; ? update_planes_and_stream_execute_v3+0x3c/0xd0 [amdgpu] 2026-07-26T16:32:32.496568+02:00 T1596; ? dc_update_planes_and_stream+0xb6/0x130 [amdgpu] 2026-07-26T16:32:32.496568+02:00 T1596; ? amdgpu_dm_atomic_commit_tail+0x126b/0x3460 [amdgpu] 2026-07-26T16:32:32.496568+02:00 T1596; ? commit_tail+0x9d/0x130 [drm_kms_helper] 2026-07-26T16:32:32.496568+02:00 T1596; ? drm_atomic_helper_commit+0x15a/0x1a0 [drm_kms_helper] 2026-07-26T16:32:32.496568+02:00 T1596; ? drm_atomic_commit+0xac/0xe0 [drm] 2026-07-26T16:32:32.496568+02:00 T1596; ? __drm_universal_plane_init.cold+0x17/0x17 [drm] 2026-07-26T16:32:32.496568+02:00 T1596; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] 2026-07-26T16:32:32.496603+02:00 T1596; ? drm_mode_setcrtc+0x466/0x8e0 [drm] 2026-07-26T16:32:32.496603+02:00 T1596; ? lock_acquire+0xbf/0x2e0 2026-07-26T16:32:32.496603+02:00 T1596; ? rt_mutex_slowunlock+0x46/0x420 2026-07-26T16:32:32.496603+02:00 T1596; ? drm_mode_getcrtc+0x190/0x190 [drm] 2026-07-26T16:32:32.496603+02:00 T1596; ? drm_ioctl_kernel+0xa7/0x100 [drm] 2026-07-26T16:32:32.496603+02:00 T1596; ? drm_ioctl+0x288/0x510 [drm] 2026-07-26T16:32:32.496603+02:00 T1596; ? drm_mode_getcrtc+0x190/0x190 [drm] 2026-07-26T16:32:39.401337+02:00 T1596; ? amdgpu_drm_ioctl+0x4b/0x80 [amdgpu] 2026-07-26T16:32:39.401337+02:00 T1596; ? __x64_sys_ioctl+0x95/0xe0 2026-07-26T16:32:39.401337+02:00 T1596; ? do_syscall_64+0x129/0x6b0 2026-07-26T16:32:39.401337+02:00 T1596; ? rt_mutex_slowunlock+0x3bd/0x420 2026-07-26T16:32:39.401337+02:00 T1596; ? wake_up_q+0x32/0x80 2026-07-26T16:32:39.401337+02:00 T1596; ? futex_wake+0xa7/0x1c0 2026-07-26T16:32:39.401337+02:00 T1596; ? do_futex+0x11a/0x180 2026-07-26T16:32:39.401337+02:00 T1596; ? __x64_sys_futex+0x10d/0x200 2026-07-26T16:32:39.401337+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:39.401337+02:00 T1596; ? lockdep_hardirqs_on_prepare+0xd7/0x180 2026-07-26T16:32:39.401337+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:39.401337+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:39.401337+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:39.401337+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:39.401337+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:39.401337+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:39.401337+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:39.401337+02:00 T1596; ? lockdep_hardirqs_on_prepare+0xd7/0x180 2026-07-26T16:32:39.401337+02:00 T1596; ? irqentry_exit+0xbd/0x5a0 2026-07-26T16:32:39.401337+02:00 T1596; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d 2026-07-26T16:32:39.401337+02:00 T1596; </TASK> 2026-07-26T16:32:39.401337+02:00 T1596;irq event stamp: 9309525 2026-07-26T16:32:39.401337+02:00 T1596;hardirqs last enabled at (9309527): [<ffffffff99d6683d>] vprintk_store+0x36d/0x5e0 2026-07-26T16:32:39.401337+02:00 T1596;hardirqs last disabled at (9309528): [<ffffffff99d6685f>] vprintk_store+0x38f/0x5e0 2026-07-26T16:32:39.401337+02:00 T1596;softirqs last enabled at (9297620): [<ffffffff99ccb56b>] __local_bh_enable_ip+0xfb/0x140 2026-07-26T16:32:39.401337+02:00 T1596;softirqs last disabled at (9297614): [<ffffffff9a4ea8bb>] __alloc_skb+0x24b/0x360 2026-07-26T16:32:39.401337+02:00 T1596;---[ end trace 0000000000000000 ]--- 2026-07-26T16:32:39.401337+02:00 C15;dc_fpu_begin 0: preempt_count=2147483647 dcn401_prepare_mcache_programming 1736 2026-07-26T16:32:39.401337+02:00 T1596;dc_fpu_begin 1: preempt_count=0 dcn401_prepare_mcache_programming 1736 2026-07-26T16:32:39.401337+02:00 T1596;dc_fpu_end 0: preempt_count=0 dcn401_prepare_mcache_programming 1740 2026-07-26T16:32:39.401337+02:00 C15;dc_fpu_end 1: preempt_count=2147483647 dcn401_prepare_mcache_programming 1740 2026-07-26T16:32:39.401337+02:00 C15;dc_fpu_begin 0: preempt_count=2147483647 dc_state_free 387 2026-07-26T16:32:39.401337+02:00 T1596;dc_fpu_begin 1: preempt_count=0 dc_state_free 387 2026-07-26T16:32:39.401337+02:00 T1596;dc_fpu_end 0: preempt_count=0 dml21_destroy 61 2026-07-26T16:32:39.401337+02:00 C15;dc_fpu_end 1: preempt_count=2147483647 dml21_destroy 61 2026-07-26T16:32:39.401337+02:00 T1596;------------[ cut here ]------------ 2026-07-26T16:32:39.401337+02:00 T1596;kernel BUG at mm/vmalloc.c:3412! 2026-07-26T16:32:39.401337+02:00 T1596;Oops: invalid opcode: 0000 [#1] SMP NOPTI 2026-07-26T16:32:39.401337+02:00 T1596;CPU: 15 UID: 0 PID: 1596 Comm: Xorg Tainted: G W 7.0.0-rc7-dcfpubad-01910-g3c2692d1b40e #1272 PREEMPT_{RT,(full)} 2026-07-26T16:32:39.401337+02:00 T1596;Tainted: [W]=WARN 2026-07-26T16:32:39.401337+02:00 T1596;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026 2026-07-26T16:32:39.401337+02:00 T1596;RIP: 0010:vfree_atomic+0x55/0x60 2026-07-26T16:32:39.401337+02:00 T1596;Code: 07 48 89 c1 f0 48 0f b1 3a 75 f3 48 85 c9 74 05 c3 cc cc cc cc 48 8b 35 a1 70 c1 00 48 83 c2 08 bf 20 00 00 00 e9 cb 29 d6 ff <0f> 0b 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 41 56 41 54 55 53 48 2026-07-26T16:32:39.401337+02:00 T1596;RSP: 0018:ffffaa7487f93600 EFLAGS: 00010286 2026-07-26T16:32:39.401337+02:00 T1596;RAX: 0000000000ff0000 RBX: ffffaa748748c000 RCX: 0000000000000027 2026-07-26T16:32:39.401337+02:00 T1596;RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffaa748f056000 2026-07-26T16:32:39.401337+02:00 T1596;RBP: ffff9b1d1b400000 R08: 0000000000000004 R09: 0000000000000120 2026-07-26T16:32:39.401337+02:00 T1596;R10: 0000000000000200 R11: 0000000000000000 R12: ffff9b1d066e0000 2026-07-26T16:32:39.401337+02:00 T1596;R13: ffff9b1ce5c00000 R14: 0000000000000001 R15: ffff9b1d043a0000 2026-07-26T16:32:39.401337+02:00 T1596;FS: 00007f92f4c39b80(0000) GS:ffff9b2c62646000(0000) knlGS:0000000000000000 2026-07-26T16:32:39.401337+02:00 T1596;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 2026-07-26T16:32:39.401337+02:00 T1596;CR2: 00007ffb1496aff8 CR3: 0000000127bee000 CR4: 0000000000f50ef0 2026-07-26T16:32:39.401337+02:00 T1596;PKRU: 55555554 2026-07-26T16:32:39.401337+02:00 T1596;Call Trace: 2026-07-26T16:32:39.401337+02:00 T1596; <TASK> 2026-07-26T16:32:39.401337+02:00 T1596; ? dml21_destroy+0x50/0xa0 [amdgpu] 2026-07-26T16:32:39.401419+02:00 T1596; ? dml2_destroy+0x59/0x60 [amdgpu] 2026-07-26T16:32:39.401419+02:00 T1596; ? dc_state_free+0x31/0x70 [amdgpu] 2026-07-26T16:32:39.401419+02:00 T1596; ? update_planes_and_stream_cleanup_v3+0x4f/0x3e0 [amdgpu] 2026-07-26T16:32:39.401419+02:00 T1596; ? dc_update_planes_and_stream+0xc4/0x130 [amdgpu] 2026-07-26T16:32:39.401419+02:00 T1596; ? amdgpu_dm_atomic_commit_tail+0x126b/0x3460 [amdgpu] 2026-07-26T16:32:39.401419+02:00 T1596; ? commit_tail+0x9d/0x130 [drm_kms_helper] 2026-07-26T16:32:39.401419+02:00 T1596; ? drm_atomic_helper_commit+0x15a/0x1a0 [drm_kms_helper] 2026-07-26T16:32:39.401419+02:00 T1596; ? drm_atomic_commit+0xac/0xe0 [drm] 2026-07-26T16:32:39.401446+02:00 T1596; ? __drm_universal_plane_init.cold+0x17/0x17 [drm] 2026-07-26T16:32:39.401446+02:00 T1596; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper] 2026-07-26T16:32:39.401446+02:00 T1596; ? drm_mode_setcrtc+0x466/0x8e0 [drm] 2026-07-26T16:32:39.401446+02:00 T1596; ? lock_acquire+0xbf/0x2e0 2026-07-26T16:32:39.401446+02:00 T1596; ? rt_mutex_slowunlock+0x46/0x420 2026-07-26T16:32:39.401446+02:00 T1596; ? drm_mode_getcrtc+0x190/0x190 [drm] 2026-07-26T16:32:39.401446+02:00 T1596; ? drm_ioctl_kernel+0xa7/0x100 [drm] 2026-07-26T16:32:39.401446+02:00 T1596; ? drm_ioctl+0x288/0x510 [drm] 2026-07-26T16:32:39.401467+02:00 T1596; ? drm_mode_getcrtc+0x190/0x190 [drm] 2026-07-26T16:32:39.401467+02:00 T1596; ? amdgpu_drm_ioctl+0x4b/0x80 [amdgpu] 2026-07-26T16:32:39.401467+02:00 T1596; ? __x64_sys_ioctl+0x95/0xe0 2026-07-26T16:32:39.401467+02:00 T1596; ? do_syscall_64+0x129/0x6b0 2026-07-26T16:32:39.401467+02:00 T1596; ? rt_mutex_slowunlock+0x3bd/0x420 2026-07-26T16:32:39.401467+02:00 T1596; ? wake_up_q+0x32/0x80 2026-07-26T16:32:39.401467+02:00 T1596; ? futex_wake+0xa7/0x1c0 2026-07-26T16:32:39.401467+02:00 T1596; ? do_futex+0x11a/0x180 2026-07-26T16:32:39.401489+02:00 T1596; ? __x64_sys_futex+0x10d/0x200 2026-07-26T16:32:39.401489+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:39.401489+02:00 T1596; ? lockdep_hardirqs_on_prepare+0xd7/0x180 2026-07-26T16:32:39.401489+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:39.401489+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:39.401489+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:39.401489+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:39.401489+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:39.401580+02:00 T1596; ? do_syscall_64+0x238/0x6b0 2026-07-26T16:32:39.401580+02:00 T1596; ? trace_hardirqs_on_prepare+0xdc/0x100 2026-07-26T16:32:39.401580+02:00 T1596; ? lockdep_hardirqs_on_prepare+0xd7/0x180 2026-07-26T16:32:39.401580+02:00 T1596; ? irqentry_exit+0xbd/0x5a0 2026-07-26T16:32:39.401580+02:00 T1596; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d 2026-07-26T16:32:39.401580+02:00 T1596; </TASK> 2026-07-26T16:32:39.401580+02:00 T1596;Modules linked in: netconsole snd_seq_dummy snd_hrtimer snd_seq cfg80211 nls_ascii nls_cp437 vfat fat joydev snd_usb_audio snd_usbmidi_lib intel_rapl_msr snd_ump snd_rawmidi intel_rapl_common snd_hda_codec_atihdmi snd_seq_device iosf_mbi snd_hda_codec_hdmi wmi_bmof rapl snd_hda_intel pcspkr snd_hda_codec snd_hda_core spd5118 snd_intel_dspcfg regmap_i2c k10temp snd_hwdep snd_pcm snd_timer snd soundcore rfkill evdev ccp nct6775 nct6775_core hwmon_vid efi_pstore configfs efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci drm_kms_helper libahci xhci_pci drm libata xhci_hcd nvme scsi_mod cec video nvme_core usbcore igc crc16 scsi_common nvme_keyring usb_common nvme_auth hkdf i2c_piix4 gpio_amdpt i2c_smbus wmi gpio_generic 2026-07-26T16:32:39.401580+02:00 T1596;---[ end trace 0000000000000000 ]--- 2026-07-26T16:32:39.401580+02:00 C10;RIP: 0010:vfree_atomic+0x55/0x60 2026-07-26T16:32:39.401580+02:00 C10;Code: 07 48 89 c1 f0 48 0f b1 3a 75 f3 48 85 c9 74 05 c3 cc cc cc cc 48 8b 35 a1 70 c1 00 48 83 c2 08 bf 20 00 00 00 e9 cb 29 d6 ff <0f> 0b 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 41 56 41 54 55 53 48 2026-07-26T16:32:39.401580+02:00 C10;RSP: 0018:ffffaa7487f93600 EFLAGS: 00010286 2026-07-26T16:32:39.401580+02:00 C10;RAX: 0000000000ff0000 RBX: ffffaa748748c000 RCX: 0000000000000027 2026-07-26T16:32:39.401580+02:00 C10;RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffaa748f056000 2026-07-26T16:32:39.401580+02:00 C10;RBP: ffff9b1d1b400000 R08: 0000000000000004 R09: 0000000000000120 2026-07-26T16:32:39.401580+02:00 C10;R10: 0000000000000200 R11: 0000000000000000 R12: ffff9b1d066e0000 2026-07-26T16:32:39.401580+02:00 C10;R13: ffff9b1ce5c00000 R14: 0000000000000001 R15: ffff9b1d043a0000 2026-07-26T16:32:39.401580+02:00 C10;FS: 00007f92f4c39b80(0000) GS:ffff9b2c62506000(0000) knlGS:0000000000000000 2026-07-26T16:32:39.401580+02:00 C10;CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 2026-07-26T16:32:39.401580+02:00 C10;CR2: 00007f1fb663c478 CR3: 0000000127bee000 CR4: 0000000000f50ef0 2026-07-26T16:32:39.401580+02:00 C10;PKRU: 55555554 2026-07-26T16:32:39.401580+02:00 T1596;Kernel panic - not syncing: Fatal exception in interrupt 2026-07-26T16:32:39.401580+02:00 T1596;Kernel Offset: 0x18a00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff) 2026-07-26T16:32:39.401580+02:00 T1596;---[ end Kernel panic - not syncing: Fatal exception in interrupt ]--- As the preempt_count_underflow happens in dcn401_validate_bandwidth() I removed the DC_FP_{START,END} macros: diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c index cb93bfbe9e9e..7a90098ec118 100644 --- a/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c +++ b/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c @@ -1693,11 +1693,9 @@ enum dc_status dcn401_validate_bandwidth(struct dc *dc, } if (dc->debug.using_dml2) { - DC_FP_START(); status = dml2_validate(dc, context, context->power_source == DC_POWER_SOURCE_DC ? context->bw_ctx.dml2_dc_power_source : context->bw_ctx.dml2, validate_mode) ? DC_OK : DC_FAIL_BANDWIDTH_VALIDATE; - DC_FP_END(); } if (validate_mode == DC_VALIDATE_MODE_AND_PROGRAMMING && status == DC_OK && dc_state_is_subvp_in_use(context)) { @@ -1718,11 +1716,9 @@ enum dc_status dcn401_validate_bandwidth(struct dc *dc, if (validate_mode == DC_VALIDATE_MODE_AND_PROGRAMMING && status == DC_FAIL_HW_CURSOR_SUPPORT) { /* attempt to validate again with subvp disabled due to cursor */ if (dc->debug.using_dml2) { - DC_FP_START(); status = dml2_validate(dc, context, context->power_source == DC_POWER_SOURCE_DC ? context->bw_ctx.dml2_dc_power_source : context->bw_ctx.dml2, validate_mode) ? DC_OK : DC_FAIL_BANDWIDTH_VALIDATE; - DC_FP_END(); } } With this patch I got 24 reboot cycles without any error, (no "scheduling while atomic", no panic an no error from dc_assert_fp_enabled()). Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Re] kernel panic during shutdown in next-20260722 2026-07-26 18:47 ` Bert Karwatzki @ 2026-07-26 22:52 ` Bert Karwatzki 2026-07-27 10:06 ` [Re] kernel panic during shutdown in v7.1+ with PREEMPT_RT Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-26 22:52 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswolf Am Sonntag, dem 26.07.2026 um 20:47 +0200 schrieb Bert Karwatzki: > Am Sonntag, dem 26.07.2026 um 01:16 +0200 schrieb Bert Karwatzki: > > > Now I've run a test with > commit 8bf0cb97edb ("drm/amd/display: Move dml2_destroy to non-FPU compilation unit") > with the following debugging patch: > As I had no better idea I started throwing printk()s into the general direction of the bug, and found this after some attempts: /******************************************************************************* * Public functions ******************************************************************************/ struct dc_plane_state *dc_create_plane_state(const struct dc *dc) { printk(KERN_INFO "%s %d: preempt_count = %d\n", __func__, __LINE__, preempt_count()); struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC); printk(KERN_INFO "%s %d\n", __func__, __LINE__); if (NULL == plane_state) return NULL; kref_init(&plane_state->refcount); dc_plane_construct(dc->ctx, plane_state); return plane_state; } In the error case this prints "preempt_count = 2"! (only if dc_create_plane_state() is called from dc_state_create_phantom_plane()). If I combine this with the "solution" from above diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c index cb93bfbe9e9e..7a90098ec118 100644 --- a/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c +++ b/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c @@ -1693,11 +1693,9 @@ enum dc_status dcn401_validate_bandwidth(struct dc *dc, } if (dc->debug.using_dml2) { - DC_FP_START(); status = dml2_validate(dc, context, context->power_source == DC_POWER_SOURCE_DC ? context->bw_ctx.dml2_dc_power_source : context->bw_ctx.dml2, validate_mode) ? DC_OK : DC_FAIL_BANDWIDTH_VALIDATE; - DC_FP_END(); } if (validate_mode == DC_VALIDATE_MODE_AND_PROGRAMMING && status == DC_OK && dc_state_is_subvp_in_use(context)) { @@ -1718,11 +1716,9 @@ enum dc_status dcn401_validate_bandwidth(struct dc *dc, if (validate_mode == DC_VALIDATE_MODE_AND_PROGRAMMING && status == DC_FAIL_HW_CURSOR_SUPPORT) { /* attempt to validate again with subvp disabled due to cursor */ if (dc->debug.using_dml2) { - DC_FP_START(); status = dml2_validate(dc, context, context->power_source == DC_POWER_SOURCE_DC ? context->bw_ctx.dml2_dc_power_source : context->bw_ctx.dml2, validate_mode) ? DC_OK : DC_FAIL_BANDWIDTH_VALIDATE; - DC_FP_END(); } } I get in all cases "preempt_count = 0" again. I also monitored the preempt_count with this patch applied on top of commit 02c3060ee303 ("drm/amdgpu: add support to query vram info from firmware") (this is the last commit before the problematic patchset 32c1c35b6d8b drm/amd/display: Move FPU Guards From DML To DC - Part 3 4bb2f0721ed8 drm/amd/display: Move FPU Guards From DML To DC - Part 2 3539437f354b drm/amd/display: Move FPU Guards From DML To DC - Part 1) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c index 5f12dcca7f71..29f45b556371 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c @@ -85,6 +85,7 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state *dc_state, const struct dc_plane ******************************************************************************/ struct dc_plane_state *dc_create_plane_state(const struct dc *dc) { + printk(KERN_INFO "%s 0: preempt_count = %d\n", __func__, preempt_count()); struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC); Again I get only 0 for the preempt_count. Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Re] kernel panic during shutdown in v7.1+ with PREEMPT_RT 2026-07-26 22:52 ` Bert Karwatzki @ 2026-07-27 10:06 ` Bert Karwatzki 2026-07-27 10:35 ` Ostrowski, Rafal 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-27 10:06 UTC (permalink / raw) To: linux-kernel, Rafal Ostrowski Cc: linux-next, linux-rt-devel, amd-gfx, Alex Deucher, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswolf This can be fixed like this struct dc_plane_state *dc_create_plane_state(const struct dc *dc) { struct dc_plane_state *plane_state; DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); if (NULL == plane_state) return NULL; kref_init(&plane_state->refcount); dc_plane_construct(dc->ctx, plane_state); return plane_state; } I also found missing DC_RUN_WITH_PREEMPTION_ENABLED in an error path, I'm preparing a patch for next-20260721 (next-20260722+ have broken reboot due to the mt7925 issue mentioned above). Also, is preempt_{disable,enable}() really necessary in DC_FPU_{BEGIN,END}? Could migrate_{disable,enable}() be enough instead? This way we wouldn't need DC_RUN_WITH_PREEMPTION_ENABLED at all(?). Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Re] kernel panic during shutdown in v7.1+ with PREEMPT_RT 2026-07-27 10:06 ` [Re] kernel panic during shutdown in v7.1+ with PREEMPT_RT Bert Karwatzki @ 2026-07-27 10:35 ` Ostrowski, Rafal 2026-07-27 10:50 ` [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} " Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Ostrowski, Rafal @ 2026-07-27 10:35 UTC (permalink / raw) To: Bert Karwatzki, linux-kernel Cc: linux-next, linux-rt-devel, amd-gfx, Deucher, Alexander, Limonciello, Mario, Sebastian Andrzej Siewior, Thomas Gleixner > This can be fixed like this > > struct dc_plane_state *dc_create_plane_state(const struct dc *dc) > { > struct dc_plane_state *plane_state; > DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); > > if (NULL == plane_state) > return NULL; > > kref_init(&plane_state->refcount); > dc_plane_construct(dc->ctx, plane_state); > > return plane_state; > } > > I also found missing DC_RUN_WITH_PREEMPTION_ENABLED in an error path, I'm preparing > a patch for next-20260721 (next-20260722+ have broken reboot due to the mt7925 issue > mentioned above). > Also, is preempt_{disable,enable}() really necessary in DC_FPU_{BEGIN,END}? > Could migrate_{disable,enable}() be enough instead? This way we wouldn't need > DC_RUN_WITH_PREEMPTION_ENABLED at all(?). > > Bert Karwatzki Hi Bert, Sorry for the trouble these changes caused on your setup. It reproduces deterministically on PREEMPT_RT — that's the key condition here. On RT the page allocator always takes a sleeping rt_spin_lock, so any allocation inside the FPU-protected region is illegal, whereas on non-RT kernels the same allocation usually stays on the fast path and doesn't sleep, which is why this hasn't been widely reported. Some context on how the FPU handling is meant to work: DC_FP_START/END (DC_FPU_BEGIN/END): these require a non-preemptible context. The kernel needs exclusive use of the FPU while we run FP code, so preemption must be disabled around it. Note that kernel_fpu_begin() itself does preempt_disable() (via fpregs_lock()) unconditionally — on PREEMPT_RT as well. That directly answers your migrate_disable() question: swapping the preempt_disable/enable in dc_fpu_begin/end for migrate_disable/enable would not make the region preemptible, because kernel_fpu_begin() disables preemption on its own regardless. migrate_disable() would only pin us to the CPU (enough to protect the per-CPU recursion counter), but the region would still be atomic, so it wouldn't remove the need for DC_RUN_WITH_PREEMPTION_ENABLED. The only thing that actually re-enables preemption is leaving the FPU (kernel_fpu_end()), which is exactly what that macro does. DML layer: the whole DML layer is compiled as FPU code (see the FP compilation flags in the makefile), with only a few wrapper/exception units. As a result, any function that calls into DML must wrap the call in a DC_FP_START()/DC_FP_END() block. DC_RUN_WITH_PREEMPTION_ENABLED: this is the workaround for the cases where we must allocate or sleep while inside an FPU region. The important rule is that this macro must always live in a non-FPU translation unit (a DC file or a DML wrapper/exception file) — never in pure FPU-compiled DML code, since it manipulates the FPU guard itself. With that in mind there are effectively two cases: DC → DC_FP_START → call DML → no allocation/sleep in the DML path → back to DC → DC_FP_END. Clean case, no macro needed. DC → DC_FP_START → call DML → DML calls back into a DC (or wrapper) function that allocates/sleeps → wrap the affected code (allocation, sleep) in DC_RUN_WITH_PREEMPTION_ENABLED in that DC function → back to DML → back to DC → DC_FP_END. The phantom-plane allocation is the second case: DML calls back into dc_create_plane_state(), which is a DC function, so the wrap belongs there. About the fix: DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); This fix looks correct to me. Kind Regards, Rafal ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-07-27 10:35 ` Ostrowski, Rafal @ 2026-07-27 10:50 ` Bert Karwatzki 2026-07-27 11:11 ` sashiko-bot 2026-07-28 0:51 ` mikhail.v.gavrilov 0 siblings, 2 replies; 33+ messages in thread From: Bert Karwatzki @ 2026-07-27 10:50 UTC (permalink / raw) To: linux-kernel Cc: Bert Karwatzki, linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is converted to rt_mutex. dc_create_plane_state() can be called while inside an FPU-guarded region, resuling in "scheduling while atomic" errors on PREEMPT_RT kernels. Fix this by calling kvzalloc_obj() with DC_RUN_WITH_PREEMPTION_ENABLED(). Also fix the error path in dc_create_stream_for_sink(). Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC - Part 1") Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ Signed-off-by: Bert Karwatzki <spasswolf@web.de> --- drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 5 +++-- drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c index dbc12640b01c..4ac835777b58 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c @@ -233,8 +233,9 @@ struct dc_stream_state *dc_create_stream_for_sink( fail: if (stream) { - kfree(stream->update_scratch); - kfree(stream); + if (stream->update_scratch) + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream->update_scratch)); + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); } return NULL; diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c index 88e825a6582c..d5c6427796b6 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c @@ -85,8 +85,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state *dc_state, const struct dc_plane ******************************************************************************/ struct dc_plane_state *dc_create_plane_state(const struct dc *dc) { - struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, - GFP_ATOMIC); + struct dc_plane_state *plane_state; + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); if (NULL == plane_state) return NULL; -- 2.53.0 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-07-27 10:50 ` [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} " Bert Karwatzki @ 2026-07-27 11:11 ` sashiko-bot 2026-07-28 0:51 ` mikhail.v.gavrilov 1 sibling, 0 replies; 33+ messages in thread From: sashiko-bot @ 2026-07-27 11:11 UTC (permalink / raw) To: Bert Karwatzki; +Cc: linux-rt-devel, linux-kernel Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: New issues: - [High] Dropping the FPU guard inside dc_create_plane_state() and the error path of dc_create_stream_for_sink() corrupts callee-saved FPU registers on architectures like ARM64. Pre-existing issues: - [High] The patch addresses 'scheduling while atomic' bugs on PREEMPT_RT by wrapping memory allocations in FPU regions, but fails to apply the same fix to the symmetrical normal deallocation paths (dc_stream_free and dc_plane_state_free). -- --- Patch [1]: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT --- commit cf0d00c09a192f136eba5d73a1ff01aa518ca2f4 Author: Bert Karwatzki <spasswolf@web.de> drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is converted to rt_mutex. dc_create_plane_state() can be called while inside an FPU-guarded region, resuling in "scheduling while atomic" errors on PREEMPT_RT kernels. Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > index dbc12640b01c0..4ac835777b586 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > @@ -233,8 +233,9 @@ struct dc_stream_state *dc_create_stream_for_sink( > > fail: > if (stream) { > - kfree(stream->update_scratch); > - kfree(stream); > + if (stream->update_scratch) > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream->update_scratch)); > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); > } > > return NULL; [Severity: High] Could this cause floating-point data corruption on architectures like ARM64? If this error path is reached while a DML algorithm is calling this as a callback inside an FPU block, DC_RUN_WITH_PREEMPTION_ENABLED() terminates the kernel FPU context. When kernel_fpu_end() restores the user FPU state, won't the floating-point variables held in callee-saved FPU registers be destroyed upon returning to the DML caller? > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > index 88e825a6582cb..d5c6427796b65 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > @@ -85,8 +85,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state *dc_state, const struct dc_plane > ******************************************************************************/ > struct dc_plane_state *dc_create_plane_state(const struct dc *dc) > { > - struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, > - GFP_ATOMIC); > + struct dc_plane_state *plane_state; > + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); [Severity: High] Similar to the stream allocation above, does dropping the FPU guard here corrupt callee-saved FPU registers? When a DML algorithm calls dc_state_create_phantom_plane as a callback while inside an FPU block, it calls dc_create_plane_state(). Dropping the FPU guard here allows the hardware FPU state to be overwritten, which appears to destroy the caller's FPU context. > > if (NULL == plane_state) > return NULL; [Severity: High] This isn't a bug introduced by this patch, but since you are addressing 'scheduling while atomic' bugs on PREEMPT_RT by wrapping memory allocations in FPU regions, what about the symmetrical normal deallocation paths? For example, dc_stream_free() and dc_plane_state_free() call kfree() and kvfree() without FPU/preemption guards. During bandwidth validation, dcn32_internal_validate_bw() executes inside an FPU-guarded section (with preemption disabled) and can trigger these frees: dcn32_internal_validate_bw() dc_state_release_phantom_streams_and_planes() // drops refcounts, leading to: dc_stream_free() kfree() On PREEMPT_RT kernels, won't these free functions still attempt to acquire sleeping locks (rt_mutex) and cause a scheduling while atomic crash? -- Sashiko AI review · https://sashiko.dev/#/patchset/20260727105059.75716-1-spasswolf@web.de?part=1 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-07-27 10:50 ` [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} " Bert Karwatzki 2026-07-27 11:11 ` sashiko-bot @ 2026-07-28 0:51 ` mikhail.v.gavrilov 2026-07-29 12:35 ` Bert Karwatzki 1 sibling, 1 reply; 33+ messages in thread From: mikhail.v.gavrilov @ 2026-07-28 0:51 UTC (permalink / raw) To: Bert Karwatzki, linux-kernel Cc: linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner On Mon, 2026-07-27 at 12:50 +0200, Bert Karwatzki wrote: > On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is > converted to rt_mutex. dc_create_plane_state() can be called while > inside an FPU-guarded region, resuling in "scheduling while atomic" > errors on PREEMPT_RT kernels. > Fix this by calling kvzalloc_obj() with > DC_RUN_WITH_PREEMPTION_ENABLED(). > Also fix the error path in dc_create_stream_for_sink(). > > Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC > - Part 1") > Link: > https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > > Signed-off-by: Bert Karwatzki <spasswolf@web.de> > --- > drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 5 +++-- > drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 4 ++-- > 2 files changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > index dbc12640b01c..4ac835777b58 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > @@ -233,8 +233,9 @@ struct dc_stream_state > *dc_create_stream_for_sink( > > fail: > if (stream) { > - kfree(stream->update_scratch); > - kfree(stream); > + if (stream->update_scratch) > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream- > >update_scratch)); > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); > } > > return NULL; > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > index 88e825a6582c..d5c6427796b6 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > @@ -85,8 +85,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state > *dc_state, const struct dc_plane > > ********************************************************************* > *********/ > struct dc_plane_state *dc_create_plane_state(const struct dc *dc) > { > - struct dc_plane_state *plane_state = > kvzalloc_obj(*plane_state, > - > GFP_ATOMIC); > + struct dc_plane_state *plane_state; > + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = > kvzalloc_obj(*plane_state, GFP_ATOMIC)); > > if (NULL == plane_state) > return NULL; Hi Bert, You may not be aware that the same allocation is already wrapped once, at the dcn32 call site: 183182235f6d ("drm/amd/display: Wrap DCN32 phantom-plane allocation in DC_RUN_WITH_PREEMPTION_ENABLED") That one only covers the dcn32 DML1 path, while your trace goes through dcn401_validate_bandwidth() and dml21 - so wrapping the call site could never have caught your case. Which is a good argument for guarding the allocation in the callee, as you do: dc_create_plane_state() is reached from every DCN and both DML generations. On dcn32 the two wraps now nest. That is harmless, because DC_RUN_WITH_PREEMPTION_ENABLED() is conditional on dc_is_fp_enabled(): once the outer instance has left the FPU region, the inner one expands to a plain call. But it does make the dcn32 wrap redundant, and I think it should be dropped in a follow-up now that the allocation is guarded in the callee. One thing that may be worth adjusting in the commit message: this is not only a PREEMPT_RT problem. 183182235f6d was needed on a plain non- RT x86 kernel. There DC_FP_START() takes fpregs_lock(), which disables local softirqs, and dc_plane_state is around 335 KiB, so kvzalloc_obj() falls through to the vmalloc path and hits BUG_ON(in_interrupt()). So on RT any allocation inside the FPU region is illegal, while on non-RT it is specifically the large ones - two failure modes, one root cause. About the FPU register question raised by the review bot: as far as I can see it applies to every existing user of DC_RUN_WITH_PREEMPTION_ENABLED(), 183182235f6d included, so it looks like a property of the macro rather than something your patch introduces. An answer from AMD on that would be useful either way. I have dcn32 hardware here (RX 7900 XTX) and can test the patch on non-RT if that helps. -- Thanks, Mikhail ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-07-28 0:51 ` mikhail.v.gavrilov @ 2026-07-29 12:35 ` Bert Karwatzki 2026-07-29 14:39 ` Mikhail Gavrilov 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-29 12:35 UTC (permalink / raw) To: mikhail.v.gavrilov, linux-kernel Cc: linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswolf Am Dienstag, dem 28.07.2026 um 05:51 +0500 schrieb mikhail.v.gavrilov@gmail.com: > On Mon, 2026-07-27 at 12:50 +0200, Bert Karwatzki wrote: > > On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is > > converted to rt_mutex. dc_create_plane_state() can be called while > > inside an FPU-guarded region, resuling in "scheduling while atomic" > > errors on PREEMPT_RT kernels. > > Fix this by calling kvzalloc_obj() with > > DC_RUN_WITH_PREEMPTION_ENABLED(). > > Also fix the error path in dc_create_stream_for_sink(). > > > > Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC > > - Part 1") > > Link: > > https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > > > > Signed-off-by: Bert Karwatzki <spasswolf@web.de> > > --- > > drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 5 +++-- > > drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 4 ++-- > > 2 files changed, 5 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > > b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > > index dbc12640b01c..4ac835777b58 100644 > > --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > > @@ -233,8 +233,9 @@ struct dc_stream_state > > *dc_create_stream_for_sink( > > > > fail: > > if (stream) { > > - kfree(stream->update_scratch); > > - kfree(stream); > > + if (stream->update_scratch) > > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream- > > > update_scratch)); > > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); > > } > > > > return NULL; > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > > b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > > index 88e825a6582c..d5c6427796b6 100644 > > --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > > @@ -85,8 +85,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state > > *dc_state, const struct dc_plane > > > > ********************************************************************* > > *********/ > > struct dc_plane_state *dc_create_plane_state(const struct dc *dc) > > { > > - struct dc_plane_state *plane_state = > > kvzalloc_obj(*plane_state, > > - > > GFP_ATOMIC); > > + struct dc_plane_state *plane_state; > > + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = > > kvzalloc_obj(*plane_state, GFP_ATOMIC)); > > > > if (NULL == plane_state) > > return NULL; > > Hi Bert, > > You may not be aware that the same allocation is already wrapped once, > at the dcn32 call site: > > 183182235f6d ("drm/amd/display: Wrap DCN32 phantom-plane allocation > in DC_RUN_WITH_PREEMPTION_ENABLED") > > That one only covers the dcn32 DML1 path, while your trace goes through > dcn401_validate_bandwidth() and dml21 - so wrapping the call site could > never have caught your case. Which is a good argument for guarding the > allocation in the callee, as you do: dc_create_plane_state() is reached > from every DCN and both DML generations. I did try a different approach, using DC_RUN_WITH_PREEMPTION_ENABLED further upward in the calltrace (This would have the slight benefit of more code running with preemption enabled). This does not work because dml21_utils.c is compiled as a _LINUX_FPU_COMPILATION_UNIT, so DC_RUN_WITH_PREEMPTION_ENABLED does nothing. (see drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.h) diff --git a/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_utils.c b/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_utils.c index 835fece1d46a..8c92deded8cd 100644 --- a/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_utils.c +++ b/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_utils.c @@ -286,7 +286,8 @@ static struct dc_plane_state *dml21_add_phantom_plane(struct dml2_context *dml_c (void)plane_programming; struct dc_plane_state *phantom_plane; - phantom_plane = dml_ctx->config.svp_pstate.callbacks.create_phantom_plane(dc, context, main_plane); + DC_RUN_WITH_PREEMPTION_ENABLED(phantom_plane + = dml_ctx->config.svp_pstate.callbacks.create_phantom_plane(dc, context, main_plane)); if (!phantom_plane) return NULL; diff --git a/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_mall_phantom.c b/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_mall_phantom.c index 4543a60a0683..464bab9fc13b 100644 --- a/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_mall_phantom.c +++ b/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_mall_phantom.c @@ -769,10 +769,11 @@ static void enable_phantom_plane(struct dml2_context *ctx, if (curr_pipe->top_pipe && curr_pipe->top_pipe->plane_state == curr_pipe->plane_state) { phantom_plane = prev_phantom_plane; } else { - phantom_plane = ctx->config.svp_pstate.callbacks.create_phantom_plane( + DC_RUN_WITH_PREEMPTION_ENABLED(phantom_plane = + ctx->config.svp_pstate.callbacks.create_phantom_plane( ctx->config.svp_pstate.callbacks.dc, state, - curr_pipe->plane_state); + curr_pipe->plane_state)); if (!phantom_plane) return; } Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-07-29 12:35 ` Bert Karwatzki @ 2026-07-29 14:39 ` Mikhail Gavrilov 2026-07-29 17:46 ` Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Mikhail Gavrilov @ 2026-07-29 14:39 UTC (permalink / raw) To: Bert Karwatzki Cc: linux-kernel, linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner On Wed, Jul 29, 2026 at 5:36 PM Bert Karwatzki <spasswolf@web.de> wrote: > > I did try a different approach, using DC_RUN_WITH_PREEMPTION_ENABLED further > upward in the calltrace (This would have the slight benefit of more code > running with preemption enabled). This does not work because dml21_utils.c is compiled > as a _LINUX_FPU_COMPILATION_UNIT, so DC_RUN_WITH_PREEMPTION_ENABLED does nothing. Confirmed, and the chain is worth spelling out because it is not obvious from the call site: Makefile:1127: CC_FLAGS_FPU += -D_LINUX_FPU_COMPILATION_UNIT dc/dml2_0/Makefile: applies $(CC_FLAGS_FPU) to every object under dc/dml2_0/ ("Add FPU flags to all dml2 files by default") so both files you tried are built with -D_LINUX_FPU_COMPILATION_UNIT, and in that branch of dc_fpu.h the macro is: #define DC_RUN_WITH_PREEMPTION_ENABLED(code) code What I think is the real problem here: in the same branch DC_FP_START() and DC_FP_END() are defined as BUILD_BUG(), so misusing those inside an FPU compilation unit fails the build. DC_RUN_WITH_PREEMPTION_ENABLED() silently degrades to a plain call instead. It compiles cleanly, looks correct on review, and does nothing - which is exactly the trap you just walked into. Making it BUILD_BUG() as well would turn that into a compile error. I can send that as a separate patch if AMD agrees it is the right direction. This also explains the asymmetry with 183182235f6d: dc/resource/dcn32/ does not get the FPU flags, so the call-site wrap there expands to the real thing, while the equivalent wrap in the dml21 path would have been a no-op. Another reason to guard the allocation in the callee, as your patch does. -- Thanks, Mikhail ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-07-29 14:39 ` Mikhail Gavrilov @ 2026-07-29 17:46 ` Bert Karwatzki 2026-08-01 7:17 ` Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-07-29 17:46 UTC (permalink / raw) To: Mikhail Gavrilov Cc: linux-kernel, linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner, spasswwolf Am Dienstag, dem 28.07.2026 um 05:51 +0500 schrieb mikhail.v.gavrilov@gmail.com: > One thing that may be worth adjusting in the commit message: this is > not only a PREEMPT_RT problem. 183182235f6d was needed on a plain non- > RT x86 kernel. There DC_FP_START() takes fpregs_lock(), which disables > local softirqs, and dc_plane_state is around 335 KiB, so kvzalloc_obj() > falls through to the vmalloc path and hits BUG_ON(in_interrupt()). So > on RT any allocation inside the FPU region is illegal, while on non-RT > it is specifically the large ones - two failure modes, one root cause. I think this was true when commit 183182235f6d ("drm/amd/display: Wrap DCN32 phantom-plane allocation in DC_RUN_WITH_PREEMPTION_ENABLED") was commited, but commit 04aa71da5f35 ("mm/vmalloc: do not trigger BUG() on BH disabled context") changed the BUG_ON() in __get_vm_area_node(): diff --git a/mm/vmalloc.c b/mm/vmalloc.c index c31a8615a832..bb6ae08d18f5 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -3203,7 +3203,7 @@ struct vm_struct *__get_vm_area_node(unsigned long size, struct vm_struct *area; unsigned long requested_size = size; - BUG_ON(in_interrupt()); + BUG_ON(in_nmi() || in_hardirq()); size = ALIGN(size, 1ul << shift); if (unlikely(!size)) return NULL; so on non-PREEMPT_RT kernels DC_RUN_WITH_PREEMPTION_ENABLED is no longer required for DCN32 phantom-plane allocation. Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-07-29 17:46 ` Bert Karwatzki @ 2026-08-01 7:17 ` Bert Karwatzki 2026-08-01 7:35 ` sashiko-bot ` (3 more replies) 0 siblings, 4 replies; 33+ messages in thread From: Bert Karwatzki @ 2026-08-01 7:17 UTC (permalink / raw) To: linux-kernel Cc: Bert Karwatzki, linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Mikhail Gavrilov, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is converted to rt_mutex. dc_create_plane_state() can be called while inside an FPU-guarded region, resuling in "scheduling while atomic" errors on PREEMPT_RT kernels. Fix this by calling kvzalloc_obj() with DC_RUN_WITH_PREEMPTION_ENABLED(). Also fix the error path in dc_create_stream_for_sink(). Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC - Part 1") Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ Signed-off-by: Bert Karwatzki <spasswolf@web.de> --- drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 +- drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c index cdcf140bc1bb..accad9e20e88 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c @@ -229,7 +229,7 @@ struct dc_stream_state *dc_create_stream_for_sink( fail: if (stream) - kfree(stream); + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); return NULL; } diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c index 88e825a6582c..d5c6427796b6 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c @@ -85,8 +85,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state *dc_state, const struct dc_plane ******************************************************************************/ struct dc_plane_state *dc_create_plane_state(const struct dc *dc) { - struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, - GFP_ATOMIC); + struct dc_plane_state *plane_state; + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); if (NULL == plane_state) return NULL; -- 2.53.0 Rebased to next-20260729+. In these version the allocation of update_scratch has been removed from dc_create_stream_for_sink(). Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-01 7:17 ` Bert Karwatzki @ 2026-08-01 7:35 ` sashiko-bot 2026-08-01 10:17 ` Mikhail Gavrilov ` (2 subsequent siblings) 3 siblings, 0 replies; 33+ messages in thread From: sashiko-bot @ 2026-08-01 7:35 UTC (permalink / raw) To: Bert Karwatzki; +Cc: linux-rt-devel, linux-kernel Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: Pre-existing issues: - [High] The patch wraps allocations and error-path frees in DC_RUN_WITH_PREEMPTION_ENABLED() to fix a 'scheduling while atomic' bug on PREEMPT_RT, but misses the normal destruction paths which are called from the exact same FPU-guarded contexts. - [Medium] dc_state_create_phantom_stream() leaks a phantom stream reference if tracking fails. -- --- Patch [1]: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT --- commit 333ce260a6d2d044dc84469ac2172b5e7123c941 Author: Bert Karwatzki <spasswolf@web.de> drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is converted to rt_mutex. dc_create_plane_state() can be called while inside an FPU-guarded region, resuling in "scheduling while atomic" errors on PREEMPT_RT kernels. Fix this by calling kvzalloc_obj() with DC_RUN_WITH_PREEMPTION_ENABLED(). Also fix the error path in dc_create_stream_for_sink(). Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > index cdcf140bc1bbd..accad9e20e88a 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > @@ -229,7 +229,7 @@ struct dc_stream_state *dc_create_stream_for_sink( > > fail: > if (stream) > - kfree(stream); > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); [Severity: High] This isn't a bug introduced by this patch, but does this fix need to cover the normal destruction paths as well? The patch wraps allocations and error-path frees to prevent scheduling while atomic errors on PREEMPT_RT kernels. However, normal destruction paths are also called from the exact same FPU-guarded contexts. For example, when dropping phantom streams inside an FPU-guarded block during DML bandwidth validation: dcn32_internal_validate_bw() dc_state_release_phantom_streams_and_planes() dc_stream_free() kfree(stream); dc_plane_state_free() kvfree(plane_state); Should dc_stream_free() and dc_plane_state_free() also wrap their frees with DC_RUN_WITH_PREEMPTION_ENABLED() to avoid triggering the same panic? [Severity: Medium] This is a pre-existing issue, but does dc_state_create_phantom_stream() in drivers/gpu/drm/amd/display/dc/core/dc_state.c leak a phantom stream reference if tracking fails? If dc_state_track_phantom_stream() fails, for example because the MAX_PHANTOM_PIPES limit is reached, it returns false. This return value is ignored by dc_state_create_phantom_stream(). The stream is added to the main array but not tracked in the phantom array. When the state is destroyed, dc_state_destruct() only drops the reference from the main array, permanently leaking the initial creation reference. > > return NULL; > } [ ... ] -- Sashiko AI review · https://sashiko.dev/#/patchset/20260801071724.12998-1-spasswolf@web.de?part=1 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-01 7:17 ` Bert Karwatzki 2026-08-01 7:35 ` sashiko-bot @ 2026-08-01 10:17 ` Mikhail Gavrilov 2026-08-07 12:58 ` Bert Karwatzki 2026-08-06 3:47 ` kernel test robot 2026-08-06 4:29 ` kernel test robot 3 siblings, 1 reply; 33+ messages in thread From: Mikhail Gavrilov @ 2026-08-01 10:17 UTC (permalink / raw) To: Bert Karwatzki Cc: linux-kernel, linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner On Sat, Aug 1, 2026 at 12:17 PM Bert Karwatzki <spasswolf@web.de> wrote: > > On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is > converted to rt_mutex. dc_create_plane_state() can be called while > inside an FPU-guarded region, resuling in "scheduling while atomic" > errors on PREEMPT_RT kernels. > Fix this by calling kvzalloc_obj() with DC_RUN_WITH_PREEMPTION_ENABLED(). > Also fix the error path in dc_create_stream_for_sink(). > > Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC - Part 1") > Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > > Signed-off-by: Bert Karwatzki <spasswolf@web.de> > --- > drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 +- > drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 4 ++-- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > index cdcf140bc1bb..accad9e20e88 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > @@ -229,7 +229,7 @@ struct dc_stream_state *dc_create_stream_for_sink( > > fail: > if (stream) > - kfree(stream); > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); > > return NULL; > } > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > index 88e825a6582c..d5c6427796b6 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > @@ -85,8 +85,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state *dc_state, const struct dc_plane > ******************************************************************************/ > struct dc_plane_state *dc_create_plane_state(const struct dc *dc) > { > - struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, > - GFP_ATOMIC); > + struct dc_plane_state *plane_state; > + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); This hunk breaks the build when CONFIG_DRM_AMD_DC_FP=n. dc_surface.c gets DC_RUN_WITH_PREEMPTION_ENABLED only indirectly, via dc.h -> dc_types.h -> os_types.h, and there the include is guarded: #if defined(CONFIG_DRM_AMD_DC_FP) #include "amdgpu_dm/dc_fpu.h" #endif With DC_FP=n nothing defines the macro in that file. dc_stream.c is not affected because it includes dc_fpu.h directly. This is not only exotic architectures: DRM_AMD_DC has select DRM_AMD_DC_FP if ARCH_HAS_KERNEL_FPU_SUPPORT && \ !(CC_IS_CLANG && (ARM64 || LOONGARCH || RISCV)) so an arm64 clang build is enough. On amd-staging-drm-next with your patch applied: $ make LLVM=1 ARCH=arm64 allmodconfig $ make LLVM=1 ARCH=arm64 drivers/gpu/drm/amd/amdgpu/ dc_surface.c:89:2: error: call to undeclared function 'DC_RUN_WITH_PREEMPTION_ENABLED'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 89 | DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); A plain x86_64 build (DC_FP=y) is clean, which is presumably why it did not show up for you. Adding #include "dc_fpu.h" to dc_surface.c fixes it, and matches what dc_stream.c already does. Please do not copy the local fallback that sits below that include in dc_stream.c: #if !defined(DC_RUN_WITH_PREEMPTION_ENABLED) #define DC_RUN_WITH_PREEMPTION_ENABLED(code) code #endif It is dead code there - dc_fpu.h defines the macro in every branch - and in a new file it would compile cleanly while quietly doing nothing. One unrelated note: you kept Cc: stable # v7.1, but this version is rebased onto next-20260729, where the update_scratch allocation is gone from dc_create_stream_for_sink(). It does not apply to current mainline either, so older trees will need a separate backport - worth saying so in the commit message. With the include added I can give this a Tested-by on dcn32 (RX 7900 XTX), which exercises the DML1 phantom-plane path rather than the dml21 one you hit. -- Best Regards, Mikhail Gavrilov. ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-01 10:17 ` Mikhail Gavrilov @ 2026-08-07 12:58 ` Bert Karwatzki 2026-08-07 13:31 ` sashiko-bot 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-08-07 12:58 UTC (permalink / raw) To: linux-kernel Cc: Bert Karwatzki, linux-next, linux-rt-devel, amd-gfx, Mikhail Gavrilov, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is converted to rt_mutex. dc_create_plane_state() can be called while inside an FPU-guarded region, resuling in "scheduling while atomic" errors on PREEMPT_RT kernels. Fix this by calling kvzalloc_obj() with DC_RUN_WITH_PREEMPTION_ENABLED(). Also fix the error path in dc_create_stream_for_sink(). Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC - Part 1") Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ Signed-off-by: Bert Karwatzki <spasswolf@web.de> --- drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 +- drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c index cdcf140bc1bb..accad9e20e88 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c @@ -229,7 +229,7 @@ struct dc_stream_state *dc_create_stream_for_sink( fail: if (stream) - kfree(stream); + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); return NULL; } diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c index 88e825a6582c..f4eb021711cb 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c @@ -33,6 +33,7 @@ #include "dpp.h" #include "dc_plane_priv.h" +#include "dc_fpu.h" /******************************************************************************* * Private functions @@ -85,8 +86,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state *dc_state, const struct dc_plane ******************************************************************************/ struct dc_plane_state *dc_create_plane_state(const struct dc *dc) { - struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, - GFP_ATOMIC); + struct dc_plane_state *plane_state; + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); if (NULL == plane_state) return NULL; -- 2.55.0 Added compile fix (by Mikhail Gavrilov) for CONFIG_DRM_AMD_DC_FP=n to the patch for linux-next. Compile tested with arm64/clang on debian sid. Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-07 12:58 ` Bert Karwatzki @ 2026-08-07 13:31 ` sashiko-bot 0 siblings, 0 replies; 33+ messages in thread From: sashiko-bot @ 2026-08-07 13:31 UTC (permalink / raw) To: Bert Karwatzki; +Cc: linux-kernel, linux-rt-devel Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider: New issues: - [Critical] DC_RUN_WITH_PREEMPTION_ENABLED() silently clobbers callee-saved FPU/SIMD registers on architectures like ARM64. - [High] DC_RUN_WITH_PREEMPTION_ENABLED() fails to enable preemption if the FPU recursion depth is greater than 1. Pre-existing issues: - [High] The teardown paths for streams and planes call kfree() and kvfree() inside FPU-guarded regions without dropping preemption. -- --- Patch [1]: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT --- commit ca829d4b6abc0445e9b58703c783e610dbd244a1 Author: Bert Karwatzki <spasswolf@web.de> drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT This commit addresses "scheduling while atomic" warnings on PREEMPT_RT by wrapping memory allocations in DC_RUN_WITH_PREEMPTION_ENABLED() in the plane and stream creation paths. Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c [ ... ] > @@ -208,13 +208,13 @@ struct dc_stream_state *dc_create_stream_for_sink( > if (sink == NULL) > goto fail; > > - stream = kzalloc_obj(struct dc_stream_state, GFP_ATOMIC); > + DC_RUN_WITH_PREEMPTION_ENABLED(stream = kzalloc_obj(struct dc_stream_state, GFP_ATOMIC)); [Severity: Critical] Does DC_RUN_WITH_PREEMPTION_ENABLED() silently clobber callee-saved FPU/SIMD registers on architectures like ARM64? The AMD display math library relies on FPU calculations. On ARM64, the ABI designates certain SIMD registers (e.g., d8-d15 or v8-v15) as callee-saved. When the display math library calls dc_create_stream_for_sink() from within an FPU-guarded region, the C compiler expects these callee-saved registers to be preserved. When DC_RUN_WITH_PREEMPTION_ENABLED() calls DC_FP_END(), it invokes kernel_neon_end(). This enables preemption and clears the TIF_KERNEL_FPSTATE flag, but leaves TIF_FOREIGN_FPSTATE set. If a context switch occurs during the wrapped kzalloc_obj() allocation, fpsimd_thread_switch() checks TIF_FOREIGN_FPSTATE and skips saving the hardware FPU registers, erroneously assuming they do not contain valid task state. The hardware FPU registers are then clobbered by other tasks. When control returns to the math library, its local floating-point variables stored in callee-saved registers will contain garbage. > @@ -229,7 +229,7 @@ struct dc_stream_state *dc_create_stream_for_sink( > > fail: > if (stream) > - kfree(stream); > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); [Severity: High] This is a pre-existing issue, but do the teardown paths for streams and planes still call kfree() and kvfree() inside FPU-guarded regions without dropping preemption? For example, phantom planes and streams are destroyed during bandwidth validation by calling dc_state_release_phantom_streams_and_planes(), such as from dcn32_internal_validate_bw(). This validation executes entirely inside an FPU-guarded region created by DC_FP_START() in dcn32_validate_bandwidth(), which disables preemption. When the last reference is dropped, the teardown paths like dc_stream_free() and dc_plane_state_free() execute synchronously. Since they call kfree() and kvfree() directly without being wrapped in DC_RUN_WITH_PREEMPTION_ENABLED(), these allocations are freed while preemption is disabled, which can trigger the exact PREEMPT_RT bug this patch aims to fix. > return NULL; > } > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c [ ... ] > @@ -85,8 +86,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state *dc_state, const struct dc_plane > ******************************************************************************/ > struct dc_plane_state *dc_create_plane_state(const struct dc *dc) > { > - struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, > - GFP_ATOMIC); > + struct dc_plane_state *plane_state; > + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); [Severity: High] Does DC_RUN_WITH_PREEMPTION_ENABLED() fail to enable preemption if the FPU recursion depth is greater than 1? The FPU protection in the AMD display driver supports nesting via the fpu_recursion_depth counter. DC_FP_END() only invokes kernel_fpu_end() (and thus preempt_enable()) if the recursion depth decrements to exactly 0. If dc_create_plane_state() or dc_create_stream_for_sink() is invoked from a nested FPU-guarded region where the depth is 2 or more, the DC_RUN_WITH_PREEMPTION_ENABLED() macro will merely decrement the depth counter by 1 but leave preemption disabled. The subsequent call to kvzalloc_obj() or kfree() will then execute with preemption still disabled, which will still trigger a scheduling while atomic panic on PREEMPT_RT. > if (NULL == plane_state) > return NULL; > -- Sashiko AI review · https://sashiko.dev/#/patchset/20260807125832.157856-1-spasswolf@web.de?part=1 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-01 7:17 ` Bert Karwatzki 2026-08-01 7:35 ` sashiko-bot 2026-08-01 10:17 ` Mikhail Gavrilov @ 2026-08-06 3:47 ` kernel test robot 2026-08-06 4:29 ` kernel test robot 3 siblings, 0 replies; 33+ messages in thread From: kernel test robot @ 2026-08-06 3:47 UTC (permalink / raw) To: Bert Karwatzki, linux-kernel Cc: llvm, oe-kbuild-all, Bert Karwatzki, linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Mikhail Gavrilov, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner Hi Bert, kernel test robot noticed the following build errors: [auto build test ERROR on next-20260804] [cannot apply to drm-misc/drm-misc-next linus/master v7.2-rc6 v7.2-rc5 v7.2-rc4 v7.2-rc6] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Bert-Karwatzki/drm-amd-display-fix-usage-of-DC_FPU_-BEGIN-END-with-PREEMPT_RT/20260805-170330 base: next-20260804 patch link: https://lore.kernel.org/r/20260801071724.12998-1-spasswolf%40web.de patch subject: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT config: loongarch-defconfig (https://download.01.org/0day-ci/archive/20260806/202608061154.QtrglsMo-lkp@intel.com/config) compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project bacfe2950f8218268fcc0a8765644ea0c15f0360) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260806/202608061154.QtrglsMo-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202608061154.QtrglsMo-lkp@intel.com/ All errors (new ones prefixed by >>): >> drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_surface.c:89:2: error: call to undeclared function 'DC_RUN_WITH_PREEMPTION_ENABLED'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 89 | DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); | ^ 1 error generated. vim +/DC_RUN_WITH_PREEMPTION_ENABLED +89 drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_surface.c 82 83 /******************************************************************************* 84 * Public functions 85 ******************************************************************************/ 86 struct dc_plane_state *dc_create_plane_state(const struct dc *dc) 87 { 88 struct dc_plane_state *plane_state; > 89 DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); 90 91 if (NULL == plane_state) 92 return NULL; 93 94 kref_init(&plane_state->refcount); 95 dc_plane_construct(dc->ctx, plane_state); 96 97 return plane_state; 98 } 99 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-01 7:17 ` Bert Karwatzki ` (2 preceding siblings ...) 2026-08-06 3:47 ` kernel test robot @ 2026-08-06 4:29 ` kernel test robot 2026-08-07 12:49 ` [PATCH v7.2-rc6] " Bert Karwatzki 3 siblings, 1 reply; 33+ messages in thread From: kernel test robot @ 2026-08-06 4:29 UTC (permalink / raw) To: Bert Karwatzki, linux-kernel Cc: oe-kbuild-all, Bert Karwatzki, linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Mikhail Gavrilov, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner Hi Bert, kernel test robot noticed the following build errors: [auto build test ERROR on next-20260804] [cannot apply to drm-misc/drm-misc-next linus/master v7.2-rc6 v7.2-rc5 v7.2-rc4 v7.2-rc6] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Bert-Karwatzki/drm-amd-display-fix-usage-of-DC_FPU_-BEGIN-END-with-PREEMPT_RT/20260805-170330 base: next-20260804 patch link: https://lore.kernel.org/r/20260801071724.12998-1-spasswolf%40web.de patch subject: [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20260806/202608061233.eufnR5Qm-lkp@intel.com/config) compiler: alpha-linux-gcc (GCC) 16.1.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260806/202608061233.eufnR5Qm-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202608061233.eufnR5Qm-lkp@intel.com/ All errors (new ones prefixed by >>): drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_surface.c: In function 'dc_create_plane_state': >> drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_surface.c:89:9: error: implicit declaration of function 'DC_RUN_WITH_PREEMPTION_ENABLED' [-Wimplicit-function-declaration] 89 | DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +/DC_RUN_WITH_PREEMPTION_ENABLED +89 drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_surface.c 82 83 /******************************************************************************* 84 * Public functions 85 ******************************************************************************/ 86 struct dc_plane_state *dc_create_plane_state(const struct dc *dc) 87 { 88 struct dc_plane_state *plane_state; > 89 DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); 90 91 if (NULL == plane_state) 92 return NULL; 93 94 kref_init(&plane_state->refcount); 95 dc_plane_construct(dc->ctx, plane_state); 96 97 return plane_state; 98 } 99 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v7.2-rc6] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-06 4:29 ` kernel test robot @ 2026-08-07 12:49 ` Bert Karwatzki 2026-08-07 13:13 ` sashiko-bot ` (2 more replies) 0 siblings, 3 replies; 33+ messages in thread From: Bert Karwatzki @ 2026-08-07 12:49 UTC (permalink / raw) To: linux-kernel Cc: Bert Karwatzki, linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Mikhail Gavrilov, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is converted to rt_mutex. dc_create_plane_state() can be called while inside an FPU-guarded region, resuling in "scheduling while atomic" errors on PREEMPT_RT kernels. Fix this by calling kvzalloc_obj() with DC_RUN_WITH_PREEMPTION_ENABLED(). Also fix the error path in dc_create_stream_for_sink(). Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC - Part 1") Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ Signed-off-by: Bert Karwatzki <spasswolf@web.de> --- drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 5 +++-- drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c index 7666cdc78f4e..a5a304a3f802 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c @@ -233,8 +233,9 @@ struct dc_stream_state *dc_create_stream_for_sink( fail: if (stream) { - kfree(stream->update_scratch); - kfree(stream); + if (stream->update_scratch) + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream->update_scratch)); + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); } return NULL; diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c index 72845fc788f3..04982673ffbc 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c @@ -33,6 +33,7 @@ #include "dpp.h" #include "dc_plane_priv.h" +#include "dc_fpu.h" /******************************************************************************* * Private functions @@ -86,8 +87,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state *dc_state, const struct dc_plane ******************************************************************************/ struct dc_plane_state *dc_create_plane_state(const struct dc *dc) { - struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, - GFP_ATOMIC); + struct dc_plane_state *plane_state; + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); if (NULL == plane_state) return NULL; -- 2.55.0 Fix for stable with the old error handling in dc_create_stream_for_sink() and compile fix form arm64/clang. Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v7.2-rc6] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-07 12:49 ` [PATCH v7.2-rc6] " Bert Karwatzki @ 2026-08-07 13:13 ` sashiko-bot 2026-08-07 14:00 ` Greg KH 2026-08-27 12:49 ` Sebastian Andrzej Siewior 2 siblings, 0 replies; 33+ messages in thread From: sashiko-bot @ 2026-08-07 13:13 UTC (permalink / raw) To: Bert Karwatzki; +Cc: linux-rt-devel, linux-kernel Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider: Pre-existing issues: - [High] Incomplete Fix: Normal deallocation paths (dc_stream_free and dc_plane_state_free) still sleep in atomic context. - [High] DC_RUN_WITH_PREEMPTION_ENABLED fails to re-enable preemption if FPU blocks are nested. - [High] DC_RUN_WITH_PREEMPTION_ENABLED corrupts callee-saved FPU registers on ARM64. -- --- Patch [1]: [PATCH v7.2-rc6] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT --- commit e67f6942f0899807d82dcd2276705097e892a34b Author: Bert Karwatzki <spasswolf@web.de> drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT This commit wraps deallocations in dc_create_stream_for_sink and dc_create_plane_state with DC_RUN_WITH_PREEMPTION_ENABLED. This prevents "scheduling while atomic" panics on PREEMPT_RT kernels when sleeping allocations are called from within FPU-guarded regions. Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > index 7666cdc78f4ed..a5a304a3f8029 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c [ ... ] > @@ -233,8 +233,9 @@ struct dc_stream_state *dc_create_stream_for_sink( > > fail: > if (stream) { > - kfree(stream->update_scratch); > - kfree(stream); > + if (stream->update_scratch) > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream->update_scratch)); > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); [Severity: High] This isn't a bug introduced by this patch, but will the normal deallocation paths still sleep in atomic context? When dc_state_release_phantom_streams_and_planes() is called from dcn32_internal_validate_bw(), it executes under DC_FP_START where preemption is disabled. That validation path drops references to phantom streams and planes, which synchronously invokes dc_stream_free() and dc_plane_state_free(). Those destructors unconditionally call kfree() and kvfree(). On PREEMPT_RT, slab allocators use sleepable rt_mutexes, which will still cause a kernel panic from scheduling while atomic. Is it possible to apply this fix to those deallocation paths as well? > } > > return NULL; > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > index 72845fc788f3f..04982673ffbc9 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c [ ... ] > @@ -86,8 +87,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state *dc_state, const struct dc_plane > ******************************************************************************/ > struct dc_plane_state *dc_create_plane_state(const struct dc *dc) > { > - struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, > - GFP_ATOMIC); > + struct dc_plane_state *plane_state; > + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); [Severity: High] This isn't a bug introduced by this patch, but does DC_RUN_WITH_PREEMPTION_ENABLED() fail to re-enable preemption if FPU blocks are nested? In dc_fpu_begin(), preempt_disable() is called unconditionally on every entry, meaning preempt_count increases with each nesting level. However, DC_RUN_WITH_PREEMPTION_ENABLED() calls DC_FP_END() exactly once, which only decrements the recursion depth and calls preempt_enable() once. If the FPU recursion depth is 2 or more, preemption remains disabled and the wrapped kvzalloc_obj() will still crash on PREEMPT_RT. [Severity: High] This is a pre-existing issue, but can DC_RUN_WITH_PREEMPTION_ENABLED() corrupt callee-saved FPU registers on ARM64 when used here? A caller compiled with FPU support, such as dml2_mall_phantom_streams_and_planes_create(), has live variables in callee-saved FPU registers (v8-v15 on ARM64). It calls dc_state_create_phantom_plane() which routes to dc_create_plane_state(). Since dc_create_plane_state() is compiled without FPU support, it doesn't save v8-v15 to the stack. When DC_RUN_WITH_PREEMPTION_ENABLED() calls DC_FP_END(), it invokes kernel_neon_end() and enables preemption. If a context switch occurs while preemption is enabled, the OS scheduler will not save the thread's FPU state since the kernel has yielded it. The v8-v15 registers are permanently clobbered, and execution returns to the caller with garbage FPU values. > > if (NULL == plane_state) > return NULL; -- Sashiko AI review · https://sashiko.dev/#/patchset/20260807124944.154232-1-spasswolf@web.de?part=1 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v7.2-rc6] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-07 12:49 ` [PATCH v7.2-rc6] " Bert Karwatzki 2026-08-07 13:13 ` sashiko-bot @ 2026-08-07 14:00 ` Greg KH 2026-08-27 12:49 ` Sebastian Andrzej Siewior 2 siblings, 0 replies; 33+ messages in thread From: Greg KH @ 2026-08-07 14:00 UTC (permalink / raw) To: Bert Karwatzki Cc: linux-kernel, linux-next, linux-rt-devel, amd-gfx, # = v7 . 1, Mikhail Gavrilov, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner On Fri, Aug 07, 2026 at 02:49:42PM +0200, Bert Karwatzki wrote: > On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is > converted to rt_mutex. dc_create_plane_state() can be called while > inside an FPU-guarded region, resuling in "scheduling while atomic" > errors on PREEMPT_RT kernels. > Fix this by calling kvzalloc_obj() with DC_RUN_WITH_PREEMPTION_ENABLED(). > Also fix the error path in dc_create_stream_for_sink(). > > Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC - Part 1") > Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > Signed-off-by: Bert Karwatzki <spasswolf@web.de> > --- > drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 5 +++-- > drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 5 +++-- > 2 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > index 7666cdc78f4e..a5a304a3f802 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c > @@ -233,8 +233,9 @@ struct dc_stream_state *dc_create_stream_for_sink( > > fail: > if (stream) { > - kfree(stream->update_scratch); > - kfree(stream); > + if (stream->update_scratch) > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream->update_scratch)); > + DC_RUN_WITH_PREEMPTION_ENABLED(kfree(stream)); > } > > return NULL; > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > index 72845fc788f3..04982673ffbc 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c > @@ -33,6 +33,7 @@ > #include "dpp.h" > > #include "dc_plane_priv.h" > +#include "dc_fpu.h" > > /******************************************************************************* > * Private functions > @@ -86,8 +87,8 @@ uint8_t dc_plane_get_pipe_mask(struct dc_state *dc_state, const struct dc_plane > ******************************************************************************/ > struct dc_plane_state *dc_create_plane_state(const struct dc *dc) > { > - struct dc_plane_state *plane_state = kvzalloc_obj(*plane_state, > - GFP_ATOMIC); > + struct dc_plane_state *plane_state; > + DC_RUN_WITH_PREEMPTION_ENABLED(plane_state = kvzalloc_obj(*plane_state, GFP_ATOMIC)); > > if (NULL == plane_state) > return NULL; > -- > 2.55.0 > > Fix for stable with the old error handling in > dc_create_stream_for_sink() and compile fix form arm64/clang. > > Bert Karwatzki > <formletter> This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read: https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html for how to do this properly. </formletter> ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v7.2-rc6] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-07 12:49 ` [PATCH v7.2-rc6] " Bert Karwatzki 2026-08-07 13:13 ` sashiko-bot 2026-08-07 14:00 ` Greg KH @ 2026-08-27 12:49 ` Sebastian Andrzej Siewior 2026-08-27 21:07 ` Bert Karwatzki 2 siblings, 1 reply; 33+ messages in thread From: Sebastian Andrzej Siewior @ 2026-08-27 12:49 UTC (permalink / raw) To: Bert Karwatzki Cc: linux-kernel, linux-next, linux-rt-devel, amd-gfx, Mikhail Gavrilov, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Thomas Gleixner On 2026-08-07 14:49:42 [+0200], Bert Karwatzki wrote: > On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is > converted to rt_mutex. dc_create_plane_state() can be called while > inside an FPU-guarded region, resuling in "scheduling while atomic" > errors on PREEMPT_RT kernels. > Fix this by calling kvzalloc_obj() with DC_RUN_WITH_PREEMPTION_ENABLED(). > Also fix the error path in dc_create_stream_for_sink(). > > Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC - Part 1") > Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > Signed-off-by: Bert Karwatzki <spasswolf@web.de> Thank you Bert. Got this somewhere in the meantime? Could the FPU regions with disabled preemption be limited to where we have actually have FPU usage in way that you don't have to worry when it is needed to use DC_RUN_WITH_PREEMPTION_ENABLED() and when not? Also the dc_fpu_begin()/ end() can nest and if they do the usage of DC_RUN_WITH_PREEMPTION_ENABLED() is futile, isn't it? The first usage kernel_fpu_begin() saves the FPU state to the user task. kernel_fpu_end() does not restore it. Therefore the subsequent invocation of kernel_fpu_begin() is cheaper. Sebastian ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v7.2-rc6] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-27 12:49 ` Sebastian Andrzej Siewior @ 2026-08-27 21:07 ` Bert Karwatzki 2026-08-28 9:55 ` Sebastian Andrzej Siewior 0 siblings, 1 reply; 33+ messages in thread From: Bert Karwatzki @ 2026-08-27 21:07 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: linux-kernel, linux-next, linux-rt-devel, amd-gfx, Mikhail Gavrilov, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Thomas Gleixner, spasswolf Am Donnerstag, dem 27.08.2026 um 14:49 +0200 schrieb Sebastian Andrzej Siewior: > On 2026-08-07 14:49:42 [+0200], Bert Karwatzki wrote: > > On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is > > converted to rt_mutex. dc_create_plane_state() can be called while > > inside an FPU-guarded region, resuling in "scheduling while atomic" > > errors on PREEMPT_RT kernels. > > Fix this by calling kvzalloc_obj() with DC_RUN_WITH_PREEMPTION_ENABLED(). > > Also fix the error path in dc_create_stream_for_sink(). > > > > Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC - Part 1") > > Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > > Signed-off-by: Bert Karwatzki <spasswolf@web.de> > > Thank you Bert. Got this somewhere in the meantime? No, this is seems to be stuck somewhere ... > > Could the FPU regions with disabled preemption be limited to where we > have actually have FPU usage in way that you don't have to worry when it > is needed to use DC_RUN_WITH_PREEMPTION_ENABLED() and when not? Also the > dc_fpu_begin()/ end() can nest and if they do the usage of > DC_RUN_WITH_PREEMPTION_ENABLED() is futile, isn't it? > I'm not very familiar with the amd display engine, and it's a lot of code, but there I think there's some room for improvement, e.g. dml2_destroy(): dml2_destroy is called from dc_state_free() from within DC_FP_{START,END}() and then basically just calls vfree with DC_RUN_WITH_PREEMPTION_ENABLED(). (directly or through dml21_destroy()). Here both the DC_FP_*() tags and DC_RUN_WITH_PREEMPTION_ENABLED() could be dropped I think (not tested, yet) Regarding nesting DC_FP_*()s: When I was searching for the cause of the kernel panics I monitored every DC_FP_{START,END}() with printk(), and I don't think I encountered nesting (the logs are lost unfortunately) > The first usage kernel_fpu_begin() saves the FPU state to the user task. > kernel_fpu_end() does not restore it. Therefore the subsequent > invocation of kernel_fpu_begin() is cheaper. > > Sebastian Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v7.2-rc6] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-27 21:07 ` Bert Karwatzki @ 2026-08-28 9:55 ` Sebastian Andrzej Siewior 2026-09-01 14:01 ` Bert Karwatzki 0 siblings, 1 reply; 33+ messages in thread From: Sebastian Andrzej Siewior @ 2026-08-28 9:55 UTC (permalink / raw) To: Bert Karwatzki Cc: linux-kernel, linux-next, linux-rt-devel, amd-gfx, Mikhail Gavrilov, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Thomas Gleixner On 2026-08-27 23:07:08 [+0200], Bert Karwatzki wrote: > Am Donnerstag, dem 27.08.2026 um 14:49 +0200 schrieb Sebastian Andrzej Siewior: > > On 2026-08-07 14:49:42 [+0200], Bert Karwatzki wrote: > > > On PREEMPT_RT kernels kvzalloc_obj() can sleep because spin_lock is > > > converted to rt_mutex. dc_create_plane_state() can be called while > > > inside an FPU-guarded region, resuling in "scheduling while atomic" > > > errors on PREEMPT_RT kernels. > > > Fix this by calling kvzalloc_obj() with DC_RUN_WITH_PREEMPTION_ENABLED(). > > > Also fix the error path in dc_create_stream_for_sink(). > > > > > > Fixes: 3539437f354b ("drm/amd/display: Move FPU Guards From DML To DC - Part 1") > > > Link: https://lore.kernel.org/lkml/20260723123449.6494-1-spasswolf@web.de/ > > > Signed-off-by: Bert Karwatzki <spasswolf@web.de> > > > > Thank you Bert. Got this somewhere in the meantime? > > No, this is seems to be stuck somewhere ... halp! > > > > Could the FPU regions with disabled preemption be limited to where we > > have actually have FPU usage in way that you don't have to worry when it > > is needed to use DC_RUN_WITH_PREEMPTION_ENABLED() and when not? Also the > > dc_fpu_begin()/ end() can nest and if they do the usage of > > DC_RUN_WITH_PREEMPTION_ENABLED() is futile, isn't it? > > > > I'm not very familiar with the amd display engine, and it's a lot of code, > but there I think there's some room for improvement, e.g. dml2_destroy(): > > dml2_destroy is called from dc_state_free() from within DC_FP_{START,END}() > and then basically just calls vfree with DC_RUN_WITH_PREEMPTION_ENABLED(). > (directly or through dml21_destroy()). Here both the DC_FP_*() tags and > DC_RUN_WITH_PREEMPTION_ENABLED() could be dropped I think (not tested, yet) > > Regarding nesting DC_FP_*()s: When I was searching for the cause of the > kernel panics I monitored every DC_FP_{START,END}() with printk(), and I > don't think I encountered nesting (the logs are lost unfortunately) I am not saying it is nesting, just the START/STOP API is able to deal this. Otherwise kernel_fpu_being/end() could be used directly. And DC_RUN_WITH_PREEMPTION_ENABLED() is not able to deal with nesting. On PREEMPT_RT it could be bad for the max observed latency if this nests or has otherwise an unbound runtime. For crypto there an maximum amount of input data which can be processed within a single FPU disabled section. The "cheaper" second kernel_fpu_begin() makes it possible. > > The first usage kernel_fpu_begin() saves the FPU state to the user task. > > kernel_fpu_end() does not restore it. Therefore the subsequent > > invocation of kernel_fpu_begin() is cheaper. > > > > Sebastian > > Bert Karwatzki Sebastian ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v7.2-rc6] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} with PREEMPT_RT 2026-08-28 9:55 ` Sebastian Andrzej Siewior @ 2026-09-01 14:01 ` Bert Karwatzki 0 siblings, 0 replies; 33+ messages in thread From: Bert Karwatzki @ 2026-09-01 14:01 UTC (permalink / raw) To: Sebastian Andrzej Siewior Cc: linux-kernel, linux-next, linux-rt-devel, amd-gfx, Mikhail Gavrilov, Alex Deucher, Rafal Ostrowski, Mario Limonciello, Thomas Gleixner, spasswolf > > > > > > > Could the FPU regions with disabled preemption be limited to where we > > > have actually have FPU usage in way that you don't have to worry when it > > > is needed to use DC_RUN_WITH_PREEMPTION_ENABLED() and when not? Also the > > > dc_fpu_begin()/ end() can nest and if they do the usage of > > > DC_RUN_WITH_PREEMPTION_ENABLED() is futile, isn't it? > > > > > > > I'm not very familiar with the amd display engine, and it's a lot of code, > > but there I think there's some room for improvement, e.g. dml2_destroy(): > > > > dml2_destroy is called from dc_state_free() from within DC_FP_{START,END}() > > and then basically just calls vfree with DC_RUN_WITH_PREEMPTION_ENABLED(). > > (directly or through dml21_destroy()). Here both the DC_FP_*() tags and > > DC_RUN_WITH_PREEMPTION_ENABLED() could be dropped I think (not tested, yet) > > Now, I've tested dropping some DC_FP_START,END() and DC_RUN_WITH_PREEMPTION_ENABLED(). (Patch for next-20260828+ with the fix above applied) This works without error so far. The function dml2_create() and dml2_create_copy() are moved to a non-FPU file so they do not accidently use FPU instruction (they do not use FPU instruction on x86_64 when compiled with gcc-16 but other architectures and compilers could probably use them). diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_state.c b/drivers/gpu/drm/amd/display/dc/core/dc_state.c index 666212cac105..709c37d2072f 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_state.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_state.c @@ -209,9 +209,7 @@ struct dc_state *dc_state_create(struct dc *dc, struct dc_state_create_params *p bool status; if (dc->debug.using_dml2) { - DC_FP_START(); status = dml2_create(dc, &dc->dml2_options, &state->bw_ctx.dml2); - DC_FP_END(); if (!status) { dc_state_release(state); @@ -221,9 +219,7 @@ struct dc_state *dc_state_create(struct dc *dc, struct dc_state_create_params *p if (dc->caps.dcmode_power_limits_present) { bool dc_power_status; - DC_FP_START(); dc_power_status = dml2_create(dc, &dc->dml2_dc_power_options, &state->bw_ctx.dml2_dc_power_source); - DC_FP_END(); if (!dc_power_status) { dc_state_release(state); @@ -251,17 +247,13 @@ void dc_state_copy(struct dc_state *dst_state, struct dc_state *src_state) #ifdef CONFIG_DRM_AMD_DC_FP dst_state->bw_ctx.dml2 = dst_dml2; if (src_state->bw_ctx.dml2) { - DC_FP_START(); dml2_copy(dst_state->bw_ctx.dml2, src_state->bw_ctx.dml2); - DC_FP_END(); } dst_state->bw_ctx.dml2_dc_power_source = dst_dml2_dc_power_source; if (src_state->bw_ctx.dml2_dc_power_source) { - DC_FP_START(); dml2_copy(dst_state->bw_ctx.dml2_dc_power_source, src_state->bw_ctx.dml2_dc_power_source); - DC_FP_END(); } #endif // CONFIG_DRM_AMD_DC_FP /* context refcount should not be overridden */ @@ -285,9 +277,7 @@ struct dc_state *dc_state_create_copy(struct dc_state *src_state) new_state->bw_ctx.dml2_dc_power_source = NULL; if (src_state->bw_ctx.dml2) { - DC_FP_START(); status = dml2_create_copy(&new_state->bw_ctx.dml2, src_state->bw_ctx.dml2); - DC_FP_END(); if (!status) { dc_state_release(new_state); @@ -297,10 +287,8 @@ struct dc_state *dc_state_create_copy(struct dc_state *src_state) if (src_state->bw_ctx.dml2_dc_power_source) { - DC_FP_START(); status = dml2_create_copy(&new_state->bw_ctx.dml2_dc_power_source, src_state->bw_ctx.dml2_dc_power_source); - DC_FP_END(); if (!status) { dc_state_release(new_state); @@ -389,13 +377,11 @@ static void dc_state_free(struct kref *kref) dc_state_destruct(state); #ifdef CONFIG_DRM_AMD_DC_FP - DC_FP_START(); dml2_destroy(state->bw_ctx.dml2); state->bw_ctx.dml2 = 0; dml2_destroy(state->bw_ctx.dml2_dc_power_source); state->bw_ctx.dml2_dc_power_source = 0; - DC_FP_END(); #endif kvfree(state); diff --git a/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_wrapper.c b/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_wrapper.c index 8bed59e976d1..29e5cce51b99 100644 --- a/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_wrapper.c +++ b/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_wrapper.c @@ -23,11 +23,11 @@ static bool dml21_allocate_memory(struct dml2_context **dml_ctx) { - DC_RUN_WITH_PREEMPTION_ENABLED(*dml_ctx = vzalloc(sizeof(struct dml2_context))); + *dml_ctx = vzalloc(sizeof(struct dml2_context)); if (!(*dml_ctx)) return false; - DC_RUN_WITH_PREEMPTION_ENABLED((*dml_ctx)->v21.dml_init.dml2_instance = vzalloc(sizeof(struct dml2_instance))); + (*dml_ctx)->v21.dml_init.dml2_instance = vzalloc(sizeof(struct dml2_instance)); if (!((*dml_ctx)->v21.dml_init.dml2_instance)) return false; @@ -37,7 +37,7 @@ static bool dml21_allocate_memory(struct dml2_context **dml_ctx) (*dml_ctx)->v21.mode_support.display_config = &(*dml_ctx)->v21.display_config; (*dml_ctx)->v21.mode_programming.display_config = (*dml_ctx)->v21.mode_support.display_config; - DC_RUN_WITH_PREEMPTION_ENABLED((*dml_ctx)->v21.mode_programming.programming = vzalloc(sizeof(struct dml2_display_cfg_programming))); + (*dml_ctx)->v21.mode_programming.programming = vzalloc(sizeof(struct dml2_display_cfg_programming)); if (!((*dml_ctx)->v21.mode_programming.programming)) return false; @@ -51,15 +51,17 @@ bool dml21_create(const struct dc *in_dc, struct dml2_context **dml_ctx, const s if (!dml21_allocate_memory(dml_ctx)) return false; + DC_FP_START(); dml21_init(in_dc, *dml_ctx, config); + DC_FP_END(); return true; } void dml21_destroy(struct dml2_context *dml2) { - DC_RUN_WITH_PREEMPTION_ENABLED(vfree(dml2->v21.dml_init.dml2_instance)); - DC_RUN_WITH_PREEMPTION_ENABLED(vfree(dml2->v21.mode_programming.programming)); + vfree(dml2->v21.dml_init.dml2_instance); + vfree(dml2->v21.mode_programming.programming); } void dml21_copy(struct dml2_context *dst_dml_ctx, @@ -88,7 +90,9 @@ void dml21_copy(struct dml2_context *dst_dml_ctx, dst_dml_ctx->v21.mode_programming.programming = dst_dml2_programming; /* need to initialize copied instance for internal references to be correct */ + DC_FP_START(); dml2_initialize_instance(&dst_dml_ctx->v21.dml_init); + DC_FP_END(); } bool dml21_create_copy(struct dml2_context **dst_dml_ctx, diff --git a/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper.c b/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper.c index 1772e74349c7..570da14fb1a7 100644 --- a/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper.c +++ b/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper.c @@ -21,7 +21,7 @@ struct dml2_context *dml2_allocate_memory(void) { struct dml2_context *dml2; - DC_RUN_WITH_PREEMPTION_ENABLED(dml2 = vzalloc(sizeof(struct dml2_context))); + dml2 = vzalloc(sizeof(struct dml2_context)); return dml2; } bool dml2_validate(const struct dc *in_dc, struct dc_state *context, struct dml2_context *dml2, @@ -51,7 +51,9 @@ bool dml2_validate(const struct dc *in_dc, struct dc_state *context, struct dml2 static void dml2_init(const struct dc *in_dc, const struct dml2_configuration_options *config, struct dml2_context **dml2) { if ((in_dc->debug.using_dml21) && (in_dc->ctx->dce_version >= DCN_VERSION_4_01)) { + DC_FP_START(); dml21_reinit(in_dc, *dml2, config); + DC_FP_END(); return; } @@ -82,11 +84,13 @@ static void dml2_init(const struct dc *in_dc, const struct dml2_configuration_op break; } + DC_FP_START(); initialize_dml2_ip_params(*dml2, in_dc, &(*dml2)->v20.dml_core_ctx.ip); initialize_dml2_soc_bbox(*dml2, in_dc, &(*dml2)->v20.dml_core_ctx.soc); initialize_dml2_soc_states(*dml2, in_dc, &(*dml2)->v20.dml_core_ctx.soc, &(*dml2)->v20.dml_core_ctx.states); + DC_FP_END(); } @@ -116,17 +120,52 @@ void dml2_destroy(struct dml2_context *dml2) if (dml2->architecture == dml2_architecture_21) dml21_destroy(dml2); - DC_RUN_WITH_PREEMPTION_ENABLED(vfree(dml2)); + vfree(dml2); } void dml2_reinit(const struct dc *in_dc, const struct dml2_configuration_options *config, struct dml2_context **dml2) { + /* if ((in_dc->debug.using_dml21) && (in_dc->ctx->dce_version >= DCN_VERSION_4_01)) { + DC_FP_START(); dml21_reinit(in_dc, *dml2, config); + DC_FP_END(); return; } + */ dml2_init(in_dc, config, dml2); } + +/* Moved here from dml2_wrapper_fpu.c */ +void dml2_copy(struct dml2_context *dst_dml2, + struct dml2_context *src_dml2) +{ + if (src_dml2->architecture == dml2_architecture_21) { + dml21_copy(dst_dml2, src_dml2); + return; + } + /* copy Mode Lib Ctx */ + memcpy(dst_dml2, src_dml2, sizeof(struct dml2_context)); +} + +/* Moved here from dml2_wrapper_fpu.c */ +bool dml2_create_copy(struct dml2_context **dst_dml2, + struct dml2_context *src_dml2) +{ + if (src_dml2->architecture == dml2_architecture_21) + return dml21_create_copy(dst_dml2, src_dml2); + /* Allocate Mode Lib Ctx */ + *dst_dml2 = dml2_allocate_memory(); + + if (!(*dst_dml2)) + return false; + + /* copy Mode Lib Ctx */ + dml2_copy(*dst_dml2, src_dml2); + + return true; +} + diff --git a/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper_fpu.c b/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper_fpu.c index a14e3004a7b7..b590d58ad3a9 100644 --- a/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper_fpu.c +++ b/drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper_fpu.c @@ -561,31 +561,3 @@ void dml2_prepare_mcache_programming(struct dc *in_dc, struct dc_state *context, dml21_prepare_mcache_programming(in_dc, context, dml2); } -void dml2_copy(struct dml2_context *dst_dml2, - struct dml2_context *src_dml2) -{ - if (src_dml2->architecture == dml2_architecture_21) { - dml21_copy(dst_dml2, src_dml2); - return; - } - /* copy Mode Lib Ctx */ - memcpy(dst_dml2, src_dml2, sizeof(struct dml2_context)); -} - -bool dml2_create_copy(struct dml2_context **dst_dml2, - struct dml2_context *src_dml2) -{ - if (src_dml2->architecture == dml2_architecture_21) - return dml21_create_copy(dst_dml2, src_dml2); - /* Allocate Mode Lib Ctx */ - *dst_dml2 = dml2_allocate_memory(); - - if (!(*dst_dml2)) - return false; - - /* copy Mode Lib Ctx */ - dml2_copy(*dst_dml2, src_dml2); - - return true; -} - Bert Karwatzki ^ permalink raw reply [flat|nested] 33+ messages in thread
end of thread, other threads:[~2026-09-01 14:01 UTC | newest]
Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-23 12:34 kernel panic during shutdown in v7.2-rc4 and next-20260722 with PREEMPT_RT Bert Karwatzki
2026-07-23 12:43 ` [Re] " Bert Karwatzki
2026-07-23 13:10 ` [Re] kernel panic during shutdown in v7.2-rc{3,4} " Bert Karwatzki
2026-07-23 13:23 ` Bert Karwatzki
2026-07-23 16:17 ` Bert Karwatzki
2026-07-23 22:51 ` [Re] kernel panic during shutdown in next-20260722 Bert Karwatzki
2026-07-24 15:08 ` Bert Karwatzki
2026-07-25 19:58 ` Bert Karwatzki
2026-07-25 23:16 ` Bert Karwatzki
2026-07-26 18:47 ` Bert Karwatzki
2026-07-26 22:52 ` Bert Karwatzki
2026-07-27 10:06 ` [Re] kernel panic during shutdown in v7.1+ with PREEMPT_RT Bert Karwatzki
2026-07-27 10:35 ` Ostrowski, Rafal
2026-07-27 10:50 ` [PATCH] drm/amd/display: fix usage of DC_FPU_{BEGIN,END} " Bert Karwatzki
2026-07-27 11:11 ` sashiko-bot
2026-07-28 0:51 ` mikhail.v.gavrilov
2026-07-29 12:35 ` Bert Karwatzki
2026-07-29 14:39 ` Mikhail Gavrilov
2026-07-29 17:46 ` Bert Karwatzki
2026-08-01 7:17 ` Bert Karwatzki
2026-08-01 7:35 ` sashiko-bot
2026-08-01 10:17 ` Mikhail Gavrilov
2026-08-07 12:58 ` Bert Karwatzki
2026-08-07 13:31 ` sashiko-bot
2026-08-06 3:47 ` kernel test robot
2026-08-06 4:29 ` kernel test robot
2026-08-07 12:49 ` [PATCH v7.2-rc6] " Bert Karwatzki
2026-08-07 13:13 ` sashiko-bot
2026-08-07 14:00 ` Greg KH
2026-08-27 12:49 ` Sebastian Andrzej Siewior
2026-08-27 21:07 ` Bert Karwatzki
2026-08-28 9:55 ` Sebastian Andrzej Siewior
2026-09-01 14:01 ` Bert Karwatzki
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®