]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe: Fix conversion from clock ticks to milliseconds
authorHarish Chegondi <harish.chegondi@intel.com>
Mon, 17 Nov 2025 19:48:43 +0000 (11:48 -0800)
committerLucas De Marchi <lucas.demarchi@intel.com>
Tue, 25 Nov 2025 19:53:34 +0000 (11:53 -0800)
When tick counts are large and multiplication by MSEC_PER_SEC is larger
than 64 bits, the conversion from clock ticks to milliseconds can go bad.

Use mul_u64_u32_div() instead.

Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Harish Chegondi <harish.chegondi@intel.com>
Suggested-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Fixes: 49cc215aad7f ("drm/xe: Add xe_gt_clock_interval_to_ms helper")
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Link: https://patch.msgid.link/1562f1b62d5be3fbaee100f09107f3cc49e40dd1.1763408584.git.harish.chegondi@intel.com
(cherry picked from commit 96b93ac214f9dd66294d975d86c5dee256faef91)
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/xe/xe_gt_clock.c

index 4f011d1573c65979b9058686d9346b90364f526e..f65d1edd05671bb43c02d55f12a8ca22fc4288fc 100644 (file)
@@ -93,11 +93,6 @@ int xe_gt_clock_init(struct xe_gt *gt)
        return 0;
 }
 
-static u64 div_u64_roundup(u64 n, u32 d)
-{
-       return div_u64(n + d - 1, d);
-}
-
 /**
  * xe_gt_clock_interval_to_ms - Convert sampled GT clock ticks to msec
  *
@@ -108,5 +103,5 @@ static u64 div_u64_roundup(u64 n, u32 d)
  */
 u64 xe_gt_clock_interval_to_ms(struct xe_gt *gt, u64 count)
 {
-       return div_u64_roundup(count * MSEC_PER_SEC, gt->info.reference_clock);
+       return mul_u64_u32_div(count, MSEC_PER_SEC, gt->info.reference_clock);
 }