All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/xe: add wopcm region size to the device info
@ 2024-04-24 10:48 Farah Kassabri
  2024-04-28 21:38 ` ✓ CI.Patch_applied: success for " Patchwork
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Farah Kassabri @ 2024-04-24 10:48 UTC (permalink / raw
  To: intel-xe; +Cc: ofir1.bitton, Farah Kassabri

As each product may have different wopcm region size,
it's better to have this information as part of the device
descriptor, that way we won't need to keep adding more
else cases to the function which retrieve that size for
future products.

Signed-off-by: Farah Kassabri <fkassabri@habana.ai>
---
 drivers/gpu/drm/xe/xe_device_types.h       |  2 ++
 drivers/gpu/drm/xe/xe_ggtt.c               |  3 +--
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c |  4 ++--
 drivers/gpu/drm/xe/xe_guc.c                |  3 +--
 drivers/gpu/drm/xe/xe_pci.c                | 12 +++++++++++-
 drivers/gpu/drm/xe/xe_wopcm.c              | 17 +----------------
 drivers/gpu/drm/xe/xe_wopcm.h              |  1 -
 7 files changed, 18 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 2e62450d86e1..fa3c7ca2f2d4 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -230,6 +230,8 @@ struct xe_device {
 		u32 media_verx100;
 		/** @info.mem_region_mask: mask of valid memory regions */
 		u32 mem_region_mask;
+		/** @info.wopcm_size: wopcm region size */
+		u32 wopcm_size;
 		/** @info.platform: XE platform enum */
 		enum xe_platform platform;
 		/** @info.subplatform: XE subplatform enum */
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 0d541f55b4fc..b4e089c3333d 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -188,8 +188,7 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
 	else
 		ggtt->pt_ops = &xelp_pt_ops;
 
-	drm_mm_init(&ggtt->mm, xe_wopcm_size(xe),
-		    ggtt->size - xe_wopcm_size(xe));
+	drm_mm_init(&ggtt->mm, xe->info.wopcm_size, ggtt->size - xe->info.wopcm_size);
 	mutex_init(&ggtt->lock);
 	primelockdep(ggtt);
 
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 79116ad58620..18b7aa8d1f94 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -575,7 +575,7 @@ static u64 pf_get_max_ggtt(struct xe_gt *gt)
 	const struct drm_mm_node *entry;
 	u64 alignment = pf_get_ggtt_alignment(gt);
 	u64 spare = pf_get_spare_ggtt(gt);
-	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
+	u64 hole_min_start = gt_to_xe(gt)->info.wopcm_size;
 	u64 hole_start, hole_end, hole_size;
 	u64 max_hole = 0;
 
@@ -1932,7 +1932,7 @@ int xe_gt_sriov_pf_config_print_available_ggtt(struct xe_gt *gt, struct drm_prin
 	const struct drm_mm *mm = &ggtt->mm;
 	const struct drm_mm_node *entry;
 	u64 alignment = pf_get_ggtt_alignment(gt);
-	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
+	u64 hole_min_start = gt_to_xe(gt)->info.wopcm_size;
 	u64 hole_start, hole_end, hole_size;
 	u64 spare, avail, total = 0;
 	char buf[10];
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 240e7a4bbff1..48468c0bcf7c 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -41,8 +41,7 @@ static u32 guc_bo_ggtt_addr(struct xe_guc *guc,
 	struct xe_device *xe = guc_to_xe(guc);
 	u32 addr = xe_bo_ggtt_addr(bo);
 
-	/* GuC addresses above GUC_GGTT_TOP don't map through the GTT */
-	xe_assert(xe, addr >= xe_wopcm_size(guc_to_xe(guc)));
+	xe_assert(xe, addr >= xe->info.wopcm_size);
 	xe_assert(xe, addr < GUC_GGTT_TOP);
 	xe_assert(xe, bo->size <= GUC_GGTT_TOP - addr);
 
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index a0cf5dd803c2..55f977124647 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -57,6 +57,8 @@ struct xe_device_desc {
 
 	enum xe_platform platform;
 
+	u32 wopcm_size;
+
 	u8 require_force_probe:1;
 	u8 is_dgfx:1;
 
@@ -221,6 +223,7 @@ static const struct xe_device_desc tgl_desc = {
 	.has_display = true,
 	.has_llc = true,
 	.require_force_probe = true,
+	.wopcm_size = SZ_2M,
 };
 
 static const struct xe_device_desc rkl_desc = {
@@ -282,6 +285,7 @@ static const struct xe_device_desc dg1_desc = {
 	.has_display = true,
 	.has_heci_gscfi = 1,
 	.require_force_probe = true,
+	.wopcm_size = SZ_4M,
 };
 
 static const u16 dg2_g10_ids[] = { XE_DG2_G10_IDS(NOP), XE_ATS_M150_IDS(NOP), 0 };
@@ -306,6 +310,7 @@ static const struct xe_device_desc ats_m_desc = {
 
 	DG2_FEATURES,
 	.has_display = false,
+	.wopcm_size = SZ_2M,
 };
 
 static const struct xe_device_desc dg2_desc = {
@@ -315,6 +320,7 @@ static const struct xe_device_desc dg2_desc = {
 
 	DG2_FEATURES,
 	.has_display = true,
+	.wopcm_size = SZ_2M,
 };
 
 static const struct xe_device_desc pvc_desc = {
@@ -324,6 +330,7 @@ static const struct xe_device_desc pvc_desc = {
 	.has_display = false,
 	.has_heci_gscfi = 1,
 	.require_force_probe = true,
+	.wopcm_size = SZ_4M,
 };
 
 static const struct xe_device_desc mtl_desc = {
@@ -331,18 +338,21 @@ static const struct xe_device_desc mtl_desc = {
 	.require_force_probe = true,
 	PLATFORM(XE_METEORLAKE),
 	.has_display = true,
+	.wopcm_size = SZ_4M,
 };
 
 static const struct xe_device_desc lnl_desc = {
 	PLATFORM(XE_LUNARLAKE),
 	.has_display = true,
 	.require_force_probe = true,
+	.wopcm_size = SZ_2M,
 };
 
 static const struct xe_device_desc bmg_desc __maybe_unused = {
 	DGFX_FEATURES,
 	PLATFORM(XE_BATTLEMAGE),
 	.require_force_probe = true,
+	.wopcm_size = SZ_4M,
 };
 
 #undef PLATFORM
@@ -567,7 +577,7 @@ static int xe_info_init_early(struct xe_device *xe,
 	xe->info.skip_guc_pc = desc->skip_guc_pc;
 	xe->info.skip_mtcfg = desc->skip_mtcfg;
 	xe->info.skip_pcode = desc->skip_pcode;
-
+	xe->info.wopcm_size = desc->wopcm_size;
 	xe->info.enable_display = IS_ENABLED(CONFIG_DRM_XE_DISPLAY) &&
 				  xe_modparam.enable_display &&
 				  desc->has_display;
diff --git a/drivers/gpu/drm/xe/xe_wopcm.c b/drivers/gpu/drm/xe/xe_wopcm.c
index d3a99157e523..0b5a11dbd770 100644
--- a/drivers/gpu/drm/xe/xe_wopcm.c
+++ b/drivers/gpu/drm/xe/xe_wopcm.c
@@ -45,14 +45,6 @@
  * The top part of the WOPCM is reserved for hardware contexts (e.g. RC6
  * context).
  */
-
-/* Default WOPCM size is 2MB from Gen11, 1MB on previous platforms */
-/* FIXME: Larger size require for 2 tile PVC, do a proper probe sooner or later */
-#define DGFX_WOPCM_SIZE			SZ_4M
-/* FIXME: Larger size require for MTL, do a proper probe sooner or later */
-#define MTL_WOPCM_SIZE			SZ_4M
-#define WOPCM_SIZE			SZ_2M
-
 #define MAX_WOPCM_SIZE			SZ_8M
 
 /* 16KB WOPCM (RSVD WOPCM) is reserved from HuC firmware top. */
@@ -177,13 +169,6 @@ static int __wopcm_init_regs(struct xe_device *xe, struct xe_gt *gt,
 	return err;
 }
 
-u32 xe_wopcm_size(struct xe_device *xe)
-{
-	return IS_DGFX(xe) ? DGFX_WOPCM_SIZE :
-		xe->info.platform == XE_METEORLAKE ? MTL_WOPCM_SIZE :
-		WOPCM_SIZE;
-}
-
 /**
  * xe_wopcm_init() - Initialize the WOPCM structure.
  * @wopcm: pointer to xe_wopcm.
@@ -209,7 +194,7 @@ int xe_wopcm_init(struct xe_wopcm *wopcm)
 	if (!guc_fw_size)
 		return -EINVAL;
 
-	wopcm->size = xe_wopcm_size(xe);
+	wopcm->size = xe->info.wopcm_size;
 	drm_dbg(&xe->drm, "WOPCM: %uK\n", wopcm->size / SZ_1K);
 
 	xe_force_wake_assert_held(gt_to_fw(gt), XE_FW_GT);
diff --git a/drivers/gpu/drm/xe/xe_wopcm.h b/drivers/gpu/drm/xe/xe_wopcm.h
index 0197a282460b..37a38d10f897 100644
--- a/drivers/gpu/drm/xe/xe_wopcm.h
+++ b/drivers/gpu/drm/xe/xe_wopcm.h
@@ -11,6 +11,5 @@
 struct xe_device;
 
 int xe_wopcm_init(struct xe_wopcm *wopcm);
-u32 xe_wopcm_size(struct xe_device *xe);
 
 #endif
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* ✓ CI.Patch_applied: success for drm/xe: add wopcm region size to the device info
  2024-04-24 10:48 [PATCH] drm/xe: add wopcm region size to the device info Farah Kassabri
@ 2024-04-28 21:38 ` Patchwork
  2024-04-28 21:38 ` ✓ CI.checkpatch: " Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2024-04-28 21:38 UTC (permalink / raw
  To: Farah Kassabri; +Cc: intel-xe

== Series Details ==

Series: drm/xe: add wopcm region size to the device info
URL   : https://patchwork.freedesktop.org/series/133002/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 94a0eea182f0 drm-tip: 2024y-04m-27d-07h-26m-48s UTC integration manifest
=== git am output follows ===
Applying: drm/xe: add wopcm region size to the device info



^ permalink raw reply	[flat|nested] 5+ messages in thread

* ✓ CI.checkpatch: success for drm/xe: add wopcm region size to the device info
  2024-04-24 10:48 [PATCH] drm/xe: add wopcm region size to the device info Farah Kassabri
  2024-04-28 21:38 ` ✓ CI.Patch_applied: success for " Patchwork
