Commit 9fb34737 authored by Michał Winiarski's avatar Michał Winiarski Committed by John Harrison
Browse files

drm/i915/guc: Route semaphores to GuC for Gen12+



In GuC submission mode, there is an option to use auto-switch out
semaphores and have GuC auto-switch in a waiting context. This
requires routing the semaphore interrupt to GuC.

Signed-off-by: default avatarMichał Winiarski <michal.winiarski@intel.com>
Signed-off-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
Reviewed-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220728024225.2363663-2-John.C.Harrison@Intel.com
parent 22645976
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -102,6 +102,10 @@
#define   GUC_SEND_TRIGGER		  (1<<0)
#define GEN11_GUC_HOST_INTERRUPT	_MMIO(0x1901f0)

#define GEN12_GUC_SEM_INTR_ENABLES	_MMIO(0xc71c)
#define   GUC_SEM_INTR_ROUTE_TO_GUC	BIT(31)
#define   GUC_SEM_INTR_ENABLE_ALL	(0xff)

#define GUC_NUM_DOORBELLS		256

/* format of the HW-monitored doorbell cacheline */
+14 −0
Original line number Diff line number Diff line
@@ -4191,13 +4191,27 @@ int intel_guc_submission_setup(struct intel_engine_cs *engine)

void intel_guc_submission_enable(struct intel_guc *guc)
{
	struct intel_gt *gt = guc_to_gt(guc);

	/* Enable and route to GuC */
	if (GRAPHICS_VER(gt->i915) >= 12)
		intel_uncore_write(gt->uncore, GEN12_GUC_SEM_INTR_ENABLES,
				   GUC_SEM_INTR_ROUTE_TO_GUC |
				   GUC_SEM_INTR_ENABLE_ALL);

	guc_init_lrc_mapping(guc);
	guc_init_engine_stats(guc);
}

void intel_guc_submission_disable(struct intel_guc *guc)
{
	struct intel_gt *gt = guc_to_gt(guc);

	/* Note: By the time we're here, GuC may have already been reset */

	/* Disable and route to host */
	if (GRAPHICS_VER(gt->i915) >= 12)
		intel_uncore_write(gt->uncore, GEN12_GUC_SEM_INTR_ENABLES, 0x0);
}

static bool __guc_submission_supported(struct intel_guc *guc)