All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
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
Date: Mon, 11 Mar 2024 18:02:38 +0200	[thread overview]
Message-ID: <87v85ssqn5.fsf@intel.com> (raw)
In-Reply-To: <DM8PR11MB56555E5992E299F1EA4BEE98E0242@DM8PR11MB5655.namprd11.prod.outlook.com>

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

  reply	other threads:[~2024-03-11 16:02 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
2024-03-11 16:05       ` Saarinen, Jani

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87v85ssqn5.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=airlied@linux.ie \
    --cc=chris.bainbridge@gmail.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.saarinen@intel.com \
    --cc=regressions@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.