@ 2024-04-28 21:38 ` Patchwork
  2024-04-28 21:39 ` ✓ CI.KUnit: " Patchwork
  2024-04-29 12:50 ` [PATCH] " Rodrigo Vivi
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2024-04-28 21:38 UTC (permalink / raw
  To: Farah Kassabri; +Cc: intel-xe

== Series Details ==

Series: drm/xe: add wopcm region size to the device info
URL   : https://patchwork.freedesktop.org/series/133002/
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
0daf0be5bb95eb0a0e42275e00a0e42d8d8fd543
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 869f584a985ddc7495c2853801de4baa28872498
Author: Farah Kassabri <fkassabri@habana.ai>
Date:   Wed Apr 24 13:48:02 2024 +0300

    drm/xe: add wopcm region size to the device info
    
    As each product may have different wopcm region size,
    it's better to have this information as part of the device
    descriptor, that way we won't need to keep adding more
    else cases to the function which retrieve that size for
    future products.
    
    Signed-off-by: Farah Kassabri <fkassabri@habana.ai>
+ /mt/dim checkpatch 94a0eea182f0a8b1ff4cd6269bcb0d26bb4994f2 drm-intel
869f584a985d drm/xe: add wopcm region size to the device info



^ permalink raw reply	[flat|nested] 5+ messages in thread

* ✓ CI.KUnit: success for drm/xe: add wopcm region size to the device info
  2024-04-24 10:48 [PATCH] drm/xe: add wopcm region size to the device info Farah Kassabri
  2024-04-28 21:38 ` ✓ CI.Patch_applied: success for " Patchwork
  2024-04-28 21:38 ` ✓ CI.checkpatch: " Patchwork
@ 2024-04-28 21:39 ` Patchwork
  2024-04-29 12:50 ` [PATCH] " Rodrigo Vivi
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2024-04-28 21:39 UTC (permalink / raw
  To: Farah Kassabri; +Cc: intel-xe

== Series Details ==

Series: drm/xe: add wopcm region size to the device info
URL   : https://patchwork.freedesktop.org/series/133002/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[21:38:24] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:38:29] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
../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/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/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/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/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/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/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/signal.c:560:6: warning: no previous prototype for ‘sys_rt_sigreturn’ [-Wmissing-prototypes]
  560 | long sys_rt_sigreturn(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/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/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/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/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)
      |      ^~~~~~~~~~~~~~
../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)
      |      ^~~~~~~~~~~~~~~~~
stty: 'standard input': Inappropriate ioctl for device

[21:38:54] Starting KUnit Kernel (1/1)...
[21:38:54] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:38:54] =================== guc_dbm (7 subtests) ===================
[21:38:54] [PASSED] test_empty
[21:38:54] [PASSED] test_default
[21:38:54] ======================== test_size  ========================
[21:38:54] [PASSED] 4
[21:38:54] [PASSED] 8
[21:38:54] [PASSED] 32
[21:38:54] [PASSED] 256
[21:38:54] ==================== [PASSED] test_size ====================
[21:38:54] ======================= test_reuse  ========================
[21:38:54] [PASSED] 4
[21:38:54] [PASSED] 8
[21:38:54] [PASSED] 32
[21:38:54] [PASSED] 256
[21:38:54] =================== [PASSED] test_reuse ====================
[21:38:54] =================== test_range_overlap  ====================
[21:38:54] [PASSED] 4
[21:38:54] [PASSED] 8
[21:38:54] [PASSED] 32
[21:38:54] [PASSED] 256
[21:38:54] =============== [PASSED] test_range_overlap ================
[21:38:54] =================== test_range_compact  ====================
[21:38:54] [PASSED] 4
[21:38:54] [PASSED] 8
[21:38:54] [PASSED] 32
[21:38:54] [PASSED] 256
[21:38:54] =============== [PASSED] test_range_compact ================
[21:38:54] ==================== test_range_spare  =====================
[21:38:54] [PASSED] 4
[21:38:54] [PASSED] 8
[21:38:54] [PASSED] 32
[21:38:54] [PASSED] 256
[21:38:54] ================ [PASSED] test_range_spare =================
[21:38:54] ===================== [PASSED] guc_dbm =====================
[21:38:54] =================== guc_idm (6 subtests) ===================
[21:38:54] [PASSED] bad_init
[21:38:54] [PASSED] no_init
[21:38:54] [PASSED] init_fini
[21:38:54] [PASSED] check_used
[21:38:54] [PASSED] check_quota
[21:38:54] [PASSED] check_all
[21:38:54] ===================== [PASSED] guc_idm =====================
[21:38:54] ================== no_relay (3 subtests) ===================
[21:38:54] [PASSED] xe_drops_guc2pf_if_not_ready
[21:38:54] [PASSED] xe_drops_guc2vf_if_not_ready
[21:38:54] [PASSED] xe_rejects_send_if_not_ready
[21:38:54] ==================== [PASSED] no_relay =====================
[21:38:54] ================== pf_relay (14 subtests) ==================
[21:38:54] [PASSED] pf_rejects_guc2pf_too_short
[21:38:54] [PASSED] pf_rejects_guc2pf_too_long
[21:38:54] [PASSED] pf_rejects_guc2pf_no_payload
[21:38:54] [PASSED] pf_fails_no_payload
[21:38:54] [PASSED] pf_fails_bad_origin
[21:38:54] [PASSED] pf_fails_bad_type
[21:38:54] [PASSED] pf_txn_reports_error
[21:38:54] [PASSED] pf_txn_sends_pf2guc
[21:38:54] [PASSED] pf_sends_pf2guc
[21:38:54] [SKIPPED] pf_loopback_nop
[21:38:54] [SKIPPED] pf_loopback_echo
[21:38:54] [SKIPPED] pf_loopback_fail
[21:38:54] [SKIPPED] pf_loopback_busy
[21:38:54] [SKIPPED] pf_loopback_retry
[21:38:54] ==================== [PASSED] pf_relay =====================
[21:38:54] ================== vf_relay (3 subtests) ===================
[21:38:54] [PASSED] vf_rejects_guc2vf_too_short
[21:38:54] [PASSED] vf_rejects_guc2vf_too_long
[21:38:54] [PASSED] vf_rejects_guc2vf_no_payload
[21:38:54] ==================== [PASSED] vf_relay =====================
[21:38:54] ================= pf_service (11 subtests) =================
[21:38:54] [PASSED] pf_negotiate_any
[21:38:54] [PASSED] pf_negotiate_base_match
[21:38:54] [PASSED] pf_negotiate_base_newer
[21:38:54] [PASSED] pf_negotiate_base_next
[21:38:54] [SKIPPED] pf_negotiate_base_older
[21:38:54] [PASSED] pf_negotiate_base_prev
[21:38:54] [PASSED] pf_negotiate_latest_match
[21:38:54] [PASSED] pf_negotiate_latest_newer
[21:38:54] [PASSED] pf_negotiate_latest_next
[21:38:54] [SKIPPED] pf_negotiate_latest_older
[21:38:54] [SKIPPED] pf_negotiate_latest_prev
[21:38:54] =================== [PASSED] pf_service ====================
[21:38:54] ===================== lmtt (1 subtest) =====================
[21:38:54] ======================== test_ops  =========================
[21:38:54] [PASSED] 2-level
[21:38:54] [PASSED] multi-level
[21:38:54] ==================== [PASSED] test_ops =====================
[21:38:54] ====================== [PASSED] lmtt =======================
[21:38:54] ==================== xe_bo (2 subtests) ====================
[21:38:54] [SKIPPED] xe_ccs_migrate_kunit
[21:38:54] [SKIPPED] xe_bo_evict_kunit
[21:38:54] ===================== [SKIPPED] xe_bo ======================
[21:38:54] ================== xe_dma_buf (1 subtest) ==================
[21:38:54] [SKIPPED] xe_dma_buf_kunit
[21:38:54] =================== [SKIPPED] xe_dma_buf ===================
[21:38:54] ================== xe_migrate (1 subtest) ==================
[21:38:54] [SKIPPED] xe_migrate_sanity_kunit
[21:38:54] =================== [SKIPPED] xe_migrate ===================
[21:38:54] =================== xe_mocs (2 subtests) ===================
[21:38:54] [SKIPPED] xe_live_mocs_kernel_kunit
[21:38:54] [SKIPPED] xe_live_mocs_reset_kunit
[21:38:54] ==================== [SKIPPED] xe_mocs =====================
[21:38:54] =================== xe_pci (2 subtests) ====================
[21:38:54] [PASSED] xe_gmdid_graphics_ip
[21:38:54] [PASSED] xe_gmdid_media_ip
[21:38:54] ===================== [PASSED] xe_pci ======================
[21:38:54] ==================== xe_rtp (1 subtest) ====================
[21:38:54] ================== xe_rtp_process_tests  ===================
[21:38:54] [PASSED] coalesce-same-reg
[21:38:54] [PASSED] no-match-no-add
[21:38:54] [PASSED] no-match-no-add-multiple-rules
[21:38:54] [PASSED] two-regs-two-entries
[21:38:54] [PASSED] clr-one-set-other
[21:38:54] [PASSED] set-field
[21:38:54] [PASSED] conflict-duplicate
[21:38:54] [PASSED] conflict-not-disjoint
[21:38:54] [PASSED] conflict-reg-type
[21:38:54] ============== [PASSED] xe_rtp_process_tests ===============
[21:38:54] ===================== [PASSED] xe_rtp ======================
[21:38:54] ==================== xe_wa (1 subtest) =====================
[21:38:54] ======================== xe_wa_gt  =========================
[21:38:54] [PASSED] TIGERLAKE (B0)
[21:38:54] [PASSED] DG1 (A0)
[21:38:54] [PASSED] DG1 (B0)
[21:38:54] [PASSED] ALDERLAKE_S (A0)
[21:38:54] [PASSED] ALDERLAKE_S (B0)
[21:38:54] [PASSED] ALDERLAKE_S (C0)
[21:38:54] [PASSED] ALDERLAKE_S (D0)
[21:38:54] [PASSED] ALDERLAKE_P (A0)
[21:38:54] [PASSED] ALDERLAKE_P (B0)
[21:38:54] [PASSED] ALDERLAKE_P (C0)
[21:38:54] [PASSED] ALDERLAKE_S_RPLS (D0)
[21:38:54] [PASSED] ALDERLAKE_P_RPLU (E0)
[21:38:54] [PASSED] DG2_G10 (C0)
[21:38:54] [PASSED] DG2_G11 (B1)
[21:38:54] [PASSED] DG2_G12 (A1)
[21:38:54] [PASSED] METEORLAKE (g:A0, m:A0)
[21:38:54] [PASSED] METEORLAKE (g:A0, m:A0)
[21:38:54] [PASSED] METEORLAKE (g:A0, m:A0)
[21:38:54] [PASSED] LUNARLAKE (g:A0, m:A0)
[21:38:54] [PASSED] LUNARLAKE (g:B0, m:A0)
[21:38:54] ==================== [PASSED] xe_wa_gt =====================
[21:38:54] ====================== [PASSED] xe_wa ======================
[21:38:54] ============================================================
[21:38:54] Testing complete. Ran 98 tests: passed: 84, skipped: 14
[21:38:54] Elapsed time: 29.818s total, 4.209s configuring, 25.339s building, 0.218s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[21:38:54] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:38:56] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
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/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/x86/um/signal.c:560:6: warning: no previous prototype for ‘sys_rt_sigreturn’ [-Wmissing-prototypes]
  560 | long sys_rt_sigreturn(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/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/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/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)
      |            ^~~~~~~~~~~~~~~~~~~~~~~
../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)
      |      ^~~~~~~~~~~~~~~
../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)
      |      ^~~~~~~~~~~~~~~~~

[21:39:17] Starting KUnit Kernel (1/1)...
[21:39:17] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:39:18] ============ drm_test_pick_cmdline (2 subtests) ============
[21:39:18] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[21:39:18] =============== drm_test_pick_cmdline_named  ===============
[21:39:18] [PASSED] NTSC
[21:39:18] [PASSED] NTSC-J
[21:39:18] [PASSED] PAL
[21:39:18] [PASSED] PAL-M
[21:39:18] =========== [PASSED] drm_test_pick_cmdline_named ===========
[21:39:18] ============== [PASSED] drm_test_pick_cmdline ==============
[21:39:18] ================== drm_buddy (7 subtests) ==================
[21:39:18] [PASSED] drm_test_buddy_alloc_limit
[21:39:18] [PASSED] drm_test_buddy_alloc_optimistic
[21:39:18] [PASSED] drm_test_buddy_alloc_pessimistic
[21:39:18] [PASSED] drm_test_buddy_alloc_pathological
[21:39:18] [PASSED] drm_test_buddy_alloc_contiguous
[21:39:18] [PASSED] drm_test_buddy_alloc_clear
[21:39:18] [PASSED] drm_test_buddy_alloc_range_bias
[21:39:18] ==================== [PASSED] drm_buddy ====================
[21:39:18] ============= drm_cmdline_parser (40 subtests) =============
[21:39:18] [PASSED] drm_test_cmdline_force_d_only
[21:39:18] [PASSED] drm_test_cmdline_force_D_only_dvi
[21:39:18] [PASSED] drm_test_cmdline_force_D_only_hdmi
[21:39:18] [PASSED] drm_test_cmdline_force_D_only_not_digital
[21:39:18] [PASSED] drm_test_cmdline_force_e_only
[21:39:18] [PASSED] drm_test_cmdline_res
[21:39:18] [PASSED] drm_test_cmdline_res_vesa
[21:39:18] [PASSED] drm_test_cmdline_res_vesa_rblank
[21:39:18] [PASSED] drm_test_cmdline_res_rblank
[21:39:18] [PASSED] drm_test_cmdline_res_bpp
[21:39:18] [PASSED] drm_test_cmdline_res_refresh
[21:39:18] [PASSED] drm_test_cmdline_res_bpp_refresh
[21:39:18] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[21:39:18] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[21:39:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[21:39:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[21:39:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[21:39:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[21:39:18] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[21:39:18] [PASSED] drm_test_cmdline_res_margins_force_on
[21:39:18] [PASSED] drm_test_cmdline_res_vesa_margins
[21:39:18] [PASSED] drm_test_cmdline_name
[21:39:18] [PASSED] drm_test_cmdline_name_bpp
[21:39:18] [PASSED] drm_test_cmdline_name_option
[21:39:18] [PASSED] drm_test_cmdline_name_bpp_option
[21:39:18] [PASSED] drm_test_cmdline_rotate_0
[21:39:18] [PASSED] drm_test_cmdline_rotate_90
[21:39:18] [PASSED] drm_test_cmdline_rotate_180
[21:39:18] [PASSED] drm_test_cmdline_rotate_270
[21:39:18] [PASSED] drm_test_cmdline_hmirror
[21:39:18] [PASSED] drm_test_cmdline_vmirror
[21:39:18] [PASSED] drm_test_cmdline_margin_options
[21:39:18] [PASSED] drm_test_cmdline_multiple_options
[21:39:18] [PASSED] drm_test_cmdline_bpp_extra_and_option
[21:39:18] [PASSED] drm_test_cmdline_extra_and_option
[21:39:18] [PASSED] drm_test_cmdline_freestanding_options
[21:39:18] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[21:39:18] [PASSED] drm_test_cmdline_panel_orientation
[21:39:18] ================ drm_test_cmdline_invalid  =================
[21:39:18] [PASSED] margin_only
[21:39:18] [PASSED] interlace_only
[21:39:18] [PASSED] res_missing_x
[21:39:18] [PASSED] res_missing_y
[21:39:18] [PASSED] res_bad_y
[21:39:18] [PASSED] res_missing_y_bpp
[21:39:18] [PASSED] res_bad_bpp
[21:39:18] [PASSED] res_bad_refresh
[21:39:18] [PASSED] res_bpp_refresh_force_on_off
[21:39:18] [PASSED] res_invalid_mode
[21:39:18] [PASSED] res_bpp_wrong_place_mode
[21:39:18] [PASSED] name_bpp_refresh
[21:39:18] [PASSED] name_refresh
[21:39:18] [PASSED] name_refresh_wrong_mode
[21:39:18] [PASSED] name_refresh_invalid_mode
[21:39:18] [PASSED] rotate_multiple
[21:39:18] [PASSED] rotate_invalid_val
[21:39:18] [PASSED] rotate_truncated
[21:39:18] [PASSED] invalid_option
[21:39:18] [PASSED] invalid_tv_option
[21:39:18] [PASSED] truncated_tv_option
[21:39:18] ============ [PASSED] drm_test_cmdline_invalid =============
[21:39:18] =============== drm_test_cmdline_tv_options  ===============
[21:39:18] [PASSED] NTSC
[21:39:18] [PASSED] NTSC_443
[21:39:18] [PASSED] NTSC_J
[21:39:18] [PASSED] PAL
[21:39:18] [PASSED] PAL_M
[21:39:18] [PASSED] PAL_N
[21:39:18] [PASSED] SECAM
[21:39:18] =========== [PASSED] drm_test_cmdline_tv_options ===========
[21:39:18] =============== [PASSED] drm_cmdline_parser ================
[21:39:18] ============= drmm_connector_init (3 subtests) =============
[21:39:18] [PASSED] drm_test_drmm_connector_init
[21:39:18] [PASSED] drm_test_drmm_connector_init_null_ddc
[21:39:18] ========= drm_test_drmm_connector_init_type_valid  =========
[21:39:18] [PASSED] Unknown
[21:39:18] [PASSED] VGA
[21:39:18] [PASSED] DVI-I
[21:39:18] [PASSED] DVI-D
[21:39:18] [PASSED] DVI-A
[21:39:18] [PASSED] Composite
[21:39:18] [PASSED] SVIDEO
[21:39:18] [PASSED] LVDS
[21:39:18] [PASSED] Component
[21:39:18] [PASSED] DIN
[21:39:18] [PASSED] DP
[21:39:18] [PASSED] HDMI-A
[21:39:18] [PASSED] HDMI-B
[21:39:18] [PASSED] TV
[21:39:18] [PASSED] eDP
[21:39:18] [PASSED] Virtual
[21:39:18] [PASSED] DSI
[21:39:18] [PASSED] DPI
[21:39:18] [PASSED] Writeback
[21:39:18] [PASSED] SPI
[21:39:18] [PASSED] USB
[21:39:18] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[21:39:18] =============== [PASSED] drmm_connector_init ===============
[21:39:18] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[21:39:18] ========== drm_test_get_tv_mode_from_name_valid  ===========
[21:39:18] [PASSED] NTSC
[21:39:18] [PASSED] NTSC-443
[21:39:18] [PASSED] NTSC-J
[21:39:18] [PASSED] PAL
[21:39:18] [PASSED] PAL-M
[21:39:18] [PASSED] PAL-N
[21:39:18] [PASSED] SECAM
[21:39:18] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[21:39:18] [PASSED] drm_test_get_tv_mode_from_name_truncated
[21:39:18] ============ [PASSED] drm_get_tv_mode_from_name ============
[21:39:18] ============= drm_damage_helper (21 subtests) ==============
[21:39:18] [PASSED] drm_test_damage_iter_no_damage
[21:39:18] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[21:39:18] [PASSED] drm_test_damage_iter_no_damage_src_moved
[21:39:18] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[21:39:18] [PASSED] drm_test_damage_iter_no_damage_not_visible
[21:39:18] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[21:39:18] [PASSED] drm_test_damage_iter_no_damage_no_fb
[21:39:18] [PASSED] drm_test_damage_iter_simple_damage
[21:39:18] [PASSED] drm_test_damage_iter_single_damage
[21:39:18] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[21:39:18] [PASSED] drm_test_damage_iter_single_damage_outside_src
[21:39:18] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[21:39:18] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[21:39:18] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[21:39:18] [PASSED] drm_test_damage_iter_single_damage_src_moved
[21:39:18] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[21:39:18] [PASSED] drm_test_damage_iter_damage
[21:39:18] [PASSED] drm_test_damage_iter_damage_one_intersect
[21:39:18] [PASSED] drm_test_damage_iter_damage_one_outside
[21:39:18] [PASSED] drm_test_damage_iter_damage_src_moved
[21:39:18] [PASSED] drm_test_damage_iter_damage_not_visible
[21:39:18] ================ [PASSED] drm_damage_helper ================
[21:39:18] ============== drm_dp_mst_helper (3 subtests) ==============
[21:39:18] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[21:39:18] [PASSED] Clock 154000 BPP 30 DSC disabled
[21:39:18] [PASSED] Clock 234000 BPP 30 DSC disabled
[21:39:18] [PASSED] Clock 297000 BPP 24 DSC disabled
[21:39:18] [PASSED] Clock 332880 BPP 24 DSC enabled
[21:39:18] [PASSED] Clock 324540 BPP 24 DSC enabled
[21:39:18] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[21:39:18] ============== drm_test_dp_mst_calc_pbn_div  ===============
[21:39:18] [PASSED] Link rate 2000000 lane count 4
[21:39:18] [PASSED] Link rate 2000000 lane count 2
[21:39:18] [PASSED] Link rate 2000000 lane count 1
[21:39:18] [PASSED] Link rate 1350000 lane count 4
[21:39:18] [PASSED] Link rate 1350000 lane count 2
[21:39:18] [PASSED] Link rate 1350000 lane count 1
[21:39:18] [PASSED] Link rate 1000000 lane count 4
[21:39:18] [PASSED] Link rate 1000000 lane count 2
[21:39:18] [PASSED] Link rate 1000000 lane count 1
[21:39:18] [PASSED] Link rate 810000 lane count 4
[21:39:18] [PASSED] Link rate 810000 lane count 2
[21:39:18] [PASSED] Link rate 810000 lane count 1
[21:39:18] [PASSED] Link rate 540000 lane count 4
[21:39:18] [PASSED] Link rate 540000 lane count 2
[21:39:18] [PASSED] Link rate 540000 lane count 1
[21:39:18] [PASSED] Link rate 270000 lane count 4
[21:39:18] [PASSED] Link rate 270000 lane count 2
[21:39:18] [PASSED] Link rate 270000 lane count 1
[21:39:18] [PASSED] Link rate 162000 lane count 4
[21:39:18] [PASSED] Link rate 162000 lane count 2
[21:39:18] [PASSED] Link rate 162000 lane count 1
[21:39:18] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[21:39:18] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[21:39:18] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[21:39:18] [PASSED] DP_POWER_UP_PHY with port number
[21:39:18] [PASSED] DP_POWER_DOWN_PHY with port number
[21:39:18] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[21:39:18] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[21:39:18] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[21:39:18] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[21:39:18] [PASSED] DP_QUERY_PAYLOAD with port number
[21:39:18] [PASSED] DP_QUERY_PAYLOAD with VCPI
[21:39:18] [PASSED] DP_REMOTE_DPCD_READ with port number
[21:39:18] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[21:39:18] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[21:39:18] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[21:39:18] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[21:39:18] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[21:39:18] [PASSED] DP_REMOTE_I2C_READ with port number
[21:39:18] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[21:39:18] [PASSED] DP_REMOTE_I2C_READ with transactions array
[21:39:18] [PASSED] DP_REMOTE_I2C_WRITE with port number
[21:39:18] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[21:39:18] [PASSED] DP_REMOTE_I2C_WRITE with data array
[21:39:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[21:39:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[21:39:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[21:39:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[21:39:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[21:39:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[21:39:18] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[21:39:18] ================ [PASSED] drm_dp_mst_helper ================
[21:39:18] ================== drm_exec (7 subtests) ===================
[21:39:18] [PASSED] sanitycheck
[21:39:18] [PASSED] test_lock
[21:39:18] [PASSED] test_lock_unlock
[21:39:18] [PASSED] test_duplicates
[21:39:18] [PASSED] test_prepare
[21:39:18] [PASSED] test_prepare_array
[21:39:18] [PASSED] test_multiple_loops
[21:39:18] ==================== [PASSED] drm_exec =====================
[21:39:18] =========== drm_format_helper_test (17 subtests) ===========
[21:39:18] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[21:39:18] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[21:39:18] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[21:39:18] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[21:39:18] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[21:39:18] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[21:39:18] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[21:39:18] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[21:39:18] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[21:39:18] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[21:39:18] ============== drm_test_fb_xrgb8888_to_mono  ===============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[21:39:18] ==================== drm_test_fb_swab  =====================
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ================ [PASSED] drm_test_fb_swab =================
[21:39:18] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[21:39:18] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[21:39:18] [PASSED] single_pixel_source_buffer
[21:39:18] [PASSED] single_pixel_clip_rectangle
[21:39:18] [PASSED] well_known_colors
[21:39:18] [PASSED] destination_pitch
[21:39:18] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[21:39:18] ================= drm_test_fb_clip_offset  =================
[21:39:18] [PASSED] pass through
[21:39:18] [PASSED] horizontal offset
[21:39:18] [PASSED] vertical offset
[21:39:18] [PASSED] horizontal and vertical offset
[21:39:18] [PASSED] horizontal offset (custom pitch)
[21:39:18] [PASSED] vertical offset (custom pitch)
[21:39:18] [PASSED] horizontal and vertical offset (custom pitch)
[21:39:18] ============= [PASSED] drm_test_fb_clip_offset =============
[21:39:18] ============== drm_test_fb_build_fourcc_list  ==============
[21:39:18] [PASSED] no native formats
[21:39:18] [PASSED] XRGB8888 as native format
[21:39:18] [PASSED] remove duplicates
[21:39:18] [PASSED] convert alpha formats
[21:39:18] [PASSED] random formats
[21:39:18] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[21:39:18] =================== drm_test_fb_memcpy  ====================
[21:39:18] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[21:39:18] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[21:39:18] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[21:39:18] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[21:39:18] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[21:39:18] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[21:39:18] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[21:39:18] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[21:39:18] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[21:39:18] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[21:39:18] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[21:39:18] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[21:39:18] =============== [PASSED] drm_test_fb_memcpy ================
[21:39:18] ============= [PASSED] drm_format_helper_test ==============
[21:39:18] ================= drm_format (18 subtests) =================
[21:39:18] [PASSED] drm_test_format_block_width_invalid
[21:39:18] [PASSED] drm_test_format_block_width_one_plane
[21:39:18] [PASSED] drm_test_format_block_width_two_plane
[21:39:18] [PASSED] drm_test_format_block_width_three_plane
[21:39:18] [PASSED] drm_test_format_block_width_tiled
[21:39:18] [PASSED] drm_test_format_block_height_invalid
[21:39:18] [PASSED] drm_test_format_block_height_one_plane
[21:39:18] [PASSED] drm_test_format_block_height_two_plane
[21:39:18] [PASSED] drm_test_format_block_height_three_plane
[21:39:18] [PASSED] drm_test_format_block_height_tiled
[21:39:18] [PASSED] drm_test_format_min_pitch_invalid
[21:39:18] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[21:39:18] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[21:39:18] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[21:39:18] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[21:39:18] [PASSED] drm_test_format_min_pitch_two_plane
[21:39:18] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[21:39:18] [PASSED] drm_test_format_min_pitch_tiled
[21:39:18] =================== [PASSED] drm_format ====================
[21:39:18] =============== drm_framebuffer (1 subtest) ================
[21:39:18] =============== drm_test_framebuffer_create  ===============
[21:39:18] [PASSED] ABGR8888 normal sizes
[21:39:18] [PASSED] ABGR8888 max sizes
[21:39:18] [PASSED] ABGR8888 pitch greater than min required
[21:39:18] [PASSED] ABGR8888 pitch less than min required
[21:39:18] [PASSED] ABGR8888 Invalid width
[21:39:18] [PASSED] ABGR8888 Invalid buffer handle
[21:39:18] [PASSED] No pixel format
[21:39:18] [PASSED] ABGR8888 Width 0
[21:39:18] [PASSED] ABGR8888 Height 0
[21:39:18] [PASSED] ABGR8888 Out of bound height * pitch combination
[21:39:18] [PASSED] ABGR8888 Large buffer offset
[21:39:18] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[21:39:18] [PASSED] ABGR8888 Valid buffer modifier
[21:39:18] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[21:39:18] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[21:39:18] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[21:39:18] [PASSED] NV12 Normal sizes
[21:39:18] [PASSED] NV12 Max sizes
[21:39:18] [PASSED] NV12 Invalid pitch
[21:39:18] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[21:39:18] [PASSED] NV12 different  modifier per-plane
[21:39:18] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[21:39:18] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[21:39:18] [PASSED] NV12 Modifier for inexistent plane
[21:39:18] [PASSED] NV12 Handle for inexistent plane
[21:39:18] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[21:39:18] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[21:39:18] [PASSED] YVU420 Normal sizes
[21:39:18] [PASSED] YVU420 Max sizes
[21:39:18] [PASSED] YVU420 Invalid pitch
[21:39:18] [PASSED] YVU420 Different pitches
[21:39:18] [PASSED] YVU420 Different buffer offsets/pitches
[21:39:18] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[21:39:18] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[21:39:18] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[21:39:18] [PASSED] YVU420 Valid modifier
[21:39:18] [PASSED] YVU420 Different modifiers per plane
[21:39:18] [PASSED] YVU420 Modifier for inexistent plane
[21:39:18] [PASSED] X0L2 Normal sizes
[21:39:18] [PASSED] X0L2 Max sizes
[21:39:18] [PASSED] X0L2 Invalid pitch
[21:39:18] [PASSED] X0L2 Pitch greater than minimum required
[21:39:18] [PASSED] X0L2 Handle for inexistent plane
[21:39:18] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[21:39:18] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[21:39:18] [PASSED] X0L2 Valid modifier
[21:39:18] [PASSED] X0L2 Modifier for inexistent plane
[21:39:18] =========== [PASSED] drm_test_framebuffer_create ===========
[21:39:18] ================= [PASSED] drm_framebuffer =================
[21:39:18] ================ drm_gem_shmem (8 subtests) ================
[21:39:18] [PASSED] drm_gem_shmem_test_obj_create
[21:39:18] [PASSED] drm_gem_shmem_test_obj_create_private
[21:39:18] [PASSED] drm_gem_shmem_test_pin_pages
[21:39:18] [PASSED] drm_gem_shmem_test_vmap
[21:39:18] [PASSED] drm_gem_shmem_test_get_pages_sgt
[21:39:18] [PASSED] drm_gem_shmem_test_get_sg_table
[21:39:18] [PASSED] drm_gem_shmem_test_madvise
[21:39:18] [PASSED] drm_gem_shmem_test_purge
[21:39:18] ================== [PASSED] drm_gem_shmem ==================
[21:39:18] ================= drm_managed (2 subtests) =================
[21:39:18] [PASSED] drm_test_managed_release_action
[21:39:18] [PASSED] drm_test_managed_run_action
[21:39:18] =================== [PASSED] drm_managed ===================
[21:39:18] =================== drm_mm (6 subtests) ====================
[21:39:18] [PASSED] drm_test_mm_init
[21:39:18] [PASSED] drm_test_mm_debug
[21:39:18] [PASSED] drm_test_mm_align32
[21:39:18] [PASSED] drm_test_mm_align64
[21:39:18] [PASSED] drm_test_mm_lowest
[21:39:18] [PASSED] drm_test_mm_highest
[21:39:18] ===================== [PASSED] drm_mm ======================
[21:39:18] ============= drm_modes_analog_tv (4 subtests) =============
[21:39:18] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[21:39:18] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[21:39:18] [PASSED] drm_test_modes_analog_tv_pal_576i
[21:39:18] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[21:39:18] =============== [PASSED] drm_modes_analog_tv ===============
[21:39:18] ============== drm_plane_helper (2 subtests) ===============
[21:39:18] =============== drm_test_check_plane_state  ================
[21:39:18] [PASSED] clipping_simple
[21:39:18] [PASSED] clipping_rotate_reflect
[21:39:18] [PASSED] positioning_simple
[21:39:18] [PASSED] upscaling
[21:39:18] [PASSED] downscaling
[21:39:18] [PASSED] rounding1
[21:39:18] [PASSED] rounding2
[21:39:18] [PASSED] rounding3
[21:39:18] [PASSED] rounding4
[21:39:18] =========== [PASSED] drm_test_check_plane_state ============
[21:39:18] =========== drm_test_check_invalid_plane_state  ============
[21:39:18] [PASSED] positioning_invalid
[21:39:18] [PASSED] upscaling_invalid
[21:39:18] [PASSED] downscaling_invalid
[21:39:18] ======= [PASSED] drm_test_check_invalid_plane_state ========
[21:39:18] ================ [PASSED] drm_plane_helper =================
[21:39:18] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[21:39:18] ====== drm_test_connector_helper_tv_get_modes_check  =======
[21:39:18] [PASSED] None
[21:39:18] [PASSED] PAL
[21:39:18] [PASSED] NTSC
[21:39:18] [PASSED] Both, NTSC Default
[21:39:18] [PASSED] Both, PAL Default
[21:39:18] [PASSED] Both, NTSC Default, with PAL on command-line
[21:39:18] [PASSED] Both, PAL Default, with NTSC on command-line
[21:39:18] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[21:39:18] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[21:39:18] ================== drm_rect (9 subtests) ===================
[21:39:18] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[21:39:18] [PASSED] drm_test_rect_clip_scaled_not_clipped
[21:39:18] [PASSED] drm_test_rect_clip_scaled_clipped
stty: 'standard input': Inappropriate ioctl for device
[21:39:18] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[21:39:18] ================= drm_test_rect_intersect  =================
[21:39:18] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[21:39:18] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[21:39:18] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[21:39:18] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[21:39:18] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[21:39:18] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[21:39:18] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[21:39:18] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[21:39:18] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[21:39:18] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[21:39:18] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[21:39:18] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[21:39:18] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[21:39:18] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[21:39:18] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[21:39:18] ============= [PASSED] drm_test_rect_intersect =============
[21:39:18] ================ drm_test_rect_calc_hscale  ================
[21:39:18] [PASSED] normal use
[21:39:18] [PASSED] out of max range
[21:39:18] [PASSED] out of min range
[21:39:18] [PASSED] zero dst
[21:39:18] [PASSED] negative src
[21:39:18] [PASSED] negative dst
[21:39:18] ============ [PASSED] drm_test_rect_calc_hscale ============
[21:39:18] ================ drm_test_rect_calc_vscale  ================
[21:39:18] [PASSED] normal use
[21:39:18] [PASSED] out of max range
[21:39:18] [PASSED] out of min range
[21:39:18] [PASSED] zero dst
[21:39:18] [PASSED] negative src
[21:39:18] [PASSED] negative dst
[21:39:18] ============ [PASSED] drm_test_rect_calc_vscale ============
[21:39:18] ================== drm_test_rect_rotate  ===================
[21:39:18] [PASSED] reflect-x
[21:39:18] [PASSED] reflect-y
[21:39:18] [PASSED] rotate-0
[21:39:18] [PASSED] rotate-90
[21:39:18] [PASSED] rotate-180
[21:39:18] [PASSED] rotate-270
[21:39:18] ============== [PASSED] drm_test_rect_rotate ===============
[21:39:18] ================ drm_test_rect_rotate_inv  =================
[21:39:18] [PASSED] reflect-x
[21:39:18] [PASSED] reflect-y
[21:39:18] [PASSED] rotate-0
[21:39:18] [PASSED] rotate-90
[21:39:18] [PASSED] rotate-180
[21:39:18] [PASSED] rotate-270
[21:39:18] ============ [PASSED] drm_test_rect_rotate_inv =============
[21:39:18] ==================== [PASSED] drm_rect =====================
[21:39:18] ============================================================
[21:39:18] Testing complete. Ran 417 tests: passed: 417
[21:39:18] Elapsed time: 23.188s total, 1.715s configuring, 21.253s building, 0.198s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] drm/xe: add wopcm region size to the device info
  2024-04-24 10:48 [PATCH] drm/xe: add wopcm region size to the device info Farah Kassabri
                   ` (2 preceding siblings ...)
  2024-04-28 21:39 ` ✓ CI.KUnit: " Patchwork
@ 2024-04-29 12:50 ` Rodrigo Vivi
  3 siblings, 0 replies; 5+ messages in thread
