[Intel-gfx] [PATCH v3] drm/i915/perf: Wrap 64bit divides in do_div()
Robert Bragg
robert at sixbynine.org
Tue Nov 29 10:29:34 UTC 2016
On Wed, Nov 23, 2016 at 3:07 PM, Chris Wilson <chris at chris-wilson.co.uk>
wrote:
> Just a couple of naked 64bit divides causing link errors on 32bit
> builds, with:
>
> ERROR: "__udivdi3" [drivers/gpu/drm/i915/i915.ko] undefined!
>
> v2: do_div() is only u64/u32, we need a u32/u64!
> v3: div_u64() == u64/u32, div64_u64() == u64/u64
>
> Reported-by: kbuild test robot <fengguang.wu at intel.com>
> Fixes: d79651522e89 ("drm/i915: Enable i915 perf stream for Haswell OA
> unit")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Robert Bragg <robert at sixbynine.org>
> ---
> drivers/gpu/drm/i915/i915_perf.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_
> perf.c
> index 95512824922b..14de9a4eee27 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -974,8 +974,8 @@ static void i915_oa_stream_disable(struct
> i915_perf_stream *stream)
>
> static u64 oa_exponent_to_ns(struct drm_i915_private *dev_priv, int
> exponent)
> {
> - return 1000000000ULL * (2ULL << exponent) /
> - dev_priv->perf.oa.timestamp_frequency;
> + return div_u64(1000000000ULL * (2ULL << exponent),
> + dev_priv->perf.oa.timestamp_frequency);
> }
>
> static const struct i915_perf_stream_ops i915_oa_stream_ops = {
> @@ -1051,16 +1051,17 @@ static int i915_oa_stream_init(struct
> i915_perf_stream *stream,
>
> dev_priv->perf.oa.periodic = props->oa_periodic;
> if (dev_priv->perf.oa.periodic) {
> - u64 period_ns = oa_exponent_to_ns(dev_priv,
> -
> props->oa_period_exponent);
> + u32 tail;
>
> dev_priv->perf.oa.period_exponent =
> props->oa_period_exponent;
>
> /* See comment for OA_TAIL_MARGIN_NSEC for details
> * about this tail_margin...
> */
> - dev_priv->perf.oa.tail_margin =
> - ((OA_TAIL_MARGIN_NSEC / period_ns) + 1) *
> format_size;
> + tail = div64_u64(OA_TAIL_MARGIN_NSEC,
> + oa_exponent_to_ns(dev_priv,
> +
> props->oa_period_exponent));
> + dev_priv->perf.oa.tail_margin = (tail + 1) * format_size;
> }
>
> if (stream->ctx) {
> --
> 2.10.2
>
>
This looks good to me, thanks.
Reviewed-by: Robert Bragg <robert at sixbynine.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx/attachments/20161129/4de7bc11/attachment.html>
More information about the Intel-gfx
mailing list