* [PATCH 1/4] tests/intel/xe_pm: Update runtime pm conditions
@ 2024-05-09 19:16 Rodrigo Vivi
2024-05-09 19:16 ` [PATCH 2/4] tests/intel/xe_pm: Also disable display for mmap_system test Rodrigo Vivi
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Rodrigo Vivi @ 2024-05-09 19:16 UTC (permalink / raw)
To: igt-dev; +Cc: Rodrigo Vivi
Xe is no longer holding a runtime pm reference for the life
of a VM or exec_queue.
Also, IGT changes autosuspend time to a minimal time, so we
cannot guarantee that rpm is still suspended after the execution
has finished.
So, the reference usage is not a reliable reference.
Hence, start using runtime_active_time as the indicator
that runtime_pm resumed upon our actions.
v2: Usage of runtime_active_pm and inclusion of mmap tests.
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
lib/igt_pm.c | 18 +++++++++++
lib/igt_pm.h | 1 +
tests/intel/xe_pm.c | 77 +++++++++++++++++----------------------------
3 files changed, 47 insertions(+), 49 deletions(-)
diff --git a/lib/igt_pm.c b/lib/igt_pm.c
index fe7692960..98cc8d969 100644
--- a/lib/igt_pm.c
+++ b/lib/igt_pm.c
@@ -1412,6 +1412,24 @@ int igt_pm_get_runtime_suspended_time(struct pci_device *pci_dev)
return -1;
}
+int igt_pm_get_runtime_active_time(struct pci_device *pci_dev)
+{
+ char time_str[64];
+ int time, time_fd;
+
+ time_fd = igt_pm_get_power_attr_fd_rdonly(pci_dev, "runtime_active_time");
+ if (igt_pm_read_power_attr(time_fd, time_str, 64, false)) {
+ igt_assert(sscanf(time_str, "%d", &time) > 0);
+
+ igt_debug("runtime active time for PCI '%04x:%02x:%02x.%01x' = %d\n",
+ pci_dev->domain, pci_dev->bus, pci_dev->dev, pci_dev->func, time);
+
+ return time;
+ }
+
+ return -1;
+}
+
/**
* igt_pm_get_runtime_usage:
* @pci_dev: pci device
diff --git a/lib/igt_pm.h b/lib/igt_pm.h
index 91ee05cd1..b71f7c440 100644
--- a/lib/igt_pm.h
+++ b/lib/igt_pm.h
@@ -94,6 +94,7 @@ void igt_pm_print_pci_card_runtime_status(void);
bool i915_is_slpc_enabled_gt(int drm_fd, int gt);
bool i915_is_slpc_enabled(int drm_fd);
int igt_pm_get_runtime_suspended_time(struct pci_device *pci_dev);
+int igt_pm_get_runtime_active_time(struct pci_device *pci_dev);
int igt_pm_get_runtime_usage(struct pci_device *pci_dev);
void igt_pm_ignore_slpc_efficient_freq(int i915, int gtfd, bool val);
diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c
index 51442537b..661f837b2 100644
--- a/tests/intel/xe_pm.c
+++ b/tests/intel/xe_pm.c
@@ -184,34 +184,6 @@ static bool in_d3(device_t device, enum igt_acpi_d_state state)
return true;
}
-static bool out_of_d3(device_t device, enum igt_acpi_d_state state)
-{
- uint16_t val;
-
- /* Runtime resume needs to be immediate action without any wait */
- if (runtime_usage_available(device.pci_xe) &&
- igt_pm_get_runtime_usage(device.pci_xe) <= 0)
- return false;
-
- if (igt_get_runtime_pm_status() != IGT_RUNTIME_PM_STATUS_ACTIVE)
- return false;
-
- switch (state) {
- case IGT_ACPI_D3Hot:
- igt_assert_eq(pci_device_cfg_read_u16(device.pci_xe,
- &val, 0xd4), 0);
- return (val & 0x3) == 0;
- case IGT_ACPI_D3Cold:
- return igt_pm_get_acpi_real_d_state(device.pci_root) ==
- IGT_ACPI_D0;
- default:
- igt_info("Invalid D3 State\n");
- igt_assert(0);
- }
-
- return true;
-}
-
static void close_fw_handle(int sig)
{
if (fw_handle < 0)
@@ -322,27 +294,27 @@ test_exec(device_t device, struct drm_xe_engine_class_instance *eci,
uint64_t pad;
uint32_t data;
} *data;
- int i, b, rpm_usage;
+ int i, b, active_time;
bool check_rpm = (d_state == IGT_ACPI_D3Hot ||
d_state == IGT_ACPI_D3Cold);
igt_assert(n_exec_queues <= MAX_N_EXEC_QUEUES);
igt_assert(n_execs > 0);
- if (check_rpm)
+ if (check_rpm) {
igt_assert(in_d3(device, d_state));
+ active_time = igt_pm_get_runtime_active_time(device.pci_xe);
+ }
vm = xe_vm_create(device.fd_xe, 0, 0);
if (check_rpm)
- igt_assert(out_of_d3(device, d_state));
+ igt_assert(igt_pm_get_runtime_active_time(device.pci_xe) >
+ active_time);
bo_size = sizeof(*data) * n_execs;
bo_size = xe_bb_size(device.fd_xe, bo_size);
- if (check_rpm && runtime_usage_available(device.pci_xe))
- rpm_usage = igt_pm_get_runtime_usage(device.pci_xe);
-
if (flags & USERPTR) {
data = aligned_alloc(xe_get_default_alignment(device.fd_xe), bo_size);
memset(data, 0, bo_size);
@@ -380,8 +352,10 @@ test_exec(device_t device, struct drm_xe_engine_class_instance *eci,
xe_vm_prefetch_async(device.fd_xe, vm, bind_exec_queues[0], 0, addr,
bo_size, sync, 1, 0);
- if (check_rpm && runtime_usage_available(device.pci_xe))
- igt_assert(igt_pm_get_runtime_usage(device.pci_xe) > rpm_usage);
+ if (check_rpm) {
+ igt_assert(in_d3(device, d_state));
+ active_time = igt_pm_get_runtime_active_time(device.pci_xe);
+ }
for (i = 0; i < n_execs; i++) {
uint64_t batch_offset = (char *)&data[i].batch - (char *)data;
@@ -422,9 +396,6 @@ test_exec(device_t device, struct drm_xe_engine_class_instance *eci,
igt_assert(syncobj_wait(device.fd_xe, &sync[0].handle, 1, INT64_MAX, 0,
NULL));
- if (check_rpm && runtime_usage_available(device.pci_xe))
- rpm_usage = igt_pm_get_runtime_usage(device.pci_xe);
-
sync[0].flags |= DRM_XE_SYNC_FLAG_SIGNAL;
if (n_vmas > 1)
xe_vm_unbind_all_async(device.fd_xe, vm, 0, bo, sync, 1);
@@ -452,15 +423,13 @@ NULL));
free(data);
}
- if (check_rpm && runtime_usage_available(device.pci_xe))
- igt_assert(igt_pm_get_runtime_usage(device.pci_xe) < rpm_usage);
- if (check_rpm)
- igt_assert(out_of_d3(device, d_state));
-
xe_vm_destroy(device.fd_xe, vm);
- if (check_rpm)
+ if (check_rpm) {
+ igt_assert(igt_pm_get_runtime_active_time(device.pci_xe) >
+ active_time);
igt_assert(in_d3(device, d_state));
+ }
}
/**
@@ -554,10 +523,13 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags)
size_t bo_size = 8192;
uint32_t *map = NULL;
uint32_t bo;
- int i;
+ int i, active_time;
igt_require_f(placement, "Device doesn't support such memory region\n");
+ igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ active_time = igt_pm_get_runtime_active_time(device.pci_xe);
+
bo_size = ALIGN(bo_size, xe_get_default_alignment(device.fd_xe));
bo = xe_bo_create(device.fd_xe, 0, bo_size, placement, flags);
@@ -568,7 +540,8 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags)
fw_handle = igt_debugfs_open(device.fd_xe, "forcewake_all", O_RDONLY);
igt_assert(fw_handle >= 0);
- igt_assert(igt_get_runtime_pm_status() == IGT_RUNTIME_PM_STATUS_ACTIVE);
+ igt_assert(igt_pm_get_runtime_active_time(device.pci_xe) >
+ active_time);
for (i = 0; i < bo_size / sizeof(*map); i++)
map[i] = MAGIC_1;
@@ -578,22 +551,28 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags)
/* Runtime suspend and validate the pattern and changed the pattern */
close(fw_handle);
+ sleep(1);
+
igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ active_time = igt_pm_get_runtime_active_time(device.pci_xe);
for (i = 0; i < bo_size / sizeof(*map); i++)
igt_assert(map[i] == MAGIC_1);
/* dgfx page-fault on mmaping should wake the gpu */
if (xe_has_vram(device.fd_xe) && flags & DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM)
- igt_assert(igt_get_runtime_pm_status() == IGT_RUNTIME_PM_STATUS_ACTIVE);
+ igt_assert(igt_pm_get_runtime_active_time(device.pci_xe) >
+ active_time);
igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ active_time = igt_pm_get_runtime_active_time(device.pci_xe);
for (i = 0; i < bo_size / sizeof(*map); i++)
map[i] = MAGIC_2;
if (xe_has_vram(device.fd_xe) && flags & DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM)
- igt_assert(igt_get_runtime_pm_status() == IGT_RUNTIME_PM_STATUS_ACTIVE);
+ igt_assert(igt_pm_get_runtime_active_time(device.pci_xe) >
+ active_time);
igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
--
2.44.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 2/4] tests/intel/xe_pm: Also disable display for mmap_system test
2024-05-09 19:16 [PATCH 1/4] tests/intel/xe_pm: Update runtime pm conditions Rodrigo Vivi
@ 2024-05-09 19:16 ` Rodrigo Vivi
2024-05-09 19:16 ` [PATCH 3/4] tests/intel/xe_pm: Only check the rpm resume after the first mmap operation Rodrigo Vivi
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Rodrigo Vivi @ 2024-05-09 19:16 UTC (permalink / raw)
To: igt-dev; +Cc: Rodrigo Vivi, Francois Dugast
If display is enabled, the always-on components will always
keeps runtime pm references, unless you put DPMS_OFF.
Cc: Francois Dugast <francois.dugast@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
tests/intel/xe_pm.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c
index 661f837b2..89ffb8224 100644
--- a/tests/intel/xe_pm.c
+++ b/tests/intel/xe_pm.c
@@ -724,7 +724,9 @@ igt_main
igt_describe("Validate mmap memory mappings with system region,"
"when device along with parent bridge in d3");
igt_subtest("d3-mmap-system") {
+ dpms_on_off(device, DRM_MODE_DPMS_OFF);
test_mmap(device, system_memory(device.fd_xe), 0);
+ dpms_on_off(device, DRM_MODE_DPMS_ON);
}
igt_describe("Validate mmap memory mappings with vram region,"
--
2.44.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 3/4] tests/intel/xe_pm: Only check the rpm resume after the first mmap operation
2024-05-09 19:16 [PATCH 1/4] tests/intel/xe_pm: Update runtime pm conditions Rodrigo Vivi
2024-05-09 19:16 ` [PATCH 2/4] tests/intel/xe_pm: Also disable display for mmap_system test Rodrigo Vivi
@ 2024-05-09 19:16 ` Rodrigo Vivi
2024-05-09 19:16 ` [PATCH 4/4] tests/intel/xe_pm: Convert mmap tests to use existing d3 helpers Rodrigo Vivi
2024-05-09 20:34 ` ✗ Fi.CI.BUILD: failure for series starting with [1/4] tests/intel/xe_pm: Update runtime pm conditions Patchwork
3 siblings, 0 replies; 5+ messages in thread
From: Rodrigo Vivi @ 2024-05-09 19:16 UTC (permalink / raw)
To: igt-dev; +Cc: Rodrigo Vivi
The very first memory operation on a mmaped region after runtime suspend,
the device will be resumed if the memory used is vram.
However, after this first operation with page fault, the memory
can be migrated to the system memory.
During this migration, Xe kernel will get a notification at
xe_bo_move_notify, and the bo will be removed from the
vram_userfault list. Then, on the next suspend, we won't mark
bo for page fault and resume won't happen and the active count
won't increase. This is okay, since the bo is now in the system
memory we don't need to wake up the device. But the current
test is wrong, because it assumes that the bo keeps forever
in vram, what is the issue here.
Only checking the resume after the first operation is the
enough. But also, ensure that both read and write operations
are actually validated.
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
tests/intel/xe_pm.c | 36 +++++++++++++++++++++++++-----------
1 file changed, 25 insertions(+), 11 deletions(-)
diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c
index 89ffb8224..67d51f4ce 100644
--- a/tests/intel/xe_pm.c
+++ b/tests/intel/xe_pm.c
@@ -37,6 +37,11 @@
#define PREFETCH (0x1 << 1)
#define UNBIND_ALL (0x1 << 2)
+enum mem_op {
+ READ,
+ WRITE,
+};
+
typedef struct {
int fd_xe;
struct pci_device *pci_xe;
@@ -518,7 +523,8 @@ static void test_vram_d3cold_threshold(device_t device, int sysfs_fd)
*
* Functionality: pm-d3
*/
-static void test_mmap(device_t device, uint32_t placement, uint32_t flags)
+static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
+ enum mem_op first_op)
{
size_t bo_size = 8192;
uint32_t *map = NULL;
@@ -556,8 +562,12 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags)
igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
active_time = igt_pm_get_runtime_active_time(device.pci_xe);
- for (i = 0; i < bo_size / sizeof(*map); i++)
- igt_assert(map[i] == MAGIC_1);
+ for (i = 0; i < bo_size / sizeof(*map); i++) {
+ if (first_op == READ)
+ igt_assert(map[i] == MAGIC_1);
+ else
+ map[i] = MAGIC_2;
+ }
/* dgfx page-fault on mmaping should wake the gpu */
if (xe_has_vram(device.fd_xe) && flags & DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM)
@@ -567,12 +577,12 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags)
igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
active_time = igt_pm_get_runtime_active_time(device.pci_xe);
- for (i = 0; i < bo_size / sizeof(*map); i++)
- map[i] = MAGIC_2;
-
- if (xe_has_vram(device.fd_xe) && flags & DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM)
- igt_assert(igt_pm_get_runtime_active_time(device.pci_xe) >
- active_time);
+ for (i = 0; i < bo_size / sizeof(*map); i++) {
+ if (first_op == READ)
+ map[i] = MAGIC_2;
+ else
+ igt_assert(map[i] == MAGIC_2);
+ }
igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
@@ -725,7 +735,8 @@ igt_main
"when device along with parent bridge in d3");
igt_subtest("d3-mmap-system") {
dpms_on_off(device, DRM_MODE_DPMS_OFF);
- test_mmap(device, system_memory(device.fd_xe), 0);
+ test_mmap(device, system_memory(device.fd_xe), 0, READ);
+ test_mmap(device, system_memory(device.fd_xe), 0, WRITE);
dpms_on_off(device, DRM_MODE_DPMS_ON);
}
@@ -744,7 +755,10 @@ igt_main
/* Give some auto suspend delay to validate rpm active during page fault */
igt_pm_set_autosuspend_delay(device.pci_xe, 1000);
dpms_on_off(device, DRM_MODE_DPMS_OFF);
- test_mmap(device, vram_memory(device.fd_xe, 0), DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM);
+ test_mmap(device, vram_memory(device.fd_xe, 0),
+ DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM, READ);
+ test_mmap(device, vram_memory(device.fd_xe, 0),
+ DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM, WRITE);
dpms_on_off(device, DRM_MODE_DPMS_ON);
igt_pm_set_autosuspend_delay(device.pci_xe, delay_ms);
}
--
2.44.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 4/4] tests/intel/xe_pm: Convert mmap tests to use existing d3 helpers
2024-05-09 19:16 [PATCH 1/4] tests/intel/xe_pm: Update runtime pm conditions Rodrigo Vivi
2024-05-09 19:16 ` [PATCH 2/4] tests/intel/xe_pm: Also disable display for mmap_system test Rodrigo Vivi
2024-05-09 19:16 ` [PATCH 3/4] tests/intel/xe_pm: Only check the rpm resume after the first mmap operation Rodrigo Vivi
@ 2024-05-09 19:16 ` Rodrigo Vivi
2024-05-09 20:34 ` ✗ Fi.CI.BUILD: failure for series starting with [1/4] tests/intel/xe_pm: Update runtime pm conditions Patchwork
3 siblings, 0 replies; 5+ messages in thread
From: Rodrigo Vivi @ 2024-05-09 19:16 UTC (permalink / raw)
To: igt-dev; +Cc: Rodrigo Vivi
Standardize d3 setup and ensure that it tests with D3cold and
D3hot.
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
tests/intel/xe_pm.c | 80 ++++++++++++++++++++++++---------------------
1 file changed, 42 insertions(+), 38 deletions(-)
diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c
index 67d51f4ce..7c1dfe425 100644
--- a/tests/intel/xe_pm.c
+++ b/tests/intel/xe_pm.c
@@ -512,19 +512,25 @@ static void test_vram_d3cold_threshold(device_t device, int sysfs_fd)
}
/**
- * SUBTEST: d3-mmap-%s
+ * SUBTEST: %s-mmap-%s
* Description:
* Validate mmap memory mapping with d3 state, for %arg[1] region,
* if supported by device.
+ *
* arg[1]:
*
+ * @d3hot: d3hot
+ * @d3cold: d3cold
+ *
+ * arg[2]:
+ *
* @vram: vram region
* @system: system region
*
* Functionality: pm-d3
*/
static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
- enum mem_op first_op)
+ enum mem_op first_op, enum igt_acpi_d_state d_state)
{
size_t bo_size = 8192;
uint32_t *map = NULL;
@@ -533,7 +539,7 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
igt_require_f(placement, "Device doesn't support such memory region\n");
- igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ igt_assert(in_d3(device, d_state));
active_time = igt_pm_get_runtime_active_time(device.pci_xe);
bo_size = ALIGN(bo_size, xe_get_default_alignment(device.fd_xe));
@@ -559,7 +565,7 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
close(fw_handle);
sleep(1);
- igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ igt_assert(in_d3(device, d_state));
active_time = igt_pm_get_runtime_active_time(device.pci_xe);
for (i = 0; i < bo_size / sizeof(*map); i++) {
@@ -574,7 +580,7 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
igt_assert(igt_pm_get_runtime_active_time(device.pci_xe) >
active_time);
- igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ igt_assert(in_d3(device, d_state));
active_time = igt_pm_get_runtime_active_time(device.pci_xe);
for (i = 0; i < bo_size / sizeof(*map); i++) {
@@ -584,7 +590,7 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
igt_assert(map[i] == MAGIC_2);
}
- igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ igt_assert(in_d3(device, d_state));
/* Runtime resume and check the pattern */
fw_handle = igt_debugfs_open(device.fd_xe, "forcewake_all", O_RDONLY);
@@ -716,6 +722,36 @@ igt_main
NO_SUSPEND, d->state, 0);
cleanup_d3(device);
}
+
+ igt_describe_f("Validate mmap memory mappings with system region,"
+ "when device along with parent bridge in %s", d->name);
+ igt_subtest_f("%s-mmap-system", d->name) {
+ igt_assert(setup_d3(device, d->state));
+ test_mmap(device, system_memory(device.fd_xe), 0,
+ READ, d->state);
+ test_mmap(device, system_memory(device.fd_xe), 0,
+ WRITE, d->state);
+ cleanup_d3(device);
+ }
+
+ igt_describe_f("Validate mmap memory mappings with vram region,"
+ "when device along with parent bridge in %s", d->name);
+ igt_subtest_f("%s-mmap-vram", d->name) {
+ int delay_ms = igt_pm_get_autosuspend_delay(device.pci_xe);
+
+ /* Give some auto suspend delay to validate rpm active during page fault */
+ igt_pm_set_autosuspend_delay(device.pci_xe, 1000);
+ igt_assert(setup_d3(device, d->state));
+ test_mmap(device, vram_memory(device.fd_xe, 0),
+ DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM,
+ READ, d->state);
+ test_mmap(device, vram_memory(device.fd_xe, 0),
+ DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM,
+ WRITE, d->state);
+ cleanup_d3(device);
+
+ igt_pm_set_autosuspend_delay(device.pci_xe, delay_ms);
+ }
}
igt_subtest_group {
@@ -730,38 +766,6 @@ igt_main
igt_install_exit_handler(vram_d3cold_threshold_restore);
test_vram_d3cold_threshold(device, sysfs_fd);
}
-
- igt_describe("Validate mmap memory mappings with system region,"
- "when device along with parent bridge in d3");
- igt_subtest("d3-mmap-system") {
- dpms_on_off(device, DRM_MODE_DPMS_OFF);
- test_mmap(device, system_memory(device.fd_xe), 0, READ);
- test_mmap(device, system_memory(device.fd_xe), 0, WRITE);
- dpms_on_off(device, DRM_MODE_DPMS_ON);
- }
-
- igt_describe("Validate mmap memory mappings with vram region,"
- "when device along with parent bridge in d3");
- igt_subtest("d3-mmap-vram") {
- int delay_ms;
-
- if (device.pci_root != device.pci_xe) {
- igt_pm_enable_pci_card_runtime_pm(device.pci_root, NULL);
- igt_pm_set_d3cold_allowed(device.pci_slot_name, 1);
- }
-
- delay_ms = igt_pm_get_autosuspend_delay(device.pci_xe);
-
- /* Give some auto suspend delay to validate rpm active during page fault */
- igt_pm_set_autosuspend_delay(device.pci_xe, 1000);
- dpms_on_off(device, DRM_MODE_DPMS_OFF);
- test_mmap(device, vram_memory(device.fd_xe, 0),
- DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM, READ);
- test_mmap(device, vram_memory(device.fd_xe, 0),
- DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM, WRITE);
- dpms_on_off(device, DRM_MODE_DPMS_ON);
- igt_pm_set_autosuspend_delay(device.pci_xe, delay_ms);
- }
}
igt_fixture {
--
2.44.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* ✗ Fi.CI.BUILD: failure for series starting with [1/4] tests/intel/xe_pm: Update runtime pm conditions
2024-05-09 19:16 [PATCH 1/4] tests/intel/xe_pm: Update runtime pm conditions Rodrigo Vivi
` (2 preceding siblings ...)
2024-05-09 19:16 ` [PATCH 4/4] tests/intel/xe_pm: Convert mmap tests to use existing d3 helpers Rodrigo Vivi
@ 2024-05-09 20:34 ` Patchwork
3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2024-05-09 20:34 UTC (permalink / raw)
To: Rodrigo Vivi; +Cc: igt-dev
== Series Details ==
Series: series starting with [1/4] tests/intel/xe_pm: Update runtime pm conditions
URL : https://patchwork.freedesktop.org/series/133403/
State : failure
== Summary ==
Applying: tests/intel/xe_pm: Update runtime pm conditions
Applying: tests/intel/xe_pm: Also disable display for mmap_system test
Applying: tests/intel/xe_pm: Only check the rpm resume after the first mmap operation
Applying: tests/intel/xe_pm: Convert mmap tests to use existing d3 helpers
Patch failed at 0004 tests/intel/xe_pm: Convert mmap tests to use existing d3 helpers
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-05-09 20:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-09 19:16 [PATCH 1/4] tests/intel/xe_pm: Update runtime pm conditions Rodrigo Vivi
2024-05-09 19:16 ` [PATCH 2/4] tests/intel/xe_pm: Also disable display for mmap_system test Rodrigo Vivi
2024-05-09 19:16 ` [PATCH 3/4] tests/intel/xe_pm: Only check the rpm resume after the first mmap operation Rodrigo Vivi
2024-05-09 19:16 ` [PATCH 4/4] tests/intel/xe_pm: Convert mmap tests to use existing d3 helpers Rodrigo Vivi
2024-05-09 20:34 ` ✗ Fi.CI.BUILD: failure for series starting with [1/4] tests/intel/xe_pm: Update runtime pm conditions Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox