<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Aptos;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Aptos",sans-serif;
        color:#0F4761;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;color:#0F4761">For documentation – everything looks correct, a little bit different then in most of cases, but correct. I’ve generated docs and all needed tests are visible.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#0F4761">From this point of view LGTM Acked-by: Katarzyna Piecielska
<a href="mailto:Katarzyna.piecielska@intel.com">Katarzyna.piecielska@intel.com</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#0F4761"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#0F4761">Kasia<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:#0F4761"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Sundaresan, Sujaritha <sujaritha.sundaresan@intel.com>
<br>
<b>Sent:</b> Friday, August 9, 2024 11:04 AM<br>
<b>To:</b> Kamil Konieczny <kamil.konieczny@linux.intel.com>; igt-dev@lists.freedesktop.org; Gupta, Anshuman <anshuman.gupta@intel.com>; Piecielska, Katarzyna <katarzyna.piecielska@intel.com><br>
<b>Subject:</b> Re: [PATCH i-g-t, v3] tests/intel: Add tests to run suspend without display<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 8/6/2024 6:20 PM, Kamil Konieczny wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Hi Sundaresan,,<o:p></o:p></pre>
<pre>On 2024-08-06 at 11:50:46 +0530, Sundaresan, Sujaritha wrote:<o:p></o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<pre>On 8/1/2024 5:15 PM, Kamil Konieczny wrote:<o:p></o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Hi Sujaritha,<o:p></o:p></pre>
<pre>On 2024-07-30 at 17:05:08 +0530, Sujaritha Sundaresan wrote:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>small nit about subject, you wrote:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>[PATCH i-g-t, v3] tests/intel: Add tests to run suspend without display<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>imho this should be:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>[PATCH i-g-t, v3] tests/intel/xe_pm: Add tests for suspend without display<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>More nits below.<o:p></o:p></pre>
</blockquote>
<pre><o:p> </o:p></pre>
<pre>Hey Kamil,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Sure this change I can make.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>Add tests to validate basic execution suspend/resume cycle<o:p></o:p></pre>
<pre>without display module to rule out display related issues<o:p></o:p></pre>
<pre>from the suspend/resume stack.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>v2: Add normal reload cycle after running test (Anshuman)<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>v3: Rebase<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Signed-off-by: Sujaritha Sundaresan <a href="mailto:sujaritha.sundaresan@intel.com"><sujaritha.sundaresan@intel.com></a><o:p></o:p></pre>
<pre>Reviewed-by: Anshuman Gupta <a href="mailto:anshuman.gupta@intel.com"><anshuman.gupta@intel.com></a><o:p></o:p></pre>
<pre>---<o:p></o:p></pre>
<pre>  tests/intel/xe_pm.c | 34 ++++++++++++++++++++++++++++++++++<o:p></o:p></pre>
<pre>  1 file changed, 34 insertions(+)<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c<o:p></o:p></pre>
<pre>index 8b115e2f6..03f742265 100644<o:p></o:p></pre>
<pre>--- a/tests/intel/xe_pm.c<o:p></o:p></pre>
<pre>+++ b/tests/intel/xe_pm.c<o:p></o:p></pre>
<pre>@@ -17,6 +17,7 @@<o:p></o:p></pre>
<pre>  #include "igt.h"<o:p></o:p></pre>
<pre>  #include "lib/igt_device.h"<o:p></o:p></pre>
<pre>+#include "lib/igt_kmod.h"<o:p></o:p></pre>
<pre>  #include "lib/igt_pm.h"<o:p></o:p></pre>
<pre>  #include "lib/igt_sysfs.h"<o:p></o:p></pre>
<pre>  #include "lib/igt_syncobj.h"<o:p></o:p></pre>
<pre>@@ -229,6 +230,10 @@ static void close_fw_handle(int sig)<o:p></o:p></pre>
<pre>   * Description: suspend/autoresume on %arg[1] state and exec after RPM<o:p></o:p></pre>
<pre>   * Functionality: pm - %arg[1]<o:p></o:p></pre>
<pre>   *<o:p></o:p></pre>
<pre>+ * SUBTEST: %s-without-display<o:p></o:p></pre>
<pre>+ * Description: suspend/autoresume on %arg[1] state without display<o:p></o:p></pre>
<pre>+ * Functionality: pm - %arg[1]<o:p></o:p></pre>
</blockquote>
<pre>I see you copy-pasted it but imho both Description and<o:p></o:p></pre>
<pre>Functionality documentation fields should be static, here and<o:p></o:p></pre>
<pre>in other places.<o:p></o:p></pre>
<pre>+cc Katarzyna Piecielska <a href="mailto:katarzyna.piecielska@intel.com"><katarzyna.piecielska@intel.com></a><o:p></o:p></pre>
</blockquote>
</blockquote>
</blockquote>
<p>Hi Kamil,<o:p></o:p></p>
<p>Sorry I didn't get this change. This is inline with the rest of the file right ?<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>+ *<o:p></o:p></pre>
<pre>   * arg[1]:<o:p></o:p></pre>
<pre>   *<o:p></o:p></pre>
<pre>   * @s2idle: s2idle<o:p></o:p></pre>
<pre>@@ -681,6 +686,7 @@ igt_main<o:p></o:p></pre>
<pre>       struct drm_xe_engine_class_instance *hwe;<o:p></o:p></pre>
<pre>       device_t device;<o:p></o:p></pre>
<pre>       uint32_t d3cold_allowed;<o:p></o:p></pre>
<pre>+      const char *opts;<o:p></o:p></pre>
<pre>       int sysfs_fd;<o:p></o:p></pre>
<pre>       const struct s_state {<o:p></o:p></pre>
<pre>@@ -757,6 +763,34 @@ igt_main<o:p></o:p></pre>
<pre>                                       NO_RPM, 0);<o:p></o:p></pre>
<pre>              }<o:p></o:p></pre>
<pre>+             igt_subtest_f("%s-without-display", s->name) {<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+                     if (!drmModeGetResources(device.fd_xe))<o:p></o:p></pre>
<pre>+                            return;<o:p></o:p></pre>
</blockquote>
<pre>Why 'return' here?! Imho this should be checked in fixture<o:p></o:p></pre>
<pre>or be a skip. Or other way around - what about a headless board<o:p></o:p></pre>
<pre>or one without any connected display?<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Regards,<o:p></o:p></pre>
<pre>Kamil<o:p></o:p></pre>
</blockquote>
<pre><o:p> </o:p></pre>
<pre>I think this patch idea sort stemmed from the cases where we have a display<o:p></o:p></pre>
<pre>connected and<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>want to make sure that the suspend/resume issues are not being caused by the<o:p></o:p></pre>
<pre>display.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>But would you suggest expanding the test to have the headless/no display<o:p></o:p></pre>
<pre>situations? If so what changes are you suggesting for that ?<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Thanks,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Suja<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
</blockquote>
<pre><o:p> </o:p></pre>
<pre>I would suggest turn this into a igt_skip_on_f(), not a return.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Regards,<o:p></o:p></pre>
<pre>Kamil<o:p></o:p></pre>
</blockquote>
<p>Sure I will switch this to <o:p></o:p></p>
<p>igt_skip_on(!drmModeGetResources(device.fd_xe))<o:p></o:p></p>
<p>Thanks,<o:p></o:p></p>
<p>Suja <o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><o:p> </o:p></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>+<o:p></o:p></pre>
<pre>+                    xe_for_each_engine(device.fd_xe, hwe) {<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+                            igt_debug("Reload w/o display\n");<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+                            igt_kmsg(KMSG_INFO "Unloading Xe\n");<o:p></o:p></pre>
<pre>+                         igt_assert_eq(igt_xe_driver_unload(), 0);<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+                            igt_kmsg(KMSG_INFO "Re-loading Xe without display\n");<o:p></o:p></pre>
<pre>+                      igt_assert_eq(igt_xe_driver_load("enable_display=0"), 0);<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+                            test_exec(device, hwe, 1, 2, s->state,<o:p></o:p></pre>
<pre>+                                      NO_RPM, 0);<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+                            igt_debug("Reload as normal\n");<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+                            igt_kmsg(KMSG_INFO "Unloading Xe\n");<o:p></o:p></pre>
<pre>+                         igt_assert_eq(igt_xe_driver_unload(), 0);<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>+                            igt_kmsg(KMSG_INFO "Re-loading Xe\n");<o:p></o:p></pre>
<pre>+                       igt_assert_eq(igt_xe_driver_load(opts), 0);<o:p></o:p></pre>
<pre>+                     }<o:p></o:p></pre>
<pre>+             }<o:p></o:p></pre>
<pre>+<o:p></o:p></pre>
<pre>              for (const struct vm_op *op = vm_op; op->name; op++) {<o:p></o:p></pre>
<pre>                      igt_subtest_f("%s-vm-bind-%s", s->name, op->name) {<o:p></o:p></pre>
<pre>                             xe_for_each_engine(device.fd_xe, hwe)<o:p></o:p></pre>
<pre>-- <o:p></o:p></pre>
<pre>2.34.1<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</div>
</body>
</html>