All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t, v3] tests/i915/i915_module_load: Test resizable bar support
@ 2022-06-28 13:04 priyanka.dandamudi
  2022-06-28 16:50 ` [igt-dev] ✗ Fi.CI.BUILD: failure for tests/i915/i915_module_load: Test resizable bar support (rev3) Patchwork
  2022-06-30 13:34 ` [igt-dev] [PATCH i-g-t, v3] tests/i915/i915_module_load: Test resizable bar support Matthew Auld
  0 siblings, 2 replies; 3+ messages in thread
From: priyanka.dandamudi @ 2022-06-28 13:04 UTC (permalink / raw)
  To: matthew.auld, priyanka.dandamudi, igt-dev

From: Priyanka Dandamudi <priyanka.dandamudi@intel.com>

New test named resize bar has been added which tests whether
bar gets resized with different supported sizes.

v2: Added code to check for bad bar sizes.
Modified code to check for support of lmem_bar_size modparam.(Petri)

v3: Added test description.(Kamil)
Updated driver_load_unload() name to driver_load_with_lmem_bar_size().
Used for_each_memory_region() to check for lmem instance and some minor
code modifications.(Matt)

Note:Test gets executed when
1. modparam lmem_bar_size gets added.
2. small bar bits gets enabled.

Cc: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Priyanka Dandamudi <priyanka.dandamudi@intel.com>
---
 tests/i915/i915_module_load.c | 87 +++++++++++++++++++++++++++++++++++
 1 file changed, 87 insertions(+)

diff --git a/tests/i915/i915_module_load.c b/tests/i915/i915_module_load.c
index 4705f3d6..cd036b95 100644
--- a/tests/i915/i915_module_load.c
+++ b/tests/i915/i915_module_load.c
@@ -38,6 +38,9 @@
 #include "igt_sysfs.h"
 #include "igt_core.h"
 
+#define BAR_SIZE_SHIFT 20
+#define MIN_BAR_SIZE 256
+
 IGT_TEST_DESCRIPTION("Tests the i915 module loading.");
 
 static void store_all(int i915)
@@ -260,6 +263,45 @@ static void load_and_check_i915(void)
 	gem_sanitycheck();
 }
 
+static uint32_t  driver_load_with_lmem_bar_size(uint32_t lmem_bar_size, bool check_support)
+{
+	int i915 = -1;
+	char lmem_bar[64];
+
+	igt_i915_driver_unload();
+	if (lmem_bar_size == 0)
+		igt_assert_eq(igt_i915_driver_load(NULL), 0);
+	else {
+		sprintf(lmem_bar, "lmem_bar_size=%u", lmem_bar_size);
+		igt_assert_eq(igt_i915_driver_load(lmem_bar), 0);
+	}
+
+	i915 = __drm_open_driver(DRIVER_INTEL);
+	igt_require_fd(i915);
+	igt_require_gem(i915);
+	igt_require(gem_has_lmem(i915));
+
+	if (check_support) {
+		char *tmp;
+
+		tmp = __igt_params_get(i915, "lmem_bar_size");
+		if (!tmp)
+			igt_skip("lmem_bar_size modparam not supported on this kernel. Skipping the test.\n");
+		free(tmp);
+	}
+
+	for_each_memory_region(r, i915)
+		if (r->ci.memory_class == I915_MEMORY_CLASS_DEVICE) {
+			lmem_bar_size = (r->cpu_size >> BAR_SIZE_SHIFT);
+
+			igt_skip_on_f(lmem_bar_size == 0, "CPU visible size should be greater than zero. Skipping for older kernel.\n");
+		}
+
+	close(i915);
+
+	return lmem_bar_size;
+}
+
 igt_main
 {
 	igt_describe("Check if i915 and friends are not yet loaded, then load them.");
@@ -320,5 +362,50 @@ igt_main
 		/* inject_fault() leaves the module unloaded */
 	}
 