From: Rodrigo Vivi @ 2024-04-29 12:50 UTC (permalink / raw
  To: Farah Kassabri; +Cc: intel-xe, ofir1.bitton

On Wed, Apr 24, 2024 at 01:48:02PM +0300, Farah Kassabri wrote:
> As each product may have different wopcm region size,
> it's better to have this information as part of the device
> descriptor, that way we won't need to keep adding more
> else cases to the function which retrieve that size for
> future products.

agreed.
we could have kept the function and only change it to
get the info though. But anyway, the patch is right:

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

> 
> Signed-off-by: Farah Kassabri <fkassabri@habana.ai>
> ---
>  drivers/gpu/drm/xe/xe_device_types.h       |  2 ++
>  drivers/gpu/drm/xe/xe_ggtt.c               |  3 +--
>  drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c |  4 ++--
>  drivers/gpu/drm/xe/xe_guc.c                |  3 +--
>  drivers/gpu/drm/xe/xe_pci.c                | 12 +++++++++++-
>  drivers/gpu/drm/xe/xe_wopcm.c              | 17 +----------------
>  drivers/gpu/drm/xe/xe_wopcm.h              |  1 -
>  7 files changed, 18 insertions(+), 24 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index 2e62450d86e1..fa3c7ca2f2d4 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -230,6 +230,8 @@ struct xe_device {
>  		u32 media_verx100;
>  		/** @info.mem_region_mask: mask of valid memory regions */
>  		u32 mem_region_mask;
> +		/** @info.wopcm_size: wopcm region size */
> +		u32 wopcm_size;
>  		/** @info.platform: XE platform enum */
>  		enum xe_platform platform;
>  		/** @info.subplatform: XE subplatform enum */
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index 0d541f55b4fc..b4e089c3333d 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -188,8 +188,7 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
>  	else
>  		ggtt->pt_ops = &xelp_pt_ops;
>  
> -	drm_mm_init(&ggtt->mm, xe_wopcm_size(xe),
> -		    ggtt->size - xe_wopcm_size(xe));
> +	drm_mm_init(&ggtt->mm, xe->info.wopcm_size, ggtt->size - xe->info.wopcm_size);
>  	mutex_init(&ggtt->lock);
>  	primelockdep(ggtt);
>  
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> index 79116ad58620..18b7aa8d1f94 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> @@ -575,7 +575,7 @@ static u64 pf_get_max_ggtt(struct xe_gt *gt)
>  	const struct drm_mm_node *entry;
>  	u64 alignment = pf_get_ggtt_alignment(gt);
>  	u64 spare = pf_get_spare_ggtt(gt);
> -	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
> +	u64 hole_min_start = gt_to_xe(gt)->info.wopcm_size;
>  	u64 hole_start, hole_end, hole_size;
>  	u64 max_hole = 0;
>  
> @@ -1932,7 +1932,7 @@ int xe_gt_sriov_pf_config_print_available_ggtt(struct xe_gt *gt, struct drm_prin
>  	const struct drm_mm *mm = &ggtt->mm;
>  	const struct drm_mm_node *entry;
>  	u64 alignment = pf_get_ggtt_alignment(gt);
> -	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
> +	u64 hole_min_start = gt_to_xe(gt)->info.wopcm_size;
>  	u64 hole_start, hole_end, hole_size;
>  	u64 spare, avail, total = 0;
>  	char buf[10];
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index 240e7a4bbff1..48468c0bcf7c 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -41,8 +41,7 @@ static u32 guc_bo_ggtt_addr(struct xe_guc *guc,
>  	struct xe_device *xe = guc_to_xe(guc);
>  	u32 addr = xe_bo_ggtt_addr(bo);
>  
> -	/* GuC addresses above GUC_GGTT_TOP don't map through the GTT */
> -	xe_assert(xe, addr >= xe_wopcm_size(guc_to_xe(guc)));
> +	xe_assert(xe, addr >= xe->info.wopcm_size);
>  	xe_assert(xe, addr < GUC_GGTT_TOP);
>  	xe_assert(xe, bo->size <= GUC_GGTT_TOP - addr);
>  
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index a0cf5dd803c2..55f977124647 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -57,6 +57,8 @@ struct xe_device_desc {
>  
>  	enum xe_platform platform;
>  
> +	u32 wopcm_size;
> +
>  	u8 require_force_probe:1;
>  	u8 is_dgfx:1;
>  
> @@ -221,6 +223,7 @@ static const struct xe_device_desc tgl_desc = {
>  	.has_display = true,
>  	.has_llc = true,
>  	.require_force_probe = true,
> +	.wopcm_size = SZ_2M,
>  };
>  
>  static const struct xe_device_desc rkl_desc = {
> @@ -282,6 +285,7 @@ static const struct xe_device_desc dg1_desc = {
>  	.has_display = true,
>  	.has_heci_gscfi = 1,
>  	.require_force_probe = true,
> +	.wopcm_size = SZ_4M,
>  };
>  
>  static const u16 dg2_g10_ids[] = { XE_DG2_G10_IDS(NOP), XE_ATS_M150_IDS(NOP), 0 };
> @@ -306,6 +310,7 @@ static const struct xe_device_desc ats_m_desc = {
>  
>  	DG2_FEATURES,
>  	.has_display = false,
> +	.wopcm_size = SZ_2M,
>  };
>  
>  static const struct xe_device_desc dg2_desc = {
> @@ -315,6 +320,7 @@ static const struct xe_device_desc dg2_desc = {
>  
>  	DG2_FEATURES,
>  	.has_display = true,
> +	.wopcm_size = SZ_2M,
>  };
>  
>  static const struct xe_device_desc pvc_desc = {
> @@ -324,6 +330,7 @@ static const struct xe_device_desc pvc_desc = {
>  	.has_display = false,
>  	.has_heci_gscfi = 1,
>  	.require_force_probe = true,
> +	.wopcm_size = SZ_4M,
>  };
>  
>  static const struct xe_device_desc mtl_desc = {
> @@ -331,18 +338,21 @@ static const struct xe_device_desc mtl_desc = {
>  	.require_force_probe = true,
>  	PLATFORM(XE_METEORLAKE),
>  	.has_display = true,
> +	.wopcm_size = SZ_4M,
>  };
>  
>  static const struct xe_device_desc lnl_desc = {
>  	PLATFORM(XE_LUNARLAKE),
>  	.has_display = true,
>  	.require_force_probe = true,
> +	.wopcm_size = SZ_2M,
>  };
>  
>  static const struct xe_device_desc bmg_desc __maybe_unused = {
>  	DGFX_FEATURES,
>  	PLATFORM(XE_BATTLEMAGE),
>  	.require_force_probe = true,
> +	.wopcm_size = SZ_4M,
>  };
>  
>  #undef PLATFORM
> @@ -567,7 +577,7 @@ static int xe_info_init_early(struct xe_device *xe,
>  	xe->info.skip_guc_pc = desc->skip_guc_pc;
>  	xe->info.skip_mtcfg = desc->skip_mtcfg;
>  	xe->info.skip_pcode = desc->skip_pcode;
> -
> +	xe->info.wopcm_size = desc->wopcm_size;
>  	xe->info.enable_display = IS_ENABLED(CONFIG_DRM_XE_DISPLAY) &&
>  				  xe_modparam.enable_display &&
>  				  desc->has_display;
> diff --git a/drivers/gpu/drm/xe/xe_wopcm.c b/drivers/gpu/drm/xe/xe_wopcm.c
> index d3a99157e523..0b5a11dbd770 100644
> --- a/drivers/gpu/drm/xe/xe_wopcm.c
> +++ b/drivers/gpu/drm/xe/xe_wopcm.c
> @@ -45,14 +45,6 @@
>   * The top part of the WOPCM is reserved for hardware contexts (e.g. RC6
>   * context).
>   */
> -
> -/* Default WOPCM size is 2MB from Gen11, 1MB on previous platforms */
> -/* FIXME: Larger size require for 2 tile PVC, do a proper probe sooner or later */
> -#define DGFX_WOPCM_SIZE			SZ_4M
> -/* FIXME: Larger size require for MTL, do a proper probe sooner or later */
> -#define MTL_WOPCM_SIZE			SZ_4M
> -#define WOPCM_SIZE			SZ_2M
> -
>  #define MAX_WOPCM_SIZE			SZ_8M
>  
>  /* 16KB WOPCM (RSVD WOPCM) is reserved from HuC firmware top. */
> @@ -177,13 +169,6 @@ static int __wopcm_init_regs(struct xe_device *xe, struct xe_gt *gt,
>  	return err;
>  }
>  
> -u32 xe_wopcm_size(struct xe_device *xe)
> -{
> -	return IS_DGFX(xe) ? DGFX_WOPCM_SIZE :
> -		xe->info.platform == XE_METEORLAKE ? MTL_WOPCM_SIZE :
> -		WOPCM_SIZE;
> -}
> -
>  /**
>   * xe_wopcm_init() - Initialize the WOPCM structure.
>   * @wopcm: pointer to xe_wopcm.
> @@ -209,7 +194,7 @@ int xe_wopcm_init(struct xe_wopcm *wopcm)
>  	if (!guc_fw_size)
>  		return -EINVAL;
>  
> -	wopcm->size = xe_wopcm_size(xe);
> +	wopcm->size = xe->info.wopcm_size;
>  	drm_dbg(&xe->drm, "WOPCM: %uK\n", wopcm->size / SZ_1K);
>  
>  	xe_force_wake_assert_held(gt_to_fw(gt), XE_FW_GT);
> diff --git a/drivers/gpu/drm/xe/xe_wopcm.h b/drivers/gpu/drm/xe/xe_wopcm.h
> index 0197a282460b..37a38d10f897 100644
> --- a/drivers/gpu/drm/xe/xe_wopcm.h
> +++ b/drivers/gpu/drm/xe/xe_wopcm.h
> @@ -11,6 +11,5 @@
>  struct xe_device;
>  
>  int xe_wopcm_init(struct xe_wopcm *wopcm);
> -u32 xe_wopcm_size(struct xe_device *xe);
>  
>  #endif
> -- 
> 2.34.1
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-04-29 12:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-24 10:48 [PATCH] drm/xe: add wopcm region size to the device info Farah Kassabri
2024-04-28 21:38 ` ✓ CI.Patch_applied: success for " Patchwork
2024-04-28 21:38 ` ✓ CI.checkpatch: " Patchwork
2024-04-28 21:39 ` ✓ CI.KUnit: " Patchwork
2024-04-29 12:50 ` [PATCH] " Rodrigo Vivi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.