Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24603935 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915/perf: Wrap 64bit divides in do_div()



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: default avatarkbuild test robot <fengguang.wu@intel.com>
Fixes: d7965152 ("drm/i915: Enable i915 perf stream for Haswell OA unit")
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Robert Bragg <robert@sixbynine.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20161123150714.24449-1-chris@chris-wilson.co.uk


Reviewed-by: default avatarRobert Bragg <robert@sixbynine.org>
parent 49d73912
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -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) {