* [REGRESSION] Divide-by-zero on DisplayPort MST unplug with nouveau
@ 2024-03-07 17:58 Chris Bainbridge
2024-03-07 18:14 ` Chris Bainbridge
2024-03-11 15:53 ` Linux regression tracking (Thorsten Leemhuis)
0 siblings, 2 replies; 6+ messages in thread
From: Chris Bainbridge @ 2024-03-07 17:58 UTC (permalink / raw)
To: regressions
#regzbot introduced: c1d6a22b7219bd52c66e9e038a282ba79f04be1f
----- Forwarded message from Chris Bainbridge <chris.bainbridge@gmail.com> -----
Date: Sat, 10 Feb 2024 21:24:59 +0000
From: Chris Bainbridge <chris.bainbridge@gmail.com>
To: dri-devel@lists.freedesktop.org
Cc: lyude@redhat.com, ville.syrjala@linux.intel.com, stanislav.lisovskiy@intel.com,
mripard@kernel.org, imre.deak@intel.com
Subject: [PATCH] Fix divide-by-zero on DP unplug with nouveau
The following trace occurs when using nouveau and unplugging a DP MST
adaptor:
divide error: 0000 [#1] PREEMPT SMP PTI
CPU: 7 PID: 2962 Comm: Xorg Not tainted 6.8.0-rc3+ #744
Hardware name: Razer Blade/DANA_MB, BIOS 01.01 08/31/2018
RIP: 0010:drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
Code: c6 b8 01 00 00 00 75 61 01 c6 41 0f af f3 41 0f af f1 c1 e1 04 48 63 c7 31 d2 89 ff 48 8b 5d f8 c9 48 0f af f1 48 8d 44 06 ff <48> f7 f7 31 d2 31 c9 31 f6 31 ff 45 31 c0 45 31 c9 45 31 d2 45 31
RSP: 0018:ffffb2c5c211fa30 EFLAGS: 00010206
RAX: ffffffffffffffff RBX: 0000000000000000 RCX: 0000000000f59b00
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
RBP: ffffb2c5c211fa48 R08: 0000000000000001 R09: 0000000000000020
R10: 0000000000000004 R11: 0000000000000000 R12: 0000000000023b4a
R13: ffff91d37d165800 R14: ffff91d36fac6d80 R15: ffff91d34a764010
FS: 00007f4a1ca3fa80(0000) GS:ffff91d6edbc0000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000559491d49000 CR3: 000000011d180002 CR4: 00000000003706f0
Call Trace:
<TASK>
? show_regs+0x6d/0x80
? die+0x37/0xa0
? do_trap+0xd4/0xf0
? do_error_trap+0x71/0xb0
? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
? exc_divide_error+0x3a/0x70
? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
? asm_exc_divide_error+0x1b/0x20
? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
? drm_dp_calc_pbn_mode+0x2e/0x70 [drm_display_helper]
nv50_msto_atomic_check+0xda/0x120 [nouveau]
drm_atomic_helper_check_modeset+0xa87/0xdf0 [drm_kms_helper]
drm_atomic_helper_check+0x19/0xa0 [drm_kms_helper]
nv50_disp_atomic_check+0x13f/0x2f0 [nouveau]
drm_atomic_check_only+0x668/0xb20 [drm]
? drm_connector_list_iter_next+0x86/0xc0 [drm]
drm_atomic_commit+0x58/0xd0 [drm]
? __pfx___drm_printfn_info+0x10/0x10 [drm]
drm_atomic_connector_commit_dpms+0xd7/0x100 [drm]
drm_mode_obj_set_property_ioctl+0x1c5/0x450 [drm]
? __pfx_drm_connector_property_set_ioctl+0x10/0x10 [drm]
drm_connector_property_set_ioctl+0x3b/0x60 [drm]
drm_ioctl_kernel+0xb9/0x120 [drm]
drm_ioctl+0x2d0/0x550 [drm]
? __pfx_drm_connector_property_set_ioctl+0x10/0x10 [drm]
nouveau_drm_ioctl+0x61/0xc0 [nouveau]
__x64_sys_ioctl+0xa0/0xf0
do_syscall_64+0x76/0x140
? do_syscall_64+0x85/0x140
? do_syscall_64+0x85/0x140
entry_SYSCALL_64_after_hwframe+0x6e/0x76
RIP: 0033:0x7f4a1cd1a94f
Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41> 89 c0 3d 00 f0 ff ff 77 1f 48 8b 44 24 18 64 48 2b 04 25 28 00
RSP: 002b:00007ffd2f1df520 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 00007ffd2f1df5b0 RCX: 00007f4a1cd1a94f
RDX: 00007ffd2f1df5b0 RSI: 00000000c01064ab RDI: 000000000000000f
RBP: 00000000c01064ab R08: 000056347932deb8 R09: 000056347a7d99c0
R10: 0000000000000000 R11: 0000000000000246 R12: 000056347938a220
R13: 000000000000000f R14: 0000563479d9f3f0 R15: 0000000000000000
</TASK>
Modules linked in: rfcomm xt_conntrack nft_chain_nat xt_MASQUERADE nf_nat nf_conntrack_netlink nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 xfrm_user xfrm_algo xt_addrtype nft_compat nf_tables nfnetlink br_netfilter bridge stp llc ccm cmac algif_hash overlay algif_skcipher af_alg bnep binfmt_misc snd_sof_pci_intel_cnl snd_sof_intel_hda_common snd_soc_hdac_hda snd_sof_pci snd_sof_xtensa_dsp snd_sof_intel_hda snd_sof snd_sof_utils snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core snd_compress snd_sof_intel_hda_mlink snd_hda_ext_core iwlmvm intel_rapl_msr intel_rapl_common intel_tcc_cooling x86_pkg_temp_thermal intel_powerclamp mac80211 coretemp kvm_intel snd_hda_codec_hdmi kvm snd_hda_codec_realtek snd_hda_codec_generic uvcvideo libarc4 snd_hda_intel snd_intel_dspcfg snd_hda_codec iwlwifi videobuf2_vmalloc videobuf2_memops uvc irqbypass btusb videobuf2_v4l2 snd_seq_midi crct10dif_pclmul hid_multitouch crc32_pclmul snd_seq_midi_event btrtl snd_hwdep videodev polyval_clmulni polyval_generic snd_rawmidi
ghash_clmulni_intel aesni_intel btintel crypto_simd snd_hda_core cryptd snd_seq btbcm ee1004 8250_dw videobuf2_common btmtk rapl nls_iso8859_1 mei_hdcp thunderbolt bluetooth intel_cstate wmi_bmof intel_wmi_thunderbolt cfg80211 snd_pcm mc snd_seq_device i2c_i801 r8169 ecdh_generic snd_timer i2c_smbus ecc snd mei_me intel_lpss_pci mei ahci intel_lpss soundcore realtek libahci idma64 intel_pch_thermal i2c_hid_acpi i2c_hid acpi_pad sch_fq_codel msr parport_pc ppdev lp parport efi_pstore ip_tables x_tables autofs4 dm_crypt raid10 raid456 libcrc32c async_raid6_recov async_memcpy async_pq async_xor xor async_tx raid6_pq raid1 raid0 joydev input_leds hid_generic usbhid hid nouveau i915 drm_ttm_helper gpu_sched drm_gpuvm drm_exec i2c_algo_bit drm_buddy ttm drm_display_helper drm_kms_helper cec rc_core drm nvme nvme_core mxm_wmi xhci_pci xhci_pci_renesas video wmi pinctrl_cannonlake mac_hid
---[ end trace 0000000000000000 ]---
Fix this by avoiding the divide if bpp is 0.
Fixes: c1d6a22b7219 ("drm/dp: Add helpers to calculate the link BW overhead")
Signed-off-by: Chris Bainbridge <chris.bainbridge@gmail.com>
---
drivers/gpu/drm/display/drm_dp_helper.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c
index b1ca3a1100da..bb8794c8f99c 100644
--- a/drivers/gpu/drm/display/drm_dp_helper.c
+++ b/drivers/gpu/drm/display/drm_dp_helper.c
@@ -4024,6 +4024,9 @@ int drm_dp_bw_overhead(int lane_count, int hactive,
bpp_x16, symbol_size,
is_mst);
+ /* Avoid potential divide by zero in DIV_ROUND_UP_ULL */
+ if (bpp_x16 == 0)
+ return 0;
return DIV_ROUND_UP_ULL(mul_u32_u32(symbol_cycles * symbol_size * lane_count,
overhead * 16),
hactive * bpp_x16);
--
2.39.2
----- End forwarded message -----
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [REGRESSION] Divide-by-zero on DisplayPort MST unplug with nouveau
2024-03-07 17:58 [REGRESSION] Divide-by-zero on DisplayPort MST unplug with nouveau Chris Bainbridge
@ 2024-03-07 18:14 ` Chris Bainbridge
2024-03-11 15:53 ` Linux regression tracking (Thorsten Leemhuis)
1 sibling, 0 replies; 6+ messages in thread
From: Chris Bainbridge @ 2024-03-07 18:14 UTC (permalink / raw)
To: regressions
#regzbot monitor: https://gitlab.freedesktop.org/drm/misc/kernel/-/issues/36
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [REGRESSION] Divide-by-zero on DisplayPort MST unplug with nouveau
2024-03-07 17:58 [REGRESSION] Divide-by-zero on DisplayPort MST unplug with nouveau Chris Bainbridge
2024-03-07 18:14 ` Chris Bainbridge
@ 2024-03-11 15:53 ` Linux regression tracking (Thorsten Leemhuis)
2024-03-11 15:58 ` Saarinen, Jani
1 sibling, 1 reply; 6+ messages in thread
From: Linux regression tracking (Thorsten Leemhuis) @ 2024-03-11 15:53 UTC (permalink / raw)
To: Imre Deak
Cc: regressions, Chris Bainbridge, intel-gfx, David Airlie,
Daniel Vetter, ML dri-devel
On 07.03.24 18:58, Chris Bainbridge wrote:
> ----- Forwarded message from Chris Bainbridge <chris.bainbridge@gmail.com> -----
>
> Date: Sat, 10 Feb 2024 21:24:59 +0000
Hmm, it looks like nobody is looking into this regression. Is there a
good reason?
Imre, or did you maybe just miss that Chris' regression seems to be
caused by a commit of yours? He initally proposed a fix (the forwarded
mail that is quoted here) more a month ago already here:
https://lore.kernel.org/all/ZcfpqwnkSoiJxeT9@debian.local/
Chris recently filed a ticket, too:
https://gitlab.freedesktop.org/drm/misc/kernel/-/issues/36
Mostly silence there as well. :-/
Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
P.S: Chris, sorry, I had missed that you initially proposed the fix a
month ago; if I had noticed this earlier I had sent a mail like this one
earlier.
--
Everything you wanna know about Linux kernel regression tracking:
https://linux-regtracking.leemhuis.info/about/#tldr
If I did something stupid, please tell me, as explained on that page.
> From: Chris Bainbridge <chris.bainbridge@gmail.com>
> To: dri-devel@lists.freedesktop.org
> Cc: lyude@redhat.com, ville.syrjala@linux.intel.com, stanislav.lisovskiy@intel.com,
> mripard@kernel.org, imre.deak@intel.com
> Subject: [PATCH] Fix divide-by-zero on DP unplug with nouveau
>
> The following trace occurs when using nouveau and unplugging a DP MST
> adaptor:
>> divide error: 0000 [#1] PREEMPT SMP PTI
> CPU: 7 PID: 2962 Comm: Xorg Not tainted 6.8.0-rc3+ #744
> Hardware name: Razer Blade/DANA_MB, BIOS 01.01 08/31/2018
> RIP: 0010:drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> Code: c6 b8 01 00 00 00 75 61 01 c6 41 0f af f3 41 0f af f1 c1 e1 04 48 63 c7 31 d2 89 ff 48 8b 5d f8 c9 48 0f af f1 48 8d 44 06 ff <48> f7 f7 31 d2 31 c9 31 f6 31 ff 45 31 c0 45 31 c9 45 31 d2 45 31
> RSP: 0018:ffffb2c5c211fa30 EFLAGS: 00010206
> RAX: ffffffffffffffff RBX: 0000000000000000 RCX: 0000000000f59b00
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
> RBP: ffffb2c5c211fa48 R08: 0000000000000001 R09: 0000000000000020
> R10: 0000000000000004 R11: 0000000000000000 R12: 0000000000023b4a
> R13: ffff91d37d165800 R14: ffff91d36fac6d80 R15: ffff91d34a764010
> FS: 00007f4a1ca3fa80(0000) GS:ffff91d6edbc0000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000559491d49000 CR3: 000000011d180002 CR4: 00000000003706f0
> Call Trace:
> <TASK>
> ? show_regs+0x6d/0x80
> ? die+0x37/0xa0
> ? do_trap+0xd4/0xf0
> ? do_error_trap+0x71/0xb0
> ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> ? exc_divide_error+0x3a/0x70
> ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> ? asm_exc_divide_error+0x1b/0x20
> ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> ? drm_dp_calc_pbn_mode+0x2e/0x70 [drm_display_helper]
> nv50_msto_atomic_check+0xda/0x120 [nouveau]
> drm_atomic_helper_check_modeset+0xa87/0xdf0 [drm_kms_helper]
> drm_atomic_helper_check+0x19/0xa0 [drm_kms_helper]
> nv50_disp_atomic_check+0x13f/0x2f0 [nouveau]
> drm_atomic_check_only+0x668/0xb20 [drm]
> ? drm_connector_list_iter_next+0x86/0xc0 [drm]
> drm_atomic_commit+0x58/0xd0 [drm]
> ? __pfx___drm_printfn_info+0x10/0x10 [drm]
> drm_atomic_connector_commit_dpms+0xd7/0x100 [drm]
> drm_mode_obj_set_property_ioctl+0x1c5/0x450 [drm]
> ? __pfx_drm_connector_property_set_ioctl+0x10/0x10 [drm]
> drm_connector_property_set_ioctl+0x3b/0x60 [drm]
> drm_ioctl_kernel+0xb9/0x120 [drm]
> drm_ioctl+0x2d0/0x550 [drm]
> ? __pfx_drm_connector_property_set_ioctl+0x10/0x10 [drm]
> nouveau_drm_ioctl+0x61/0xc0 [nouveau]
> __x64_sys_ioctl+0xa0/0xf0
> do_syscall_64+0x76/0x140
> ? do_syscall_64+0x85/0x140
> ? do_syscall_64+0x85/0x140
> entry_SYSCALL_64_after_hwframe+0x6e/0x76
> RIP: 0033:0x7f4a1cd1a94f
> Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41> 89 c0 3d 00 f0 ff ff 77 1f 48 8b 44 24 18 64 48 2b 04 25 28 00
> RSP: 002b:00007ffd2f1df520 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
> RAX: ffffffffffffffda RBX: 00007ffd2f1df5b0 RCX: 00007f4a1cd1a94f
> RDX: 00007ffd2f1df5b0 RSI: 00000000c01064ab RDI: 000000000000000f
> RBP: 00000000c01064ab R08: 000056347932deb8 R09: 000056347a7d99c0
> R10: 0000000000000000 R11: 0000000000000246 R12: 000056347938a220
> R13: 000000000000000f R14: 0000563479d9f3f0 R15: 0000000000000000
> </TASK>
> Modules linked in: rfcomm xt_conntrack nft_chain_nat xt_MASQUERADE nf_nat nf_conntrack_netlink nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 xfrm_user xfrm_algo xt_addrtype nft_compat nf_tables nfnetlink br_netfilter bridge stp llc ccm cmac algif_hash overlay algif_skcipher af_alg bnep binfmt_misc snd_sof_pci_intel_cnl snd_sof_intel_hda_common snd_soc_hdac_hda snd_sof_pci snd_sof_xtensa_dsp snd_sof_intel_hda snd_sof snd_sof_utils snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core snd_compress snd_sof_intel_hda_mlink snd_hda_ext_core iwlmvm intel_rapl_msr intel_rapl_common intel_tcc_cooling x86_pkg_temp_thermal intel_powerclamp mac80211 coretemp kvm_intel snd_hda_codec_hdmi kvm snd_hda_codec_realtek snd_hda_codec_generic uvcvideo libarc4 snd_hda_intel snd_intel_dspcfg snd_hda_codec iwlwifi videobuf2_vmalloc videobuf2_memops uvc irqbypass btusb videobuf2_v4l2 snd_seq_midi crct10dif_pclmul hid_multitouch crc32_pclmul snd_seq_midi_event btrtl snd_hwdep videodev polyval_clmulni polyval_generic snd_rawmidi
> ghash_clmulni_intel aesni_intel btintel crypto_simd snd_hda_core cryptd snd_seq btbcm ee1004 8250_dw videobuf2_common btmtk rapl nls_iso8859_1 mei_hdcp thunderbolt bluetooth intel_cstate wmi_bmof intel_wmi_thunderbolt cfg80211 snd_pcm mc snd_seq_device i2c_i801 r8169 ecdh_generic snd_timer i2c_smbus ecc snd mei_me intel_lpss_pci mei ahci intel_lpss soundcore realtek libahci idma64 intel_pch_thermal i2c_hid_acpi i2c_hid acpi_pad sch_fq_codel msr parport_pc ppdev lp parport efi_pstore ip_tables x_tables autofs4 dm_crypt raid10 raid456 libcrc32c async_raid6_recov async_memcpy async_pq async_xor xor async_tx raid6_pq raid1 raid0 joydev input_leds hid_generic usbhid hid nouveau i915 drm_ttm_helper gpu_sched drm_gpuvm drm_exec i2c_algo_bit drm_buddy ttm drm_display_helper drm_kms_helper cec rc_core drm nvme nvme_core mxm_wmi xhci_pci xhci_pci_renesas video wmi pinctrl_cannonlake mac_hid
> ---[ end trace 0000000000000000 ]---
>
> Fix this by avoiding the divide if bpp is 0.
>
> Fixes: c1d6a22b7219 ("drm/dp: Add helpers to calculate the link BW overhead")
> Signed-off-by: Chris Bainbridge <chris.bainbridge@gmail.com>
> ---
> drivers/gpu/drm/display/drm_dp_helper.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c
> index b1ca3a1100da..bb8794c8f99c 100644
> --- a/drivers/gpu/drm/display/drm_dp_helper.c
> +++ b/drivers/gpu/drm/display/drm_dp_helper.c
> @@ -4024,6 +4024,9 @@ int drm_dp_bw_overhead(int lane_count, int hactive,
> bpp_x16, symbol_size,
> is_mst);
>
> + /* Avoid potential divide by zero in DIV_ROUND_UP_ULL */
> + if (bpp_x16 == 0)
> + return 0;
> return DIV_ROUND_UP_ULL(mul_u32_u32(symbol_cycles * symbol_size * lane_count,
> overhead * 16),
> hactive * bpp_x16);
P. P.S.:
#regzbot duplicate:
https://lore.kernel.org/all/ZcfpqwnkSoiJxeT9@debian.local/
#regzbot poke
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [REGRESSION] Divide-by-zero on DisplayPort MST unplug with nouveau
2024-03-11 15:53 ` Linux regression tracking (Thorsten Leemhuis)
@ 2024-03-11 15:58 ` Saarinen, Jani
2024-03-11 16:02 ` Jani Nikula
0 siblings, 1 reply; 6+ messages in thread
From: Saarinen, Jani @ 2024-03-11 15:58 UTC (permalink / raw)
To: Linux regressions mailing list, Deak, Imre
Cc: Chris Bainbridge, intel-gfx, David Airlie, Daniel Vetter,
ML dri-devel
Hi,
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Linux
> regression tracking (Thorsten Leemhuis)
> Sent: Monday, 11 March 2024 17.53
> To: Deak, Imre <imre.deak@intel.com>
> Cc: regressions@lists.linux.dev; Chris Bainbridge
> <chris.bainbridge@gmail.com>; intel-gfx <intel-gfx@lists.freedesktop.org>;
> David Airlie <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>; ML dri-devel
> <dri-devel@lists.freedesktop.org>
> Subject: Re: [REGRESSION] Divide-by-zero on DisplayPort MST unplug with
> nouveau
>
> On 07.03.24 18:58, Chris Bainbridge wrote:
> > ----- Forwarded message from Chris Bainbridge
> > <chris.bainbridge@gmail.com> -----
> >
> > Date: Sat, 10 Feb 2024 21:24:59 +0000
>
> Hmm, it looks like nobody is looking into this regression. Is there a good
> reason?
>
> Imre, or did you maybe just miss that Chris' regression seems to be caused by
> a commit of yours? He initally proposed a fix (the forwarded mail that is
> quoted here) more a month ago already here:
> https://lore.kernel.org/all/ZcfpqwnkSoiJxeT9@debian.local/
>
> Chris recently filed a ticket, too:
> https://gitlab.freedesktop.org/drm/misc/kernel/-/issues/36
Please file https://drm.pages.freedesktop.org/intel-docs/how-to-file-i915-bugs.html
>
> Mostly silence there as well. :-/
>
> Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
>
> P.S: Chris, sorry, I had missed that you initially proposed the fix a month ago; if
> I had noticed this earlier I had sent a mail like this one earlier.
> --
> Everything you wanna know about Linux kernel regression tracking:
> https://linux-regtracking.leemhuis.info/about/#tldr
> If I did something stupid, please tell me, as explained on that page.
>
> > From: Chris Bainbridge <chris.bainbridge@gmail.com>
> > To: dri-devel@lists.freedesktop.org
> > Cc: lyude@redhat.com, ville.syrjala@linux.intel.com,
> stanislav.lisovskiy@intel.com,
> > mripard@kernel.org, imre.deak@intel.com
> > Subject: [PATCH] Fix divide-by-zero on DP unplug with nouveau
> >
> > The following trace occurs when using nouveau and unplugging a DP MST
> > adaptor:
> >> divide error: 0000 [#1] PREEMPT SMP PTI
> > CPU: 7 PID: 2962 Comm: Xorg Not tainted 6.8.0-rc3+ #744 Hardware
> > name: Razer Blade/DANA_MB, BIOS 01.01 08/31/2018
> > RIP: 0010:drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> > Code: c6 b8 01 00 00 00 75 61 01 c6 41 0f af f3 41 0f af f1 c1 e1 04
> > 48 63 c7 31 d2 89 ff 48 8b 5d f8 c9 48 0f af f1 48 8d 44 06 ff <48> f7
> > f7 31 d2 31 c9 31 f6 31 ff 45 31 c0 45 31 c9 45 31 d2 45 31
> > RSP: 0018:ffffb2c5c211fa30 EFLAGS: 00010206
> > RAX: ffffffffffffffff RBX: 0000000000000000 RCX: 0000000000f59b00
> > RDX: 0000000000000000 RSI: 0000000000000000 RDI:
> 0000000000000000
> > RBP: ffffb2c5c211fa48 R08: 0000000000000001 R09:
> 0000000000000020
> > R10: 0000000000000004 R11: 0000000000000000 R12:
> 0000000000023b4a
> > R13: ffff91d37d165800 R14: ffff91d36fac6d80 R15: ffff91d34a764010
> > FS: 00007f4a1ca3fa80(0000) GS:ffff91d6edbc0000(0000)
> > knlGS:0000000000000000
> > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > CR2: 0000559491d49000 CR3: 000000011d180002 CR4:
> 00000000003706f0
> > Call Trace:
> > <TASK>
> > ? show_regs+0x6d/0x80
> > ? die+0x37/0xa0
> > ? do_trap+0xd4/0xf0
> > ? do_error_trap+0x71/0xb0
> > ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> > ? exc_divide_error+0x3a/0x70
> > ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> > ? asm_exc_divide_error+0x1b/0x20
> > ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> > ? drm_dp_calc_pbn_mode+0x2e/0x70 [drm_display_helper]
> > nv50_msto_atomic_check+0xda/0x120 [nouveau]
> > drm_atomic_helper_check_modeset+0xa87/0xdf0 [drm_kms_helper]
> > drm_atomic_helper_check+0x19/0xa0 [drm_kms_helper]
> > nv50_disp_atomic_check+0x13f/0x2f0 [nouveau]
> > drm_atomic_check_only+0x668/0xb20 [drm]
> > ? drm_connector_list_iter_next+0x86/0xc0 [drm]
> > drm_atomic_commit+0x58/0xd0 [drm]
> > ? __pfx___drm_printfn_info+0x10/0x10 [drm]
> > drm_atomic_connector_commit_dpms+0xd7/0x100 [drm]
> > drm_mode_obj_set_property_ioctl+0x1c5/0x450 [drm]
> > ? __pfx_drm_connector_property_set_ioctl+0x10/0x10 [drm]
> > drm_connector_property_set_ioctl+0x3b/0x60 [drm]
> > drm_ioctl_kernel+0xb9/0x120 [drm]
> > drm_ioctl+0x2d0/0x550 [drm]
> > ? __pfx_drm_connector_property_set_ioctl+0x10/0x10 [drm]
> > nouveau_drm_ioctl+0x61/0xc0 [nouveau]
> > __x64_sys_ioctl+0xa0/0xf0
> > do_syscall_64+0x76/0x140
> > ? do_syscall_64+0x85/0x140
> > ? do_syscall_64+0x85/0x140
> > entry_SYSCALL_64_after_hwframe+0x6e/0x76
> > RIP: 0033:0x7f4a1cd1a94f
> > Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48
> > 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41> 89
> > c0 3d 00 f0 ff ff 77 1f 48 8b 44 24 18 64 48 2b 04 25 28 00
> > RSP: 002b:00007ffd2f1df520 EFLAGS: 00000246 ORIG_RAX:
> > 0000000000000010
> > RAX: ffffffffffffffda RBX: 00007ffd2f1df5b0 RCX: 00007f4a1cd1a94f
> > RDX: 00007ffd2f1df5b0 RSI: 00000000c01064ab RDI: 000000000000000f
> > RBP: 00000000c01064ab R08: 000056347932deb8 R09:
> 000056347a7d99c0
> > R10: 0000000000000000 R11: 0000000000000246 R12:
> 000056347938a220
> > R13: 000000000000000f R14: 0000563479d9f3f0 R15:
> 0000000000000000
> > </TASK>
> > Modules linked in: rfcomm xt_conntrack nft_chain_nat xt_MASQUERADE
> nf_nat nf_conntrack_netlink nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4
> xfrm_user xfrm_algo xt_addrtype nft_compat nf_tables nfnetlink br_netfilter
> bridge stp llc ccm cmac algif_hash overlay algif_skcipher af_alg bnep
> binfmt_misc snd_sof_pci_intel_cnl snd_sof_intel_hda_common
> snd_soc_hdac_hda snd_sof_pci snd_sof_xtensa_dsp snd_sof_intel_hda
> snd_sof snd_sof_utils snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core
> snd_compress snd_sof_intel_hda_mlink snd_hda_ext_core iwlmvm
> intel_rapl_msr intel_rapl_common intel_tcc_cooling x86_pkg_temp_thermal
> intel_powerclamp mac80211 coretemp kvm_intel snd_hda_codec_hdmi kvm
> snd_hda_codec_realtek snd_hda_codec_generic uvcvideo libarc4
> snd_hda_intel snd_intel_dspcfg snd_hda_codec iwlwifi videobuf2_vmalloc
> videobuf2_memops uvc irqbypass btusb videobuf2_v4l2 snd_seq_midi
> crct10dif_pclmul hid_multitouch crc32_pclmul snd_seq_midi_event btrtl
> snd_hwdep videodev polyval_clmulni polyval_generic snd_rawmidi
> > ghash_clmulni_intel aesni_intel btintel crypto_simd snd_hda_core
> > cryptd snd_seq btbcm ee1004 8250_dw videobuf2_common btmtk rapl
> > nls_iso8859_1 mei_hdcp thunderbolt bluetooth intel_cstate wmi_bmof
> > intel_wmi_thunderbolt cfg80211 snd_pcm mc snd_seq_device i2c_i801
> > r8169 ecdh_generic snd_timer i2c_smbus ecc snd mei_me intel_lpss_pci
> > mei ahci intel_lpss soundcore realtek libahci idma64 intel_pch_thermal
> > i2c_hid_acpi i2c_hid acpi_pad sch_fq_codel msr parport_pc ppdev lp
> > parport efi_pstore ip_tables x_tables autofs4 dm_crypt raid10 raid456
> > libcrc32c async_raid6_recov async_memcpy async_pq async_xor xor
> > async_tx raid6_pq raid1 raid0 joydev input_leds hid_generic usbhid hid
> > nouveau i915 drm_ttm_helper gpu_sched drm_gpuvm drm_exec
> i2c_algo_bit
> > drm_buddy ttm drm_display_helper drm_kms_helper cec rc_core drm nvme
> > nvme_core mxm_wmi xhci_pci xhci_pci_renesas video wmi
> > pinctrl_cannonlake mac_hid ---[ end trace 0000000000000000 ]---
> >
> > Fix this by avoiding the divide if bpp is 0.
> >
> > Fixes: c1d6a22b7219 ("drm/dp: Add helpers to calculate the link BW
> > overhead")
> > Signed-off-by: Chris Bainbridge <chris.bainbridge@gmail.com>
> > ---
> > drivers/gpu/drm/display/drm_dp_helper.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/display/drm_dp_helper.c
> > b/drivers/gpu/drm/display/drm_dp_helper.c
> > index b1ca3a1100da..bb8794c8f99c 100644
> > --- a/drivers/gpu/drm/display/drm_dp_helper.c
> > +++ b/drivers/gpu/drm/display/drm_dp_helper.c
> > @@ -4024,6 +4024,9 @@ int drm_dp_bw_overhead(int lane_count, int
> hactive,
> > bpp_x16,
> symbol_size,
> > is_mst);
> >
> > + /* Avoid potential divide by zero in DIV_ROUND_UP_ULL */
> > + if (bpp_x16 == 0)
> > + return 0;
> > return DIV_ROUND_UP_ULL(mul_u32_u32(symbol_cycles *
> symbol_size * lane_count,
> > overhead * 16),
> > hactive * bpp_x16);
>
> P. P.S.:
>
> #regzbot duplicate:
> https://lore.kernel.org/all/ZcfpqwnkSoiJxeT9@debian.local/
> #regzbot poke
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [REGRESSION] Divide-by-zero on DisplayPort MST unplug with nouveau
2024-03-11 15:58 ` Saarinen, Jani
@ 2024-03-11 16:02 ` Jani Nikula
2024-03-11 16:05 ` Saarinen, Jani
0 siblings, 1 reply; 6+ messages in thread
From: Jani Nikula @ 2024-03-11 16:02 UTC (permalink / raw)
To: Saarinen, Jani, Linux regressions mailing list, Deak, Imre
Cc: Chris Bainbridge, intel-gfx, David Airlie, Daniel Vetter,
ML dri-devel
On Mon, 11 Mar 2024, "Saarinen, Jani" <jani.saarinen@intel.com> wrote:
> Hi,
>
>> -----Original Message-----
>> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Linux
>> regression tracking (Thorsten Leemhuis)
>> Sent: Monday, 11 March 2024 17.53
>> To: Deak, Imre <imre.deak@intel.com>
>> Cc: regressions@lists.linux.dev; Chris Bainbridge
>> <chris.bainbridge@gmail.com>; intel-gfx <intel-gfx@lists.freedesktop.org>;
>> David Airlie <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>; ML dri-devel
>> <dri-devel@lists.freedesktop.org>
>> Subject: Re: [REGRESSION] Divide-by-zero on DisplayPort MST unplug with
>> nouveau
>>
>> On 07.03.24 18:58, Chris Bainbridge wrote:
>> > ----- Forwarded message from Chris Bainbridge
>> > <chris.bainbridge@gmail.com> -----
>> >
>> > Date: Sat, 10 Feb 2024 21:24:59 +0000
>>
>> Hmm, it looks like nobody is looking into this regression. Is there a good
>> reason?
>>
>> Imre, or did you maybe just miss that Chris' regression seems to be caused by
>> a commit of yours? He initally proposed a fix (the forwarded mail that is
>> quoted here) more a month ago already here:
>> https://lore.kernel.org/all/ZcfpqwnkSoiJxeT9@debian.local/
>>
>> Chris recently filed a ticket, too:
>> https://gitlab.freedesktop.org/drm/misc/kernel/-/issues/36
> Please file https://drm.pages.freedesktop.org/intel-docs/how-to-file-i915-bugs.html
Well, please don't. It's *not* an i915 bug.
BR,
Jani.
>>
>> Mostly silence there as well. :-/
>>
>> Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
>>
>> P.S: Chris, sorry, I had missed that you initially proposed the fix a month ago; if
>> I had noticed this earlier I had sent a mail like this one earlier.
>> --
>> Everything you wanna know about Linux kernel regression tracking:
>> https://linux-regtracking.leemhuis.info/about/#tldr
>> If I did something stupid, please tell me, as explained on that page.
>>
>> > From: Chris Bainbridge <chris.bainbridge@gmail.com>
>> > To: dri-devel@lists.freedesktop.org
>> > Cc: lyude@redhat.com, ville.syrjala@linux.intel.com,
>> stanislav.lisovskiy@intel.com,
>> > mripard@kernel.org, imre.deak@intel.com
>> > Subject: [PATCH] Fix divide-by-zero on DP unplug with nouveau
>> >
>> > The following trace occurs when using nouveau and unplugging a DP MST
>> > adaptor:
>> >> divide error: 0000 [#1] PREEMPT SMP PTI
>> > CPU: 7 PID: 2962 Comm: Xorg Not tainted 6.8.0-rc3+ #744 Hardware
>> > name: Razer Blade/DANA_MB, BIOS 01.01 08/31/2018
>> > RIP: 0010:drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
>> > Code: c6 b8 01 00 00 00 75 61 01 c6 41 0f af f3 41 0f af f1 c1 e1 04
>> > 48 63 c7 31 d2 89 ff 48 8b 5d f8 c9 48 0f af f1 48 8d 44 06 ff <48> f7
>> > f7 31 d2 31 c9 31 f6 31 ff 45 31 c0 45 31 c9 45 31 d2 45 31
>> > RSP: 0018:ffffb2c5c211fa30 EFLAGS: 00010206
>> > RAX: ffffffffffffffff RBX: 0000000000000000 RCX: 0000000000f59b00
>> > RDX: 0000000000000000 RSI: 0000000000000000 RDI:
>> 0000000000000000
>> > RBP: ffffb2c5c211fa48 R08: 0000000000000001 R09:
>> 0000000000000020
>> > R10: 0000000000000004 R11: 0000000000000000 R12:
>> 0000000000023b4a
>> > R13: ffff91d37d165800 R14: ffff91d36fac6d80 R15: ffff91d34a764010
>> > FS: 00007f4a1ca3fa80(0000) GS:ffff91d6edbc0000(0000)
>> > knlGS:0000000000000000
>> > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> > CR2: 0000559491d49000 CR3: 000000011d180002 CR4:
>> 00000000003706f0
>> > Call Trace:
>> > <TASK>
>> > ? show_regs+0x6d/0x80
>> > ? die+0x37/0xa0
>> > ? do_trap+0xd4/0xf0
>> > ? do_error_trap+0x71/0xb0
>> > ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
>> > ? exc_divide_error+0x3a/0x70
>> > ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
>> > ? asm_exc_divide_error+0x1b/0x20
>> > ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
>> > ? drm_dp_calc_pbn_mode+0x2e/0x70 [drm_display_helper]
>> > nv50_msto_atomic_check+0xda/0x120 [nouveau]
>> > drm_atomic_helper_check_modeset+0xa87/0xdf0 [drm_kms_helper]
>> > drm_atomic_helper_check+0x19/0xa0 [drm_kms_helper]
>> > nv50_disp_atomic_check+0x13f/0x2f0 [nouveau]
>> > drm_atomic_check_only+0x668/0xb20 [drm]
>> > ? drm_connector_list_iter_next+0x86/0xc0 [drm]
>> > drm_atomic_commit+0x58/0xd0 [drm]
>> > ? __pfx___drm_printfn_info+0x10/0x10 [drm]
>> > drm_atomic_connector_commit_dpms+0xd7/0x100 [drm]
>> > drm_mode_obj_set_property_ioctl+0x1c5/0x450 [drm]
>> > ? __pfx_drm_connector_property_set_ioctl+0x10/0x10 [drm]
>> > drm_connector_property_set_ioctl+0x3b/0x60 [drm]
>> > drm_ioctl_kernel+0xb9/0x120 [drm]
>> > drm_ioctl+0x2d0/0x550 [drm]
>> > ? __pfx_drm_connector_property_set_ioctl+0x10/0x10 [drm]
>> > nouveau_drm_ioctl+0x61/0xc0 [nouveau]
>> > __x64_sys_ioctl+0xa0/0xf0
>> > do_syscall_64+0x76/0x140
>> > ? do_syscall_64+0x85/0x140
>> > ? do_syscall_64+0x85/0x140
>> > entry_SYSCALL_64_after_hwframe+0x6e/0x76
>> > RIP: 0033:0x7f4a1cd1a94f
>> > Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48
>> > 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41> 89
>> > c0 3d 00 f0 ff ff 77 1f 48 8b 44 24 18 64 48 2b 04 25 28 00
>> > RSP: 002b:00007ffd2f1df520 EFLAGS: 00000246 ORIG_RAX:
>> > 0000000000000010
>> > RAX: ffffffffffffffda RBX: 00007ffd2f1df5b0 RCX: 00007f4a1cd1a94f
>> > RDX: 00007ffd2f1df5b0 RSI: 00000000c01064ab RDI: 000000000000000f
>> > RBP: 00000000c01064ab R08: 000056347932deb8 R09:
>> 000056347a7d99c0
>> > R10: 0000000000000000 R11: 0000000000000246 R12:
>> 000056347938a220
>> > R13: 000000000000000f R14: 0000563479d9f3f0 R15:
>> 0000000000000000
>> > </TASK>
>> > Modules linked in: rfcomm xt_conntrack nft_chain_nat xt_MASQUERADE
>> nf_nat nf_conntrack_netlink nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4
>> xfrm_user xfrm_algo xt_addrtype nft_compat nf_tables nfnetlink br_netfilter
>> bridge stp llc ccm cmac algif_hash overlay algif_skcipher af_alg bnep
>> binfmt_misc snd_sof_pci_intel_cnl snd_sof_intel_hda_common
>> snd_soc_hdac_hda snd_sof_pci snd_sof_xtensa_dsp snd_sof_intel_hda
>> snd_sof snd_sof_utils snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core
>> snd_compress snd_sof_intel_hda_mlink snd_hda_ext_core iwlmvm
>> intel_rapl_msr intel_rapl_common intel_tcc_cooling x86_pkg_temp_thermal
>> intel_powerclamp mac80211 coretemp kvm_intel snd_hda_codec_hdmi kvm
>> snd_hda_codec_realtek snd_hda_codec_generic uvcvideo libarc4
>> snd_hda_intel snd_intel_dspcfg snd_hda_codec iwlwifi videobuf2_vmalloc
>> videobuf2_memops uvc irqbypass btusb videobuf2_v4l2 snd_seq_midi
>> crct10dif_pclmul hid_multitouch crc32_pclmul snd_seq_midi_event btrtl
>> snd_hwdep videodev polyval_clmulni polyval_generic snd_rawmidi
>> > ghash_clmulni_intel aesni_intel btintel crypto_simd snd_hda_core
>> > cryptd snd_seq btbcm ee1004 8250_dw videobuf2_common btmtk rapl
>> > nls_iso8859_1 mei_hdcp thunderbolt bluetooth intel_cstate wmi_bmof
>> > intel_wmi_thunderbolt cfg80211 snd_pcm mc snd_seq_device i2c_i801
>> > r8169 ecdh_generic snd_timer i2c_smbus ecc snd mei_me intel_lpss_pci
>> > mei ahci intel_lpss soundcore realtek libahci idma64 intel_pch_thermal
>> > i2c_hid_acpi i2c_hid acpi_pad sch_fq_codel msr parport_pc ppdev lp
>> > parport efi_pstore ip_tables x_tables autofs4 dm_crypt raid10 raid456
>> > libcrc32c async_raid6_recov async_memcpy async_pq async_xor xor
>> > async_tx raid6_pq raid1 raid0 joydev input_leds hid_generic usbhid hid
>> > nouveau i915 drm_ttm_helper gpu_sched drm_gpuvm drm_exec
>> i2c_algo_bit
>> > drm_buddy ttm drm_display_helper drm_kms_helper cec rc_core drm nvme
>> > nvme_core mxm_wmi xhci_pci xhci_pci_renesas video wmi
>> > pinctrl_cannonlake mac_hid ---[ end trace 0000000000000000 ]---
>> >
>> > Fix this by avoiding the divide if bpp is 0.
>> >
>> > Fixes: c1d6a22b7219 ("drm/dp: Add helpers to calculate the link BW
>> > overhead")
>> > Signed-off-by: Chris Bainbridge <chris.bainbridge@gmail.com>
>> > ---
>> > drivers/gpu/drm/display/drm_dp_helper.c | 3 +++
>> > 1 file changed, 3 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/display/drm_dp_helper.c
>> > b/drivers/gpu/drm/display/drm_dp_helper.c
>> > index b1ca3a1100da..bb8794c8f99c 100644
>> > --- a/drivers/gpu/drm/display/drm_dp_helper.c
>> > +++ b/drivers/gpu/drm/display/drm_dp_helper.c
>> > @@ -4024,6 +4024,9 @@ int drm_dp_bw_overhead(int lane_count, int
>> hactive,
>> > bpp_x16,
>> symbol_size,
>> > is_mst);
>> >
>> > + /* Avoid potential divide by zero in DIV_ROUND_UP_ULL */
>> > + if (bpp_x16 == 0)
>> > + return 0;
>> > return DIV_ROUND_UP_ULL(mul_u32_u32(symbol_cycles *
>> symbol_size * lane_count,
>> > overhead * 16),
>> > hactive * bpp_x16);
>>
>> P. P.S.:
>>
>> #regzbot duplicate:
>> https://lore.kernel.org/all/ZcfpqwnkSoiJxeT9@debian.local/
>> #regzbot poke
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [REGRESSION] Divide-by-zero on DisplayPort MST unplug with nouveau
2024-03-11 16:02 ` Jani Nikula
@ 2024-03-11 16:05 ` Saarinen, Jani
0 siblings, 0 replies; 6+ messages in thread
From: Saarinen, Jani @ 2024-03-11 16:05 UTC (permalink / raw)
To: Jani Nikula, Linux regressions mailing list, Deak, Imre
Cc: Chris Bainbridge, intel-gfx, David Airlie, Daniel Vetter,
ML dri-devel
> -----Original Message-----
> From: Jani Nikula <jani.nikula@linux.intel.com>
> Sent: Monday, 11 March 2024 18.03
> To: Saarinen, Jani <jani.saarinen@intel.com>; Linux regressions mailing list
> <regressions@lists.linux.dev>; Deak, Imre <imre.deak@intel.com>
> Cc: Chris Bainbridge <chris.bainbridge@gmail.com>; intel-gfx <intel-
> gfx@lists.freedesktop.org>; David Airlie <airlied@linux.ie>; Daniel Vetter
> <daniel@ffwll.ch>; ML dri-devel <dri-devel@lists.freedesktop.org>
> Subject: RE: [REGRESSION] Divide-by-zero on DisplayPort MST unplug with
> nouveau
>
> On Mon, 11 Mar 2024, "Saarinen, Jani" <jani.saarinen@intel.com> wrote:
> > Hi,
> >
> >> -----Original Message-----
> >> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf
> >> Of Linux regression tracking (Thorsten Leemhuis)
> >> Sent: Monday, 11 March 2024 17.53
> >> To: Deak, Imre <imre.deak@intel.com>
> >> Cc: regressions@lists.linux.dev; Chris Bainbridge
> >> <chris.bainbridge@gmail.com>; intel-gfx
> >> <intel-gfx@lists.freedesktop.org>;
> >> David Airlie <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>; ML
> >> dri-devel <dri-devel@lists.freedesktop.org>
> >> Subject: Re: [REGRESSION] Divide-by-zero on DisplayPort MST unplug
> >> with nouveau
> >>
> >> On 07.03.24 18:58, Chris Bainbridge wrote:
> >> > ----- Forwarded message from Chris Bainbridge
> >> > <chris.bainbridge@gmail.com> -----
> >> >
> >> > Date: Sat, 10 Feb 2024 21:24:59 +0000
> >>
> >> Hmm, it looks like nobody is looking into this regression. Is there a
> >> good reason?
> >>
> >> Imre, or did you maybe just miss that Chris' regression seems to be
> >> caused by a commit of yours? He initally proposed a fix (the
> >> forwarded mail that is quoted here) more a month ago already here:
> >> https://lore.kernel.org/all/ZcfpqwnkSoiJxeT9@debian.local/
> >>
> >> Chris recently filed a ticket, too:
> >> https://gitlab.freedesktop.org/drm/misc/kernel/-/issues/36
> > Please file
> > https://drm.pages.freedesktop.org/intel-docs/how-to-file-i915-bugs.htm
> > l
>
> Well, please don't. It's *not* an i915 bug.
Right, sorry about this. Let Imre to comment then.
>
> BR,
> Jani.
>
> >>
> >> Mostly silence there as well. :-/
> >>
> >> Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker'
> >> hat)
> >>
> >> P.S: Chris, sorry, I had missed that you initially proposed the fix a
> >> month ago; if I had noticed this earlier I had sent a mail like this one earlier.
> >> --
> >> Everything you wanna know about Linux kernel regression tracking:
> >> https://linux-regtracking.leemhuis.info/about/#tldr
> >> If I did something stupid, please tell me, as explained on that page.
> >>
> >> > From: Chris Bainbridge <chris.bainbridge@gmail.com>
> >> > To: dri-devel@lists.freedesktop.org
> >> > Cc: lyude@redhat.com, ville.syrjala@linux.intel.com,
> >> stanislav.lisovskiy@intel.com,
> >> > mripard@kernel.org, imre.deak@intel.com
> >> > Subject: [PATCH] Fix divide-by-zero on DP unplug with nouveau
> >> >
> >> > The following trace occurs when using nouveau and unplugging a DP
> >> > MST
> >> > adaptor:
> >> >> divide error: 0000 [#1] PREEMPT SMP PTI
> >> > CPU: 7 PID: 2962 Comm: Xorg Not tainted 6.8.0-rc3+ #744 Hardware
> >> > name: Razer Blade/DANA_MB, BIOS 01.01 08/31/2018
> >> > RIP: 0010:drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> >> > Code: c6 b8 01 00 00 00 75 61 01 c6 41 0f af f3 41 0f af f1 c1 e1
> >> > 04
> >> > 48 63 c7 31 d2 89 ff 48 8b 5d f8 c9 48 0f af f1 48 8d 44 06 ff <48>
> >> > f7
> >> > f7 31 d2 31 c9 31 f6 31 ff 45 31 c0 45 31 c9 45 31 d2 45 31
> >> > RSP: 0018:ffffb2c5c211fa30 EFLAGS: 00010206
> >> > RAX: ffffffffffffffff RBX: 0000000000000000 RCX: 0000000000f59b00
> >> > RDX: 0000000000000000 RSI: 0000000000000000 RDI:
> >> 0000000000000000
> >> > RBP: ffffb2c5c211fa48 R08: 0000000000000001 R09:
> >> 0000000000000020
> >> > R10: 0000000000000004 R11: 0000000000000000 R12:
> >> 0000000000023b4a
> >> > R13: ffff91d37d165800 R14: ffff91d36fac6d80 R15: ffff91d34a764010
> >> > FS: 00007f4a1ca3fa80(0000) GS:ffff91d6edbc0000(0000)
> >> > knlGS:0000000000000000
> >> > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> >> > CR2: 0000559491d49000 CR3: 000000011d180002 CR4:
> >> 00000000003706f0
> >> > Call Trace:
> >> > <TASK>
> >> > ? show_regs+0x6d/0x80
> >> > ? die+0x37/0xa0
> >> > ? do_trap+0xd4/0xf0
> >> > ? do_error_trap+0x71/0xb0
> >> > ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> >> > ? exc_divide_error+0x3a/0x70
> >> > ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> >> > ? asm_exc_divide_error+0x1b/0x20
> >> > ? drm_dp_bw_overhead+0xb4/0x110 [drm_display_helper]
> >> > ? drm_dp_calc_pbn_mode+0x2e/0x70 [drm_display_helper]
> >> > nv50_msto_atomic_check+0xda/0x120 [nouveau]
> >> > drm_atomic_helper_check_modeset+0xa87/0xdf0 [drm_kms_helper]
> >> > drm_atomic_helper_check+0x19/0xa0 [drm_kms_helper]
> >> > nv50_disp_atomic_check+0x13f/0x2f0 [nouveau]
> >> > drm_atomic_check_only+0x668/0xb20 [drm]
> >> > ? drm_connector_list_iter_next+0x86/0xc0 [drm]
> >> > drm_atomic_commit+0x58/0xd0 [drm]
> >> > ? __pfx___drm_printfn_info+0x10/0x10 [drm]
> >> > drm_atomic_connector_commit_dpms+0xd7/0x100 [drm]
> >> > drm_mode_obj_set_property_ioctl+0x1c5/0x450 [drm]
> >> > ? __pfx_drm_connector_property_set_ioctl+0x10/0x10 [drm]
> >> > drm_connector_property_set_ioctl+0x3b/0x60 [drm]
> >> > drm_ioctl_kernel+0xb9/0x120 [drm]
> >> > drm_ioctl+0x2d0/0x550 [drm]
> >> > ? __pfx_drm_connector_property_set_ioctl+0x10/0x10 [drm]
> >> > nouveau_drm_ioctl+0x61/0xc0 [nouveau]
> >> > __x64_sys_ioctl+0xa0/0xf0
> >> > do_syscall_64+0x76/0x140
> >> > ? do_syscall_64+0x85/0x140
> >> > ? do_syscall_64+0x85/0x140
> >> > entry_SYSCALL_64_after_hwframe+0x6e/0x76
> >> > RIP: 0033:0x7f4a1cd1a94f
> >> > Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00
> >> > 48
> >> > 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41>
> >> > 89
> >> > c0 3d 00 f0 ff ff 77 1f 48 8b 44 24 18 64 48 2b 04 25 28 00
> >> > RSP: 002b:00007ffd2f1df520 EFLAGS: 00000246 ORIG_RAX:
> >> > 0000000000000010
> >> > RAX: ffffffffffffffda RBX: 00007ffd2f1df5b0 RCX: 00007f4a1cd1a94f
> >> > RDX: 00007ffd2f1df5b0 RSI: 00000000c01064ab RDI:
> 000000000000000f
> >> > RBP: 00000000c01064ab R08: 000056347932deb8 R09:
> >> 000056347a7d99c0
> >> > R10: 0000000000000000 R11: 0000000000000246 R12:
> >> 000056347938a220
> >> > R13: 000000000000000f R14: 0000563479d9f3f0 R15:
> >> 0000000000000000
> >> > </TASK>
> >> > Modules linked in: rfcomm xt_conntrack nft_chain_nat xt_MASQUERADE
> >> nf_nat nf_conntrack_netlink nf_conntrack nf_defrag_ipv6
> >> nf_defrag_ipv4 xfrm_user xfrm_algo xt_addrtype nft_compat nf_tables
> >> nfnetlink br_netfilter bridge stp llc ccm cmac algif_hash overlay
> >> algif_skcipher af_alg bnep binfmt_misc snd_sof_pci_intel_cnl
> >> snd_sof_intel_hda_common snd_soc_hdac_hda snd_sof_pci
> >> snd_sof_xtensa_dsp snd_sof_intel_hda snd_sof snd_sof_utils
> >> snd_soc_acpi_intel_match snd_soc_acpi snd_soc_core snd_compress
> >> snd_sof_intel_hda_mlink snd_hda_ext_core iwlmvm intel_rapl_msr
> >> intel_rapl_common intel_tcc_cooling x86_pkg_temp_thermal
> >> intel_powerclamp mac80211 coretemp kvm_intel snd_hda_codec_hdmi
> kvm
> >> snd_hda_codec_realtek snd_hda_codec_generic uvcvideo libarc4
> >> snd_hda_intel snd_intel_dspcfg snd_hda_codec iwlwifi
> >> videobuf2_vmalloc videobuf2_memops uvc irqbypass btusb
> videobuf2_v4l2
> >> snd_seq_midi crct10dif_pclmul hid_multitouch crc32_pclmul
> >> snd_seq_midi_event btrtl snd_hwdep videodev polyval_clmulni
> >> polyval_generic snd_rawmidi
> >> > ghash_clmulni_intel aesni_intel btintel crypto_simd snd_hda_core
> >> > cryptd snd_seq btbcm ee1004 8250_dw videobuf2_common btmtk rapl
> >> > nls_iso8859_1 mei_hdcp thunderbolt bluetooth intel_cstate wmi_bmof
> >> > intel_wmi_thunderbolt cfg80211 snd_pcm mc snd_seq_device i2c_i801
> >> > r8169 ecdh_generic snd_timer i2c_smbus ecc snd mei_me
> >> > intel_lpss_pci mei ahci intel_lpss soundcore realtek libahci idma64
> >> > intel_pch_thermal i2c_hid_acpi i2c_hid acpi_pad sch_fq_codel msr
> >> > parport_pc ppdev lp parport efi_pstore ip_tables x_tables autofs4
> >> > dm_crypt raid10 raid456 libcrc32c async_raid6_recov async_memcpy
> >> > async_pq async_xor xor async_tx raid6_pq raid1 raid0 joydev
> >> > input_leds hid_generic usbhid hid nouveau i915 drm_ttm_helper
> >> > gpu_sched drm_gpuvm drm_exec
> >> i2c_algo_bit
> >> > drm_buddy ttm drm_display_helper drm_kms_helper cec rc_core drm
> >> > nvme nvme_core mxm_wmi xhci_pci xhci_pci_renesas video wmi
> >> > pinctrl_cannonlake mac_hid ---[ end trace 0000000000000000 ]---
> >> >
> >> > Fix this by avoiding the divide if bpp is 0.
> >> >
> >> > Fixes: c1d6a22b7219 ("drm/dp: Add helpers to calculate the link BW
> >> > overhead")
> >> > Signed-off-by: Chris Bainbridge <chris.bainbridge@gmail.com>
> >> > ---
> >> > drivers/gpu/drm/display/drm_dp_helper.c | 3 +++
> >> > 1 file changed, 3 insertions(+)
> >> >
> >> > diff --git a/drivers/gpu/drm/display/drm_dp_helper.c
> >> > b/drivers/gpu/drm/display/drm_dp_helper.c
> >> > index b1ca3a1100da..bb8794c8f99c 100644
> >> > --- a/drivers/gpu/drm/display/drm_dp_helper.c
> >> > +++ b/drivers/gpu/drm/display/drm_dp_helper.c
> >> > @@ -4024,6 +4024,9 @@ int drm_dp_bw_overhead(int lane_count, int
> >> hactive,
> >> > bpp_x16,
> >> symbol_size,
> >> > is_mst);
> >> >
> >> > + /* Avoid potential divide by zero in DIV_ROUND_UP_ULL */
> >> > + if (bpp_x16 == 0)
> >> > + return 0;
> >> > return DIV_ROUND_UP_ULL(mul_u32_u32(symbol_cycles *
> >> symbol_size * lane_count,
> >> > overhead * 16),
> >> > hactive * bpp_x16);
> >>
> >> P. P.S.:
> >>
> >> #regzbot duplicate:
> >> https://lore.kernel.org/all/ZcfpqwnkSoiJxeT9@debian.local/
> >> #regzbot poke
>
> --
> Jani Nikula, Intel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-03-11 16:05 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-07 17:58 [REGRESSION] Divide-by-zero on DisplayPort MST unplug with nouveau Chris Bainbridge
2024-03-07 18:14 ` Chris Bainbridge
2024-03-11 15:53 ` Linux regression tracking (Thorsten Leemhuis)
2024-03-11 15:58 ` Saarinen, Jani
2024-03-11 16:02 ` Jani Nikula
2024-03-11 16:05 ` Saarinen, Jani
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.