From nobody Tue Jun 16 17:02:29 2026 Received: from forward103b.mail.yandex.net (forward103b.mail.yandex.net [178.154.239.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9168027281D; Thu, 30 Apr 2026 10:47:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.154.239.150 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777546037; cv=none; b=uQa8o61bnK025haGz4/gBIG9nRDtTZvQYbZB/dWXHOQSaEjoSTlFiDmAccOepw6CURHkatv3rumScp8iDBYar5BDtMwZslTG5AStIArKSRjSIspBlfl3QlXQk5FWpXAI1+wNQSD7UQ9oE/a+gcUA1Aw1sGrhNaENGnbjQPV0R6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777546037; c=relaxed/simple; bh=h8hYeYKqiYnxee1+Bomfx4Bc50aDkLo2wPAk9eb4Nc8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=YsRzYphCBdFN1OynulfsRxUzVQczGEdYmh/ok4IFz5YGhXWJ3ijbiNKkhQzvUvvm7I0+3BpqW1kR65ng0VihWY3qVXBV0tPShFBII9E3UINfJd+Wfet8BFcn/y/Zr0ZjIThZ7HuUw1B7urYB8Grj12Cux3vCTQ6kxrXYZ2gA+9A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=yandex.ru; spf=pass smtp.mailfrom=yandex.ru; dkim=pass (1024-bit key) header.d=yandex.ru header.i=@yandex.ru header.b=SyR31FxA; arc=none smtp.client-ip=178.154.239.150 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=yandex.ru Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=yandex.ru Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=yandex.ru header.i=@yandex.ru header.b="SyR31FxA" Received: from mail-nwsmtp-smtp-production-main-98.sas.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-98.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:1ba8:0:640:1638:0]) by forward103b.mail.yandex.net (Yandex) with ESMTPS id 3A5B4C00A6; Thu, 30 Apr 2026 13:47:06 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-98.sas.yp-c.yandex.net (smtp) with ESMTPSA id jkYvs17QISw0-3jKAYhKh; Thu, 30 Apr 2026 13:47:05 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1777546025; bh=XK8fhHHhN8C7AZWTsdc+3Jx084S2B5DKpyixkH26TpE=; h=Message-ID:Date:Cc:Subject:To:From; b=SyR31FxAyv/4EHWsum+z02yw7yCr13aMdUa9TPXrbuHbygNGTdp6QrzMqTd8we5Mu SUe4CaILLmNu7I6IUPW0A27wzCxLK6xVASWklcIoiZOOk0HbER7JBLO/Nbmiw2isFI RKWYA3FObdjqE/vUnnJIo+edKMFKc72ATemCjjeE= Authentication-Results: mail-nwsmtp-smtp-production-main-98.sas.yp-c.yandex.net; dkim=pass header.i=@yandex.ru From: Evgenii Burenchev To: stable@vger.kernel.org, Greg Kroah-Hartman Cc: Evgenii Burenchev , kernel test robot , alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/radeon/rs780: prevent division by zero in refresh rate calculation Date: Thu, 30 Apr 2026 13:46:25 +0300 Message-ID: <20260430104626.16230-1-evg28bur@yandex.ru> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" drm_mode_vrefresh() may return zero when mode clock is zero even if htotal and vtotal are non-zero. Current code checks only htotal and vtotal, allowing refresh_rate to become zero and subsequently causing division by zero in rs780_program_at(). Fix by adding mode clock validation and fallback to default 60Hz in rs780_get_pm_mode_parameters(). Add WARN_ON in rs780_program_at() to catch such cases during development, ensuring safe fallback in all scenarios. Found by Linux Verification Center (linuxtesting.org) with SVACE. Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202604300508.yXci8rey-lkp@int= el.com/ Signed-off-by: Evgenii Burenchev --- drivers/gpu/drm/radeon/rs780_dpm.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/radeon/rs780_dpm.c b/drivers/gpu/drm/radeon/rs= 780_dpm.c index 64bb4cafb8b5..8713f3fd6268 100644 --- a/drivers/gpu/drm/radeon/rs780_dpm.c +++ b/drivers/gpu/drm/radeon/rs780_dpm.c @@ -63,8 +63,11 @@ static void rs780_get_pm_mode_parameters(struct radeon_d= evice *rdev) if (crtc && crtc->enabled) { radeon_crtc =3D to_radeon_crtc(crtc); pi->crtc_id =3D radeon_crtc->crtc_id; - if (crtc->mode.htotal && crtc->mode.vtotal) + if (crtc->mode.htotal && crtc->mode.vtotal) { pi->refresh_rate =3D drm_mode_vrefresh(&crtc->mode); + if (pi->refresh_rate =3D=3D 0) + pi->refresh_rate =3D 60; + } break; } } @@ -363,6 +366,8 @@ static void rs780_program_at(struct radeon_device *rdev) { struct igp_power_info *pi =3D rs780_get_pi(rdev); =20 + WARN_ON(pi->refresh_rate =3D=3D 0); + WREG32(FVTHROT_TARGET_REG, 30000000 / pi->refresh_rate); WREG32(FVTHROT_CB1, 1000000 * 5 / pi->refresh_rate); WREG32(FVTHROT_CB2, 1000000 * 10 / pi->refresh_rate); base-commit: a5640267d6d35b89ebe6418da90a952a247215a5 --=20 2.43.0