* [PATCH 1/5] drm/xe/pat: annotate pat index table with compression information
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
@ 2024-01-26 21:08 ` Juha-Pekka Heikkila
2024-01-26 21:08 ` [PATCH 2/5] drm/xe: add bind time pat index to xe_bo structure Juha-Pekka Heikkila
` (9 subsequent siblings)
10 siblings, 0 replies; 18+ messages in thread
From: Juha-Pekka Heikkila @ 2024-01-26 21:08 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: Juha-Pekka Heikkila
add compressed member into xe_pat_table_entry which will contain
boolean information if given pat_index is compressed or no.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
drivers/gpu/drm/xe/xe_pat.c | 9 ++++++++-
drivers/gpu/drm/xe/xe_pat.h | 8 ++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_pat.c b/drivers/gpu/drm/xe/xe_pat.c
index 1ff6bc79e7d4..c3cc6e90b068 100644
--- a/drivers/gpu/drm/xe/xe_pat.c
+++ b/drivers/gpu/drm/xe/xe_pat.c
@@ -104,7 +104,8 @@ static const struct xe_pat_table_entry xelpg_pat_table[] = {
REG_FIELD_PREP(XE2_L3_POLICY, l3_policy) | \
REG_FIELD_PREP(XE2_L4_POLICY, l4_policy) | \
REG_FIELD_PREP(XE2_COH_MODE, __coh_mode), \
- .coh_mode = __coh_mode ? XE_COH_AT_LEAST_1WAY : XE_COH_NONE \
+ .coh_mode = __coh_mode ? XE_COH_AT_LEAST_1WAY : XE_COH_NONE, \
+ .compressed = comp_en \
}
static const struct xe_pat_table_entry xe2_pat_table[] = {
@@ -148,6 +149,12 @@ u16 xe_pat_index_get_coh_mode(struct xe_device *xe, u16 pat_index)
return xe->pat.table[pat_index].coh_mode;
}
+bool xe_pat_index_has_compression(struct xe_device *xe, u16 pat_index)
+{
+ WARN_ON(pat_index >= xe->pat.n_entries);
+ return xe->pat.table[pat_index].compressed;
+}
+
static void program_pat(struct xe_gt *gt, const struct xe_pat_table_entry table[],
int n_entries)
{
diff --git a/drivers/gpu/drm/xe/xe_pat.h b/drivers/gpu/drm/xe/xe_pat.h
index fa0dfbe525cd..c8aacd30b184 100644
--- a/drivers/gpu/drm/xe/xe_pat.h
+++ b/drivers/gpu/drm/xe/xe_pat.h
@@ -29,6 +29,7 @@ struct xe_pat_table_entry {
#define XE_COH_NONE 1
#define XE_COH_AT_LEAST_1WAY 2
u16 coh_mode;
+ bool compressed;
};
/**
@@ -58,4 +59,11 @@ void xe_pat_dump(struct xe_gt *gt, struct drm_printer *p);
*/
u16 xe_pat_index_get_coh_mode(struct xe_device *xe, u16 pat_index);
+/**
+ * xe_pat_index_has_compression - Is pat_index using ccs compression
+ * @xe: xe device
+ * @pat_index: The pat_index to query
+ */
+bool xe_pat_index_has_compression(struct xe_device *xe, u16 pat_index);
+
#endif
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 2/5] drm/xe: add bind time pat index to xe_bo structure
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
2024-01-26 21:08 ` [PATCH 1/5] drm/xe/pat: annotate pat index table with compression information Juha-Pekka Heikkila
@ 2024-01-26 21:08 ` Juha-Pekka Heikkila
2024-01-26 21:08 ` [PATCH 3/5] drm/xe: store bind time pat index to xe_bo Juha-Pekka Heikkila
` (8 subsequent siblings)
10 siblings, 0 replies; 18+ messages in thread
From: Juha-Pekka Heikkila @ 2024-01-26 21:08 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: Juha-Pekka Heikkila
Add BO bind time pat index member and framebuffer pin time pat index
to xe_bo structure.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
drivers/gpu/drm/xe/xe_bo_types.h | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
index 14ef13b7b421..ccf63058be66 100644
--- a/drivers/gpu/drm/xe/xe_bo_types.h
+++ b/drivers/gpu/drm/xe/xe_bo_types.h
@@ -91,6 +91,17 @@ struct xe_bo {
/** @vram_userfault_link: Link into @mem_access.vram_userfault.list */
struct list_head vram_userfault_link;
+
+ /**
+ * @pat_index: The pat index requested when bind this BO
+ */
+ u16 pat_index;
+
+ /**
+ * @pat_index_scanout: The pat index in use when pinning this BO
+ * as framebuffer.
+ */
+ u16 pat_index_scanout;
};
#define intel_bo_to_drm_bo(bo) (&(bo)->ttm.base)
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 3/5] drm/xe: store bind time pat index to xe_bo
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
2024-01-26 21:08 ` [PATCH 1/5] drm/xe/pat: annotate pat index table with compression information Juha-Pekka Heikkila
2024-01-26 21:08 ` [PATCH 2/5] drm/xe: add bind time pat index to xe_bo structure Juha-Pekka Heikkila
@ 2024-01-26 21:08 ` Juha-Pekka Heikkila
2024-01-29 11:33 ` Matthew Auld
2024-01-31 9:10 ` Dan Carpenter
2024-01-26 21:08 ` [PATCH 4/5] drm/xe/xe2: Limit ccs framebuffers to tile4 only Juha-Pekka Heikkila
` (7 subsequent siblings)
10 siblings, 2 replies; 18+ messages in thread
From: Juha-Pekka Heikkila @ 2024-01-26 21:08 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: Juha-Pekka Heikkila
Store pat index from xe_vma to xe_bo and check if bo was pinned
as framebuffer and verify pat index is not changing for pinned
framebuffers.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
drivers/gpu/drm/xe/xe_pt.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index de1030a47588..0a5d7c7543b1 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -1208,10 +1208,11 @@ __xe_pt_bind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue
struct dma_fence *fence;
struct invalidation_fence *ifence = NULL;
struct xe_range_fence *rfence;
+ struct xe_bo *bo = xe_vma_bo(vma);
int err;
bind_pt_update.locked = false;
- xe_bo_assert_held(xe_vma_bo(vma));
+ xe_bo_assert_held(bo);
xe_vm_assert_held(vm);
vm_dbg(&xe_vma_vm(vma)->xe->drm,
@@ -1252,8 +1253,22 @@ __xe_pt_bind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue
return ERR_PTR(-ENOMEM);
}
+ /*
+ * BO which has XE_BO_SCANOUT_BIT set and was pinned as framebuffer
+ * before with different PAT index cannot be bound with different PAT
+ * index. This is to prevent switching CCS on/off from framebuffers
+ * on the fly.
+ */
+ if (bo) {
+ if (bo->flags & XE_BO_SCANOUT_BIT && bo->pat_index_scanout &&
+ bo->pat_index_scanout != vma->pat_index)
+ return ERR_PTR(-EINVAL);
+
+ bo->pat_index = vma->pat_index;
+ }
+
fence = xe_migrate_update_pgtables(tile->migrate,
- vm, xe_vma_bo(vma), q,
+ vm, bo, q,
entries, num_entries,
syncs, num_syncs,
&bind_pt_update.base);
@@ -1287,8 +1302,8 @@ __xe_pt_bind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue
DMA_RESV_USAGE_KERNEL :
DMA_RESV_USAGE_BOOKKEEP);
- if (!xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
- dma_resv_add_fence(xe_vma_bo(vma)->ttm.base.resv, fence,
+ if (!xe_vma_has_no_bo(vma) && !bo->vm)
+ dma_resv_add_fence(bo->ttm.base.resv, fence,
DMA_RESV_USAGE_BOOKKEEP);
xe_pt_commit_bind(vma, entries, num_entries, rebind,
bind_pt_update.locked ? &deferred : NULL);
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH 3/5] drm/xe: store bind time pat index to xe_bo
2024-01-26 21:08 ` [PATCH 3/5] drm/xe: store bind time pat index to xe_bo Juha-Pekka Heikkila
@ 2024-01-29 11:33 ` Matthew Auld
2024-01-30 19:16 ` Juha-Pekka Heikkila
2024-01-31 9:10 ` Dan Carpenter
1 sibling, 1 reply; 18+ messages in thread
From: Matthew Auld @ 2024-01-29 11:33 UTC (permalink / raw)
To: Juha-Pekka Heikkila, intel-xe, intel-gfx
On 26/01/2024 21:08, Juha-Pekka Heikkila wrote:
> Store pat index from xe_vma to xe_bo and check if bo was pinned
> as framebuffer and verify pat index is not changing for pinned
> framebuffers.
>
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
> drivers/gpu/drm/xe/xe_pt.c | 23 +++++++++++++++++++----
> 1 file changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
> index de1030a47588..0a5d7c7543b1 100644
> --- a/drivers/gpu/drm/xe/xe_pt.c
> +++ b/drivers/gpu/drm/xe/xe_pt.c
> @@ -1208,10 +1208,11 @@ __xe_pt_bind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue
> struct dma_fence *fence;
> struct invalidation_fence *ifence = NULL;
> struct xe_range_fence *rfence;
> + struct xe_bo *bo = xe_vma_bo(vma);
> int err;
>
> bind_pt_update.locked = false;
> - xe_bo_assert_held(xe_vma_bo(vma));
> + xe_bo_assert_held(bo);
> xe_vm_assert_held(vm);
>
> vm_dbg(&xe_vma_vm(vma)->xe->drm,
> @@ -1252,8 +1253,22 @@ __xe_pt_bind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue
> return ERR_PTR(-ENOMEM);
> }
>
> + /*
> + * BO which has XE_BO_SCANOUT_BIT set and was pinned as framebuffer
> + * before with different PAT index cannot be bound with different PAT
> + * index. This is to prevent switching CCS on/off from framebuffers
> + * on the fly.
> + */
> + if (bo) {
> + if (bo->flags & XE_BO_SCANOUT_BIT && bo->pat_index_scanout &&
Note that pat_index = 0 is usually a valid index...
> + bo->pat_index_scanout != vma->pat_index)
> + return ERR_PTR(-EINVAL);
> +
> + bo->pat_index = vma->pat_index;
> + }
...what about something like:
if (bo.has_sealed_pat_index && bo.sealed_pat_index != vma->pat_index)
return ERR_PTR();
else if (SCANOUT) {
bo.has_sealed_pat_index = true;
bo.sealed_pat_index = vma->pat_index;
}
Also, this and the previous patch should probably be squashed together?
Other question is if we should only apply this on xe2?
> +
> fence = xe_migrate_update_pgtables(tile->migrate,
> - vm, xe_vma_bo(vma), q,
> + vm, bo, q,
> entries, num_entries,
> syncs, num_syncs,
> &bind_pt_update.base);
> @@ -1287,8 +1302,8 @@ __xe_pt_bind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue
> DMA_RESV_USAGE_KERNEL :
> DMA_RESV_USAGE_BOOKKEEP);
>
> - if (!xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
> - dma_resv_add_fence(xe_vma_bo(vma)->ttm.base.resv, fence,
> + if (!xe_vma_has_no_bo(vma) && !bo->vm)
> + dma_resv_add_fence(bo->ttm.base.resv, fence,
> DMA_RESV_USAGE_BOOKKEEP);
> xe_pt_commit_bind(vma, entries, num_entries, rebind,
> bind_pt_update.locked ? &deferred : NULL);
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH 3/5] drm/xe: store bind time pat index to xe_bo
2024-01-29 11:33 ` Matthew Auld
@ 2024-01-30 19:16 ` Juha-Pekka Heikkila
0 siblings, 0 replies; 18+ messages in thread
From: Juha-Pekka Heikkila @ 2024-01-30 19:16 UTC (permalink / raw)
To: Matthew Auld, intel-xe, intel-gfx
On 29.1.2024 13.33, Matthew Auld wrote:
> On 26/01/2024 21:08, Juha-Pekka Heikkila wrote:
>> Store pat index from xe_vma to xe_bo and check if bo was pinned
>> as framebuffer and verify pat index is not changing for pinned
>> framebuffers.
>>
>> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
>> ---
>> drivers/gpu/drm/xe/xe_pt.c | 23 +++++++++++++++++++----
>> 1 file changed, 19 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
>> index de1030a47588..0a5d7c7543b1 100644
>> --- a/drivers/gpu/drm/xe/xe_pt.c
>> +++ b/drivers/gpu/drm/xe/xe_pt.c
>> @@ -1208,10 +1208,11 @@ __xe_pt_bind_vma(struct xe_tile *tile, struct
>> xe_vma *vma, struct xe_exec_queue
>> struct dma_fence *fence;
>> struct invalidation_fence *ifence = NULL;
>> struct xe_range_fence *rfence;
>> + struct xe_bo *bo = xe_vma_bo(vma);
>> int err;
>> bind_pt_update.locked = false;
>> - xe_bo_assert_held(xe_vma_bo(vma));
>> + xe_bo_assert_held(bo);
>> xe_vm_assert_held(vm);
>> vm_dbg(&xe_vma_vm(vma)->xe->drm,
>> @@ -1252,8 +1253,22 @@ __xe_pt_bind_vma(struct xe_tile *tile, struct
>> xe_vma *vma, struct xe_exec_queue
>> return ERR_PTR(-ENOMEM);
>> }
>> + /*
>> + * BO which has XE_BO_SCANOUT_BIT set and was pinned as framebuffer
>> + * before with different PAT index cannot be bound with different
>> PAT
>> + * index. This is to prevent switching CCS on/off from framebuffers
>> + * on the fly.
>> + */
>> + if (bo) {
>> + if (bo->flags & XE_BO_SCANOUT_BIT && bo->pat_index_scanout &&
>
> Note that pat_index = 0 is usually a valid index...
>
>> + bo->pat_index_scanout != vma->pat_index)
>> + return ERR_PTR(-EINVAL);
>> +
>> + bo->pat_index = vma->pat_index;
>> + }
>
> ...what about something like:
>
> if (bo.has_sealed_pat_index && bo.sealed_pat_index != vma->pat_index)
> return ERR_PTR();
> else if (SCANOUT) {
> bo.has_sealed_pat_index = true;
> bo.sealed_pat_index = vma->pat_index;
> }
>
> Also, this and the previous patch should probably be squashed together?
> Other question is if we should only apply this on xe2?
Hi Matthew, thanks for the comments. I went ahead with making
has_sealed_pat_index and it did make things much more clean. It's good
idea, thanks. I'll soon send new version. Here I didn't go limit this to
xe2 as the limit is coming from framebuffer code, if there come other
use for this pat index sealing it doesn't need to be about xe2 on this part.
>
>> +
>> fence = xe_migrate_update_pgtables(tile->migrate,
>> - vm, xe_vma_bo(vma), q,
>> + vm, bo, q,
>> entries, num_entries,
>> syncs, num_syncs,
>> &bind_pt_update.base);
>> @@ -1287,8 +1302,8 @@ __xe_pt_bind_vma(struct xe_tile *tile, struct
>> xe_vma *vma, struct xe_exec_queue
>> DMA_RESV_USAGE_KERNEL :
>> DMA_RESV_USAGE_BOOKKEEP);
>> - if (!xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
>> - dma_resv_add_fence(xe_vma_bo(vma)->ttm.base.resv, fence,
>> + if (!xe_vma_has_no_bo(vma) && !bo->vm)
>> + dma_resv_add_fence(bo->ttm.base.resv, fence,
>> DMA_RESV_USAGE_BOOKKEEP);
>> xe_pt_commit_bind(vma, entries, num_entries, rebind,
>> bind_pt_update.locked ? &deferred : NULL);
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 3/5] drm/xe: store bind time pat index to xe_bo
2024-01-26 21:08 ` [PATCH 3/5] drm/xe: store bind time pat index to xe_bo Juha-Pekka Heikkila
2024-01-29 11:33 ` Matthew Auld
@ 2024-01-31 9:10 ` Dan Carpenter
1 sibling, 0 replies; 18+ messages in thread
From: Dan Carpenter @ 2024-01-31 9:10 UTC (permalink / raw)
To: oe-kbuild, Juha-Pekka Heikkila, intel-xe, intel-gfx; +Cc: lkp, oe-kbuild-all
Hi Juha-Pekka,
kernel test robot noticed the following build warnings:
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Juha-Pekka-Heikkila/drm-xe-pat-annotate-pat-index-table-with-compression-information/20240127-091231
base: https://gitlab.freedesktop.org/drm/xe/kernel.git drm-xe-next
patch link: https://lore.kernel.org/r/20240126210807.320671-4-juhapekka.heikkila%40gmail.com
patch subject: [PATCH 3/5] drm/xe: store bind time pat index to xe_bo
config: sparc-randconfig-r081-20240128 (https://download.01.org/0day-ci/archive/20240131/202401311604.1pLlAxeK-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 13.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202401311604.1pLlAxeK-lkp@intel.com/
New smatch warnings:
drivers/gpu/drm/xe/xe_pt.c:1265 __xe_pt_bind_vma() warn: possible memory leak of 'ifence'
drivers/gpu/drm/xe/xe_pt.c:1265 __xe_pt_bind_vma() warn: possible memory leak of 'rfence'
vim +/ifence +1265 drivers/gpu/drm/xe/xe_pt.c
dd08ebf6c3525a Matthew Brost 2023-03-30 1192 struct dma_fence *
9b9529ce379a08 Francois Dugast 2023-07-31 1193 __xe_pt_bind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue *q,
dd08ebf6c3525a Matthew Brost 2023-03-30 1194 struct xe_sync_entry *syncs, u32 num_syncs,
dd08ebf6c3525a Matthew Brost 2023-03-30 1195 bool rebind)
dd08ebf6c3525a Matthew Brost 2023-03-30 1196 {
dd08ebf6c3525a Matthew Brost 2023-03-30 1197 struct xe_vm_pgtable_update entries[XE_VM_MAX_LEVEL * 2 + 1];
dd08ebf6c3525a Matthew Brost 2023-03-30 1198 struct xe_pt_migrate_pt_update bind_pt_update = {
dd08ebf6c3525a Matthew Brost 2023-03-30 1199 .base = {
dd08ebf6c3525a Matthew Brost 2023-03-30 1200 .ops = xe_vma_is_userptr(vma) ? &userptr_bind_ops : &bind_ops,
dd08ebf6c3525a Matthew Brost 2023-03-30 1201 .vma = vma,
fd84041d094ce8 Matthew Brost 2023-07-19 1202 .tile_id = tile->id,
dd08ebf6c3525a Matthew Brost 2023-03-30 1203 },
dd08ebf6c3525a Matthew Brost 2023-03-30 1204 .bind = true,
dd08ebf6c3525a Matthew Brost 2023-03-30 1205 };
21ed3327e388c2 Matthew Brost 2023-06-22 1206 struct xe_vm *vm = xe_vma_vm(vma);
dd08ebf6c3525a Matthew Brost 2023-03-30 1207 u32 num_entries;
dd08ebf6c3525a Matthew Brost 2023-03-30 1208 struct dma_fence *fence;
5387e865d90e92 Matthew Brost 2023-01-27 1209 struct invalidation_fence *ifence = NULL;
fd84041d094ce8 Matthew Brost 2023-07-19 1210 struct xe_range_fence *rfence;
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1211 struct xe_bo *bo = xe_vma_bo(vma);
dd08ebf6c3525a Matthew Brost 2023-03-30 1212 int err;
dd08ebf6c3525a Matthew Brost 2023-03-30 1213
dd08ebf6c3525a Matthew Brost 2023-03-30 1214 bind_pt_update.locked = false;
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1215 xe_bo_assert_held(bo);
dd08ebf6c3525a Matthew Brost 2023-03-30 1216 xe_vm_assert_held(vm);
dd08ebf6c3525a Matthew Brost 2023-03-30 1217
21ed3327e388c2 Matthew Brost 2023-06-22 1218 vm_dbg(&xe_vma_vm(vma)->xe->drm,
dd08ebf6c3525a Matthew Brost 2023-03-30 1219 "Preparing bind, with range [%llx...%llx) engine %p.\n",
0e1a234618a86c Paulo Zanoni 2023-09-29 1220 xe_vma_start(vma), xe_vma_end(vma), q);
dd08ebf6c3525a Matthew Brost 2023-03-30 1221
876611c2b75689 Matt Roper 2023-06-01 1222 err = xe_pt_prepare_bind(tile, vma, entries, &num_entries, rebind);
dd08ebf6c3525a Matthew Brost 2023-03-30 1223 if (err)
dd08ebf6c3525a Matthew Brost 2023-03-30 1224 goto err;
c73acc1eeba5e3 Francois Dugast 2023-09-12 1225 xe_tile_assert(tile, num_entries <= ARRAY_SIZE(entries));
dd08ebf6c3525a Matthew Brost 2023-03-30 1226
876611c2b75689 Matt Roper 2023-06-01 1227 xe_vm_dbg_print_entries(tile_to_xe(tile), entries, num_entries);
fd84041d094ce8 Matthew Brost 2023-07-19 1228 xe_pt_calc_rfence_interval(vma, &bind_pt_update, entries,
fd84041d094ce8 Matthew Brost 2023-07-19 1229 num_entries);
dd08ebf6c3525a Matthew Brost 2023-03-30 1230
85dbfe47d07cdd Thomas Hellström 2023-06-05 1231 /*
85dbfe47d07cdd Thomas Hellström 2023-06-05 1232 * If rebind, we have to invalidate TLB on !LR vms to invalidate
85dbfe47d07cdd Thomas Hellström 2023-06-05 1233 * cached PTEs point to freed memory. on LR vms this is done
85dbfe47d07cdd Thomas Hellström 2023-06-05 1234 * automatically when the context is re-enabled by the rebind worker,
85dbfe47d07cdd Thomas Hellström 2023-06-05 1235 * or in fault mode it was invalidated on PTE zapping.
85dbfe47d07cdd Thomas Hellström 2023-06-05 1236 *
85dbfe47d07cdd Thomas Hellström 2023-06-05 1237 * If !rebind, and scratch enabled VMs, there is a chance the scratch
85dbfe47d07cdd Thomas Hellström 2023-06-05 1238 * PTE is already cached in the TLB so it needs to be invalidated.
85dbfe47d07cdd Thomas Hellström 2023-06-05 1239 * on !LR VMs this is done in the ring ops preceding a batch, but on
85dbfe47d07cdd Thomas Hellström 2023-06-05 1240 * non-faulting LR, in particular on user-space batch buffer chaining,
85dbfe47d07cdd Thomas Hellström 2023-06-05 1241 * it needs to be done here.
85dbfe47d07cdd Thomas Hellström 2023-06-05 1242 */
fdb6a05383fab3 Thomas Hellström 2023-11-27 1243 if ((rebind && !xe_vm_in_lr_mode(vm) && !vm->batch_invalidate_tlb) ||
06951c2ee72df2 Thomas Hellström 2023-12-09 1244 (!rebind && xe_vm_has_scratch(vm) && xe_vm_in_preempt_fence_mode(vm))) {
5387e865d90e92 Matthew Brost 2023-01-27 1245 ifence = kzalloc(sizeof(*ifence), GFP_KERNEL);
5387e865d90e92 Matthew Brost 2023-01-27 1246 if (!ifence)
5387e865d90e92 Matthew Brost 2023-01-27 1247 return ERR_PTR(-ENOMEM);
5387e865d90e92 Matthew Brost 2023-01-27 1248 }
5387e865d90e92 Matthew Brost 2023-01-27 1249
fd84041d094ce8 Matthew Brost 2023-07-19 1250 rfence = kzalloc(sizeof(*rfence), GFP_KERNEL);
fd84041d094ce8 Matthew Brost 2023-07-19 1251 if (!rfence) {
fd84041d094ce8 Matthew Brost 2023-07-19 1252 kfree(ifence);
fd84041d094ce8 Matthew Brost 2023-07-19 1253 return ERR_PTR(-ENOMEM);
fd84041d094ce8 Matthew Brost 2023-07-19 1254 }
fd84041d094ce8 Matthew Brost 2023-07-19 1255
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1256 /*
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1257 * BO which has XE_BO_SCANOUT_BIT set and was pinned as framebuffer
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1258 * before with different PAT index cannot be bound with different PAT
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1259 * index. This is to prevent switching CCS on/off from framebuffers
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1260 * on the fly.
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1261 */
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 @1262 if (bo) {
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1263 if (bo->flags & XE_BO_SCANOUT_BIT && bo->pat_index_scanout &&
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1264 bo->pat_index_scanout != vma->pat_index)
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 @1265 return ERR_PTR(-EINVAL);
Smatch wants a kfree(ifence) and kfree(rfence) before the return.
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1266
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1267 bo->pat_index = vma->pat_index;
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1268 }
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1269
08dea7674533cf Matt Roper 2023-06-01 1270 fence = xe_migrate_update_pgtables(tile->migrate,
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 1271 vm, bo, q,
dd08ebf6c3525a Matthew Brost 2023-03-30 1272 entries, num_entries,
dd08ebf6c3525a Matthew Brost 2023-03-30 1273 syncs, num_syncs,
dd08ebf6c3525a Matthew Brost 2023-03-30 1274 &bind_pt_update.base);
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 4/5] drm/xe/xe2: Limit ccs framebuffers to tile4 only
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
` (2 preceding siblings ...)
2024-01-26 21:08 ` [PATCH 3/5] drm/xe: store bind time pat index to xe_bo Juha-Pekka Heikkila
@ 2024-01-26 21:08 ` Juha-Pekka Heikkila
2024-01-29 12:02 ` Matthew Auld
2024-01-26 21:08 ` [PATCH 5/5] drm/i915/display: On Xe2 always enable decompression with tile4 Juha-Pekka Heikkila
` (6 subsequent siblings)
10 siblings, 1 reply; 18+ messages in thread
From: Juha-Pekka Heikkila @ 2024-01-26 21:08 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: Juha-Pekka Heikkila
Display engine support ccs only with tile4, prevent other modifiers
from using compressed memory. Store pin time pat index to xe_bo.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
drivers/gpu/drm/xe/display/xe_fb_pin.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index 722c84a56607..b2930a226f54 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -10,9 +10,18 @@
#include "intel_fb_pin.h"
#include "xe_ggtt.h"
#include "xe_gt.h"
+#include "xe_pat.h"
#include <drm/ttm/ttm_bo.h>
+static bool is_compressed(const struct drm_framebuffer *fb)
+{
+ struct xe_bo *bo = intel_fb_obj(fb);
+ struct xe_device *xe = to_xe_device(to_intel_framebuffer(fb)->base.dev);
+
+ return xe_pat_index_has_compression(xe, bo->pat_index);
+}
+
static void
write_dpt_rotated(struct xe_bo *bo, struct iosys_map *map, u32 *dpt_ofs, u32 bo_ofs,
u32 width, u32 height, u32 src_stride, u32 dst_stride)
@@ -349,12 +358,22 @@ void intel_unpin_fb_vma(struct i915_vma *vma, unsigned long flags)
int intel_plane_pin_fb(struct intel_plane_state *plane_state)
{
struct drm_framebuffer *fb = plane_state->hw.fb;
+ struct xe_device *xe = to_xe_device(to_intel_framebuffer(fb)->base.dev);
struct xe_bo *bo = intel_fb_obj(fb);
struct i915_vma *vma;
/* We reject creating !SCANOUT fb's, so this is weird.. */
drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_SCANOUT_BIT));
+ if (GRAPHICS_VER(xe) >= 20) {
+ if (fb->modifier != I915_FORMAT_MOD_4_TILED &&
+ is_compressed(fb)) {
+ drm_warn(&xe->drm, "Cannot create ccs framebuffer with other than tile4 mofifier\n");
+ return -EINVAL;
+ }
+ bo->pat_index_scanout = bo->pat_index;
+ }
+
vma = __xe_pin_fb_vma(to_intel_framebuffer(fb), &plane_state->view.gtt);
if (IS_ERR(vma))
return PTR_ERR(vma);
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH 4/5] drm/xe/xe2: Limit ccs framebuffers to tile4 only
2024-01-26 21:08 ` [PATCH 4/5] drm/xe/xe2: Limit ccs framebuffers to tile4 only Juha-Pekka Heikkila
@ 2024-01-29 12:02 ` Matthew Auld
2024-01-30 19:16 ` Juha-Pekka Heikkila
0 siblings, 1 reply; 18+ messages in thread
From: Matthew Auld @ 2024-01-29 12:02 UTC (permalink / raw)
To: Juha-Pekka Heikkila, intel-xe, intel-gfx
On 26/01/2024 21:08, Juha-Pekka Heikkila wrote:
> Display engine support ccs only with tile4, prevent other modifiers
> from using compressed memory. Store pin time pat index to xe_bo.
>
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
> drivers/gpu/drm/xe/display/xe_fb_pin.c | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> index 722c84a56607..b2930a226f54 100644
> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> @@ -10,9 +10,18 @@
> #include "intel_fb_pin.h"
> #include "xe_ggtt.h"
> #include "xe_gt.h"
> +#include "xe_pat.h"
>
> #include <drm/ttm/ttm_bo.h>
>
> +static bool is_compressed(const struct drm_framebuffer *fb)
> +{
> + struct xe_bo *bo = intel_fb_obj(fb);
> + struct xe_device *xe = to_xe_device(to_intel_framebuffer(fb)->base.dev);
> +
> + return xe_pat_index_has_compression(xe, bo->pat_index);
> +}
> +
> static void
> write_dpt_rotated(struct xe_bo *bo, struct iosys_map *map, u32 *dpt_ofs, u32 bo_ofs,
> u32 width, u32 height, u32 src_stride, u32 dst_stride)
> @@ -349,12 +358,22 @@ void intel_unpin_fb_vma(struct i915_vma *vma, unsigned long flags)
> int intel_plane_pin_fb(struct intel_plane_state *plane_state)
> {
> struct drm_framebuffer *fb = plane_state->hw.fb;
> + struct xe_device *xe = to_xe_device(to_intel_framebuffer(fb)->base.dev);
> struct xe_bo *bo = intel_fb_obj(fb);
> struct i915_vma *vma;
>
> /* We reject creating !SCANOUT fb's, so this is weird.. */
> drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_SCANOUT_BIT));
>
> + if (GRAPHICS_VER(xe) >= 20) {
> + if (fb->modifier != I915_FORMAT_MOD_4_TILED &&
> + is_compressed(fb)) {
> + drm_warn(&xe->drm, "Cannot create ccs framebuffer with other than tile4 mofifier\n");
> + return -EINVAL;
> + }
> + bo->pat_index_scanout = bo->pat_index;
> + }
I think this needs to be moved into __xe_pin_fb_vma() after acquiring
the object lock. Also not sure what prevents vm_bind appearing after we
drop the lock? Do we need to prevent modifications until the end of
_xe_unpin_fb_vma()?
> +
> vma = __xe_pin_fb_vma(to_intel_framebuffer(fb), &plane_state->view.gtt);
> if (IS_ERR(vma))
> return PTR_ERR(vma);
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH 4/5] drm/xe/xe2: Limit ccs framebuffers to tile4 only
2024-01-29 12:02 ` Matthew Auld
@ 2024-01-30 19:16 ` Juha-Pekka Heikkila
2024-01-31 10:26 ` Maarten Lankhorst
0 siblings, 1 reply; 18+ messages in thread
From: Juha-Pekka Heikkila @ 2024-01-30 19:16 UTC (permalink / raw)
To: Matthew Auld, intel-xe, intel-gfx
On 29.1.2024 14.02, Matthew Auld wrote:
> On 26/01/2024 21:08, Juha-Pekka Heikkila wrote:
>> Display engine support ccs only with tile4, prevent other modifiers
>> from using compressed memory. Store pin time pat index to xe_bo.
>>
>> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
>> ---
>> drivers/gpu/drm/xe/display/xe_fb_pin.c | 19 +++++++++++++++++++
>> 1 file changed, 19 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c
>> b/drivers/gpu/drm/xe/display/xe_fb_pin.c
>> index 722c84a56607..b2930a226f54 100644
>> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
>> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
>> @@ -10,9 +10,18 @@
>> #include "intel_fb_pin.h"
>> #include "xe_ggtt.h"
>> #include "xe_gt.h"
>> +#include "xe_pat.h"
>> #include <drm/ttm/ttm_bo.h>
>> +static bool is_compressed(const struct drm_framebuffer *fb)
>> +{
>> + struct xe_bo *bo = intel_fb_obj(fb);
>> + struct xe_device *xe =
>> to_xe_device(to_intel_framebuffer(fb)->base.dev);
>> +
>> + return xe_pat_index_has_compression(xe, bo->pat_index);
>> +}
>> +
>> static void
>> write_dpt_rotated(struct xe_bo *bo, struct iosys_map *map, u32
>> *dpt_ofs, u32 bo_ofs,
>> u32 width, u32 height, u32 src_stride, u32 dst_stride)
>> @@ -349,12 +358,22 @@ void intel_unpin_fb_vma(struct i915_vma *vma,
>> unsigned long flags)
>> int intel_plane_pin_fb(struct intel_plane_state *plane_state)
>> {
>> struct drm_framebuffer *fb = plane_state->hw.fb;
>> + struct xe_device *xe =
>> to_xe_device(to_intel_framebuffer(fb)->base.dev);
>> struct xe_bo *bo = intel_fb_obj(fb);
>> struct i915_vma *vma;
>> /* We reject creating !SCANOUT fb's, so this is weird.. */
>> drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_SCANOUT_BIT));
>> + if (GRAPHICS_VER(xe) >= 20) {
>> + if (fb->modifier != I915_FORMAT_MOD_4_TILED &&
>> + is_compressed(fb)) {
>> + drm_warn(&xe->drm, "Cannot create ccs framebuffer with
>> other than tile4 mofifier\n");
>> + return -EINVAL;
>> + }
>> + bo->pat_index_scanout = bo->pat_index;
>> + }
>
> I think this needs to be moved into __xe_pin_fb_vma() after acquiring
> the object lock. Also not sure what prevents vm_bind appearing after we
> drop the lock? Do we need to prevent modifications until the end of
> _xe_unpin_fb_vma()?
I did now put in __xe_unpin_fb_vma()
..
vma->bo->has_sealed_pat_index = false;
..
as well as moved this above block to correct place.
>
>> +
>> vma = __xe_pin_fb_vma(to_intel_framebuffer(fb),
>> &plane_state->view.gtt);
>> if (IS_ERR(vma))
>> return PTR_ERR(vma);
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH 4/5] drm/xe/xe2: Limit ccs framebuffers to tile4 only
2024-01-30 19:16 ` Juha-Pekka Heikkila
@ 2024-01-31 10:26 ` Maarten Lankhorst
0 siblings, 0 replies; 18+ messages in thread
From: Maarten Lankhorst @ 2024-01-31 10:26 UTC (permalink / raw)
To: juhapekka.heikkila, Matthew Auld, intel-xe, intel-gfx
Hey,
On 2024-01-30 20:16, Juha-Pekka Heikkila wrote:
> On 29.1.2024 14.02, Matthew Auld wrote:
>> On 26/01/2024 21:08, Juha-Pekka Heikkila wrote:
>>> Display engine support ccs only with tile4, prevent other modifiers
>>> from using compressed memory. Store pin time pat index to xe_bo.
>>>
>>> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
>>> ---
>>> drivers/gpu/drm/xe/display/xe_fb_pin.c | 19 +++++++++++++++++++
>>> 1 file changed, 19 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c
>>> b/drivers/gpu/drm/xe/display/xe_fb_pin.c
>>> index 722c84a56607..b2930a226f54 100644
>>> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
>>> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
>>> @@ -10,9 +10,18 @@
>>> #include "intel_fb_pin.h"
>>> #include "xe_ggtt.h"
>>> #include "xe_gt.h"
>>> +#include "xe_pat.h"
>>> #include <drm/ttm/ttm_bo.h>
>>> +static bool is_compressed(const struct drm_framebuffer *fb)
>>> +{
>>> + struct xe_bo *bo = intel_fb_obj(fb);
>>> + struct xe_device *xe =
>>> to_xe_device(to_intel_framebuffer(fb)->base.dev);
>>> +
>>> + return xe_pat_index_has_compression(xe, bo->pat_index);
>>> +}
>>> +
>>> static void
>>> write_dpt_rotated(struct xe_bo *bo, struct iosys_map *map, u32
>>> *dpt_ofs, u32 bo_ofs,
>>> u32 width, u32 height, u32 src_stride, u32 dst_stride)
>>> @@ -349,12 +358,22 @@ void intel_unpin_fb_vma(struct i915_vma *vma,
>>> unsigned long flags)
>>> int intel_plane_pin_fb(struct intel_plane_state *plane_state)
>>> {
>>> struct drm_framebuffer *fb = plane_state->hw.fb;
>>> + struct xe_device *xe =
>>> to_xe_device(to_intel_framebuffer(fb)->base.dev);
>>> struct xe_bo *bo = intel_fb_obj(fb);
>>> struct i915_vma *vma;
>>> /* We reject creating !SCANOUT fb's, so this is weird.. */
>>> drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_SCANOUT_BIT));
>>> + if (GRAPHICS_VER(xe) >= 20) {
>>> + if (fb->modifier != I915_FORMAT_MOD_4_TILED &&
>>> + is_compressed(fb)) {
>>> + drm_warn(&xe->drm, "Cannot create ccs framebuffer with
>>> other than tile4 mofifier\n");
>>> + return -EINVAL;
>>> + }
>>> + bo->pat_index_scanout = bo->pat_index;
>>> + }
>>
>> I think this needs to be moved into __xe_pin_fb_vma() after acquiring
>> the object lock. Also not sure what prevents vm_bind appearing after
>> we drop the lock? Do we need to prevent modifications until the end of
>> _xe_unpin_fb_vma()?
>
> I did now put in __xe_unpin_fb_vma()
> ..
> vma->bo->has_sealed_pat_index = false;
> ..
>
> as well as moved this above block to correct place.
I'm pretty sure this will fail if the BO is pinned more than once
simultaneously. Should probably be a refcount protected by bo lock instead.
Is the harm from allowing this only having a garbled display?
If so, we might as well allow it, and avoid complicating the bind code
even more.
Cheers,
~Maarten
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 5/5] drm/i915/display: On Xe2 always enable decompression with tile4
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
` (3 preceding siblings ...)
2024-01-26 21:08 ` [PATCH 4/5] drm/xe/xe2: Limit ccs framebuffers to tile4 only Juha-Pekka Heikkila
@ 2024-01-26 21:08 ` Juha-Pekka Heikkila
2024-01-26 21:34 ` ✓ CI.Patch_applied: success for Enable ccs compressed framebuffers on Xe2 (rev3) Patchwork
` (5 subsequent siblings)
10 siblings, 0 replies; 18+ messages in thread
From: Juha-Pekka Heikkila @ 2024-01-26 21:08 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: Mika Kahola, Juha-Pekka Heikkila
With Xe2 always treat tile4 as if it was using flat ccs.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
---
drivers/gpu/drm/i915/display/skl_universal_plane.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 511dc1544854..43209909593f 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -948,6 +948,11 @@ static u32 skl_plane_ctl(const struct intel_crtc_state *crtc_state,
if (DISPLAY_VER(dev_priv) == 13)
plane_ctl |= adlp_plane_ctl_arb_slots(plane_state);
+ if (GRAPHICS_VER(dev_priv) >= 20 &&
+ fb->modifier == I915_FORMAT_MOD_4_TILED) {
+ plane_ctl |= PLANE_CTL_RENDER_DECOMPRESSION_ENABLE;
+ }
+
return plane_ctl;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* ✓ CI.Patch_applied: success for Enable ccs compressed framebuffers on Xe2 (rev3)
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
` (4 preceding siblings ...)
2024-01-26 21:08 ` [PATCH 5/5] drm/i915/display: On Xe2 always enable decompression with tile4 Juha-Pekka Heikkila
@ 2024-01-26 21:34 ` Patchwork
2024-01-26 21:34 ` ✓ CI.checkpatch: " Patchwork
` (4 subsequent siblings)
10 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2024-01-26 21:34 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: intel-xe
== Series Details ==
Series: Enable ccs compressed framebuffers on Xe2 (rev3)
URL : https://patchwork.freedesktop.org/series/128946/
State : success
== Summary ==
=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: eeedb1b43 drm-tip: 2024y-01m-26d-20h-14m-43s UTC integration manifest
=== git am output follows ===
Applying: drm/xe/pat: annotate pat index table with compression information
Applying: drm/xe: add bind time pat index to xe_bo structure
Applying: drm/xe: store bind time pat index to xe_bo
Applying: drm/xe/xe2: Limit ccs framebuffers to tile4 only
Applying: drm/i915/display: On Xe2 always enable decompression with tile4
^ permalink raw reply [flat|nested] 18+ messages in thread* ✓ CI.checkpatch: success for Enable ccs compressed framebuffers on Xe2 (rev3)
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
` (5 preceding siblings ...)
2024-01-26 21:34 ` ✓ CI.Patch_applied: success for Enable ccs compressed framebuffers on Xe2 (rev3) Patchwork
@ 2024-01-26 21:34 ` Patchwork
2024-01-26 21:35 ` ✗ CI.KUnit: failure " Patchwork
` (3 subsequent siblings)
10 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2024-01-26 21:34 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: intel-xe
== Series Details ==
Series: Enable ccs compressed framebuffers on Xe2 (rev3)
URL : https://patchwork.freedesktop.org/series/128946/
State : success
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
2d919ac662b2798c053d68d1cc16b758c61b55ca
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit efa9a62d065cbe3ade7ee44ea1154f112f644f7d
Author: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Date: Fri Jan 26 23:08:07 2024 +0200
drm/i915/display: On Xe2 always enable decompression with tile4
With Xe2 always treat tile4 as if it was using flat ccs.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
+ /mt/dim checkpatch eeedb1b4360b100e4fa15a9c5c968a8f5a8de7ed drm-intel
9ca525d64 drm/xe/pat: annotate pat index table with compression information
84863e549 drm/xe: add bind time pat index to xe_bo structure
e143cc399 drm/xe: store bind time pat index to xe_bo
4ee1a16ca drm/xe/xe2: Limit ccs framebuffers to tile4 only
efa9a62d0 drm/i915/display: On Xe2 always enable decompression with tile4
^ permalink raw reply [flat|nested] 18+ messages in thread* ✗ CI.KUnit: failure for Enable ccs compressed framebuffers on Xe2 (rev3)
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
` (6 preceding siblings ...)
2024-01-26 21:34 ` ✓ CI.checkpatch: " Patchwork
@ 2024-01-26 21:35 ` Patchwork
2024-01-29 8:47 ` ✓ CI.Patch_applied: success for Enable ccs compressed framebuffers on Xe2 (rev4) Patchwork
` (2 subsequent siblings)
10 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2024-01-26 21:35 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: intel-xe
== Series Details ==
Series: Enable ccs compressed framebuffers on Xe2 (rev3)
URL : https://patchwork.freedesktop.org/series/128946/
State : failure
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[21:34:41] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:34:45] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
ERROR:root:../arch/x86/um/user-offsets.c:17:6: warning: no previous prototype for ‘foo’ [-Wmissing-prototypes]
17 | void foo(void)
| ^~~
In file included from ../arch/um/kernel/asm-offsets.c:1:
../arch/x86/um/shared/sysdep/kernel-offsets.h:9:6: warning: no previous prototype for ‘foo’ [-Wmissing-prototypes]
9 | void foo(void)
| ^~~
../arch/x86/um/bugs_64.c:9:6: warning: no previous prototype for ‘arch_check_bugs’ [-Wmissing-prototypes]
9 | void arch_check_bugs(void)
| ^~~~~~~~~~~~~~~
../arch/x86/um/bugs_64.c:13:6: warning: no previous prototype for ‘arch_examine_signal’ [-Wmissing-prototypes]
13 | void arch_examine_signal(int sig, struct uml_pt_regs *regs)
| ^~~~~~~~~~~~~~~~~~~
../arch/x86/um/fault.c:18:5: warning: no previous prototype for ‘arch_fixup’ [-Wmissing-prototypes]
18 | int arch_fixup(unsigned long address, struct uml_pt_regs *regs)
| ^~~~~~~~~~
../arch/x86/um/os-Linux/registers.c:146:15: warning: no previous prototype for ‘get_thread_reg’ [-Wmissing-prototypes]
146 | unsigned long get_thread_reg(int reg, jmp_buf *buf)
| ^~~~~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:16:5: warning: no previous prototype for ‘__vdso_clock_gettime’ [-Wmissing-prototypes]
16 | int __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts)
| ^~~~~~~~~~~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:30:5: warning: no previous prototype for ‘__vdso_gettimeofday’ [-Wmissing-prototypes]
30 | int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
| ^~~~~~~~~~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:44:21: warning: no previous prototype for ‘__vdso_time’ [-Wmissing-prototypes]
44 | __kernel_old_time_t __vdso_time(__kernel_old_time_t *t)
| ^~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:57:1: warning: no previous prototype for ‘__vdso_getcpu’ [-Wmissing-prototypes]
57 | __vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused)
| ^~~~~~~~~~~~~
../arch/x86/um/os-Linux/mcontext.c:7:6: warning: no previous prototype for ‘get_regs_from_mc’ [-Wmissing-prototypes]
7 | void get_regs_from_mc(struct uml_pt_regs *regs, mcontext_t *mc)
| ^~~~~~~~~~~~~~~~
../arch/um/os-Linux/skas/process.c:107:6: warning: no previous prototype for ‘wait_stub_done’ [-Wmissing-prototypes]
107 | void wait_stub_done(int pid)
| ^~~~~~~~~~~~~~
../arch/um/os-Linux/skas/process.c:683:6: warning: no previous prototype for ‘__switch_mm’ [-Wmissing-prototypes]
683 | void __switch_mm(struct mm_id *mm_idp)
| ^~~~~~~~~~~
../arch/um/kernel/skas/mmu.c:17:5: warning: no previous prototype for ‘init_new_context’ [-Wmissing-prototypes]
17 | int init_new_context(struct task_struct *task, struct mm_struct *mm)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/skas/mmu.c:60:6: warning: no previous prototype for ‘destroy_context’ [-Wmissing-prototypes]
60 | void destroy_context(struct mm_struct *mm)
| ^~~~~~~~~~~~~~~
../arch/um/kernel/skas/process.c:36:12: warning: no previous prototype for ‘start_uml’ [-Wmissing-prototypes]
36 | int __init start_uml(void)
| ^~~~~~~~~
../arch/um/os-Linux/main.c:187:7: warning: no previous prototype for ‘__wrap_malloc’ [-Wmissing-prototypes]
187 | void *__wrap_malloc(int size)
| ^~~~~~~~~~~~~
../arch/um/os-Linux/main.c:208:7: warning: no previous prototype for ‘__wrap_calloc’ [-Wmissing-prototypes]
208 | void *__wrap_calloc(int n, int size)
| ^~~~~~~~~~~~~
../arch/um/os-Linux/main.c:222:6: warning: no previous prototype for ‘__wrap_free’ [-Wmissing-prototypes]
222 | void __wrap_free(void *ptr)
| ^~~~~~~~~~~
../arch/um/kernel/mem.c:202:8: warning: no previous prototype for ‘pgd_alloc’ [-Wmissing-prototypes]
202 | pgd_t *pgd_alloc(struct mm_struct *mm)
| ^~~~~~~~~
../arch/um/kernel/mem.c:215:7: warning: no previous prototype for ‘uml_kmalloc’ [-Wmissing-prototypes]
215 | void *uml_kmalloc(int size, int flags)
| ^~~~~~~~~~~
../arch/um/os-Linux/mem.c:28:6: warning: no previous prototype for ‘kasan_map_memory’ [-Wmissing-prototypes]
28 | void kasan_map_memory(void *start, size_t len)
| ^~~~~~~~~~~~~~~~
../arch/um/os-Linux/mem.c:212:13: warning: no previous prototype for ‘check_tmpexec’ [-Wmissing-prototypes]
212 | void __init check_tmpexec(void)
| ^~~~~~~~~~~~~
../arch/x86/um/ptrace_64.c:111:5: warning: no previous prototype for ‘poke_user’ [-Wmissing-prototypes]
111 | int poke_user(struct task_struct *child, long addr, long data)
| ^~~~~~~~~
../arch/x86/um/ptrace_64.c:171:5: warning: no previous prototype for ‘peek_user’ [-Wmissing-prototypes]
171 | int peek_user(struct task_struct *child, long addr, long data)
| ^~~~~~~~~
../arch/um/os-Linux/signal.c:75:6: warning: no previous prototype for ‘sig_handler’ [-Wmissing-prototypes]
75 | void sig_handler(int sig, struct siginfo *si, mcontext_t *mc)
| ^~~~~~~~~~~
../arch/um/os-Linux/signal.c:111:6: warning: no previous prototype for ‘timer_alarm_handler’ [-Wmissing-prototypes]
111 | void timer_alarm_handler(int sig, struct siginfo *unused_si, mcontext_t *mc)
| ^~~~~~~~~~~~~~~~~~~
../arch/um/os-Linux/start_up.c:301:12: warning: no previous prototype for ‘parse_iomem’ [-Wmissing-prototypes]
301 | int __init parse_iomem(char *str, int *add)
| ^~~~~~~~~~~
../arch/x86/um/signal.c:560:6: warning: no previous prototype for ‘sys_rt_sigreturn’ [-Wmissing-prototypes]
560 | long sys_rt_sigreturn(void)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:51:5: warning: no previous prototype for ‘pid_to_processor_id’ [-Wmissing-prototypes]
51 | int pid_to_processor_id(int pid)
| ^~~~~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:87:7: warning: no previous prototype for ‘__switch_to’ [-Wmissing-prototypes]
87 | void *__switch_to(struct task_struct *from, struct task_struct *to)
| ^~~~~~~~~~~
../arch/um/kernel/process.c:140:6: warning: no previous prototype for ‘fork_handler’ [-Wmissing-prototypes]
140 | void fork_handler(void)
| ^~~~~~~~~~~~
../arch/um/kernel/process.c:217:6: warning: no previous prototype for ‘arch_cpu_idle’ [-Wmissing-prototypes]
217 | void arch_cpu_idle(void)
| ^~~~~~~~~~~~~
../arch/um/kernel/process.c:253:5: warning: no previous prototype for ‘copy_to_user_proc’ [-Wmissing-prototypes]
253 | int copy_to_user_proc(void __user *to, void *from, int size)
| ^~~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:263:5: warning: no previous prototype for ‘clear_user_proc’ [-Wmissing-prototypes]
263 | int clear_user_proc(void __user *buf, int size)
| ^~~~~~~~~~~~~~~
../arch/um/kernel/process.c:271:6: warning: no previous prototype for ‘set_using_sysemu’ [-Wmissing-prototypes]
271 | void set_using_sysemu(int value)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:278:5: warning: no previous prototype for ‘get_using_sysemu’ [-Wmissing-prototypes]
278 | int get_using_sysemu(void)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:316:12: warning: no previous prototype for ‘make_proc_sysemu’ [-Wmissing-prototypes]
316 | int __init make_proc_sysemu(void)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:348:15: warning: no previous prototype for ‘arch_align_stack’ [-Wmissing-prototypes]
348 | unsigned long arch_align_stack(unsigned long sp)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:45:6: warning: no previous prototype for ‘machine_restart’ [-Wmissing-prototypes]
45 | void machine_restart(char * __unused)
| ^~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:51:6: warning: no previous prototype for ‘machine_power_off’ [-Wmissing-prototypes]
51 | void machine_power_off(void)
| ^~~~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:57:6: warning: no previous prototype for ‘machine_halt’ [-Wmissing-prototypes]
57 | void machine_halt(void)
| ^~~~~~~~~~~~
../arch/x86/um/syscalls_64.c:48:6: warning: no previous prototype for ‘arch_switch_to’ [-Wmissing-prototypes]
48 | void arch_switch_to(struct task_struct *to)
| ^~~~~~~~~~~~~~
../arch/um/kernel/tlb.c:579:6: warning: no previous prototype for ‘flush_tlb_mm_range’ [-Wmissing-prototypes]
579 | void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
| ^~~~~~~~~~~~~~~~~~
../arch/um/kernel/tlb.c:594:6: warning: no previous prototype for ‘force_flush_all’ [-Wmissing-prototypes]
594 | void force_flush_all(void)
| ^~~~~~~~~~~~~~~
../arch/um/kernel/um_arch.c:408:19: warning: no previous prototype for ‘read_initrd’ [-Wmissing-prototypes]
408 | int __init __weak read_initrd(void)
| ^~~~~~~~~~~
../arch/um/kernel/um_arch.c:461:7: warning: no previous prototype for ‘text_poke’ [-Wmissing-prototypes]
461 | void *text_poke(void *addr, const void *opcode, size_t len)
| ^~~~~~~~~
../arch/um/kernel/um_arch.c:473:6: warning: no previous prototype for ‘text_poke_sync’ [-Wmissing-prototypes]
473 | void text_poke_sync(void)
| ^~~~~~~~~~~~~~
../arch/um/kernel/kmsg_dump.c:60:12: warning: no previous prototype for ‘kmsg_dumper_stdout_init’ [-Wmissing-prototypes]
60 | int __init kmsg_dumper_stdout_init(void)
| ^~~~~~~~~~~~~~~~~~~~~~~
../drivers/gpu/drm/xe/xe_bo.c:41:3: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
41 | .num_busy_placement = 1,
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:41:24: warning: excess elements in struct initializer
41 | .num_busy_placement = 1,
| ^
../drivers/gpu/drm/xe/xe_bo.c:41:24: note: (near initialization for ‘sys_placement’)
../drivers/gpu/drm/xe/xe_bo.c:42:3: error: ‘struct ttm_placement’ has no member named ‘busy_placement’; did you mean ‘num_placement’?
42 | .busy_placement = &sys_placement_flags,
| ^~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:42:20: warning: excess elements in struct initializer
42 | .busy_placement = &sys_placement_flags,
| ^
../drivers/gpu/drm/xe/xe_bo.c:42:20: note: (near initialization for ‘sys_placement’)
../drivers/gpu/drm/xe/xe_bo.c:55:3: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
55 | .num_busy_placement = 1,
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:55:24: warning: excess elements in struct initializer
55 | .num_busy_placement = 1,
| ^
../drivers/gpu/drm/xe/xe_bo.c:55:24: note: (near initialization for ‘tt_placement’)
../drivers/gpu/drm/xe/xe_bo.c:56:3: error: ‘struct ttm_placement’ has no member named ‘busy_placement’; did you mean ‘num_placement’?
56 | .busy_placement = &sys_placement_flags,
| ^~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:56:20: warning: excess elements in struct initializer
56 | .busy_placement = &sys_placement_flags,
| ^
../drivers/gpu/drm/xe/xe_bo.c:56:20: note: (near initialization for ‘tt_placement’)
../drivers/gpu/drm/xe/xe_bo.c: In function ‘__xe_bo_placement_for_flags’:
../drivers/gpu/drm/xe/xe_bo.c:233:4: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
233 | .num_busy_placement = c,
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:233:25: warning: excess elements in struct initializer
233 | .num_busy_placement = c,
| ^
../drivers/gpu/drm/xe/xe_bo.c:233:25: note: (near initialization for ‘(anonymous)’)
../drivers/gpu/drm/xe/xe_bo.c:234:4: error: ‘struct ttm_placement’ has no member named ‘busy_placement’; did you mean ‘num_placement’?
234 | .busy_placement = bo->placements,
| ^~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:234:21: warning: excess elements in struct initializer
234 | .busy_placement = bo->placements,
| ^~
../drivers/gpu/drm/xe/xe_bo.c:234:21: note: (near initialization for ‘(anonymous)’)
../drivers/gpu/drm/xe/xe_bo.c: In function ‘xe_evict_flags’:
../drivers/gpu/drm/xe/xe_bo.c:254:15: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
254 | placement->num_busy_placement = 0;
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c: In function ‘__xe_bo_fixed_placement’:
../drivers/gpu/drm/xe/xe_bo.c:1394:4: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
1394 | .num_busy_placement = 1,
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:1394:25: warning: excess elements in struct initializer
1394 | .num_busy_placement = 1,
| ^
../drivers/gpu/drm/xe/xe_bo.c:1394:25: note: (near initialization for ‘(anonymous)’)
../drivers/gpu/drm/xe/xe_bo.c:1395:4: error: ‘struct ttm_placement’ has no member named ‘busy_placement’; did you mean ‘num_placement’?
1395 | .busy_placement = place,
| ^~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:1395:21: warning: excess elements in struct initializer
1395 | .busy_placement = place,
| ^~~~~
../drivers/gpu/drm/xe/xe_bo.c:1395:21: note: (near initialization for ‘(anonymous)’)
../drivers/gpu/drm/xe/xe_bo.c: In function ‘xe_bo_migrate’:
../drivers/gpu/drm/xe/xe_bo.c:2153:12: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
2153 | placement.num_busy_placement = 1;
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:2155:12: error: ‘struct ttm_placement’ has no member named ‘busy_placement’; did you mean ‘num_placement’?
2155 | placement.busy_placement = &requested;
| ^~~~~~~~~~~~~~
| num_placement
make[7]: *** [../scripts/Makefile.build:243: drivers/gpu/drm/xe/xe_bo.o] Error 1
make[7]: *** Waiting for unfinished jobs....
make[6]: *** [../scripts/Makefile.build:481: drivers/gpu/drm/xe] Error 2
make[6]: *** Waiting for unfinished jobs....
make[5]: *** [../scripts/Makefile.build:481: drivers/gpu/drm] Error 2
make[4]: *** [../scripts/Makefile.build:481: drivers/gpu] Error 2
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [../scripts/Makefile.build:481: drivers] Error 2
make[3]: *** Waiting for unfinished jobs....
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
make[2]: *** [/kernel/Makefile:1917: .] Error 2
make[1]: *** [/kernel/Makefile:240: __sub-make] Error 2
make: *** [Makefile:240: __sub-make] Error 2
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 18+ messages in thread* ✓ CI.Patch_applied: success for Enable ccs compressed framebuffers on Xe2 (rev4)
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
` (7 preceding siblings ...)
2024-01-26 21:35 ` ✗ CI.KUnit: failure " Patchwork
@ 2024-01-29 8:47 ` Patchwork
2024-01-29 8:47 ` ✓ CI.checkpatch: " Patchwork
2024-01-29 8:47 ` ✗ CI.KUnit: failure " Patchwork
10 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2024-01-29 8:47 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: intel-xe
== Series Details ==
Series: Enable ccs compressed framebuffers on Xe2 (rev4)
URL : https://patchwork.freedesktop.org/series/128946/
State : success
== Summary ==
=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: a288279d3 drm-tip: 2024y-01m-29d-08h-00m-08s UTC integration manifest
=== git am output follows ===
Applying: drm/xe/pat: annotate pat index table with compression information
Applying: drm/xe: add bind time pat index to xe_bo structure
Applying: drm/xe: store bind time pat index to xe_bo
Applying: drm/xe/xe2: Limit ccs framebuffers to tile4 only
Applying: drm/i915/display: On Xe2 always enable decompression with tile4
^ permalink raw reply [flat|nested] 18+ messages in thread* ✓ CI.checkpatch: success for Enable ccs compressed framebuffers on Xe2 (rev4)
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
` (8 preceding siblings ...)
2024-01-29 8:47 ` ✓ CI.Patch_applied: success for Enable ccs compressed framebuffers on Xe2 (rev4) Patchwork
@ 2024-01-29 8:47 ` Patchwork
2024-01-29 8:47 ` ✗ CI.KUnit: failure " Patchwork
10 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2024-01-29 8:47 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: intel-xe
== Series Details ==
Series: Enable ccs compressed framebuffers on Xe2 (rev4)
URL : https://patchwork.freedesktop.org/series/128946/
State : success
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
2d919ac662b2798c053d68d1cc16b758c61b55ca
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 3f68ab33bef3eebd7a75e6437cc26806be0901fc
Author: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Date: Fri Jan 26 23:08:07 2024 +0200
drm/i915/display: On Xe2 always enable decompression with tile4
With Xe2 always treat tile4 as if it was using flat ccs.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
+ /mt/dim checkpatch a288279d321cb5b2c1aa517249030f2e17a58a41 drm-intel
50250637e drm/xe/pat: annotate pat index table with compression information
ec6c16414 drm/xe: add bind time pat index to xe_bo structure
ebf930916 drm/xe: store bind time pat index to xe_bo
e283a767c drm/xe/xe2: Limit ccs framebuffers to tile4 only
3f68ab33b drm/i915/display: On Xe2 always enable decompression with tile4
^ permalink raw reply [flat|nested] 18+ messages in thread* ✗ CI.KUnit: failure for Enable ccs compressed framebuffers on Xe2 (rev4)
2024-01-26 21:08 [PATCH 0/5] Enable ccs compressed framebuffers on Xe2 Juha-Pekka Heikkila
` (9 preceding siblings ...)
2024-01-29 8:47 ` ✓ CI.checkpatch: " Patchwork
@ 2024-01-29 8:47 ` Patchwork
10 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2024-01-29 8:47 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: intel-xe
== Series Details ==
Series: Enable ccs compressed framebuffers on Xe2 (rev4)
URL : https://patchwork.freedesktop.org/series/128946/
State : failure
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[08:47:35] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[08:47:39] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
ERROR:root:../arch/x86/um/user-offsets.c:17:6: warning: no previous prototype for ‘foo’ [-Wmissing-prototypes]
17 | void foo(void)
| ^~~
In file included from ../arch/um/kernel/asm-offsets.c:1:
../arch/x86/um/shared/sysdep/kernel-offsets.h:9:6: warning: no previous prototype for ‘foo’ [-Wmissing-prototypes]
9 | void foo(void)
| ^~~
../arch/x86/um/bugs_64.c:9:6: warning: no previous prototype for ‘arch_check_bugs’ [-Wmissing-prototypes]
9 | void arch_check_bugs(void)
| ^~~~~~~~~~~~~~~
../arch/x86/um/bugs_64.c:13:6: warning: no previous prototype for ‘arch_examine_signal’ [-Wmissing-prototypes]
13 | void arch_examine_signal(int sig, struct uml_pt_regs *regs)
| ^~~~~~~~~~~~~~~~~~~
../arch/x86/um/fault.c:18:5: warning: no previous prototype for ‘arch_fixup’ [-Wmissing-prototypes]
18 | int arch_fixup(unsigned long address, struct uml_pt_regs *regs)
| ^~~~~~~~~~
../arch/x86/um/os-Linux/registers.c:146:15: warning: no previous prototype for ‘get_thread_reg’ [-Wmissing-prototypes]
146 | unsigned long get_thread_reg(int reg, jmp_buf *buf)
| ^~~~~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:16:5: warning: no previous prototype for ‘__vdso_clock_gettime’ [-Wmissing-prototypes]
16 | int __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts)
| ^~~~~~~~~~~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:30:5: warning: no previous prototype for ‘__vdso_gettimeofday’ [-Wmissing-prototypes]
30 | int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
| ^~~~~~~~~~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:44:21: warning: no previous prototype for ‘__vdso_time’ [-Wmissing-prototypes]
44 | __kernel_old_time_t __vdso_time(__kernel_old_time_t *t)
| ^~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:57:1: warning: no previous prototype for ‘__vdso_getcpu’ [-Wmissing-prototypes]
57 | __vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused)
| ^~~~~~~~~~~~~
../arch/um/os-Linux/skas/process.c:107:6: warning: no previous prototype for ‘wait_stub_done’ [-Wmissing-prototypes]
107 | void wait_stub_done(int pid)
| ^~~~~~~~~~~~~~
../arch/um/os-Linux/skas/process.c:683:6: warning: no previous prototype for ‘__switch_mm’ [-Wmissing-prototypes]
683 | void __switch_mm(struct mm_id *mm_idp)
| ^~~~~~~~~~~
../arch/x86/um/os-Linux/mcontext.c:7:6: warning: no previous prototype for ‘get_regs_from_mc’ [-Wmissing-prototypes]
7 | void get_regs_from_mc(struct uml_pt_regs *regs, mcontext_t *mc)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/skas/process.c:36:12: warning: no previous prototype for ‘start_uml’ [-Wmissing-prototypes]
36 | int __init start_uml(void)
| ^~~~~~~~~
../arch/um/kernel/skas/mmu.c:17:5: warning: no previous prototype for ‘init_new_context’ [-Wmissing-prototypes]
17 | int init_new_context(struct task_struct *task, struct mm_struct *mm)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/skas/mmu.c:60:6: warning: no previous prototype for ‘destroy_context’ [-Wmissing-prototypes]
60 | void destroy_context(struct mm_struct *mm)
| ^~~~~~~~~~~~~~~
../arch/um/os-Linux/main.c:187:7: warning: no previous prototype for ‘__wrap_malloc’ [-Wmissing-prototypes]
187 | void *__wrap_malloc(int size)
| ^~~~~~~~~~~~~
../arch/um/os-Linux/main.c:208:7: warning: no previous prototype for ‘__wrap_calloc’ [-Wmissing-prototypes]
208 | void *__wrap_calloc(int n, int size)
| ^~~~~~~~~~~~~
../arch/um/os-Linux/main.c:222:6: warning: no previous prototype for ‘__wrap_free’ [-Wmissing-prototypes]
222 | void __wrap_free(void *ptr)
| ^~~~~~~~~~~
../arch/um/os-Linux/mem.c:28:6: warning: no previous prototype for ‘kasan_map_memory’ [-Wmissing-prototypes]
28 | void kasan_map_memory(void *start, size_t len)
| ^~~~~~~~~~~~~~~~
../arch/um/os-Linux/mem.c:212:13: warning: no previous prototype for ‘check_tmpexec’ [-Wmissing-prototypes]
212 | void __init check_tmpexec(void)
| ^~~~~~~~~~~~~
../arch/um/os-Linux/signal.c:75:6: warning: no previous prototype for ‘sig_handler’ [-Wmissing-prototypes]
75 | void sig_handler(int sig, struct siginfo *si, mcontext_t *mc)
| ^~~~~~~~~~~
../arch/um/os-Linux/signal.c:111:6: warning: no previous prototype for ‘timer_alarm_handler’ [-Wmissing-prototypes]
111 | void timer_alarm_handler(int sig, struct siginfo *unused_si, mcontext_t *mc)
| ^~~~~~~~~~~~~~~~~~~
../arch/um/os-Linux/start_up.c:301:12: warning: no previous prototype for ‘parse_iomem’ [-Wmissing-prototypes]
301 | int __init parse_iomem(char *str, int *add)
| ^~~~~~~~~~~
../arch/x86/um/ptrace_64.c:111:5: warning: no previous prototype for ‘poke_user’ [-Wmissing-prototypes]
111 | int poke_user(struct task_struct *child, long addr, long data)
| ^~~~~~~~~
../arch/x86/um/ptrace_64.c:171:5: warning: no previous prototype for ‘peek_user’ [-Wmissing-prototypes]
171 | int peek_user(struct task_struct *child, long addr, long data)
| ^~~~~~~~~
../arch/um/kernel/mem.c:202:8: warning: no previous prototype for ‘pgd_alloc’ [-Wmissing-prototypes]
202 | pgd_t *pgd_alloc(struct mm_struct *mm)
| ^~~~~~~~~
../arch/um/kernel/mem.c:215:7: warning: no previous prototype for ‘uml_kmalloc’ [-Wmissing-prototypes]
215 | void *uml_kmalloc(int size, int flags)
| ^~~~~~~~~~~
../arch/x86/um/signal.c:560:6: warning: no previous prototype for ‘sys_rt_sigreturn’ [-Wmissing-prototypes]
560 | long sys_rt_sigreturn(void)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:51:5: warning: no previous prototype for ‘pid_to_processor_id’ [-Wmissing-prototypes]
51 | int pid_to_processor_id(int pid)
| ^~~~~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:87:7: warning: no previous prototype for ‘__switch_to’ [-Wmissing-prototypes]
87 | void *__switch_to(struct task_struct *from, struct task_struct *to)
| ^~~~~~~~~~~
../arch/um/kernel/process.c:140:6: warning: no previous prototype for ‘fork_handler’ [-Wmissing-prototypes]
140 | void fork_handler(void)
| ^~~~~~~~~~~~
../arch/um/kernel/process.c:217:6: warning: no previous prototype for ‘arch_cpu_idle’ [-Wmissing-prototypes]
217 | void arch_cpu_idle(void)
| ^~~~~~~~~~~~~
../arch/um/kernel/process.c:253:5: warning: no previous prototype for ‘copy_to_user_proc’ [-Wmissing-prototypes]
253 | int copy_to_user_proc(void __user *to, void *from, int size)
| ^~~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:263:5: warning: no previous prototype for ‘clear_user_proc’ [-Wmissing-prototypes]
263 | int clear_user_proc(void __user *buf, int size)
| ^~~~~~~~~~~~~~~
../arch/um/kernel/process.c:271:6: warning: no previous prototype for ‘set_using_sysemu’ [-Wmissing-prototypes]
271 | void set_using_sysemu(int value)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:278:5: warning: no previous prototype for ‘get_using_sysemu’ [-Wmissing-prototypes]
278 | int get_using_sysemu(void)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:316:12: warning: no previous prototype for ‘make_proc_sysemu’ [-Wmissing-prototypes]
316 | int __init make_proc_sysemu(void)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:348:15: warning: no previous prototype for ‘arch_align_stack’ [-Wmissing-prototypes]
348 | unsigned long arch_align_stack(unsigned long sp)
| ^~~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:45:6: warning: no previous prototype for ‘machine_restart’ [-Wmissing-prototypes]
45 | void machine_restart(char * __unused)
| ^~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:51:6: warning: no previous prototype for ‘machine_power_off’ [-Wmissing-prototypes]
51 | void machine_power_off(void)
| ^~~~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:57:6: warning: no previous prototype for ‘machine_halt’ [-Wmissing-prototypes]
57 | void machine_halt(void)
| ^~~~~~~~~~~~
../arch/x86/um/syscalls_64.c:48:6: warning: no previous prototype for ‘arch_switch_to’ [-Wmissing-prototypes]
48 | void arch_switch_to(struct task_struct *to)
| ^~~~~~~~~~~~~~
../arch/um/kernel/tlb.c:579:6: warning: no previous prototype for ‘flush_tlb_mm_range’ [-Wmissing-prototypes]
579 | void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
| ^~~~~~~~~~~~~~~~~~
../arch/um/kernel/tlb.c:594:6: warning: no previous prototype for ‘force_flush_all’ [-Wmissing-prototypes]
594 | void force_flush_all(void)
| ^~~~~~~~~~~~~~~
../arch/um/kernel/kmsg_dump.c:60:12: warning: no previous prototype for ‘kmsg_dumper_stdout_init’ [-Wmissing-prototypes]
60 | int __init kmsg_dumper_stdout_init(void)
| ^~~~~~~~~~~~~~~~~~~~~~~
../arch/um/kernel/um_arch.c:408:19: warning: no previous prototype for ‘read_initrd’ [-Wmissing-prototypes]
408 | int __init __weak read_initrd(void)
| ^~~~~~~~~~~
../arch/um/kernel/um_arch.c:461:7: warning: no previous prototype for ‘text_poke’ [-Wmissing-prototypes]
461 | void *text_poke(void *addr, const void *opcode, size_t len)
| ^~~~~~~~~
../arch/um/kernel/um_arch.c:473:6: warning: no previous prototype for ‘text_poke_sync’ [-Wmissing-prototypes]
473 | void text_poke_sync(void)
| ^~~~~~~~~~~~~~
../drivers/gpu/drm/xe/xe_bo.c:41:3: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
41 | .num_busy_placement = 1,
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:41:24: warning: excess elements in struct initializer
41 | .num_busy_placement = 1,
| ^
../drivers/gpu/drm/xe/xe_bo.c:41:24: note: (near initialization for ‘sys_placement’)
../drivers/gpu/drm/xe/xe_bo.c:42:3: error: ‘struct ttm_placement’ has no member named ‘busy_placement’; did you mean ‘num_placement’?
42 | .busy_placement = &sys_placement_flags,
| ^~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:42:20: warning: excess elements in struct initializer
42 | .busy_placement = &sys_placement_flags,
| ^
../drivers/gpu/drm/xe/xe_bo.c:42:20: note: (near initialization for ‘sys_placement’)
../drivers/gpu/drm/xe/xe_bo.c:55:3: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
55 | .num_busy_placement = 1,
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:55:24: warning: excess elements in struct initializer
55 | .num_busy_placement = 1,
| ^
../drivers/gpu/drm/xe/xe_bo.c:55:24: note: (near initialization for ‘tt_placement’)
../drivers/gpu/drm/xe/xe_bo.c:56:3: error: ‘struct ttm_placement’ has no member named ‘busy_placement’; did you mean ‘num_placement’?
56 | .busy_placement = &sys_placement_flags,
| ^~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:56:20: warning: excess elements in struct initializer
56 | .busy_placement = &sys_placement_flags,
| ^
../drivers/gpu/drm/xe/xe_bo.c:56:20: note: (near initialization for ‘tt_placement’)
../drivers/gpu/drm/xe/xe_bo.c: In function ‘__xe_bo_placement_for_flags’:
../drivers/gpu/drm/xe/xe_bo.c:233:4: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
233 | .num_busy_placement = c,
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:233:25: warning: excess elements in struct initializer
233 | .num_busy_placement = c,
| ^
../drivers/gpu/drm/xe/xe_bo.c:233:25: note: (near initialization for ‘(anonymous)’)
../drivers/gpu/drm/xe/xe_bo.c:234:4: error: ‘struct ttm_placement’ has no member named ‘busy_placement’; did you mean ‘num_placement’?
234 | .busy_placement = bo->placements,
| ^~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:234:21: warning: excess elements in struct initializer
234 | .busy_placement = bo->placements,
| ^~
../drivers/gpu/drm/xe/xe_bo.c:234:21: note: (near initialization for ‘(anonymous)’)
../drivers/gpu/drm/xe/xe_bo.c: In function ‘xe_evict_flags’:
../drivers/gpu/drm/xe/xe_bo.c:254:15: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
254 | placement->num_busy_placement = 0;
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c: In function ‘__xe_bo_fixed_placement’:
../drivers/gpu/drm/xe/xe_bo.c:1394:4: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
1394 | .num_busy_placement = 1,
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:1394:25: warning: excess elements in struct initializer
1394 | .num_busy_placement = 1,
| ^
../drivers/gpu/drm/xe/xe_bo.c:1394:25: note: (near initialization for ‘(anonymous)’)
../drivers/gpu/drm/xe/xe_bo.c:1395:4: error: ‘struct ttm_placement’ has no member named ‘busy_placement’; did you mean ‘num_placement’?
1395 | .busy_placement = place,
| ^~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:1395:21: warning: excess elements in struct initializer
1395 | .busy_placement = place,
| ^~~~~
../drivers/gpu/drm/xe/xe_bo.c:1395:21: note: (near initialization for ‘(anonymous)’)
../drivers/gpu/drm/xe/xe_bo.c: In function ‘xe_bo_migrate’:
../drivers/gpu/drm/xe/xe_bo.c:2153:12: error: ‘struct ttm_placement’ has no member named ‘num_busy_placement’; did you mean ‘num_placement’?
2153 | placement.num_busy_placement = 1;
| ^~~~~~~~~~~~~~~~~~
| num_placement
../drivers/gpu/drm/xe/xe_bo.c:2155:12: error: ‘struct ttm_placement’ has no member named ‘busy_placement’; did you mean ‘num_placement’?
2155 | placement.busy_placement = &requested;
| ^~~~~~~~~~~~~~
| num_placement
make[7]: *** [../scripts/Makefile.build:243: drivers/gpu/drm/xe/xe_bo.o] Error 1
make[7]: *** Waiting for unfinished jobs....
make[6]: *** [../scripts/Makefile.build:481: drivers/gpu/drm/xe] Error 2
make[5]: *** [../scripts/Makefile.build:481: drivers/gpu/drm] Error 2
make[4]: *** [../scripts/Makefile.build:481: drivers/gpu] Error 2
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [../scripts/Makefile.build:481: drivers] Error 2
make[3]: *** Waiting for unfinished jobs....
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
make[2]: *** [/kernel/Makefile:1921: .] Error 2
make[1]: *** [/kernel/Makefile:240: __sub-make] Error 2
make: *** [Makefile:240: __sub-make] Error 2
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 18+ messages in thread