drm/i915: split gem quirks from display quirks
authorJani Nikula <jani.nikula@intel.com>
Wed, 24 Aug 2022 13:15:59 +0000 (16:15 +0300)
committerJani Nikula <jani.nikula@intel.com>
Mon, 29 Aug 2022 11:31:53 +0000 (14:31 +0300)
The lone gem quirk is an outlier, not even handled by the common quirk
code. Split it to a separate gem_quirks member.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/fe9c0cb1e49da0ddc31d24c996af5fd09bce3042.1661346845.git.jani.nikula@intel.com
drivers/gpu/drm/i915/gem/i915_gem_pages.c
drivers/gpu/drm/i915/gem/i915_gem_tiling.c
drivers/gpu/drm/i915/gem/selftests/i915_gem_client_blt.c
drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c

index 0325ffa54e37d4aa644b2eea71d31ced03c3eceb..8df8ae0e1dea48233ed7403477491d8211f1c7e1 100644 (file)
@@ -65,7 +65,7 @@ void __i915_gem_object_set_pages(struct drm_i915_gem_object *obj,
        shrinkable = i915_gem_object_is_shrinkable(obj);
 
        if (i915_gem_object_is_tiled(obj) &&
-           i915->quirks & QUIRK_PIN_SWIZZLED_PAGES) {
+           i915->gem_quirks & GEM_QUIRK_PIN_SWIZZLED_PAGES) {
                GEM_BUG_ON(i915_gem_object_has_tiling_quirk(obj));
                i915_gem_object_set_tiling_quirk(obj);
                GEM_BUG_ON(!list_empty(&obj->mm.link));
index 85518b28cd721bd4086c616444f3e5ba32b3397f..fd42b89b7162b7e6e8210266ced13ba592da4920 100644 (file)
@@ -278,7 +278,7 @@ i915_gem_object_set_tiling(struct drm_i915_gem_object *obj,
         */
        if (i915_gem_object_has_pages(obj) &&
            obj->mm.madv == I915_MADV_WILLNEED &&
-           i915->quirks & QUIRK_PIN_SWIZZLED_PAGES) {
+           i915->gem_quirks & GEM_QUIRK_PIN_SWIZZLED_PAGES) {
                if (tiling == I915_TILING_NONE) {
                        GEM_BUG_ON(!i915_gem_object_has_tiling_quirk(obj));
                        i915_gem_object_clear_tiling_quirk(obj);
@@ -458,7 +458,7 @@ i915_gem_get_tiling_ioctl(struct drm_device *dev, void *data,
        }
 
        /* Hide bit 17 from the user -- see comment in i915_gem_set_tiling */
-       if (dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES)
+       if (dev_priv->gem_quirks & GEM_QUIRK_PIN_SWIZZLED_PAGES)
                args->phys_swizzle_mode = I915_BIT_6_SWIZZLE_UNKNOWN;
        else
                args->phys_swizzle_mode = args->swizzle_mode;
index 3cfc621ef363d2e097dc863b4941be578ff337e9..9a6a6b5b722b6015ea5b47c7ccc64ea6851047ef 100644 (file)
@@ -711,7 +711,7 @@ static bool bad_swizzling(struct drm_i915_private *i915)
 {
        struct i915_ggtt *ggtt = to_gt(i915)->ggtt;
 
-       if (i915->quirks & QUIRK_PIN_SWIZZLED_PAGES)
+       if (i915->gem_quirks & GEM_QUIRK_PIN_SWIZZLED_PAGES)
                return true;
 
        if (has_bit17_swizzle(ggtt->bit_6_swizzle_x) ||
index 3ced9948a331914f77c00d75645882990906e21f..25bb3bd4c3fead6a13d1c5e1d1859622ef12cbc3 100644 (file)
@@ -367,7 +367,7 @@ static int igt_partial_tiling(void *arg)
                unsigned int pitch;
                struct tile tile;
 
-               if (i915->quirks & QUIRK_PIN_SWIZZLED_PAGES)
+               if (i915->gem_quirks & GEM_QUIRK_PIN_SWIZZLED_PAGES)
                        /*
                         * The swizzling pattern is actually unknown as it
                         * varies based on physical address of each page.
@@ -464,7 +464,7 @@ static int igt_smoke_tiling(void *arg)
         * Remember to look at the st_seed if we see a flip-flop in BAT!
         */
 
-       if (i915->quirks & QUIRK_PIN_SWIZZLED_PAGES)
+       if (i915->gem_quirks & GEM_QUIRK_PIN_SWIZZLED_PAGES)
                return 0;
 
        obj = huge_gem_object(i915,
index 6ebda3d65086482fd394979e9afb195c41cf5571..cf4a326f5f481071c3de9961a44b3e2fb8266eb4 100644 (file)
@@ -727,7 +727,7 @@ static void detect_bit_6_swizzle(struct i915_ggtt *ggtt)
                 * bit17 dependent, and so we need to also prevent the pages
                 * from being moved.
                 */
-               i915->quirks |= QUIRK_PIN_SWIZZLED_PAGES;
+               i915->gem_quirks |= GEM_QUIRK_PIN_SWIZZLED_PAGES;
                swizzle_x = I915_BIT_6_SWIZZLE_NONE;
                swizzle_y = I915_BIT_6_SWIZZLE_NONE;
        }
index d131703de3d9f3af3ec7703047555857aa19e1ad..63fd18732db33f76cb916623fb31125d843e48c4 100644 (file)
@@ -410,7 +410,7 @@ static int i915_swizzle_info(struct seq_file *m, void *data)
        seq_printf(m, "bit6 swizzle for Y-tiling = %s\n",
                   swizzle_string(to_gt(dev_priv)->ggtt->bit_6_swizzle_y));
 
-       if (dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES)
+       if (dev_priv->gem_quirks & GEM_QUIRK_PIN_SWIZZLED_PAGES)
                seq_puts(m, "L-shaped memory detected\n");
 
        /* On BDW+, swizzling is not used. See detect_bit_6_swizzle() */
index d2961aca500f471bab272d3939b2ae9502b9eacf..f12f3aa3bc13a2d3e3076f75b4ded02742b23d2b 100644 (file)
@@ -107,10 +107,11 @@ struct sdvo_device_mapping {
 
 #define I915_COLOR_UNEVICTABLE (-1) /* a non-vma sharing the address space */
 
+#define GEM_QUIRK_PIN_SWIZZLED_PAGES   BIT(0)
+
 #define QUIRK_LVDS_SSC_DISABLE (1<<1)
 #define QUIRK_INVERT_BRIGHTNESS (1<<2)
 #define QUIRK_BACKLIGHT_PRESENT (1<<3)
-#define QUIRK_PIN_SWIZZLED_PAGES (1<<5)
 #define QUIRK_INCREASE_T12_DELAY (1<<6)
 #define QUIRK_INCREASE_DDI_DISABLED_TIME (1<<7)
 #define QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK (1<<8)
@@ -392,6 +393,7 @@ struct drm_i915_private {
        enum intel_pch pch_type;
        unsigned short pch_id;
 
+       unsigned long gem_quirks;
        unsigned long quirks;
 
        struct drm_atomic_state *modeset_restore_state;
index 4b76051312dd7515f2b4c0b299b500a4cb788f84..32f0b5c443c8096973cbceb669779f3e9b4c3081 100644 (file)
@@ -1035,7 +1035,7 @@ i915_gem_madvise_ioctl(struct drm_device *dev, void *data,
 
        if (i915_gem_object_has_pages(obj) &&
            i915_gem_object_is_tiled(obj) &&
-           i915->quirks & QUIRK_PIN_SWIZZLED_PAGES) {
+           i915->gem_quirks & GEM_QUIRK_PIN_SWIZZLED_PAGES) {
                if (obj->mm.madv == I915_MADV_WILLNEED) {
                        GEM_BUG_ON(!i915_gem_object_has_tiling_quirk(obj));
                        i915_gem_object_clear_tiling_quirk(obj);