Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3461016pxb; Mon, 25 Jan 2021 17:32:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJyUKxmb7JlExDJ1Co1k/0jvyWsPkmfkA3s5XK7CZiNWy45rRBMWr1Qlms3hCV5qVK7pstX1 X-Received: by 2002:a50:b742:: with SMTP id g60mr2630827ede.113.1611624739561; Mon, 25 Jan 2021 17:32:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611624739; cv=none; d=google.com; s=arc-20160816; b=NIaOlO+l9T6bMvdi904XyQ95cVmxCxpvPZvIlWDrAUzgAqP6StUmtzb1I4wO83WaM0 CAkTbgVazL4VPUo27tK1q5hICuRP9Wkdi4YU+nvzpyuPBRxG3A/wJhoENALokvT0AsHo kxqBPxo8HRZrww6f9pYIq+rRI84FTeOrSChrgFSFjXtnk5r56IhzjP//7xldwJR0xVa8 ZVd0ULd134+z+BZ78WrpT620KdLLneN6IFEbhyis8wb6aMdV72zh3o33p1ai/73Nwph2 Hqyfxh2W+lPlhRkrjQzAbpN1t6gx9aJM4woAEv1y15laQIthSYJRM08wI/ZvSNSqihuu /6QQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=L/BnAJb7WVLWY41kARNlccDvg/IuYYtF963q1CTYHTg=; b=N4aMaqWyoM+XJ+R4U7DSrelLo+8s7FhRU+F9Z40PrLuxsggpz7e4V7igRMkCiC/n55 be/8ybR+LM3jW0PHP87c8vINwHpnt3tO0av5COeZJHwmW6PdRib1RvlZHu0mM4U/8/80 rOfb7oqnhbk9OBskGDYGjPgj6rNi3BWO7cKK/JrqCJkfaVdbaei2nuCvIhSjFWT7csHd 5dy8jnucCqwpnJy3xw/A59FzhhJw3lXeRJFbV/E/R0GomtMlHxxnvcg+RvLVqiadiNGg lpIPvLS2thBpzDcYcMr84tuBfulKyMXyoQqssCR/5k4eyLghAH7DcHXsX8Je31MF7WR/ SqOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Ip1QXuQs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g5si8462509edj.194.2021.01.25.17.31.55; Mon, 25 Jan 2021 17:32:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Ip1QXuQs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728919AbhAYNgV (ORCPT + 99 others); Mon, 25 Jan 2021 08:36:21 -0500 Received: from mail.kernel.org ([198.145.29.99]:46570 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728941AbhAYNeF (ORCPT ); Mon, 25 Jan 2021 08:34:05 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3C9B122AEC; Mon, 25 Jan 2021 11:40:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1611574818; bh=imRMguePrRlh4uW9e4XxMGfsGUxkK+bwXiHzZqO3Lfk=; h=From:To:Cc:Subject:Date:From; b=Ip1QXuQsU9uUE/EF4n+BVfUEq61Zdw8/dP3khpaYi4AUlj1yREcXD4ZVqVlDTu+5T r0DaS5VV6QN5VPKZV2efZHtJbaFEj8lRcEEpZwXV/P5T9SnYXa4kkPCE8NDIVsQFrF 6xCt1WXIY4ODEzX+ji14hKUArR2coftxRwlB7iKH+BnVXwMJu27EynYyb/8pL4anA3 h9MzorSjudFf9Me4W82DINBpwapQuffCJ/Kxhgoe2Bjb2wLKk8zpyATWUSq8yPjmMZ H0pVYl2EL0CaHP9Ku4f4+r+UiAy1YvL1CWmIvKCvccTLN8nnCQ/f+DmYyJZlB36PEy OC11OOTu8R7fQ== From: Arnd Bergmann To: Harry Wentland , Leo Li , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , David Airlie , Daniel Vetter , Joshua Aberback , Bhawanpreet Lakha , Nicholas Kazlauskas Cc: Arnd Bergmann , Qingqing Zhuo , Rodrigo Siqueira , Wesley Chalmers , Jacky Liao , Martin Leung , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/amd/display: use div_s64() for 64-bit division Date: Mon, 25 Jan 2021 12:39:55 +0100 Message-Id: <20210125114012.2480845-1-arnd@kernel.org> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arnd Bergmann The open-coded 64-bit division causes a link error on 32-bit machines: ERROR: modpost: "__udivdi3" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined! ERROR: modpost: "__divdi3" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined! Use the div_s64() to perform the division here. One of them was an unsigned division originally, but it looks like signed division was intended, so use that to consistently allow a negative delay. Fixes: ea7154d8d9fb ("drm/amd/display: Update dcn30_apply_idle_power_optimizations() code") Signed-off-by: Arnd Bergmann --- drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c index dff83c6a142a..a133e399e76d 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c +++ b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c @@ -772,8 +772,8 @@ bool dcn30_apply_idle_power_optimizations(struct dc *dc, bool enable) cursor_cache_enable ? &cursor_attr : NULL)) { unsigned int v_total = stream->adjust.v_total_max ? stream->adjust.v_total_max : stream->timing.v_total; - unsigned int refresh_hz = (unsigned long long) stream->timing.pix_clk_100hz * - 100LL / (v_total * stream->timing.h_total); + unsigned int refresh_hz = div_s64((unsigned long long) stream->timing.pix_clk_100hz * + 100LL, v_total * stream->timing.h_total); /* * one frame time in microsec: @@ -800,8 +800,8 @@ bool dcn30_apply_idle_power_optimizations(struct dc *dc, bool enable) unsigned int denom = refresh_hz * 6528; unsigned int stutter_period = dc->current_state->perf_params.stutter_period_us; - tmr_delay = (((1000000LL + 2 * stutter_period * refresh_hz) * - (100LL + dc->debug.mall_additional_timer_percent) + denom - 1) / + tmr_delay = div_s64(((1000000LL + 2 * stutter_period * refresh_hz) * + (100LL + dc->debug.mall_additional_timer_percent) + denom - 1), denom) - 64LL; /* scale should be increased until it fits into 6 bits */ @@ -815,8 +815,8 @@ bool dcn30_apply_idle_power_optimizations(struct dc *dc, bool enable) } denom *= 2; - tmr_delay = (((1000000LL + 2 * stutter_period * refresh_hz) * - (100LL + dc->debug.mall_additional_timer_percent) + denom - 1) / + tmr_delay = div_s64(((1000000LL + 2 * stutter_period * refresh_hz) * + (100LL + dc->debug.mall_additional_timer_percent) + denom - 1), denom) - 64LL; } -- 2.29.2