Commit 7276878b authored by Harish Chegondi's avatar Harish Chegondi Committed by Lucas De Marchi
Browse files

drm/xe: Fix conversion from clock ticks to milliseconds



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: default avatarHarish Chegondi <harish.chegondi@intel.com>
Suggested-by: default avatarUmesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Fixes: 49cc215a ("drm/xe: Add xe_gt_clock_interval_to_ms helper")
Reviewed-by: default avatarAshutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: default avatarAshutosh Dixit <ashutosh.dixit@intel.com>
Link: https://patch.msgid.link/1562f1b62d5be3fbaee100f09107f3cc49e40dd1.1763408584.git.harish.chegondi@intel.com


(cherry picked from commit 96b93ac2)
Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
parent 0e234632
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -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);
}