drm/i915: Fix gtt_view asserts
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 28 Aug 2018 13:37:23 +0000 (16:37 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 28 Aug 2018 15:49:33 +0000 (18:49 +0300)
gcc is too smart for us and doesn't evaluate BUILD_BUG_ON()s in
unused static inlines. Collect them up in one static inline and
actually call it to make sure gcc sees it.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180828133723.18505-1-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_gem_gtt.h
drivers/gpu/drm/i915/i915_vma.h

index dd161c187a68b10d1027cb5f523a171d43567437..01d83a9431426a0f3a7e527b792fc63108147e75 100644 (file)
@@ -167,29 +167,22 @@ struct intel_rotation_info {
        } plane[2];
 } __packed;
 
-static inline void assert_intel_rotation_info_is_packed(void)
-{
-       BUILD_BUG_ON(sizeof(struct intel_rotation_info) != 8*sizeof(unsigned int));
-}
-
 struct intel_partial_info {
        u64 offset;
        unsigned int size;
 } __packed;
 
-static inline void assert_intel_partial_info_is_packed(void)
-{
-       BUILD_BUG_ON(sizeof(struct intel_partial_info) != sizeof(u64) + sizeof(unsigned int));
-}
-
 enum i915_ggtt_view_type {
        I915_GGTT_VIEW_NORMAL = 0,
        I915_GGTT_VIEW_ROTATED = sizeof(struct intel_rotation_info),
        I915_GGTT_VIEW_PARTIAL = sizeof(struct intel_partial_info),
 };
 
-static inline void assert_i915_ggtt_view_type_is_unique(void)
+static inline void assert_i915_gem_gtt_types(void)
 {
+       BUILD_BUG_ON(sizeof(struct intel_rotation_info) != 8*sizeof(unsigned int));
+       BUILD_BUG_ON(sizeof(struct intel_partial_info) != sizeof(u64) + sizeof(unsigned int));
+
        /* As we encode the size of each branch inside the union into its type,
         * we have to be careful that each branch has a unique size.
         */
index f1ba40bbe6f9931eb53160fbd4b712c773809909..4f7c1c7599f43c3590c99b3b8e122d87c4cc8030 100644 (file)
@@ -251,6 +251,8 @@ i915_vma_compare(struct i915_vma *vma,
        if (cmp)
                return cmp;
 
+       assert_i915_gem_gtt_types();
+
        /* ggtt_view.type also encodes its size so that we both distinguish
         * different views using it as a "type" and also use a compact (no
         * accessing of uninitialised padding bytes) memcmp without storing