drm/i915/mtl: end support for set caching ioctl
authorFei Yang <fei.yang@intel.com>
Fri, 19 May 2023 05:11:02 +0000 (22:11 -0700)
committerAndi Shyti <andi.shyti@linux.intel.com>
Tue, 23 May 2023 08:15:26 +0000 (10:15 +0200)
The design is to keep Buffer Object's caching policy immutable through
out its life cycle. This patch ends the support for set caching ioctl
from MTL onward. While doing that we also set BO's to be 1-way coherent
at creation time because GPU is no longer automatically snooping CPU
cache. For userspace components needing to fine tune the caching policy
for BO's, a follow up patch will extend the GEM_CREATE uAPI to allow
them specify caching mode at BO creation time.

Signed-off-by: Fei Yang <fei.yang@intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230519051103.3404990-2-fei.yang@intel.com
drivers/gpu/drm/i915/gem/i915_gem_domain.c
drivers/gpu/drm/i915/gem/i915_gem_shmem.c

index 05107a6..dfaaa8b 100644 (file)
@@ -350,6 +350,9 @@ int i915_gem_set_caching_ioctl(struct drm_device *dev, void *data,
        if (IS_DGFX(i915))
                return -ENODEV;
 
+       if (GRAPHICS_VER_FULL(i915) >= IP_VER(12, 70))
+               return -EOPNOTSUPP;
+
        switch (args->caching) {
        case I915_CACHING_NONE:
                level = I915_CACHE_NONE;
index 37d1efc..cad4a60 100644 (file)
@@ -601,7 +601,14 @@ static int shmem_object_init(struct intel_memory_region *mem,
        obj->write_domain = I915_GEM_DOMAIN_CPU;
        obj->read_domains = I915_GEM_DOMAIN_CPU;
 
-       if (HAS_LLC(i915))
+       /*
+        * MTL doesn't snoop CPU cache by default for GPU access (namely
+        * 1-way coherency). However some UMD's are currently depending on
+        * that. Make 1-way coherent the default setting for MTL. A follow
+        * up patch will extend the GEM_CREATE uAPI to allow UMD's specify
+        * caching mode at BO creation time
+        */
+       if (HAS_LLC(i915) || (GRAPHICS_VER_FULL(i915) >= IP_VER(12, 70)))
                /* On some devices, we can have the GPU use the LLC (the CPU
                 * cache) for about a 10% performance improvement
                 * compared to uncached.  Graphics requests other than