Commit 40b53db8 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-xe-fixes-2025-11-21' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-fixes



Driver Changes:
 - Fix out-of-bounds access with BIT() (Shuicheng Lin)
 - Fix kunit test checking wrong condition (Matt Roper)
 - Drop duplicate kconfig select (Shuicheng Lin)
 - Fix guc2host irq handler with MSI-X (Venkata Ramana Nayana)

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patch.msgid.link/uadbrmftcud3wg32c6tje7mmfcr7wgmpnkzxwubk6fletahje2@coek2ciunkvz
parents 4e9fd472 5b38c226
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -13,7 +13,6 @@ config DRM_XE
	select TMPFS
	select DRM_BUDDY
	select DRM_CLIENT_SELECTION
	select DRM_EXEC
	select DRM_KMS_HELPER
	select DRM_KUNIT_TEST_HELPERS if DRM_XE_KUNIT_TEST != n
	select DRM_PANEL
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ static void read_l3cc_table(struct xe_gt *gt,
	fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
	if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) {
		xe_force_wake_put(gt_to_fw(gt), fw_ref);
		KUNIT_ASSERT_TRUE_MSG(test, true, "Forcewake Failed.\n");
		KUNIT_FAIL_AND_ABORT(test, "Forcewake Failed.\n");
	}

	for (i = 0; i < info->num_mocs_regs; i++) {
+1 −17
Original line number Diff line number Diff line
@@ -847,22 +847,6 @@ static int xe_irq_msix_init(struct xe_device *xe)
	return 0;
}

static irqreturn_t guc2host_irq_handler(int irq, void *arg)
{
	struct xe_device *xe = arg;
	struct xe_tile *tile;
	u8 id;

	if (!atomic_read(&xe->irq.enabled))
		return IRQ_NONE;

	for_each_tile(tile, xe, id)
		xe_guc_irq_handler(&tile->primary_gt->uc.guc,
				   GUC_INTR_GUC2HOST);

	return IRQ_HANDLED;
}

static irqreturn_t xe_irq_msix_default_hwe_handler(int irq, void *arg)
{
	unsigned int tile_id, gt_id;
@@ -979,7 +963,7 @@ int xe_irq_msix_request_irqs(struct xe_device *xe)
	u16 msix;

	msix = GUC2HOST_MSIX;
	err = xe_irq_msix_request_irq(xe, guc2host_irq_handler, xe,
	err = xe_irq_msix_request_irq(xe, xe_irq_handler(xe), xe,
				      DRIVER_NAME "-guc2host", false, &msix);
	if (err)
		return err;
+4 −2
Original line number Diff line number Diff line
@@ -3370,7 +3370,9 @@ static int vm_bind_ioctl_check_args(struct xe_device *xe, struct xe_vm *vm,
		    XE_IOCTL_DBG(xe, prefetch_region &&
				 op != DRM_XE_VM_BIND_OP_PREFETCH) ||
		    XE_IOCTL_DBG(xe, (prefetch_region != DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC &&
				       !(BIT(prefetch_region) & xe->info.mem_region_mask))) ||
				      /* Guard against undefined shift in BIT(prefetch_region) */
				      (prefetch_region >= (sizeof(xe->info.mem_region_mask) * 8) ||
				      !(BIT(prefetch_region) & xe->info.mem_region_mask)))) ||
		    XE_IOCTL_DBG(xe, obj &&
				 op == DRM_XE_VM_BIND_OP_UNMAP) ||
		    XE_IOCTL_DBG(xe, (flags & DRM_XE_VM_BIND_FLAG_MADVISE_AUTORESET) &&