Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updpatch: linux, ver=6.13.arch1-1 #409

Merged
merged 5 commits into from
Feb 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,17 +1,8 @@
From ba176401da8d82a0e13486b214c9107f79cf5705 Mon Sep 17 00:00:00 2001
From: Huacai Chen <[email protected]>
To: "David Airlie" <[email protected]>,
"Daniel Vetter" <[email protected]>,
"Alex Deucher" <[email protected]>,
"Christian König" <[email protected]>,
Xinhui <[email protected]>,
"Huacai Chen" <[email protected]>
Cc: [email protected], [email protected],
Huacai Chen <[email protected]>,
[email protected],
Tianyang Zhang <[email protected]>
Subject: [PATCH] drm/radeon: Call mmiowb() at the end of radeon_ring_commit()
Date: Tue, 20 Feb 2024 15:49:58 +0800 [thread overview]
Message-ID: <[email protected]> (raw)
Date: Tue, 20 Feb 2024 15:49:58 +0800
Subject: [PATCH] LOONGARCH64: FROMLIST: drm/radeon: Call mmiowb() at the end
of radeon_ring_commit()

Commit fb24ea52f78e0d595852e ("drivers: Remove explicit invocations of
mmiowb()") remove all mmiowb() in drivers, but it says:
Expand Down Expand Up @@ -52,22 +43,22 @@ radeon 0000:04:00.0: scheduling IB failed (-35).
Cc: [email protected]
Signed-off-by: Tianyang Zhang <[email protected]>
Signed-off-by: Huacai Chen <[email protected]>

Link: https://lore.kernel.org/all/[email protected]/
Signed-off-by: Kexy Biscuit <[email protected]>
---
drivers/gpu/drm/radeon/radeon_ring.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c
index 38048593bb4a..d461dc85d820 100644
index 581ae20c46e4b5..346f0e49bb2eaa 100644
--- a/drivers/gpu/drm/radeon/radeon_ring.c
+++ b/drivers/gpu/drm/radeon/radeon_ring.c
@@ -183,6 +183,7 @@ void radeon_ring_commit(struct radeon_device *rdev, struct radeon_ring *ring,
@@ -185,6 +185,7 @@ void radeon_ring_commit(struct radeon_device *rdev, struct radeon_ring *ring,
if (hdp_flush && rdev->asic->mmio_hdp_flush)
rdev->asic->mmio_hdp_flush(rdev);
radeon_ring_set_wptr(rdev, ring);
+ mmiowb(); /* Make sure wptr is up-to-date for hw */
}

/**
--
2.43.0

112 changes: 58 additions & 54 deletions linux/0002-LOONGARCH-drm-xe-fix-build-on-non-4K-kernels.patch
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
From a736759ca7becccd84009e4cc314501019c75b36 Mon Sep 17 00:00:00 2001
From e22d6bebbcd1d80f302c064cf15abfc769a53668 Mon Sep 17 00:00:00 2001
From: shangyatsen <[email protected]>
Date: Mon, 11 Mar 2024 00:14:58 +0800
Subject: [PATCH] LOONGARCH64: BACKPORT: FROMEXT: loongarch debug

drm/xe: fix build on non-4K kernels

This is required to make xe work on LoongArch, which defaults to 16K pages.

Signed-off-by: shangyatsen <[email protected]>
Link: https://github.com/FanFansfan/loongson-linux/commit/22c55ab3931c32410a077b3ddb6dca3f28223360
[Kexy: Resolved minor conflicts drivers/gpu/drm/xe/xe_bo.c,
[Kexy: Resolved minor conflicts in drivers/gpu/drm/xe/xe_bo.c,
drivers/gpu/drm/xe/xe_guc_ads.c, drivers/gpu/drm/xe/xe_guc_ct.c,
drivers/gpu/drm/xe/xe_guc_pc.c, drivers/gpu/drm/xe/xe_pt.c,
drivers/gpu/drm/xe/xe_res_cursor.h, and drivers/gpu/drm/xe/xe_vm.c]
Expand All @@ -25,11 +21,11 @@ Signed-off-by: Kexy Biscuit <[email protected]>
drivers/gpu/drm/xe/xe_guc_pc.c | 4 ++--
drivers/gpu/drm/xe/xe_migrate.c | 6 +++---
drivers/gpu/drm/xe/xe_query.c | 2 +-
drivers/gpu/drm/xe/xe_vm.c | 6 ++++--
11 files changed, 33 insertions(+), 31 deletions(-)
drivers/gpu/drm/xe/xe_vm.c | 7 +++++--
11 files changed, 34 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/xe/regs/xe_engine_regs.h b/drivers/gpu/drm/xe/regs/xe_engine_regs.h
index 81b71903675e0d..251569a5f404e4 100644
index 7c78496e6213cc..fe12e4b3d9cd4a 100644
--- a/drivers/gpu/drm/xe/regs/xe_engine_regs.h
+++ b/drivers/gpu/drm/xe/regs/xe_engine_regs.h
@@ -52,8 +52,7 @@
Expand All @@ -43,10 +39,10 @@ index 81b71903675e0d..251569a5f404e4 100644
#define RING_START_UDW(base) XE_REG((base) + 0x48)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 2a093540354e89..5f9483a420afc2 100644
index f61a8ef3809441..ac6fab20bbbb07 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -1274,7 +1274,7 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo,
@@ -1312,7 +1312,7 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo,
};
struct ttm_placement *placement;
uint32_t alignment;
Expand All @@ -55,7 +51,7 @@ index 2a093540354e89..5f9483a420afc2 100644
int err;

/* Only kernel objects should set GT */
@@ -1297,13 +1297,13 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo,
@@ -1335,13 +1335,13 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo,
flags |= XE_BO_FLAG_INTERNAL_64K;
alignment = align >> PAGE_SHIFT;
} else {
Expand All @@ -73,7 +69,7 @@ index 2a093540354e89..5f9483a420afc2 100644

if (!bo) {
bo = xe_bo_alloc();
@@ -1313,7 +1313,8 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo,
@@ -1351,7 +1351,8 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo,

bo->ccs_cleared = false;
bo->tile = tile;
Expand All @@ -83,7 +79,7 @@ index 2a093540354e89..5f9483a420afc2 100644
bo->flags = flags;
bo->cpu_caching = cpu_caching;
bo->ttm.base.funcs = &xe_gem_object_funcs;
@@ -1324,7 +1325,7 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo,
@@ -1362,7 +1363,7 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo,
#endif
INIT_LIST_HEAD(&bo->vram_userfault_link);

Expand All @@ -93,10 +89,10 @@ index 2a093540354e89..5f9483a420afc2 100644
if (resv) {
ctx.allow_res_evict = !(flags & XE_BO_FLAG_NO_RESV_EVICT);
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index ff19eca5d358b3..938973e780557e 100644
index 558fac8bb6fb56..72b438361a5a04 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -68,7 +68,7 @@ static u64 xelp_ggtt_pte_encode_bo(struct xe_bo *bo, u64 bo_offset,
@@ -69,7 +69,7 @@ static u64 xelp_ggtt_pte_encode_bo(struct xe_bo *bo, u64 bo_offset,
{
u64 pte;

Expand All @@ -106,10 +102,10 @@ index ff19eca5d358b3..938973e780557e 100644

if (xe_bo_is_vram(bo) || xe_bo_is_stolen_devmem(bo))
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 52df28032a6ffe..f9890a03ffb04c 100644
index 7f704346a8f4d2..1393bb62f24e68 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -78,7 +78,7 @@ static u32 guc_ctl_feature_flags(struct xe_guc *guc)
@@ -80,7 +80,7 @@ static u32 guc_ctl_feature_flags(struct xe_guc *guc)

static u32 guc_ctl_log_params_flags(struct xe_guc *guc)
{
Expand All @@ -118,7 +114,7 @@ index 52df28032a6ffe..f9890a03ffb04c 100644
u32 flags;

#if (((CRASH_BUFFER_SIZE) % SZ_1M) == 0)
@@ -131,7 +131,7 @@ static u32 guc_ctl_log_params_flags(struct xe_guc *guc)
@@ -133,7 +133,7 @@ static u32 guc_ctl_log_params_flags(struct xe_guc *guc)

static u32 guc_ctl_ads_flags(struct xe_guc *guc)
{
Expand All @@ -128,10 +124,10 @@ index 52df28032a6ffe..f9890a03ffb04c 100644

return flags;
diff --git a/drivers/gpu/drm/xe/xe_guc_ads.c b/drivers/gpu/drm/xe/xe_guc_ads.c
index d1902a8581ca11..21714686d7f0a6 100644
index dd7f9d0effa966..98960d6140b5c4 100644
--- a/drivers/gpu/drm/xe/xe_guc_ads.c
+++ b/drivers/gpu/drm/xe/xe_guc_ads.c
@@ -139,7 +139,7 @@ static size_t guc_ads_regset_size(struct xe_guc_ads *ads)
@@ -143,7 +143,7 @@ static size_t guc_ads_regset_size(struct xe_guc_ads *ads)

static size_t guc_ads_golden_lrc_size(struct xe_guc_ads *ads)
{
Expand All @@ -140,16 +136,16 @@ index d1902a8581ca11..21714686d7f0a6 100644
}

static u32 guc_ads_waklv_size(struct xe_guc_ads *ads)
@@ -150,7 +150,7 @@ static u32 guc_ads_waklv_size(struct xe_guc_ads *ads)
@@ -153,7 +153,7 @@ static u32 guc_ads_waklv_size(struct xe_guc_ads *ads)

static size_t guc_ads_capture_size(struct xe_guc_ads *ads)
{
/* FIXME: Allocate a proper capture list */
- return PAGE_ALIGN(PAGE_SIZE);
+ return XE_PAGE_SIZE;
- return PAGE_ALIGN(ads->capture_size);
+ return ALIGN(ads->capture_size, XE_PAGE_SIZE);
}

static size_t guc_ads_um_queues_size(struct xe_guc_ads *ads)
@@ -165,7 +165,7 @@ static size_t guc_ads_um_queues_size(struct xe_guc_ads *ads)
@@ -168,7 +168,7 @@ static size_t guc_ads_um_queues_size(struct xe_guc_ads *ads)

static size_t guc_ads_private_data_size(struct xe_guc_ads *ads)
{
Expand All @@ -158,7 +154,7 @@ index d1902a8581ca11..21714686d7f0a6 100644
}

static size_t guc_ads_regset_offset(struct xe_guc_ads *ads)
@@ -180,7 +180,7 @@ static size_t guc_ads_golden_lrc_offset(struct xe_guc_ads *ads)
@@ -183,7 +183,7 @@ static size_t guc_ads_golden_lrc_offset(struct xe_guc_ads *ads)
offset = guc_ads_regset_offset(ads) +
guc_ads_regset_size(ads);

Expand All @@ -167,16 +163,16 @@ index d1902a8581ca11..21714686d7f0a6 100644
}

static size_t guc_ads_waklv_offset(struct xe_guc_ads *ads)
@@ -190,7 +190,7 @@ static size_t guc_ads_waklv_offset(struct xe_guc_ads *ads)
offset = guc_ads_golden_lrc_offset(ads) +
guc_ads_golden_lrc_size(ads);
@@ -203,7 +203,7 @@ static size_t guc_ads_capture_offset(struct xe_guc_ads *ads)
offset = guc_ads_waklv_offset(ads) +
guc_ads_waklv_size(ads);

- return PAGE_ALIGN(offset);
+ return ALIGN(offset, XE_PAGE_SIZE);
}

static size_t guc_ads_capture_offset(struct xe_guc_ads *ads)
@@ -210,7 +210,7 @@ static size_t guc_ads_um_queues_offset(struct xe_guc_ads *ads)
static size_t guc_ads_um_queues_offset(struct xe_guc_ads *ads)
@@ -213,7 +213,7 @@ static size_t guc_ads_um_queues_offset(struct xe_guc_ads *ads)
offset = guc_ads_capture_offset(ads) +
guc_ads_capture_size(ads);

Expand All @@ -185,7 +181,7 @@ index d1902a8581ca11..21714686d7f0a6 100644
}

static size_t guc_ads_private_data_offset(struct xe_guc_ads *ads)
@@ -220,7 +220,7 @@ static size_t guc_ads_private_data_offset(struct xe_guc_ads *ads)
@@ -223,7 +223,7 @@ static size_t guc_ads_private_data_offset(struct xe_guc_ads *ads)
offset = guc_ads_um_queues_offset(ads) +
guc_ads_um_queues_size(ads);

Expand All @@ -194,7 +190,7 @@ index d1902a8581ca11..21714686d7f0a6 100644
}

static size_t guc_ads_size(struct xe_guc_ads *ads)
@@ -278,7 +278,7 @@ static size_t calculate_golden_lrc_size(struct xe_guc_ads *ads)
@@ -281,7 +281,7 @@ static size_t calculate_golden_lrc_size(struct xe_guc_ads *ads)
continue;

real_size = xe_gt_lrc_size(gt, class);
Expand All @@ -203,7 +199,7 @@ index d1902a8581ca11..21714686d7f0a6 100644
total_size += alloc_size;
}

@@ -781,7 +781,7 @@ static void guc_populate_golden_lrc(struct xe_guc_ads *ads)
@@ -935,7 +935,7 @@ static void guc_populate_golden_lrc(struct xe_guc_ads *ads)
xe_gt_assert(gt, gt->default_lrc[class]);

real_size = xe_gt_lrc_size(gt, class);
Expand All @@ -213,23 +209,23 @@ index d1902a8581ca11..21714686d7f0a6 100644

/*
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index 9c505d3517cd1a..301968b8ab0ef3 100644
index 8aeb1789805c5e..058c02712f1262 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -173,7 +173,7 @@ int xe_guc_ct_init(struct xe_guc_ct *ct)
@@ -211,7 +211,7 @@ int xe_guc_ct_init(struct xe_guc_ct *ct)
struct xe_bo *bo;
int err;

- xe_gt_assert(gt, !(guc_ct_size() % PAGE_SIZE));
+ xe_gt_assert(gt, !(guc_ct_size() % XE_PAGE_SIZE));

ct->g2h_wq = alloc_ordered_workqueue("xe-g2h-wq", 0);
ct->g2h_wq = alloc_ordered_workqueue("xe-g2h-wq", WQ_MEM_RECLAIM);
if (!ct->g2h_wq)
diff --git a/drivers/gpu/drm/xe/xe_guc_log.c b/drivers/gpu/drm/xe/xe_guc_log.c
index a37ee341942844..d2bb7427404fdb 100644
index df4cfb698cdbc7..2da47ce2ee7452 100644
--- a/drivers/gpu/drm/xe/xe_guc_log.c
+++ b/drivers/gpu/drm/xe/xe_guc_log.c
@@ -45,7 +45,7 @@ static size_t guc_log_size(void)
@@ -58,7 +58,7 @@ static size_t guc_log_size(void)
* | Capture logs |
* +===============================+ + CAPTURE_SIZE
*/
Expand All @@ -239,19 +235,19 @@ index a37ee341942844..d2bb7427404fdb 100644
}

diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index 034b29984d5ed4..89ed21a074cd6a 100644
index e8b9faeaef645f..08a485bb5821e5 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -955,7 +955,7 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
@@ -963,7 +963,7 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
{
struct xe_device *xe = pc_to_xe(pc);
struct xe_gt *gt = pc_to_gt(pc);
- u32 size = PAGE_ALIGN(sizeof(struct slpc_shared_data));
+ u32 size = ALIGN(sizeof(struct slpc_shared_data), XE_PAGE_SIZE);
unsigned int fw_ref;
int ret;

xe_gt_assert(gt, xe_device_uc_enabled(xe));
@@ -1061,7 +1061,7 @@ int xe_guc_pc_init(struct xe_guc_pc *pc)
@@ -1073,7 +1073,7 @@ int xe_guc_pc_init(struct xe_guc_pc *pc)
struct xe_tile *tile = gt_to_tile(gt);
struct xe_device *xe = gt_to_xe(gt);
struct xe_bo *bo;
Expand All @@ -261,10 +257,10 @@ index 034b29984d5ed4..89ed21a074cd6a 100644

if (xe->info.skip_guc_pc)
diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
index cfd31ae49cc1f7..4d275eae71c5f5 100644
index 1b97d90aaddaf4..f11142054c1a86 100644
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -592,7 +592,7 @@ static void emit_pte(struct xe_migrate *m,
@@ -593,7 +593,7 @@ static void emit_pte(struct xe_migrate *m,
u64 addr, flags = 0;
bool devmem = false;

Expand All @@ -273,7 +269,7 @@ index cfd31ae49cc1f7..4d275eae71c5f5 100644
if (is_vram) {
if (vm->flags & XE_VM_FLAG_64K) {
u64 va = cur_ofs * XE_PAGE_SIZE / 8;
@@ -613,7 +613,7 @@ static void emit_pte(struct xe_migrate *m,
@@ -614,7 +614,7 @@ static void emit_pte(struct xe_migrate *m,
bb->cs[bb->len++] = lower_32_bits(addr);
bb->cs[bb->len++] = upper_32_bits(addr);

Expand All @@ -282,7 +278,7 @@ index cfd31ae49cc1f7..4d275eae71c5f5 100644
cur_ofs += 8;
}
}
@@ -802,7 +802,7 @@ struct dma_fence *xe_migrate_copy(struct xe_migrate *m,
@@ -803,7 +803,7 @@ struct dma_fence *xe_migrate_copy(struct xe_migrate *m,

if (copy_system_ccs)
xe_res_first_sg(xe_bo_sg(src_bo), xe_bo_ccs_pages_start(src_bo),
Expand All @@ -292,10 +288,10 @@ index cfd31ae49cc1f7..4d275eae71c5f5 100644

while (size) {
diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
index 848da8e68c7a83..795dd3b7004dbe 100644
index 170ae72d1a7bb7..ccf6e1dff54a94 100644
--- a/drivers/gpu/drm/xe/xe_query.c
+++ b/drivers/gpu/drm/xe/xe_query.c
@@ -342,7 +342,7 @@ static int query_config(struct xe_device *xe, struct drm_xe_device_query *query)
@@ -335,7 +335,7 @@ static int query_config(struct xe_device *xe, struct drm_xe_device_query *query)
config->info[DRM_XE_QUERY_CONFIG_FLAGS] =
DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM;
config->info[DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT] =
Expand All @@ -305,10 +301,18 @@ index 848da8e68c7a83..795dd3b7004dbe 100644
config->info[DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY] =
xe_exec_queue_device_get_max_priority(xe);
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index c99380271de62f..58f9bd7cad4150 100644
index c99380271de62f..741c159995f65a 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1251,7 +1251,7 @@ static u64 xelp_pde_encode_bo(struct xe_bo *bo, u64 bo_offset,
@@ -18,6 +18,7 @@
#include <linux/kthread.h>
#include <linux/mm.h>
#include <linux/swap.h>
+#include <linux/sched/signal.h>

#include <generated/xe_wa_oob.h>

@@ -1251,7 +1252,7 @@ static u64 xelp_pde_encode_bo(struct xe_bo *bo, u64 bo_offset,
{
u64 pde;

Expand All @@ -317,7 +321,7 @@ index c99380271de62f..58f9bd7cad4150 100644
pde |= XE_PAGE_PRESENT | XE_PAGE_RW;
pde |= pde_encode_pat_index(pat_index);

@@ -1263,7 +1263,7 @@ static u64 xelp_pte_encode_bo(struct xe_bo *bo, u64 bo_offset,
@@ -1263,7 +1264,7 @@ static u64 xelp_pte_encode_bo(struct xe_bo *bo, u64 bo_offset,
{
u64 pte;

Expand All @@ -326,7 +330,7 @@ index c99380271de62f..58f9bd7cad4150 100644
pte |= XE_PAGE_PRESENT | XE_PAGE_RW;
pte |= pte_encode_pat_index(pat_index, pt_level);
pte |= pte_encode_ps(pt_level);
@@ -1277,6 +1277,8 @@ static u64 xelp_pte_encode_bo(struct xe_bo *bo, u64 bo_offset,
@@ -1277,6 +1278,8 @@ static u64 xelp_pte_encode_bo(struct xe_bo *bo, u64 bo_offset,
static u64 xelp_pte_encode_vma(u64 pte, struct xe_vma *vma,
u16 pat_index, u32 pt_level)
{
Expand Down
Loading