+	igt_describe("Check whether lmem bar size can be resized to only supported sizes.");
+	igt_subtest("resize-bar") {
+		uint32_t result_bar_size;
+		uint32_t lmem_bar_size;
+		int i915 = -1;
+
+		if (igt_kmod_is_loaded("i915")) {
+			i915 = __drm_open_driver(DRIVER_INTEL);
+			igt_require_fd(i915);
+			igt_require_gem(i915);
+			igt_require(gem_has_lmem(i915));
+			igt_skip_on_f(igt_sysfs_get_num_gt(i915) > 1, "Skips for more than one lmem instance.\n");
+			close(i915);
+		}
+
+		/* Test for lmem_bar_size modparam support */
+		lmem_bar_size = driver_load_with_lmem_bar_size(MIN_BAR_SIZE, true);
+		igt_assert_eq(lmem_bar_size, MIN_BAR_SIZE);
+
+		lmem_bar_size = driver_load_with_lmem_bar_size(0, false);
+
+		lmem_bar_size = roundup_power_of_two(lmem_bar_size);
+
+		igt_skip_on_f(lmem_bar_size == MIN_BAR_SIZE, "Bar is already set to minimum size.\n");
+
+		while (lmem_bar_size > MIN_BAR_SIZE) {
+			lmem_bar_size = lmem_bar_size >> 1;
+
+			result_bar_size = driver_load_with_lmem_bar_size(lmem_bar_size, false);
+
+			igt_assert_f(lmem_bar_size == result_bar_size, "Bar couldn't be resized.\n");
+		}
+
+		/* Test with unsupported sizes */
+		lmem_bar_size = 80;
+		result_bar_size = driver_load_with_lmem_bar_size(lmem_bar_size, false);
+		igt_assert_f(lmem_bar_size != result_bar_size, "Bar resized to unsupported size.\n");
+
+		lmem_bar_size = 16400;
+		result_bar_size = driver_load_with_lmem_bar_size(lmem_bar_size, false);
+		igt_assert_f(lmem_bar_size != result_bar_size, "Bar resized to unsupported size.\n");
+
+		igt_i915_driver_unload();
+	}
+
 	/* Subtests should unload the module themselves if they use modparams */
 }
-- 
2.27.0

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

* [igt-dev] ✗ Fi.CI.BUILD: failure for tests/i915/i915_module_load: Test resizable bar support (rev3)
  2022-06-28 13:04 [igt-dev] [PATCH i-g-t, v3] tests/i915/i915_module_load: Test resizable bar support priyanka.dandamudi
@ 2022-06-28 16:50 ` Patchwork
  2022-06-30 13:34 ` [igt-dev] [PATCH i-g-t, v3] tests/i915/i915_module_load: Test resizable bar support Matthew Auld
  1 sibling, 0 replies; 3+ messages in thread
From: Patchwork @ 2022-06-28 16:50 UTC (permalink / raw)
  To: priyanka.dandamudi; +Cc: igt-dev

== Series Details ==

Series: tests/i915/i915_module_load: Test resizable bar support (rev3)
URL   : https://patchwork.freedesktop.org/series/105141/
State : failure

== Summary ==

IGT patchset build failed on latest successful build
9b9371c8da32533022ad700a7c023b4c3a085fbc tests/i915: adapt __copy_ccs for discrete

[459/660] Linking target tests/gem_partial_pwrite_pread
[460/660] Linking target tests/gem_pipe_control_store_loop
[461/660] Linking target tests/gem_ppgtt
[462/660] Linking target tests/gem_pread
[463/660] Linking target tests/gem_pread_after_blit
[464/660] Linking target tests/gem_pwrite
[465/660] Linking target tests/gem_pwrite_snooped
[466/660] Linking target tests/gem_pxp
[467/660] Linking target tests/gem_read_read_speed
[468/660] Linking target tests/gem_readwrite
[469/660] Linking target tests/gem_render_tiled_blits
[470/660] Linking target tests/gem_reg_read
[471/660] Linking target tests/gem_render_copy
[472/660] Linking target tests/gem_render_copy_redux
[473/660] Linking target tests/gem_render_linear_blits
[474/660] Linking target tests/gem_set_tiling_vs_blt
[475/660] Linking target tests/gem_request_retire
[476/660] Linking target tests/gem_reset_stats
[477/660] Linking target tests/gem_ringfill
[478/660] Linking target tests/gem_set_tiling_vs_gtt
[479/660] Linking target tests/gem_set_tiling_vs_pwrite
[480/660] Linking target tests/gem_streaming_writes
[481/660] Linking target tests/gem_shrink
[482/660] Linking target tests/gem_softpin
[483/660] Linking target tests/gem_spin_batch
[484/660] Linking target tests/gem_sync
[485/660] Linking target tests/gem_tiled_blits
[486/660] Linking target tests/gem_tiled_fence_blits
[487/660] Linking target tests/gem_tiled_partial_pwrite_pread
[488/660] Linking target tests/gem_tiled_pread_basic
[489/660] Linking target tests/gem_tiled_pread_pwrite
[490/660] Linking target tests/gem_tiled_swapping
[491/660] Linking target tests/gem_unfence_active_buffers
[492/660] Linking target tests/gem_tiled_wb
[493/660] Linking target tests/gem_tiled_wc
[494/660] Linking target tests/gem_tiling_max_stride
[495/660] Linking target tests/gem_unref_active_buffers
[496/660] Linking target tests/gem_userptr_blits
[497/660] Linking target tests/gem_vm_create
[498/660] Linking target tests/gem_wait
[499/660] Linking target tests/gem_watchdog
[500/660] Compiling C object tests/i915_module_load.p/i915_i915_module_load.c.o
FAILED: tests/i915_module_load.p/i915_i915_module_load.c.o 
ccache cc -Itests/i915_module_load.p -Itests -I../tests -I../include/drm-uapi -I../include/linux-uapi -Ilib -I../lib -I../lib/stubs/syscalls -I. -I.. -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libpng12 -I/usr/include/libdrm -I/usr/include/libdrm/nouveau -I/usr/include/x86_64-linux-gnu -I/usr/include/alsa -I/usr/include -I/home/cidrm/kernel_headers/include -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h -D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement -Wformat=2 -Wimplicit-fallthrough=0 -Wlogical-op -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-clobbered -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-pointer-arith -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-unused-result -Werror=address -Werror=array-bounds -Werror=implicit -Werror=init-self -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc -fcommon -pthread -MD -MQ tests/i915_module_load.p/i915_i915_module_load.c.o -MF tests/i915_module_load.p/i915_i915_module_load.c.o.d -o tests/i915_module_load.p/i915_i915_module_load.c.o -c ../tests/i915/i915_module_load.c
../tests/i915/i915_module_load.c: In function ‘driver_load_with_lmem_bar_size’:
../tests/i915/i915_module_load.c:295:24: error: ‘struct gem_memory_region’ has no member named ‘cpu_size’; did you mean ‘size’?
    lmem_bar_size = (r->cpu_size >> BAR_SIZE_SHIFT);
                        ^~~~~~~~
                        size
