On Thu, 23 Nov 2017 18:42:13 +0100, Chris Wilson
<chris@xxxxxxxxxxxxxxxxxx> wrote:
We pretend the PMU config id is a pointer value when encoding it into
the device parameters for presentation via sysfs. This requires casting
of an unsigned long into and out of the pointer member, which annoys
smatch:
drivers/gpu/drm/i915/i915_pmu.c:684 i915_pmu_event_show() warn: argument
3 to %lx specifier is cast from pointer
Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
---
drivers/gpu/drm/i915/i915_pmu.c | 2 +-
drivers/gpu/drm/i915/i915_utils.h | 5 +++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/i915_pmu.c
b/drivers/gpu/drm/i915/i915_pmu.c
index 6a42e7f7967d..a8816d25a77b 100644
--- a/drivers/gpu/drm/i915/i915_pmu.c
+++ b/drivers/gpu/drm/i915/i915_pmu.c
@@ -681,7 +681,7 @@ static ssize_t i915_pmu_event_show(struct device
*dev,
struct dev_ext_attribute *eattr;
eattr = container_of(attr, struct dev_ext_attribute, attr);
- return sprintf(buf, "config=0x%lx\n", (unsigned long)eattr->var);
+ return sprintf(buf, "config=0x%lx\n", ptr_to_ulong(eattr->var));
Hmm, can't we just use %p here ?
return sprintf(buf, "config=%p\n", eattr->var);
}
#define I915_EVENT_ATTR(_name, _config) \
diff --git a/drivers/gpu/drm/i915/i915_utils.h
b/drivers/gpu/drm/i915/i915_utils.h
index 8d07764887ec..2595fbf6451f 100644
--- a/drivers/gpu/drm/i915/i915_utils.h
+++ b/drivers/gpu/drm/i915/i915_utils.h
@@ -107,6 +107,11 @@ static inline u64 ptr_to_u64(const void *ptr)
return (uintptr_t)ptr;
}
+static inline unsigned long ptr_to_ulong(const void *ptr)
+{
+ return ptr_to_u64(ptr);
+}
+
#define u64_to_ptr(T, x) ({ \
typecheck(u64, x); \
(T *)(uintptr_t)(x); \
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx