mirror of https://github.com/torvalds/linux.git
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: Harish Chegondi <harish.chegondi@intel.com>
Suggested-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Fixes: 49cc215aad ("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>
This commit is contained in:
parent
0e234632e3
commit
7276878b06
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue