Commit 57bca71d authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-intel-gt-next-2023-08-11' of...

Merge tag 'drm-intel-gt-next-2023-08-11' of git://anongit.freedesktop.org/drm/drm-intel

 into drm-next

Cross-subsystem Changes:

- Backmerge of drm-next

Driver Changes:

- Apply workaround 22016122933 correctly (Jonathan, Matt R)

- Simplify shmem_create_from_object map_type selection (Jonathan,
  Tvrtko)
- Make i915_coherent_map_type GT-centric (Jonathan, Matt R)

- Selftest improvements (John)

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/ZNYR3bKFquGc7u9w@jlahtine-mobl.ger.corp.intel.com
parents 2b9d7b65 788568fa
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@
#include <drm/i915_hdcp_interface.h>

#include "gem/i915_gem_region.h"
#include "gt/intel_gt.h"
#include "gt/uc/intel_gsc_uc_heci_cmd_submit.h"
#include "i915_drv.h"
#include "i915_utils.h"
@@ -632,7 +633,7 @@ static int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
		return PTR_ERR(obj);
	}

	cmd_in = i915_gem_object_pin_map_unlocked(obj, i915_coherent_map_type(i915, obj, true));
	cmd_in = i915_gem_object_pin_map_unlocked(obj, intel_gt_coherent_map_type(gt, obj, true));
	if (IS_ERR(cmd_in)) {
		drm_err(&i915->drm, "Failed to map gsc message page!\n");
		err = PTR_ERR(cmd_in);
+0 −4
Original line number Diff line number Diff line
@@ -716,10 +716,6 @@ void *__must_check i915_gem_object_pin_map(struct drm_i915_gem_object *obj,
void *__must_check i915_gem_object_pin_map_unlocked(struct drm_i915_gem_object *obj,
						    enum i915_map_type type);

enum i915_map_type i915_coherent_map_type(struct drm_i915_private *i915,
					  struct drm_i915_gem_object *obj,
					  bool always_coherent);

void __i915_gem_object_flush_map(struct drm_i915_gem_object *obj,
				 unsigned long offset,
				 unsigned long size);
+0 −15
Original line number Diff line number Diff line
@@ -468,21 +468,6 @@ void *i915_gem_object_pin_map_unlocked(struct drm_i915_gem_object *obj,
	return ret;
}

enum i915_map_type i915_coherent_map_type(struct drm_i915_private *i915,
					  struct drm_i915_gem_object *obj,
					  bool always_coherent)
{
	/*
	 * Wa_22016122933: always return I915_MAP_WC for MTL
	 */
	if (i915_gem_object_is_lmem(obj) || IS_METEORLAKE(i915))
		return I915_MAP_WC;
	if (HAS_LLC(i915) || always_coherent)
		return I915_MAP_WB;
	else
		return I915_MAP_WC;
}

void __i915_gem_object_flush_map(struct drm_i915_gem_object *obj,
				 unsigned long offset,
				 unsigned long size)
+6 −6
Original line number Diff line number Diff line
@@ -13,12 +13,12 @@
#include "selftests/igt_spinner.h"

static int igt_fill_check_buffer(struct drm_i915_gem_object *obj,
				 struct intel_gt *gt,
				 bool fill)
{
	struct drm_i915_private *i915 = to_i915(obj->base.dev);
	unsigned int i, count = obj->base.size / sizeof(u32);
	enum i915_map_type map_type =
		i915_coherent_map_type(i915, obj, false);
		intel_gt_coherent_map_type(gt, obj, false);
	u32 *cur;
	int err = 0;

@@ -66,7 +66,7 @@ static int igt_create_migrate(struct intel_gt *gt, enum intel_region_id src,
		if (err)
			continue;

		err = igt_fill_check_buffer(obj, true);
		err = igt_fill_check_buffer(obj, gt, true);
		if (err)
			continue;

@@ -86,7 +86,7 @@ static int igt_create_migrate(struct intel_gt *gt, enum intel_region_id src,
		if (err)
			continue;

		err = igt_fill_check_buffer(obj, false);
		err = igt_fill_check_buffer(obj, gt, false);
	}
	i915_gem_object_put(obj);

@@ -233,7 +233,7 @@ static int __igt_lmem_pages_migrate(struct intel_gt *gt,
			continue;

		if (!vma) {
			err = igt_fill_check_buffer(obj, true);
			err = igt_fill_check_buffer(obj, gt, true);
			if (err)
				continue;
		}
@@ -276,7 +276,7 @@ static int __igt_lmem_pages_migrate(struct intel_gt *gt,
		if (err)
			goto out_unlock;
	} else {
		err = igt_fill_check_buffer(obj, false);
		err = igt_fill_check_buffer(obj, gt, false);
	}

out_unlock:
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ static void dbg_poison_ce(struct intel_context *ce)

	if (ce->state) {
		struct drm_i915_gem_object *obj = ce->state->obj;
		int type = i915_coherent_map_type(ce->engine->i915, obj, true);
		int type = intel_gt_coherent_map_type(ce->engine->gt, obj, true);
		void *map;

		if (!i915_gem_object_trylock(obj, NULL))
Loading