From nobody Wed Jun 17 01:42:26 2026 Received: from forward206a.mail.yandex.net (forward206a.mail.yandex.net [178.154.239.87]) (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 A8D4F37C114; Tue, 28 Apr 2026 19:11:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.154.239.87 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777403516; cv=none; b=EJfpOAVDYXKeQhSxhqF7jCx8bFzPdOz/wraG35+4rDg2HTyjP7sBpkZWcLWg3Yjl7qP8bx8HEj4Mp+SUMXhcWA9PPqQ2i6cHlOcT/y+FD6If2XTW5qrG5QSpfmqiDjAyQXr+ehA6+topfTaAJsxWpYjWk0PzjWVlvLDRqe1OTkw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777403516; c=relaxed/simple; bh=tzeN+5vQKmJfzBrB9+yS40yGju5ExPsoV+j0FcDO09o=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=MLzcQNR3TIMbXs7kpN5ZXTGYQw5zazi+34f4xH5LVh1/uBdsYMssjfnUZJWsvx3riE0/AkAYq8L8BjXUdsvyI4GTEHu/1Dh0waCaHdHhiUCDZ/0PYqIAqqN9N55974pl/BjhiqP9bhu1jp/XplFT3coYvZE4dTkJ7u7WGEgsGLo= 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=aNrmgChc; arc=none smtp.client-ip=178.154.239.87 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="aNrmgChc" Received: from forward103a.mail.yandex.net (forward103a.mail.yandex.net [IPv6:2a02:6b8:c0e:500:1:45:d181:d103]) by forward206a.mail.yandex.net (Yandex) with ESMTPS id C9AB186B33; Tue, 28 Apr 2026 22:04:10 +0300 (MSK) Received: from mail-nwsmtp-smtp-production-main-68.vla.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-68.vla.yp-c.yandex.net [IPv6:2a02:6b8:c1d:6281:0:640:c935:0]) by forward103a.mail.yandex.net (Yandex) with ESMTPS id 52E1F806AD; Tue, 28 Apr 2026 22:04:02 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-68.vla.yp-c.yandex.net (smtp) with ESMTPSA id i3f98gObjmI0-kMIkEECX; Tue, 28 Apr 2026 22:04:01 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1777403041; bh=tr9ncHDLQsp/htwG5JIQTALMzIL3/WgOspiEBUJqEko=; h=Message-ID:Date:Cc:Subject:To:From; b=aNrmgChc8Uj4xd9AlRNV1rVyvXv1Hfj3u7RQtuXI6XNxd+/rZZ1L8vTcz1MPo4b+U cvOBt3o6gp8fam6uxhWXtahexc2YMgVue1Rg4ewLQRSFlwO0MbiEHYuSHHTDfgkDJU MmPzkwJv8XBbR0r9rUou8K1BsQfy0C9webtLwmG4= Authentication-Results: mail-nwsmtp-smtp-production-main-68.vla.yp-c.yandex.net; dkim=pass header.i=@yandex.ru From: Evgenii Burenchev To: stable@vger.kernel.org, Greg Kroah-Hartman Cc: Evgenii Burenchev , 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: Tue, 28 Apr 2026 22:03:18 +0300 Message-ID: <20260428190318.34413-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. Signed-off-by: Evgenii Burenchev --- drivers/gpu/drm/radeon/rs780_dpm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/radeon/rs780_dpm.c b/drivers/gpu/drm/radeon/rs= 780_dpm.c index 64bb4cafb8b5..fe45b7dac9f4 100644 --- a/drivers/gpu/drm/radeon/rs780_dpm.c +++ b/drivers/gpu/drm/radeon/rs780_dpm.c @@ -65,6 +65,8 @@ static void rs780_get_pm_mode_parameters(struct radeon_de= vice *rdev) pi->crtc_id =3D radeon_crtc->crtc_id; 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 +365,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); --=20 2.43.0