* [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.