From: Hayden Goodfellow <hayden.goodfel...@amd.com>

[Why]
Currently, the 32bit linux build is failing due to an issue with using the
built-in / operator with a 64bit dividend. Doing so generates code which
calls __udivdi3() in libgcc. However, libgcc is not linked with the kernel
at this point in the build, hence this causes the 32bit build to fail to
compile.

[How]
Change the / operator to div_u64 instead.

Reviewed-by: Aric Cyr <aric....@amd.com>
Acked-by: Pavle Kotarac <pavle.kota...@amd.com>
Signed-off-by: Hayden Goodfellow <hayden.goodfel...@amd.com>
---
 drivers/gpu/drm/amd/display/modules/freesync/freesync.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c 
b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
index c1d540f017a8..03fa63d56fa6 100644
--- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
+++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
@@ -1242,7 +1242,7 @@ void mod_freesync_handle_v_update(struct mod_freesync 
*mod_freesync,
 
        cur_tick = dm_get_timestamp(core_freesync->dc->ctx);
        cur_timestamp_in_us = (unsigned int)
-                       (dm_get_elapse_time_in_ns(core_freesync->dc->ctx, 
cur_tick, 0)/1000);
+                       
div_u64(dm_get_elapse_time_in_ns(core_freesync->dc->ctx, cur_tick, 0), 1000);
 
        in_out_vrr->flip_interval.vsyncs_between_flip++;
        in_out_vrr->flip_interval.v_update_timestamp_in_us = 
cur_timestamp_in_us;
-- 
2.32.0

Reply via email to