Skip to content

Commit

Permalink
updpatch: linux, ver=6.13.arch1-1
Browse files Browse the repository at this point in the history
* Rebase to 6.13

Signed-off-by: Zhou Qiankang <[email protected]>
  • Loading branch information
wszqkzqk committed Jan 23, 2025
1 parent c76b793 commit 55fa223
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 86 deletions.
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

0 comments on commit 55fa223

Please sign in to comment.