[Intel-xe] [PATCH 20/22] drm/xe: Add has_asid to device info
Rodrigo Vivi
rodrigo.vivi at intel.com
Fri Feb 3 20:24:07 UTC 2023
From: Matthew Brost <matthew.brost at intel.com>
Rather than alias supports_usm to ASIS support, add an explicit
variable to indicate ASID support.
Signed-off-by: Matthew Brost <matthew.brost at intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
drivers/gpu/drm/xe/xe_device_types.h | 2 ++
drivers/gpu/drm/xe/xe_lrc.c | 4 ++--
drivers/gpu/drm/xe/xe_pci.c | 3 +++
drivers/gpu/drm/xe/xe_vm.c | 4 ++--
4 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 6d13587bfa7b..a8d48987b2d8 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -86,6 +86,8 @@ struct xe_device {
u8 media_ver;
/** @supports_usm: Supports unified shared memory */
bool supports_usm;
+ /** @has_asid: Has address space ID */
+ bool has_asid;
/** @enable_guc: GuC submission enabled */
bool enable_guc;
/** @has_flat_ccs: Whether flat CCS metadata is used */
diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
index 056c2c5a0b81..347ff9b34494 100644
--- a/drivers/gpu/drm/xe/xe_lrc.c
+++ b/drivers/gpu/drm/xe/xe_lrc.c
@@ -682,14 +682,14 @@ int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
xe_lrc_write_ctx_reg(lrc, CTX_RING_TAIL, lrc->ring.tail);
xe_lrc_write_ctx_reg(lrc, CTX_RING_CTL,
RING_CTL_SIZE(lrc->ring.size) | RING_VALID);
- if (xe->info.supports_usm && vm) {
+ if (xe->info.has_asid && vm)
xe_lrc_write_ctx_reg(lrc, PVC_CTX_ASID,
(e->usm.acc_granularity <<
ACC_GRANULARITY_S) | vm->usm.asid);
+ if (xe->info.supports_usm && vm)
xe_lrc_write_ctx_reg(lrc, PVC_CTX_ACC_CTR_THOLD,
(e->usm.acc_notify << ACC_NOTIFY_S) |
e->usm.acc_trigger);
- }
lrc->desc = GEN8_CTX_VALID;
lrc->desc |= INTEL_LEGACY_64B_CONTEXT << GEN8_CTX_ADDRESSING_MODE_SHIFT;
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 53e87b27fcde..927a050f3b8f 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -78,6 +78,7 @@ struct xe_device_desc {
bool has_flat_ccs;
bool has_4tile;
bool has_range_tlb_invalidation;
+ bool has_asid;
};
#define PLATFORM(x) \
@@ -302,6 +303,7 @@ static const struct xe_device_desc pvc_desc = {
.max_tiles = 2,
.vm_max_level = 4,
.supports_usm = true,
+ .has_asid = true,
};
#define MTL_MEDIA_ENGINES \
@@ -496,6 +498,7 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
xe->info.vm_max_level = desc->vm_max_level;
xe->info.media_ver = desc->media_ver;
xe->info.supports_usm = desc->supports_usm;
+ xe->info.has_asid = desc->has_asid;
xe->info.has_flat_ccs = desc->has_flat_ccs;
xe->info.has_4tile = desc->has_4tile;
xe->info.display = desc->display;
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 541629293683..7276a375e2e0 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1371,7 +1371,7 @@ static void vm_destroy_work_func(struct work_struct *w)
xe_device_mem_access_put(xe);
xe_pm_runtime_put(xe);
- if (xe->info.supports_usm) {
+ if (xe->info.has_asid) {
mutex_lock(&xe->usm.lock);
lookup = xa_erase(&xe->usm.asid_to_vm, vm->usm.asid);
XE_WARN_ON(lookup != vm);
@@ -1868,7 +1868,7 @@ int xe_vm_create_ioctl(struct drm_device *dev, void *data,
return err;
}
- if (xe->info.supports_usm) {
+ if (xe->info.has_asid) {
mutex_lock(&xe->usm.lock);
err = xa_alloc_cyclic(&xe->usm.asid_to_vm, &asid, vm,
XA_LIMIT(0, XE_MAX_ASID - 1),
--
2.39.1
More information about the Intel-xe
mailing list