ninja: build stopped: subcommand failed.


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

* Re: [igt-dev] [PATCH i-g-t, v3] tests/i915/i915_module_load: Test resizable bar support
  2022-06-28 13:04 [igt-dev] [PATCH i-g-t, v3] tests/i915/i915_module_load: Test resizable bar support priyanka.dandamudi
  2022-06-28 16:50 ` [igt-dev] ✗ Fi.CI.BUILD: failure for tests/i915/i915_module_load: Test resizable bar support (rev3) Patchwork
@ 2022-06-30 13:34 ` Matthew Auld
  1 sibling, 0 replies; 3+ messages in thread
From: Matthew Auld @ 2022-06-30 13:34 UTC (permalink / raw)
  To: priyanka.dandamudi, igt-dev

On 28/06/2022 14:04, priyanka.dandamudi@intel.com wrote:
> From: Priyanka Dandamudi <priyanka.dandamudi@intel.com>
> 
> New test named resize bar has been added which tests whether
> bar gets resized with different supported sizes.
> 
> v2: Added code to check for bad bar sizes.
> Modified code to check for support of lmem_bar_size modparam.(Petri)
> 
> v3: Added test description.(Kamil)
> Updated driver_load_unload() name to driver_load_with_lmem_bar_size().
> Used for_each_memory_region() to check for lmem instance and some minor
> code modifications.(Matt)
> 
> Note:Test gets executed when
> 1. modparam lmem_bar_size gets added.
> 2. small bar bits gets enabled.
> 
> Cc: Matthew Auld <matthew.auld@intel.com>
> Signed-off-by: Priyanka Dandamudi <priyanka.dandamudi@intel.com>
> ---
>   tests/i915/i915_module_load.c | 87 +++++++++++++++++++++++++++++++++++
>   1 file changed, 87 insertions(+)
> 
> diff --git a/tests/i915/i915_module_load.c b/tests/i915/i915_module_load.c
> index 4705f3d6..cd036b95 100644
> --- a/tests/i915/i915_module_load.c
> +++ b/tests/i915/i915_module_load.c
> @@ -38,6 +38,9 @@
>   #include "igt_sysfs.h"
>   #include "igt_core.h"
>   
> +#define BAR_SIZE_SHIFT 20
> +#define MIN_BAR_SIZE 256
> +
>   IGT_TEST_DESCRIPTION("Tests the i915 module loading.");
>   
>   static void store_all(int i915)
> @@ -260,6 +263,45 @@ static void load_and_check_i915(void)
>   	gem_sanitycheck();
>   }
>   
> +static uint32_t  driver_load_with_lmem_bar_size(uint32_t lmem_bar_size, bool check_support)
> +{
> +	int i915 = -1;
> +	char lmem_bar[64];
> +
> +	igt_i915_driver_unload();
> +	if (lmem_bar_size == 0)
> +		igt_assert_eq(igt_i915_driver_load(NULL), 0);
> +	else {
> +		sprintf(lmem_bar, "lmem_bar_size=%u", lmem_bar_size);
> +		igt_assert_eq(igt_i915_driver_load(lmem_bar), 0);
> +	}
> +
> +	i915 = __drm_open_driver(DRIVER_INTEL);
> +	igt_require_fd(i915);
> +	igt_require_gem(i915);
> +	igt_require(gem_has_lmem(i915));
> +
> +	if (check_support) {
> +		char *tmp;
> +
> +		tmp = __igt_params_get(i915, "lmem_bar_size");
> +		if (!tmp)
> +			igt_skip("lmem_bar_size modparam not supported on this kernel. Skipping the test.\n");
> +		free(tmp);
> +	}
> +
> +	for_each_memory_region(r, i915)

Add some braces here.

> +		if (r->ci.memory_class == I915_MEMORY_CLASS_DEVICE) {
> +			lmem_bar_size = (r->cpu_size >> BAR_SIZE_SHIFT);

I just pushed the IGT changes for this (cpu_size), so hopefully this 
will now build and skip when run. Can you resend?

Otherwise assuming this works as expected,
Reviewed-by: Matthew Auld <matthew.auld@intel.com>

> +
> +			igt_skip_on_f(lmem_bar_size == 0, "CPU visible size should be greater than zero. Skipping for older kernel.\n");
> +		}
> +
> +	close(i915);
> +
> +	return lmem_bar_size;
> +}
> +
>   igt_main
>   {
>   	igt_describe("Check if i915 and friends are not yet loaded, then load them.");
> @@ -320,5 +362,50 @@ igt_main
>   		/* inject_fault() leaves the module unloaded */
>   	}
>   
> +	igt_describe("Check whether lmem bar size can be resized to only supported sizes.");
> +	igt_subtest("resize-bar") {
> +		uint32_t result_bar_size;
> +		uint32_t lmem_bar_size;
> +		int i915 = -1;
> +
> +		if (igt_kmod_is_loaded("i915")) {
> +			i915 = __drm_open_driver(DRIVER_INTEL);
> +			igt_require_fd(i915);
> +			igt_require_gem(i915);
> +			igt_require(gem_has_lmem(i915));
> +			igt_skip_on_f(igt_sysfs_get_num_gt(i915) > 1, "Skips for more than one lmem instance.\n");
> +			close(i915);
> +		}
> +
> +		/* Test for lmem_bar_size modparam support */
> +		lmem_bar_size = driver_load_with_lmem_bar_size(MIN_BAR_SIZE, true);
> +		igt_assert_eq(lmem_bar_size, MIN_BAR_SIZE);
> +
> +		lmem_bar_size = driver_load_with_lmem_bar_size(0, false);
> +
> +		lmem_bar_size = roundup_power_of_two(lmem_bar_size);
> +
> +		igt_skip_on_f(lmem_bar_size == MIN_BAR_SIZE, "Bar is already set to minimum size.\n");
> +
> +		while (lmem_bar_size > MIN_BAR_SIZE) {
> +			lmem_bar_size = lmem_bar_size >> 1;
> +
> +			result_bar_size = driver_load_with_lmem_bar_size(lmem_bar_size, false);
> +
> +			igt_assert_f(lmem_bar_size == result_bar_size, "Bar couldn't be resized.\n");
> +		}
> +
> +		/* Test with unsupported sizes */
> +		lmem_bar_size = 80;
> +		result_bar_size = driver_load_with_lmem_bar_size(lmem_bar_size, false);
> +		igt_assert_f(lmem_bar_size != result_bar_size, "Bar resized to unsupported size.\n");
> +
> +		lmem_bar_size = 16400;
> +		result_bar_size = driver_load_with_lmem_bar_size(lmem_bar_size, false);
> +		igt_assert_f(lmem_bar_size != result_bar_size, "Bar resized to unsupported size.\n");
> +
> +		igt_i915_driver_unload();
> +	}
> +
>   	/* Subtests should unload the module themselves if they use modparams */
>   }

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

end of thread, other threads:[~2022-06-30 13:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-28 13:04 [igt-dev] [PATCH i-g-t, v3] tests/i915/i915_module_load: Test resizable bar support priyanka.dandamudi
2022-06-28 16:50 ` [igt-dev] ✗ Fi.CI.BUILD: failure for tests/i915/i915_module_load: Test resizable bar support (rev3) Patchwork
2022-06-30 13:34 ` [igt-dev] [PATCH i-g-t, v3] tests/i915/i915_module_load: Test resizable bar support Matthew Auld

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.