* [PATCH i-g-t v4 0/4] Add d3 mmap test
@ 2023-12-21 16:33 Anshuman Gupta
2023-12-21 16:33 ` [PATCH i-g-t v4 1/4] test/xe_pm: Add exit handler to close fw handle Anshuman Gupta
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Anshuman Gupta @ 2023-12-21 16:33 UTC (permalink / raw)
To: igt-dev; +Cc: kamil.konieczny, rodrigo.vivi
Add d3 mmap test.
Anshuman Gupta (4):
test/xe_pm: Add exit handler to close fw handle
lib/igt_pm: Add helper to get/set auto_suspenddelay_ms
tests/xe_pm: Add d3-mmap IGT test
HAX: Add d3-mmap to xe-fast-feedback
lib/igt_pm.c | 53 ++++++---
lib/igt_pm.h | 2 +
tests/intel-ci/xe-fast-feedback.testlist | 1 +
tests/intel/xe_pm.c | 131 +++++++++++++++++++++--
4 files changed, 166 insertions(+), 21 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH i-g-t v4 1/4] test/xe_pm: Add exit handler to close fw handle 2023-12-21 16:33 [PATCH i-g-t v4 0/4] Add d3 mmap test Anshuman Gupta @ 2023-12-21 16:33 ` Anshuman Gupta 2023-12-21 16:33 ` [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set auto_suspenddelay_ms Anshuman Gupta ` (2 subsequent siblings) 3 siblings, 0 replies; 10+ messages in thread From: Anshuman Gupta @ 2023-12-21 16:33 UTC (permalink / raw) To: igt-dev; +Cc: kamil.konieczny, rodrigo.vivi Adding an exit handler to close the fw handle to make sure we don't leak the fw in CI environment. Adding a IGT subtest group for the test using the fw handle to runtime wake the device. Scaling forcewake close exit handler for vram-d3cold-threshold subtest, while doing so add the missing subtest Functionality as well. Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> --- tests/intel/xe_pm.c | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c index 602729daf..c4ec38ae3 100644 --- a/tests/intel/xe_pm.c +++ b/tests/intel/xe_pm.c @@ -39,6 +39,7 @@ typedef struct { } device_t; uint64_t orig_threshold; +int fw_handle = -1; /* runtime_usage is only available if kernel build CONFIG_PM_ADVANCED_DEBUG */ static bool runtime_usage_available(struct pci_device *pci) @@ -166,6 +167,14 @@ static bool out_of_d3(device_t device, enum igt_acpi_d_state state) return true; } +static void close_fw_handle(int sig) +{ + if (fw_handle < 0) + return; + + close(fw_handle); +} + /** * SUBTEST: %s-basic * Description: set GPU state to %arg[1] and test suspend/autoresume @@ -382,9 +391,9 @@ static void test_vram_d3cold_threshold(device_t device, int sysfs_fd) }; uint64_t vram_used_mb = 0, vram_total_mb = 0, threshold; uint32_t bo, placement; - int handle, i; bool active; void *map; + int i; igt_require(xe_has_vram(device.fd_xe)); @@ -428,10 +437,10 @@ static void test_vram_d3cold_threshold(device_t device, int sysfs_fd) * the device from runtime suspend. * Therefore open and close fw handle to wake the device. */ - handle = igt_debugfs_open(device.fd_xe, "forcewake_all", O_RDONLY); - igt_assert(handle >= 0); + fw_handle = igt_debugfs_open(device.fd_xe, "forcewake_all", O_RDONLY); + igt_assert(fw_handle >= 0); active = igt_get_runtime_pm_status() == IGT_RUNTIME_PM_STATUS_ACTIVE; - close(handle); + close(fw_handle); igt_assert(active); /* Test D3Cold again after freeing up the Xe BO */ @@ -536,11 +545,18 @@ igt_main } } - igt_describe("Validate whether card is limited to d3hot, if vram used > vram threshold"); - igt_subtest("vram-d3cold-threshold") { - orig_threshold = get_vram_d3cold_threshold(sysfs_fd); - igt_install_exit_handler(vram_d3cold_threshold_restore); - test_vram_d3cold_threshold(device, sysfs_fd); + igt_subtest_group { + igt_fixture { + igt_install_exit_handler(close_fw_handle); + } + + igt_describe("Validate whether card is limited to d3hot," + "if vram used > vram threshold"); + igt_subtest("vram-d3cold-threshold") { + orig_threshold = get_vram_d3cold_threshold(sysfs_fd); + igt_install_exit_handler(vram_d3cold_threshold_restore); + test_vram_d3cold_threshold(device, sysfs_fd); + } } igt_fixture { -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set auto_suspenddelay_ms 2023-12-21 16:33 [PATCH i-g-t v4 0/4] Add d3 mmap test Anshuman Gupta 2023-12-21 16:33 ` [PATCH i-g-t v4 1/4] test/xe_pm: Add exit handler to close fw handle Anshuman Gupta @ 2023-12-21 16:33 ` Anshuman Gupta 2023-12-28 0:40 ` Rodrigo Vivi 2023-12-21 16:33 ` [PATCH i-g-t v4 3/4] tests/xe_pm: Add d3-mmap IGT test Anshuman Gupta 2023-12-21 16:33 ` [PATCH i-g-t v4 4/4] HAX: Add d3-mmap to xe-fast-feedback Anshuman Gupta 3 siblings, 1 reply; 10+ messages in thread From: Anshuman Gupta @ 2023-12-21 16:33 UTC (permalink / raw) To: igt-dev; +Cc: kamil.konieczny, rodrigo.vivi Sometimes we want to test pm igt test with an explicit auto suspend delay, therefore adding helpers to get/set the pci_dev auto_suspenddelay_ms. Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com> --- lib/igt_pm.c | 53 ++++++++++++++++++++++++++++++++++++++++------------ lib/igt_pm.h | 2 ++ 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/lib/igt_pm.c b/lib/igt_pm.c index c2d98fceb..d436c2c50 100644 --- a/lib/igt_pm.c +++ b/lib/igt_pm.c @@ -1068,18 +1068,6 @@ static void igt_pm_write_power_attr(int fd, const char *val, int len) igt_assert(strncmp(buf, val, len) == 0); } -static int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev) -{ - char delay_str[64]; - int delay, delay_fd; - - delay_fd = igt_pm_get_power_attr_fd(pci_dev, "autosuspend_delay_ms"); - if (igt_pm_read_power_attr(delay_fd, delay_str, 64, true)) - igt_assert(sscanf(delay_str, "%d", &delay) > 0); - - return delay; -} - static void igt_pm_setup_pci_dev_power_attrs(struct pci_device *pci_dev, struct igt_pm_pci_dev_pwrattr *pwrattr, int delay_ms) @@ -1165,6 +1153,47 @@ igt_pm_setup_pci_card_power_attrs(struct pci_device *pci_dev, bool save_attrs, i pci_iterator_destroy(iter); } +/** + * igt_pm_get_autosuspend_delay: + * @pci_dev: pci_dev. + * Get pci_dev autosuspend delay value from pci sysfs "autosuspend_delay_ms". + * + * Returns: + * autosuspend_delay_ms. + */ +int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev) +{ + char delay_str[64]; + int delay, delay_fd; + + delay_fd = igt_pm_get_power_attr_fd(pci_dev, "autosuspend_delay_ms"); + if (igt_pm_read_power_attr(delay_fd, delay_str, 64, true)) + igt_assert(sscanf(delay_str, "%d", &delay) > 0); + + return delay; +} + +/** + * igt_pm_set_autosuspend_delay: + * @pci_dev: pci_dev. + * @delay_ms: autosuspend delay in ms. + * Set pci_dev autosuspend delay value through pci sysfs "autosuspend_delay_ms". + */ +void igt_pm_set_autosuspend_delay(struct pci_device *pci_dev, int delay_ms) +{ + char delay_str[64]; + int delay_fd; + + delay_fd = igt_pm_get_power_attr_fd(pci_dev, "autosuspend_delay_ms"); + + if (delay_ms >= 0) { + int wc; + + wc = snprintf(delay_str, 64, "%d\n", delay_ms); + igt_pm_write_power_attr(delay_fd, delay_str, wc); + } +} + /** * igt_pm_enable_pci_card_runtime_pm: * @root: root port pci_dev. diff --git a/lib/igt_pm.h b/lib/igt_pm.h index 306a9eb46..8394315c6 100644 --- a/lib/igt_pm.h +++ b/lib/igt_pm.h @@ -77,6 +77,8 @@ int igt_pm_get_pcie_acpihp_slot(struct pci_device *pci_dev); bool igt_pm_acpi_d3cold_supported(struct pci_device *pci_dev); enum igt_acpi_d_state igt_pm_get_acpi_real_d_state(struct pci_device *pci_dev); +int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev); +void igt_pm_set_autosuspend_delay(struct pci_device *pci_dev, int delay_ms); void igt_pm_enable_pci_card_runtime_pm(struct pci_device *root, struct pci_device *i915); void igt_pm_get_d3cold_allowed(const char *pci_slot_name, uint32_t *value); -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set auto_suspenddelay_ms 2023-12-21 16:33 ` [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set auto_suspenddelay_ms Anshuman Gupta @ 2023-12-28 0:40 ` Rodrigo Vivi 2024-01-19 14:12 ` Gupta, Anshuman 0 siblings, 1 reply; 10+ messages in thread From: Rodrigo Vivi @ 2023-12-28 0:40 UTC (permalink / raw) To: Anshuman Gupta; +Cc: igt-dev, kamil.konieczny On Thu, Dec 21, 2023 at 10:03:36PM +0530, Anshuman Gupta wrote: > Sometimes we want to test pm igt test with an explicit auto > suspend delay, therefore adding helpers to get/set the pci_dev > auto_suspenddelay_ms. > > Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> we also need to change the default value from 0 to 1 at least, and then see how much more time machine we use. But 0 is unrealistic. > --- > lib/igt_pm.c | 53 ++++++++++++++++++++++++++++++++++++++++------------ > lib/igt_pm.h | 2 ++ > 2 files changed, 43 insertions(+), 12 deletions(-) > > diff --git a/lib/igt_pm.c b/lib/igt_pm.c > index c2d98fceb..d436c2c50 100644 > --- a/lib/igt_pm.c > +++ b/lib/igt_pm.c > @@ -1068,18 +1068,6 @@ static void igt_pm_write_power_attr(int fd, const char *val, int len) > igt_assert(strncmp(buf, val, len) == 0); > } > > -static int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev) > -{ > - char delay_str[64]; > - int delay, delay_fd; > - > - delay_fd = igt_pm_get_power_attr_fd(pci_dev, "autosuspend_delay_ms"); > - if (igt_pm_read_power_attr(delay_fd, delay_str, 64, true)) > - igt_assert(sscanf(delay_str, "%d", &delay) > 0); > - > - return delay; > -} > - > static void > igt_pm_setup_pci_dev_power_attrs(struct pci_device *pci_dev, > struct igt_pm_pci_dev_pwrattr *pwrattr, int delay_ms) > @@ -1165,6 +1153,47 @@ igt_pm_setup_pci_card_power_attrs(struct pci_device *pci_dev, bool save_attrs, i > pci_iterator_destroy(iter); > } > > +/** > + * igt_pm_get_autosuspend_delay: > + * @pci_dev: pci_dev. > + * Get pci_dev autosuspend delay value from pci sysfs "autosuspend_delay_ms". > + * > + * Returns: > + * autosuspend_delay_ms. > + */ > +int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev) > +{ > + char delay_str[64]; > + int delay, delay_fd; > + > + delay_fd = igt_pm_get_power_attr_fd(pci_dev, "autosuspend_delay_ms"); > + if (igt_pm_read_power_attr(delay_fd, delay_str, 64, true)) > + igt_assert(sscanf(delay_str, "%d", &delay) > 0); > + > + return delay; > +} > + > +/** > + * igt_pm_set_autosuspend_delay: > + * @pci_dev: pci_dev. > + * @delay_ms: autosuspend delay in ms. > + * Set pci_dev autosuspend delay value through pci sysfs "autosuspend_delay_ms". > + */ > +void igt_pm_set_autosuspend_delay(struct pci_device *pci_dev, int delay_ms) > +{ > + char delay_str[64]; > + int delay_fd; > + > + delay_fd = igt_pm_get_power_attr_fd(pci_dev, "autosuspend_delay_ms"); > + > + if (delay_ms >= 0) { > + int wc; > + > + wc = snprintf(delay_str, 64, "%d\n", delay_ms); > + igt_pm_write_power_attr(delay_fd, delay_str, wc); > + } > +} > + > /** > * igt_pm_enable_pci_card_runtime_pm: > * @root: root port pci_dev. > diff --git a/lib/igt_pm.h b/lib/igt_pm.h > index 306a9eb46..8394315c6 100644 > --- a/lib/igt_pm.h > +++ b/lib/igt_pm.h > @@ -77,6 +77,8 @@ int igt_pm_get_pcie_acpihp_slot(struct pci_device *pci_dev); > bool igt_pm_acpi_d3cold_supported(struct pci_device *pci_dev); > enum igt_acpi_d_state > igt_pm_get_acpi_real_d_state(struct pci_device *pci_dev); > +int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev); > +void igt_pm_set_autosuspend_delay(struct pci_device *pci_dev, int delay_ms); > void igt_pm_enable_pci_card_runtime_pm(struct pci_device *root, > struct pci_device *i915); > void igt_pm_get_d3cold_allowed(const char *pci_slot_name, uint32_t *value); > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set auto_suspenddelay_ms 2023-12-28 0:40 ` Rodrigo Vivi @ 2024-01-19 14:12 ` Gupta, Anshuman 2024-01-19 14:47 ` Vivi, Rodrigo 0 siblings, 1 reply; 10+ messages in thread From: Gupta, Anshuman @ 2024-01-19 14:12 UTC (permalink / raw) To: Vivi, Rodrigo; +Cc: igt-dev@lists.freedesktop.org, Konieczny, Kamil > -----Original Message----- > From: Vivi, Rodrigo <rodrigo.vivi@intel.com> > Sent: Thursday, December 28, 2023 6:11 AM > To: Gupta, Anshuman <anshuman.gupta@intel.com> > Cc: igt-dev@lists.freedesktop.org; Tauro, Riana <riana.tauro@intel.com>; > Nilawar, Badal <badal.nilawar@intel.com>; Konieczny, Kamil > <kamil.konieczny@intel.com> > Subject: Re: [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set > auto_suspenddelay_ms > > On Thu, Dec 21, 2023 at 10:03:36PM +0530, Anshuman Gupta wrote: > > Sometimes we want to test pm igt test with an explicit auto suspend > > delay, therefore adding helpers to get/set the pci_dev > > auto_suspenddelay_ms. > > > > Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com> > > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > > we also need to change the default value from 0 to 1 at least, and then see > how much more time machine we use. But 0 is unrealistic. Thanks Rodrigo for RB. You mean 1ms or 1 second ? Thanks, Anshuman Gupta. > > > --- > > lib/igt_pm.c | 53 > > ++++++++++++++++++++++++++++++++++++++++------------ > > lib/igt_pm.h | 2 ++ > > 2 files changed, 43 insertions(+), 12 deletions(-) > > > > diff --git a/lib/igt_pm.c b/lib/igt_pm.c index c2d98fceb..d436c2c50 > > 100644 > > --- a/lib/igt_pm.c > > +++ b/lib/igt_pm.c > > @@ -1068,18 +1068,6 @@ static void igt_pm_write_power_attr(int fd, > const char *val, int len) > > igt_assert(strncmp(buf, val, len) == 0); } > > > > -static int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev) > > -{ > > - char delay_str[64]; > > - int delay, delay_fd; > > - > > - delay_fd = igt_pm_get_power_attr_fd(pci_dev, > "autosuspend_delay_ms"); > > - if (igt_pm_read_power_attr(delay_fd, delay_str, 64, true)) > > - igt_assert(sscanf(delay_str, "%d", &delay) > 0); > > - > > - return delay; > > -} > > - > > static void > > igt_pm_setup_pci_dev_power_attrs(struct pci_device *pci_dev, > > struct igt_pm_pci_dev_pwrattr *pwrattr, int > delay_ms) @@ -1165,6 > > +1153,47 @@ igt_pm_setup_pci_card_power_attrs(struct pci_device > *pci_dev, bool save_attrs, i > > pci_iterator_destroy(iter); > > } > > > > +/** > > + * igt_pm_get_autosuspend_delay: > > + * @pci_dev: pci_dev. > > + * Get pci_dev autosuspend delay value from pci sysfs > "autosuspend_delay_ms". > > + * > > + * Returns: > > + * autosuspend_delay_ms. > > + */ > > +int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev) { > > + char delay_str[64]; > > + int delay, delay_fd; > > + > > + delay_fd = igt_pm_get_power_attr_fd(pci_dev, > "autosuspend_delay_ms"); > > + if (igt_pm_read_power_attr(delay_fd, delay_str, 64, true)) > > + igt_assert(sscanf(delay_str, "%d", &delay) > 0); > > + > > + return delay; > > +} > > + > > +/** > > + * igt_pm_set_autosuspend_delay: > > + * @pci_dev: pci_dev. > > + * @delay_ms: autosuspend delay in ms. > > + * Set pci_dev autosuspend delay value through pci sysfs > "autosuspend_delay_ms". > > + */ > > +void igt_pm_set_autosuspend_delay(struct pci_device *pci_dev, int > > +delay_ms) { > > + char delay_str[64]; > > + int delay_fd; > > + > > + delay_fd = igt_pm_get_power_attr_fd(pci_dev, > > +"autosuspend_delay_ms"); > > + > > + if (delay_ms >= 0) { > > + int wc; > > + > > + wc = snprintf(delay_str, 64, "%d\n", delay_ms); > > + igt_pm_write_power_attr(delay_fd, delay_str, wc); > > + } > > +} > > + > > /** > > * igt_pm_enable_pci_card_runtime_pm: > > * @root: root port pci_dev. > > diff --git a/lib/igt_pm.h b/lib/igt_pm.h index 306a9eb46..8394315c6 > > 100644 > > --- a/lib/igt_pm.h > > +++ b/lib/igt_pm.h > > @@ -77,6 +77,8 @@ int igt_pm_get_pcie_acpihp_slot(struct pci_device > > *pci_dev); bool igt_pm_acpi_d3cold_supported(struct pci_device > > *pci_dev); enum igt_acpi_d_state igt_pm_get_acpi_real_d_state(struct > > pci_device *pci_dev); > > +int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev); void > > +igt_pm_set_autosuspend_delay(struct pci_device *pci_dev, int > > +delay_ms); > > void igt_pm_enable_pci_card_runtime_pm(struct pci_device *root, > > struct pci_device *i915); > > void igt_pm_get_d3cold_allowed(const char *pci_slot_name, uint32_t > > *value); > > -- > > 2.25.1 > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set auto_suspenddelay_ms 2024-01-19 14:12 ` Gupta, Anshuman @ 2024-01-19 14:47 ` Vivi, Rodrigo 0 siblings, 0 replies; 10+ messages in thread From: Vivi, Rodrigo @ 2024-01-19 14:47 UTC (permalink / raw) To: Gupta, Anshuman; +Cc: igt-dev@lists.freedesktop.org, Konieczny, Kamil On Fri, 2024-01-19 at 14:12 +0000, Gupta, Anshuman wrote: > > > > -----Original Message----- > > From: Vivi, Rodrigo <rodrigo.vivi@intel.com> > > Sent: Thursday, December 28, 2023 6:11 AM > > To: Gupta, Anshuman <anshuman.gupta@intel.com> > > Cc: igt-dev@lists.freedesktop.org; Tauro, Riana > > <riana.tauro@intel.com>; > > Nilawar, Badal <badal.nilawar@intel.com>; Konieczny, Kamil > > <kamil.konieczny@intel.com> > > Subject: Re: [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set > > auto_suspenddelay_ms > > > > On Thu, Dec 21, 2023 at 10:03:36PM +0530, Anshuman Gupta wrote: > > > Sometimes we want to test pm igt test with an explicit auto > > > suspend > > > delay, therefore adding helpers to get/set the pci_dev > > > auto_suspenddelay_ms. > > > > > > Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com> > > > > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > > > > we also need to change the default value from 0 to 1 at least, and > > then see > > how much more time machine we use. But 0 is unrealistic. > Thanks Rodrigo for RB. > You mean 1ms or 1 second ? ops, yeap, I mentioned 1second. But we might attempt some smaller ones like 500ms?! 200ms? > Thanks, > Anshuman Gupta. > > > > > --- > > > lib/igt_pm.c | 53 > > > ++++++++++++++++++++++++++++++++++++++++------------ > > > lib/igt_pm.h | 2 ++ > > > 2 files changed, 43 insertions(+), 12 deletions(-) > > > > > > diff --git a/lib/igt_pm.c b/lib/igt_pm.c index > > > c2d98fceb..d436c2c50 > > > 100644 > > > --- a/lib/igt_pm.c > > > +++ b/lib/igt_pm.c > > > @@ -1068,18 +1068,6 @@ static void igt_pm_write_power_attr(int > > > fd, > > const char *val, int len) > > > igt_assert(strncmp(buf, val, len) == 0); } > > > > > > -static int igt_pm_get_autosuspend_delay(struct pci_device > > > *pci_dev) > > > -{ > > > - char delay_str[64]; > > > - int delay, delay_fd; > > > - > > > - delay_fd = igt_pm_get_power_attr_fd(pci_dev, > > "autosuspend_delay_ms"); > > > - if (igt_pm_read_power_attr(delay_fd, delay_str, 64, > > > true)) > > > - igt_assert(sscanf(delay_str, "%d", &delay) > 0); > > > - > > > - return delay; > > > -} > > > - > > > static void > > > igt_pm_setup_pci_dev_power_attrs(struct pci_device *pci_dev, > > > struct igt_pm_pci_dev_pwrattr > > > *pwrattr, int > > delay_ms) @@ -1165,6 > > > +1153,47 @@ igt_pm_setup_pci_card_power_attrs(struct pci_device > > *pci_dev, bool save_attrs, i > > > pci_iterator_destroy(iter); > > > } > > > > > > +/** > > > + * igt_pm_get_autosuspend_delay: > > > + * @pci_dev: pci_dev. > > > + * Get pci_dev autosuspend delay value from pci sysfs > > "autosuspend_delay_ms". > > > + * > > > + * Returns: > > > + * autosuspend_delay_ms. > > > + */ > > > +int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev) { > > > + char delay_str[64]; > > > + int delay, delay_fd; > > > + > > > + delay_fd = igt_pm_get_power_attr_fd(pci_dev, > > "autosuspend_delay_ms"); > > > + if (igt_pm_read_power_attr(delay_fd, delay_str, 64, > > > true)) > > > + igt_assert(sscanf(delay_str, "%d", &delay) > 0); > > > + > > > + return delay; > > > +} > > > + > > > +/** > > > + * igt_pm_set_autosuspend_delay: > > > + * @pci_dev: pci_dev. > > > + * @delay_ms: autosuspend delay in ms. > > > + * Set pci_dev autosuspend delay value through pci sysfs > > "autosuspend_delay_ms". > > > + */ > > > +void igt_pm_set_autosuspend_delay(struct pci_device *pci_dev, > > > int > > > +delay_ms) { > > > + char delay_str[64]; > > > + int delay_fd; > > > + > > > + delay_fd = igt_pm_get_power_attr_fd(pci_dev, > > > +"autosuspend_delay_ms"); > > > + > > > + if (delay_ms >= 0) { > > > + int wc; > > > + > > > + wc = snprintf(delay_str, 64, "%d\n", delay_ms); > > > + igt_pm_write_power_attr(delay_fd, delay_str, wc); > > > + } > > > +} > > > + > > > /** > > > * igt_pm_enable_pci_card_runtime_pm: > > > * @root: root port pci_dev. > > > diff --git a/lib/igt_pm.h b/lib/igt_pm.h index > > > 306a9eb46..8394315c6 > > > 100644 > > > --- a/lib/igt_pm.h > > > +++ b/lib/igt_pm.h > > > @@ -77,6 +77,8 @@ int igt_pm_get_pcie_acpihp_slot(struct > > > pci_device > > > *pci_dev); bool igt_pm_acpi_d3cold_supported(struct pci_device > > > *pci_dev); enum igt_acpi_d_state > > > igt_pm_get_acpi_real_d_state(struct > > > pci_device *pci_dev); > > > +int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev); > > > void > > > +igt_pm_set_autosuspend_delay(struct pci_device *pci_dev, int > > > +delay_ms); > > > void igt_pm_enable_pci_card_runtime_pm(struct pci_device *root, > > > struct pci_device *i915); > > > void igt_pm_get_d3cold_allowed(const char *pci_slot_name, > > > uint32_t > > > *value); > > > -- > > > 2.25.1 > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH i-g-t v4 3/4] tests/xe_pm: Add d3-mmap IGT test 2023-12-21 16:33 [PATCH i-g-t v4 0/4] Add d3 mmap test Anshuman Gupta 2023-12-21 16:33 ` [PATCH i-g-t v4 1/4] test/xe_pm: Add exit handler to close fw handle Anshuman Gupta 2023-12-21 16:33 ` [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set auto_suspenddelay_ms Anshuman Gupta @ 2023-12-21 16:33 ` Anshuman Gupta 2023-12-22 7:48 ` Nilawar, Badal 2023-12-21 16:33 ` [PATCH i-g-t v4 4/4] HAX: Add d3-mmap to xe-fast-feedback Anshuman Gupta 3 siblings, 1 reply; 10+ messages in thread From: Anshuman Gupta @ 2023-12-21 16:33 UTC (permalink / raw) To: igt-dev; +Cc: kamil.konieczny, rodrigo.vivi Adding a test to validate mmap memory mappings along with runtime suspend and resume for both xe device and it's pci parent bridge in device hierarchy. v2: - Use 0xc00fee pattern. [Rodrigo] - Test the pagefault case on read and write the mapping. [Rodrigo] v3: - Cosmetic comment. [Kamil] - Use MAGIC macro for 0xc0ffe and 0xdeadbeef. [Kamil] - Fix xe_bo_create() with respect to Xe uapi. - Set auto_suspend delay to 1000ms and restore it. Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> --- tests/intel/xe_pm.c | 97 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c index c4ec38ae3..9e7c523eb 100644 --- a/tests/intel/xe_pm.c +++ b/tests/intel/xe_pm.c @@ -30,6 +30,8 @@ #define NO_RPM -1 #define SIZE (4096 * 1024) +#define MAGIC_1 0xc0ffee +#define MAGIC_2 0xdeadbeef typedef struct { int fd_xe; @@ -447,6 +449,84 @@ static void test_vram_d3cold_threshold(device_t device, int sysfs_fd) igt_assert(in_d3(device, IGT_ACPI_D3Cold)); } +/** + * SUBTEST: d3-mmap-%s + * Description: + * Validate mmap memory mapping with d3 state, for %arg[1] region, + * if supported by device. + * arg[1]: + * + * @vram: vram region + * @system: system region + * + * Functionality: pm-d3 + * Run type: FULL + */ +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, delay_ms; + + igt_require_f(placement, "Device doesn't support such memory region\n"); + + bo_size = ALIGN(bo_size, xe_get_default_alignment(device.fd_xe)); + + bo = xe_bo_create(device.fd_xe, 0, bo_size, placement, flags); + map = xe_bo_map(device.fd_xe, bo, bo_size); + igt_assert(map); + memset(map, 0, bo_size); + + 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); + + for (i = 0; i < bo_size / sizeof(*map); i++) + map[i] = MAGIC_1; + + for (i = 0; i < bo_size / sizeof(*map); i++) + igt_assert(map[i] == MAGIC_1); + + /* Runtime suspend and validate the pattern and changed the pattern */ + close(fw_handle); + igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED)); + + 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)) { + /* Give some auto suspend delay to validate rpm active */ + delay_ms = igt_pm_get_autosuspend_delay(device.pci_xe); + igt_pm_set_autosuspend_delay(device.pci_xe, 1000); + igt_assert(igt_get_runtime_pm_status() == IGT_RUNTIME_PM_STATUS_ACTIVE); + igt_pm_set_autosuspend_delay(device.pci_xe, delay_ms); + } + + igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED)); + + for (i = 0; i < bo_size / sizeof(*map); i++) + map[i] = MAGIC_2; + + if (xe_has_vram(device.fd_xe)) + igt_assert(igt_get_runtime_pm_status() == IGT_RUNTIME_PM_STATUS_ACTIVE); + + igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED)); + + /* Runtime resume and check the pattern */ + 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); + for (i = 0; i < bo_size / sizeof(*map); i++) + igt_assert(map[i] == MAGIC_2); + + igt_assert(munmap(map, bo_size) == 0); + gem_close(device.fd_xe, bo); + close(fw_handle); +} + igt_main { struct drm_xe_engine_class_instance *hwe; @@ -557,6 +637,23 @@ 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") { + test_mmap(device, system_memory(device.fd_xe), 0); + } + + igt_describe("Validate mmap memory mappings with vram region," + "when device along with parent bridge in d3"); + igt_subtest("d3-mmap-vram") { + 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); + } + + test_mmap(device, vram_memory(device.fd_xe, 0), DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM); + } } igt_fixture { -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH i-g-t v4 3/4] tests/xe_pm: Add d3-mmap IGT test 2023-12-21 16:33 ` [PATCH i-g-t v4 3/4] tests/xe_pm: Add d3-mmap IGT test Anshuman Gupta @ 2023-12-22 7:48 ` Nilawar, Badal 2023-12-22 7:48 ` Nilawar, Badal 0 siblings, 1 reply; 10+ messages in thread From: Nilawar, Badal @ 2023-12-22 7:48 UTC (permalink / raw) To: Anshuman Gupta, igt-dev; +Cc: kamil.konieczny, rodrigo.vivi On 21-12-2023 22:03, Anshuman Gupta wrote: > Adding a test to validate mmap memory mappings along with runtime > suspend and resume for both xe device and it's pci parent bridge > in device hierarchy. > > v2: > - Use 0xc00fee pattern. [Rodrigo] > - Test the pagefault case on read and write the mapping. [Rodrigo] > > v3: > - Cosmetic comment. [Kamil] > - Use MAGIC macro for 0xc0ffe and 0xdeadbeef. [Kamil] > - Fix xe_bo_create() with respect to Xe uapi. > - Set auto_suspend delay to 1000ms and restore it. > > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> > Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com> > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > tests/intel/xe_pm.c | 97 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 97 insertions(+) > > diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c > index c4ec38ae3..9e7c523eb 100644 > --- a/tests/intel/xe_pm.c > +++ b/tests/intel/xe_pm.c > @@ -30,6 +30,8 @@ > #define NO_RPM -1 > > #define SIZE (4096 * 1024) > +#define MAGIC_1 0xc0ffee > +#define MAGIC_2 0xdeadbeef > > typedef struct { > int fd_xe; > @@ -447,6 +449,84 @@ static void test_vram_d3cold_threshold(device_t device, int sysfs_fd) > igt_assert(in_d3(device, IGT_ACPI_D3Cold)); > } > > +/** > + * SUBTEST: d3-mmap-%s > + * Description: > + * Validate mmap memory mapping with d3 state, for %arg[1] region, > + * if supported by device. > + * arg[1]: > + * > + * @vram: vram region > + * @system: system region > + * > + * Functionality: pm-d3 > + * Run type: FULL > + */ > +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, delay_ms; > + > + igt_require_f(placement, "Device doesn't support such memory region\n"); > + > + bo_size = ALIGN(bo_size, xe_get_default_alignment(device.fd_xe)); > + > + bo = xe_bo_create(device.fd_xe, 0, bo_size, placement, flags); > + map = xe_bo_map(device.fd_xe, bo, bo_size); > + igt_assert(map); > + memset(map, 0, bo_size); > + > + 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); > + > + for (i = 0; i < bo_size / sizeof(*map); i++) > + map[i] = MAGIC_1; > + > + for (i = 0; i < bo_size / sizeof(*map); i++) > + igt_assert(map[i] == MAGIC_1); > + > + /* Runtime suspend and validate the pattern and changed the pattern */ > + close(fw_handle); > + igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED)); > + > + 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)) { > + /* Give some auto suspend delay to validate rpm active */ > + delay_ms = igt_pm_get_autosuspend_delay(device.pci_xe); > + igt_pm_set_autosuspend_delay(device.pci_xe, 1000); > + igt_assert(igt_get_runtime_pm_status() == IGT_RUNTIME_PM_STATUS_ACTIVE); > + igt_pm_set_autosuspend_delay(device.pci_xe, delay_ms); > + } > + > + igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED)); > + > + for (i = 0; i < bo_size / sizeof(*map); i++) > + map[i] = MAGIC_2; > + > + if (xe_has_vram(device.fd_xe)) > + igt_assert(igt_get_runtime_pm_status() == IGT_RUNTIME_PM_STATUS_ACTIVE); Need to increase auto suspend delay at this place as well. I think better to change it at the beginning of test and restore back at the end of test. Regards, Badal > + > + igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED)); > + > + /* Runtime resume and check the pattern */ > + 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); > + for (i = 0; i < bo_size / sizeof(*map); i++) > + igt_assert(map[i] == MAGIC_2); > + > + igt_assert(munmap(map, bo_size) == 0); > + gem_close(device.fd_xe, bo); > + close(fw_handle); > +} > + > igt_main > { > struct drm_xe_engine_class_instance *hwe; > @@ -557,6 +637,23 @@ 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") { > + test_mmap(device, system_memory(device.fd_xe), 0); > + } > + > + igt_describe("Validate mmap memory mappings with vram region," > + "when device along with parent bridge in d3"); > + igt_subtest("d3-mmap-vram") { > + 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); > + } > + > + test_mmap(device, vram_memory(device.fd_xe, 0), DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM); > + } > } > > igt_fixture { ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH i-g-t v4 3/4] tests/xe_pm: Add d3-mmap IGT test 2023-12-22 7:48 ` Nilawar, Badal @ 2023-12-22 7:48 ` Nilawar, Badal 0 siblings, 0 replies; 10+ messages in thread From: Nilawar, Badal @ 2023-12-22 7:48 UTC (permalink / raw) To: Anshuman Gupta, igt-dev; +Cc: kamil.konieczny, rodrigo.vivi On 21-12-2023 22:03, Anshuman Gupta wrote: > Adding a test to validate mmap memory mappings along with runtime > suspend and resume for both xe device and it's pci parent bridge > in device hierarchy. > > v2: > - Use 0xc00fee pattern. [Rodrigo] > - Test the pagefault case on read and write the mapping. [Rodrigo] > > v3: > - Cosmetic comment. [Kamil] > - Use MAGIC macro for 0xc0ffe and 0xdeadbeef. [Kamil] > - Fix xe_bo_create() with respect to Xe uapi. > - Set auto_suspend delay to 1000ms and restore it. > > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> > Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com> > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > tests/intel/xe_pm.c | 97 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 97 insertions(+) > > diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c > index c4ec38ae3..9e7c523eb 100644 > --- a/tests/intel/xe_pm.c > +++ b/tests/intel/xe_pm.c > @@ -30,6 +30,8 @@ > #define NO_RPM -1 > > #define SIZE (4096 * 1024) > +#define MAGIC_1 0xc0ffee > +#define MAGIC_2 0xdeadbeef > > typedef struct { > int fd_xe; > @@ -447,6 +449,84 @@ static void test_vram_d3cold_threshold(device_t device, int sysfs_fd) > igt_assert(in_d3(device, IGT_ACPI_D3Cold)); > } > > +/** > + * SUBTEST: d3-mmap-%s > + * Description: > + * Validate mmap memory mapping with d3 state, for %arg[1] region, > + * if supported by device. > + * arg[1]: > + * > + * @vram: vram region > + * @system: system region > + * > + * Functionality: pm-d3 > + * Run type: FULL > + */ > +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, delay_ms; > + > + igt_require_f(placement, "Device doesn't support such memory region\n"); > + > + bo_size = ALIGN(bo_size, xe_get_default_alignment(device.fd_xe)); > + > + bo = xe_bo_create(device.fd_xe, 0, bo_size, placement, flags); > + map = xe_bo_map(device.fd_xe, bo, bo_size); > + igt_assert(map); > + memset(map, 0, bo_size); > + > + 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); > + > + for (i = 0; i < bo_size / sizeof(*map); i++) > + map[i] = MAGIC_1; > + > + for (i = 0; i < bo_size / sizeof(*map); i++) > + igt_assert(map[i] == MAGIC_1); > + > + /* Runtime suspend and validate the pattern and changed the pattern */ > + close(fw_handle); > + igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED)); > + > + 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)) { > + /* Give some auto suspend delay to validate rpm active */ > + delay_ms = igt_pm_get_autosuspend_delay(device.pci_xe); > + igt_pm_set_autosuspend_delay(device.pci_xe, 1000); > + igt_assert(igt_get_runtime_pm_status() == IGT_RUNTIME_PM_STATUS_ACTIVE); > + igt_pm_set_autosuspend_delay(device.pci_xe, delay_ms); > + } > + > + igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED)); > + > + for (i = 0; i < bo_size / sizeof(*map); i++) > + map[i] = MAGIC_2; > + > + if (xe_has_vram(device.fd_xe)) > + igt_assert(igt_get_runtime_pm_status() == IGT_RUNTIME_PM_STATUS_ACTIVE); Need to increase auto suspend delay at this place as well. I think better to change it at the beginning of test and restore back at the end of test. Regards, Badal > + > + igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED)); > + > + /* Runtime resume and check the pattern */ > + 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); > + for (i = 0; i < bo_size / sizeof(*map); i++) > + igt_assert(map[i] == MAGIC_2); > + > + igt_assert(munmap(map, bo_size) == 0); > + gem_close(device.fd_xe, bo); > + close(fw_handle); > +} > + > igt_main > { > struct drm_xe_engine_class_instance *hwe; > @@ -557,6 +637,23 @@ 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") { > + test_mmap(device, system_memory(device.fd_xe), 0); > + } > + > + igt_describe("Validate mmap memory mappings with vram region," > + "when device along with parent bridge in d3"); > + igt_subtest("d3-mmap-vram") { > + 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); > + } > + > + test_mmap(device, vram_memory(device.fd_xe, 0), DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM); > + } > } > > igt_fixture { ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH i-g-t v4 4/4] HAX: Add d3-mmap to xe-fast-feedback 2023-12-21 16:33 [PATCH i-g-t v4 0/4] Add d3 mmap test Anshuman Gupta ` (2 preceding siblings ...) 2023-12-21 16:33 ` [PATCH i-g-t v4 3/4] tests/xe_pm: Add d3-mmap IGT test Anshuman Gupta @ 2023-12-21 16:33 ` Anshuman Gupta 3 siblings, 0 replies; 10+ messages in thread From: Anshuman Gupta @ 2023-12-21 16:33 UTC (permalink / raw) To: igt-dev; +Cc: kamil.konieczny, rodrigo.vivi Adding d3-mmap to xe-fast-feedback. Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com> --- tests/intel-ci/xe-fast-feedback.testlist | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/intel-ci/xe-fast-feedback.testlist b/tests/intel-ci/xe-fast-feedback.testlist index bef5b0b8a..eafeb83a8 100644 --- a/tests/intel-ci/xe-fast-feedback.testlist +++ b/tests/intel-ci/xe-fast-feedback.testlist @@ -113,6 +113,7 @@ igt@xe_mmap@system igt@xe_mmap@vram igt@xe_mmap@vram-system igt@xe_pm_residency@gt-c6-on-idle +igt@xe_pm@d3-mmap igt@xe_prime_self_import@basic-with_one_bo igt@xe_prime_self_import@basic-with_fd_dup #igt@xe_prime_self_import@basic-llseek-size -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-01-19 14:48 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-12-21 16:33 [PATCH i-g-t v4 0/4] Add d3 mmap test Anshuman Gupta 2023-12-21 16:33 ` [PATCH i-g-t v4 1/4] test/xe_pm: Add exit handler to close fw handle Anshuman Gupta 2023-12-21 16:33 ` [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set auto_suspenddelay_ms Anshuman Gupta 2023-12-28 0:40 ` Rodrigo Vivi 2024-01-19 14:12 ` Gupta, Anshuman 2024-01-19 14:47 ` Vivi, Rodrigo 2023-12-21 16:33 ` [PATCH i-g-t v4 3/4] tests/xe_pm: Add d3-mmap IGT test Anshuman Gupta 2023-12-22 7:48 ` Nilawar, Badal 2023-12-22 7:48 ` Nilawar, Badal 2023-12-21 16:33 ` [PATCH i-g-t v4 4/4] HAX: Add d3-mmap to xe-fast-feedback Anshuman Gupta
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox