Commit 5794d2f7 authored by Dave Airlie's avatar Dave Airlie

Merge tag 'drm-xe-next-fixes-2024-03-04' of...

Merge tag 'drm-xe-next-fixes-2024-03-04' of ssh://gitlab.freedesktop.org/drm/xe/kernel into drm-next

Driver Changes:

- Fix kunit link failure with built-in xe
- Fix one more 32-bit build failure with ARM compiler
- Fix initialization order of topology struct
- Cleanup unused fields in struct xe_vm
- Fix xe_vm leak when handling page fault on a VM not in fault mode
- Drop use of "grouped target" feature in Makefile since that's
  only available in make >= 4.3
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/kaypobelrl7u7rtnu6hg5czs3vptbhs4rp24vnwuo2ajoxysto@l5u7377hz4es
parents 098ca765 e62d2e00
...@@ -10,6 +10,7 @@ config DRM_XE ...@@ -10,6 +10,7 @@ config DRM_XE
select DRM_BUDDY select DRM_BUDDY
select DRM_EXEC select DRM_EXEC
select DRM_KMS_HELPER select DRM_KMS_HELPER
select DRM_KUNIT_TEST_HELPERS if DRM_XE_KUNIT_TEST != n
select DRM_PANEL select DRM_PANEL
select DRM_SUBALLOC_HELPER select DRM_SUBALLOC_HELPER
select DRM_DISPLAY_DP_HELPER select DRM_DISPLAY_DP_HELPER
......
...@@ -76,7 +76,6 @@ config DRM_XE_KUNIT_TEST ...@@ -76,7 +76,6 @@ config DRM_XE_KUNIT_TEST
depends on DRM_XE && KUNIT && DEBUG_FS depends on DRM_XE && KUNIT && DEBUG_FS
default KUNIT_ALL_TESTS default KUNIT_ALL_TESTS
select DRM_EXPORT_FOR_TESTS if m select DRM_EXPORT_FOR_TESTS if m
select DRM_KUNIT_TEST_HELPERS
help help
Choose this option to allow the driver to perform selftests under Choose this option to allow the driver to perform selftests under
the kunit framework the kunit framework
......
...@@ -42,7 +42,8 @@ generated_oob := $(obj)/generated/xe_wa_oob.c $(obj)/generated/xe_wa_oob.h ...@@ -42,7 +42,8 @@ generated_oob := $(obj)/generated/xe_wa_oob.c $(obj)/generated/xe_wa_oob.h
quiet_cmd_wa_oob = GEN $(notdir $(generated_oob)) quiet_cmd_wa_oob = GEN $(notdir $(generated_oob))
cmd_wa_oob = mkdir -p $(@D); $^ $(generated_oob) cmd_wa_oob = mkdir -p $(@D); $^ $(generated_oob)
$(generated_oob) &: $(obj)/xe_gen_wa_oob $(srctree)/$(src)/xe_wa_oob.rules $(obj)/generated/%_wa_oob.c $(obj)/generated/%_wa_oob.h: $(obj)/xe_gen_wa_oob \
$(srctree)/$(src)/xe_wa_oob.rules
$(call cmd,wa_oob) $(call cmd,wa_oob)
uses_generated_oob := \ uses_generated_oob := \
...@@ -158,8 +159,10 @@ xe-$(CONFIG_PCI_IOV) += \ ...@@ -158,8 +159,10 @@ xe-$(CONFIG_PCI_IOV) += \
xe_lmtt_2l.o \ xe_lmtt_2l.o \
xe_lmtt_ml.o xe_lmtt_ml.o
xe-$(CONFIG_DRM_XE_KUNIT_TEST) += \ # include helpers for tests even when XE is built-in
tests/xe_kunit_helpers.o ifdef CONFIG_DRM_XE_KUNIT_TEST
xe-y += tests/xe_kunit_helpers.o
endif
# i915 Display compat #defines and #includes # i915 Display compat #defines and #includes
subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \ subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \
......
...@@ -314,8 +314,6 @@ int xe_gt_init_early(struct xe_gt *gt) ...@@ -314,8 +314,6 @@ int xe_gt_init_early(struct xe_gt *gt)
if (err) if (err)
return err; return err;
xe_gt_topology_init(gt);
err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT); err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
if (err) if (err)
return err; return err;
...@@ -502,6 +500,7 @@ int xe_gt_init_hwconfig(struct xe_gt *gt) ...@@ -502,6 +500,7 @@ int xe_gt_init_hwconfig(struct xe_gt *gt)
if (err) if (err)
goto out; goto out;
xe_gt_topology_init(gt);
xe_gt_mcr_init(gt); xe_gt_mcr_init(gt);
xe_pat_init(gt); xe_pat_init(gt);
......
...@@ -146,10 +146,12 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf) ...@@ -146,10 +146,12 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
/* ASID to VM */ /* ASID to VM */
mutex_lock(&xe->usm.lock); mutex_lock(&xe->usm.lock);
vm = xa_load(&xe->usm.asid_to_vm, pf->asid); vm = xa_load(&xe->usm.asid_to_vm, pf->asid);
if (vm) if (vm && xe_vm_in_fault_mode(vm))
xe_vm_get(vm); xe_vm_get(vm);
else
vm = NULL;
mutex_unlock(&xe->usm.lock); mutex_unlock(&xe->usm.lock);
if (!vm || !xe_vm_in_fault_mode(vm)) if (!vm)
return -EINVAL; return -EINVAL;
retry_userptr: retry_userptr:
......
...@@ -462,7 +462,7 @@ static u32 pte_update_size(struct xe_migrate *m, ...@@ -462,7 +462,7 @@ static u32 pte_update_size(struct xe_migrate *m,
} else { } else {
/* Clip L0 to available size */ /* Clip L0 to available size */
u64 size = min(*L0, (u64)avail_pts * SZ_2M); u64 size = min(*L0, (u64)avail_pts * SZ_2M);
u64 num_4k_pages = DIV_ROUND_UP(size, XE_PAGE_SIZE); u32 num_4k_pages = (size + XE_PAGE_SIZE - 1) >> XE_PTE_SHIFT;
*L0 = size; *L0 = size;
*L0_ofs = xe_migrate_vm_addr(pt_ofs, 0); *L0_ofs = xe_migrate_vm_addr(pt_ofs, 0);
......
...@@ -189,30 +189,6 @@ struct xe_vm { ...@@ -189,30 +189,6 @@ struct xe_vm {
*/ */
struct xe_range_fence_tree rftree[XE_MAX_TILES_PER_DEVICE]; struct xe_range_fence_tree rftree[XE_MAX_TILES_PER_DEVICE];
/** @async_ops: async VM operations (bind / unbinds) */
struct {
/** @list: list of pending async VM ops */
struct list_head pending;
/** @work: worker to execute async VM ops */
struct work_struct work;
/** @lock: protects list of pending async VM ops and fences */
spinlock_t lock;
/** @fence: fence state */
struct {
/** @context: context of async fence */
u64 context;
/** @seqno: seqno of async fence */
u32 seqno;
} fence;
/** @error: error state for async VM ops */
int error;
/**
* @munmap_rebind_inflight: an munmap style VM bind is in the
* middle of a set of ops which requires a rebind at the end.
*/
bool munmap_rebind_inflight;
} async_ops;
const struct xe_pt_ops *pt_ops; const struct xe_pt_ops *pt_ops;
/** @userptr: user pointer state */ /** @userptr: user pointer state */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment