<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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:12.0pt;
font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ligatures:standardcontextual;
mso-fareast-language:EN-US;}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"Calibri",sans-serif;}
span.EmailStyle21
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 129.75pt 72.0pt 129.7pt;}
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-IN" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Dandamudi, Priyanka
<br>
<b>Sent:</b> 06 August 2025 04:11 PM<br>
<b>To:</b> nishit.sharma@intel.com; igt-dev@lists.freedesktop.org; Brost, Matthew <matthew.brost@intel.com>; Sharma, Nishit <nishit.sharma@intel.com><br>
<b>Cc:</b> Roper, Matthew D <matthew.d.roper@intel.com><br>
<b>Subject:</b> RE: [PATCH i-g-t 2/2] tests/intel/xe_multi_tile: Multi-tile support in IGT<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">> <span lang="EN-US" style="mso-fareast-language:EN-IN">-----Original Message-----</span><o:p></o:p></p>
<p class="MsoPlainText">> <span lang="EN-US" style="mso-fareast-language:EN-IN">From: igt-dev <<a href="mailto:igt-dev-bounces@lists.freedesktop.org">igt-dev-bounces@lists.freedesktop.org</a>> On Behalf Of</span><o:p></o:p></p>
<p class="MsoPlainText">> <span lang="EN-US" style="mso-fareast-language:EN-IN"><a href="mailto:nishit.sharma@intel.com">nishit.sharma@intel.com</a></span><o:p></o:p></p>
<p class="MsoPlainText">> <span lang="EN-US" style="mso-fareast-language:EN-IN">Sent: 18 July 2025 11:19 AM</span><o:p></o:p></p>
<p class="MsoPlainText">> <span lang="EN-US" style="mso-fareast-language:EN-IN">To:
<a href="mailto:igt-dev@lists.freedesktop.org">igt-dev@lists.freedesktop.org</a>; Brost, Matthew</span><o:p></o:p></p>
<p class="MsoPlainText">> <span lang="EN-US" style="mso-fareast-language:EN-IN"><<a href="mailto:matthew.brost@intel.com">matthew.brost@intel.com</a>>; Sharma, Nishit <<a href="mailto:nishit.sharma@intel.com">nishit.sharma@intel.com</a>></span><o:p></o:p></p>
<p class="MsoPlainText">> <span lang="EN-US" style="mso-fareast-language:EN-IN">Cc: Roper, Matthew D <<a href="mailto:matthew.d.roper@intel.com">matthew.d.roper@intel.com</a>></span><o:p></o:p></p>
<p class="MsoPlainText">> <span lang="EN-US" style="mso-fareast-language:EN-IN">Subject: [PATCH i-g-t 2/2] tests/intel/xe_multi_tile: Multi-tile support in IGT</span><o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> From: Nishit Sharma <<a href="mailto:nishit.sharma@intel.com"><span style="color:windowtext;text-decoration:none">nishit.sharma@intel.com</span></a>><o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Test checks wether platform supports multi-tile or not. Test peforms sanity<o:p></o:p></p>
<p class="MsoPlainText">> checks related to sysfs paths for GT IDs and Tile IDs. Test also checks whether<o:p></o:p></p>
<p class="MsoPlainText">> tiles returned by UAPI are in order or out of order.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Signed-off-by: Nishit Sharma <<a href="mailto:nishit.sharma@intel.com"><span style="color:windowtext;text-decoration:none">nishit.sharma@intel.com</span></a>><o:p></o:p></p>
<p class="MsoPlainText">> ---<o:p></o:p></p>
<p class="MsoPlainText">> lib/igt_sysfs.c | 7 +-<o:p></o:p></p>
<p class="MsoPlainText">> lib/xe/xe_query.h | 7 ++<o:p></o:p></p>
<p class="MsoPlainText">> tests/intel/xe_multi_tile.c | 141 ++++++++++++++++++++++++++++++++++++<o:p></o:p></p>
<p class="MsoPlainText">> tests/meson.build | 1 +<o:p></o:p></p>
<p class="MsoPlainText">> 4 files changed, 155 insertions(+), 1 deletion(-) create mode 100644<o:p></o:p></p>
<p class="MsoPlainText">> tests/intel/xe_multi_tile.c<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c index af80e91ee..270120dd7 100644<o:p></o:p></p>
<p class="MsoPlainText">> --- a/lib/igt_sysfs.c<o:p></o:p></p>
<p class="MsoPlainText">> +++ b/lib/igt_sysfs.c<o:p></o:p></p>
<p class="MsoPlainText">> @@ -308,8 +308,13 @@ bool xe_sysfs_gt_has_node(int xe_device, int gt,<o:p></o:p></p>
<p class="MsoPlainText">> const char *node) char * xe_sysfs_engine_path(int xe_device, int gt, int class,<o:p></o:p></p>
<p class="MsoPlainText">> char *path, int pathlen) {<o:p></o:p></p>
<p class="MsoPlainText">> + int tile;<o:p></o:p></p>
<p class="MsoPlainText">> struct stat st;<o:p></o:p></p>
<p class="MsoPlainText">> - int tile = IS_PONTEVECCHIO(intel_get_drm_devid(xe_device)) ? gt : 0;<o:p></o:p></p>
<p class="MsoPlainText">> + struct xe_device *xe_dev = xe_device_get(xe_device);<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + igt_assert(xe_dev);<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + tile = IS_PONTEVECCHIO(intel_get_drm_devid(xe_device)) ?<o:p></o:p></p>
<p class="MsoPlainText">> +drm_xe_get_tile(xe_dev, gt) : 0;<o:p></o:p></p>
<p class="MsoPlainText">> Move all the lib code into previous patch and follow the same convention as xe_sysfs_gt_path.<o:p></o:p></p>
<p class="MsoPlainText">> if (xe_device < 0)<o:p></o:p></p>
<p class="MsoPlainText">> return NULL;<o:p></o:p></p>
<p class="MsoPlainText">> diff --git a/lib/xe/xe_query.h b/lib/xe/xe_query.h index 6ff8576b9..49b591334<o:p></o:p></p>
<p class="MsoPlainText">> 100644<o:p></o:p></p>
<p class="MsoPlainText">> --- a/lib/xe/xe_query.h<o:p></o:p></p>
<p class="MsoPlainText">> +++ b/lib/xe/xe_query.h<o:p></o:p></p>
<p class="MsoPlainText">> @@ -39,6 +39,9 @@ struct xe_device {<o:p></o:p></p>
<p class="MsoPlainText">> /** @gt_mask: bitmask of GT IDs */<o:p></o:p></p>
<p class="MsoPlainText">> uint64_t gt_mask;<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> + /** @tile_mask: bitmask of Tile IDs */<o:p></o:p></p>
<p class="MsoPlainText">> + uint64_t tile_mask;<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> /** @memory_regions: bitmask of all memory regions */<o:p></o:p></p>
<p class="MsoPlainText">> uint64_t memory_regions;<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> @@ -80,6 +83,10 @@ struct xe_device {<o:p></o:p></p>
<p class="MsoPlainText">> for (uint64_t igt_unique(__mask) = xe_device_get(__fd)->gt_mask; \<o:p></o:p></p>
<p class="MsoPlainText">> __gt = ffsll(igt_unique(__mask)) - 1, igt_unique(__mask) != 0; \<o:p></o:p></p>
<p class="MsoPlainText">> igt_unique(__mask) &= ~(1ull << __gt))<o:p></o:p></p>
<p class="MsoPlainText">> +#define xe_for_each_tile(__fd, __tile) \<o:p></o:p></p>
<p class="MsoPlainText">> + for (uint64_t igt_unique(__mask) = xe_device_get(__fd)->tile_mask; \<o:p></o:p></p>
<p class="MsoPlainText">> + __tile = ffsll(igt_unique(__mask)) - 1, igt_unique(__mask) != 0; \<o:p></o:p></p>
<p class="MsoPlainText">> + igt_unique(__mask) &= ~(1ull << __tile))<o:p></o:p></p>
<p class="MsoPlainText">One more thing is that I feel here it iterates through all available tiles but useful one would be for each tile it should iterate over all gt’s and then next tile same.<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:black">Move this lib to previous patch.<o:p></o:p></span></p>
<p class="MsoPlainText">> #define xe_for_each_mem_region(__fd, __memreg, __r) \<o:p></o:p></p>
<p class="MsoPlainText">> for (uint64_t igt_unique(__i) = 0; igt_unique(__i) < igt_fls(__memreg);<o:p></o:p></p>
<p class="MsoPlainText">> igt_unique(__i)++) \<o:p></o:p></p>
<p class="MsoPlainText">> for_if(__r = (__memreg & (1ull << igt_unique(__i)))) diff --git<o:p></o:p></p>
<p class="MsoPlainText">> a/tests/intel/xe_multi_tile.c b/tests/intel/xe_multi_tile.c new file mode<o:p></o:p></p>
<p class="MsoPlainText">> 100644 index 000000000..938a0b85a<o:p></o:p></p>
<p class="MsoPlainText">> --- /dev/null<o:p></o:p></p>
<p class="MsoPlainText">> +++ b/tests/intel/xe_multi_tile.c<o:p></o:p></p>
<p class="MsoPlainText">> @@ -0,0 +1,141 @@<o:p></o:p></p>
<p class="MsoPlainText">> +// SPDX-License-Identifier: MIT<o:p></o:p></p>
<p class="MsoPlainText">> +/*<o:p></o:p></p>
<p class="MsoPlainText">> + * Copyright © 2023 Intel Corporation<o:p></o:p></p>
<p class="MsoPlainText">> + *<o:p></o:p></p>
<p class="MsoPlainText">> + * Authors:<o:p></o:p></p>
<p class="MsoPlainText">> + * Nishit Sharma <<a href="mailto:nishit.sharma@intel.com"><span style="color:windowtext;text-decoration:none">nishit.sharma@intel.com</span></a>><o:p></o:p></p>
<p class="MsoPlainText">> + *<o:p></o:p></p>
<p class="MsoPlainText">> + */<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> +#include <dirent.h><o:p></o:p></p>
<p class="MsoPlainText">> +#include <fcntl.h><o:p></o:p></p>
<p class="MsoPlainText">> +#include <sys/types.h><o:p></o:p></p>
<p class="MsoPlainText">> +#include <sys/stat.h><o:p></o:p></p>
<p class="MsoPlainText">> +#include <unistd.h><o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> +#include "igt.h"<o:p></o:p></p>
<p class="MsoPlainText">> +#include "igt_sysfs.h"<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> +#include "xe_drm.h"<o:p></o:p></p>
<p class="MsoPlainText">> +#include "xe/xe_ioctl.h"<o:p></o:p></p>
<p class="MsoPlainText">> +#include "xe/xe_query.h"<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> +/**<o:p></o:p></p>
<p class="MsoPlainText">> + * TEST: To verify if multi-tile support available in platform<o:p></o:p></p>
<p class="MsoPlainText">> + * Category: Core<o:p></o:p></p>
<p class="MsoPlainText">> + * Mega feature: General Core features<o:p></o:p></p>
<p class="MsoPlainText">> + * Functionality: Tile/GT operations<o:p></o:p></p>
<p class="MsoPlainText">> + */<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> +/**<o:p></o:p></p>
<p class="MsoPlainText">> + * SUBTEST: multi-tile-info<o:p></o:p></p>
<p class="MsoPlainText">> + * Description: Test gathers Tile_ID/s,Tile_ID/s sys path,GT_ID/s path<o:p></o:p></p>
<p class="MsoPlainText">> + * Test category: functionality test<o:p></o:p></p>
<p class="MsoPlainText">> + */<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> +uint8_t tile_mis_count = -1;<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> +/*<o:p></o:p></p>
<p class="MsoPlainText">> + * To check whether tiles are in order or not or if any tile order is<o:p></o:p></p>
<p class="MsoPlainText">> + * skipped/missing as returned through UAPI<o:p></o:p></p>
<p class="MsoPlainText">> + * Function returns 0 if all tiles in order or 1 otherwise */ static<o:p></o:p></p>
<p class="MsoPlainText">> +uint8_t xe_check_tile_order(struct xe_device *xe_dev) {<o:p></o:p></p>
<p class="MsoPlainText">> + int prev_tile = -1, tile_id;<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + xe_for_each_tile(xe_dev->fd, tile_id) {<o:p></o:p></p>
<p class="MsoPlainText">> + printf("Tile ID :%d\n", tile_id);<o:p></o:p></p>
<p class="MsoPlainText">> + if (prev_tile != tile_id) {<o:p></o:p></p>
<p class="MsoPlainText">> + if (++tile_mis_count != tile_id) {<o:p></o:p></p>
<p class="MsoPlainText">> + igt_warn("Out of order TileID :%d available<o:p></o:p></p>
<p class="MsoPlainText">> Tile_ID :%d\n",<o:p></o:p></p>
<p class="MsoPlainText">> + tile_mis_count, tile_id);<o:p></o:p></p>
<p class="MsoPlainText">> + return tile_id;<o:p></o:p></p>
<p class="MsoPlainText">> + }<o:p></o:p></p>
<p class="MsoPlainText">> + }<o:p></o:p></p>
<p class="MsoPlainText">> + prev_tile = tile_id;<o:p></o:p></p>
<p class="MsoPlainText">> + }<o:p></o:p></p>
<p class="MsoPlainText">> + return prev_tile;<o:p></o:p></p>
<p class="MsoPlainText">> +}<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> +static void<o:p></o:p></p>
<p class="MsoPlainText">> +xe_create_tile_mask(struct xe_device *xe_dev) {<o:p></o:p></p>
<p class="MsoPlainText">> + /* GT IDs may be non-consecutive; keep a mask of valid Tile IDs */<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:black">Here rename it to Tile IDs above instead of GT IDs which is present in the starting of the comment.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:black">Move this one to xe_device lib function under gt masks and in future if required it can be used anywhere.<o:p></o:p></span></p>
<p class="MsoPlainText">> + for (int gt = 0; gt < xe_dev->gt_list->num_gt; gt++)<o:p></o:p></p>
<p class="MsoPlainText">> + xe_dev->tile_mask |= (1ull << xe_dev->gt_list-<o:p></o:p></p>
<p class="MsoPlainText">> >gt_list[gt].tile_id);<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoPlainText">> +}<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> +/*<o:p></o:p></p>
<p class="MsoPlainText">> + * To check whether multi-tile supported in platform<o:p></o:p></p>
<p class="MsoPlainText">> + * Function takes device descriptior and xe_device<o:p></o:p></p>
<p class="MsoPlainText">> + * structure pointer<o:p></o:p></p>
<p class="MsoPlainText">> + */<o:p></o:p></p>
<p class="MsoPlainText">> +static int<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:black">This multitile plat support can be moved under lib code as the other tests which need to work for multi tile also can use this.<o:p></o:p></span></p>
<p class="MsoPlainText">> +is_multitile_plat(struct xe_device *xe_dev) {<o:p></o:p></p>
<p class="MsoPlainText">> + int gt_id;<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + xe_for_each_gt(xe_dev->fd, gt_id)<o:p></o:p></p>
<p class="MsoPlainText">> + if (xe_dev->gt_list->gt_list[gt_id].tile_id > 0)<o:p></o:p></p>
<p class="MsoPlainText">> + return true;<o:p></o:p></p>
<p class="MsoPlainText">> + return false;<o:p></o:p></p>
<p class="MsoPlainText">> +}<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> +igt_main<o:p></o:p></p>
<p class="MsoPlainText">> +{<o:p></o:p></p>
<p class="MsoPlainText">> + int fd, tile_id, sysfs_path;<o:p></o:p></p>
<p class="MsoPlainText">> + struct xe_device *xe_dev;<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + igt_fixture {<o:p></o:p></p>
<p class="MsoPlainText">> + fd = drm_open_driver(DRIVER_XE);<o:p></o:p></p>
<p class="MsoPlainText">> + xe_dev = xe_device_get(fd);<o:p></o:p></p>
<p class="MsoPlainText">> + igt_assert(xe_dev);<o:p></o:p></p>
<p class="MsoPlainText">> + }<o:p></o:p></p>
<p class="MsoPlainText">> + <o:p></o:p></p>
<p class="MsoPlainText">> + igt_subtest("multi-tile-info") {<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + /** keep mask of valid Tile IDs **/<o:p></o:p></p>
<p class="MsoPlainText">> + xe_create_tile_mask(xe_dev);<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:black">Multi tile platform check need to be made first instead of this mask.<o:p></o:p></span></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + /** check multi-tile supported in platform **/<o:p></o:p></p>
<p class="MsoPlainText">> + igt_skip_on_f(!is_multitile_plat(xe_dev),<o:p></o:p></p>
<p class="MsoPlainText">> + "Multi-Tile not supported on this<o:p></o:p></p>
<p class="MsoPlainText">> platform.\n");<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + /* Sanity check for valid tile_id available<o:p></o:p></p>
<p class="MsoPlainText">> + * Arbitrary gt_id passed as second argument<o:p></o:p></p>
<p class="MsoPlainText">> + * returned negative tile_id<o:p></o:p></p>
<p class="MsoPlainText">> + *<o:p></o:p></p>
<p class="MsoPlainText">> + */<o:p></o:p></p>
<p class="MsoPlainText">> + tile_id = drm_xe_get_tile(xe_dev, 1);<o:p></o:p></p>
<p class="MsoPlainText">> + if (tile_id < 0) {<o:p></o:p></p>
<p class="MsoPlainText">> + tile_id = 0;<o:p></o:p></p>
<p class="MsoPlainText">> + igt_require(!tile_id);<o:p></o:p></p>
<p class="MsoPlainText">> + }<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + /** check tile order whether sequential or not**/<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:black">This check is not useful as you are already making all the tile ids consecutive using tile_mask. So, no need to check this.<o:p></o:p></span></p>
<p class="MsoPlainText">> + tile_id = xe_check_tile_order(xe_dev);<o:p></o:p></p>
<p class="MsoPlainText">> + if (tile_id != tile_mis_count)<o:p></o:p></p>
<p class="MsoPlainText">> + igt_warn("Expected tile_id :%d, Available :%d\n",<o:p></o:p></p>
<p class="MsoPlainText">> tile_mis_count,<o:p></o:p></p>
<p class="MsoPlainText">> +tile_id);<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + /** Sanity to check valid GT path **/<o:p></o:p></p>
<p class="MsoPlainText">> + sysfs_path = xe_sysfs_gt_open(fd, 1);<o:p></o:p></p>
<p class="MsoPlainText">> + if (sysfs_path < 0)<o:p></o:p></p>
<p class="MsoPlainText">> + sysfs_path = 0;<o:p></o:p></p>
<p class="MsoPlainText">> + igt_skip_on(!sysfs_path);<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + /** Sanity to check valid Tile path **/<o:p></o:p></p>
<p class="MsoPlainText">> + sysfs_path = xe_sysfs_tile_open(fd, 1);<o:p></o:p></p>
<p class="MsoPlainText">> + if (sysfs_path < 0)<o:p></o:p></p>
<p class="MsoPlainText">> + sysfs_path = 0;<o:p></o:p></p>
<p class="MsoPlainText">> + igt_skip_on(!sysfs_path);<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> + igt_info("Tile_id after iterating gt :%d\n",<o:p></o:p></p>
<p class="MsoPlainText">> drm_xe_get_tile(xe_dev, 0));<o:p></o:p></p>
<p class="MsoPlainText">> + }<o:p></o:p></p>
<p class="MsoPlainText">> + I believe this test is not required, as you are just validating sysfs paths and tile orders.<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:black">1. Tile orders are already made in sequence using tile mask.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:black">2. gt sysfs paths are already being used in other existing tests. So, in that sanity checks are already made.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:black">If at all you want to query gt's under each tile. You can add this tile thing as part of xe_query@query-gt-list or not needed only.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:black">I suggest to first goahead with lib.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="color:black">--Thanks<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:black"> Priyanka<o:p></o:p></span></p>
<p class="MsoPlainText">> + igt_fixture {<o:p></o:p></p>
<p class="MsoPlainText">> + drm_close_driver(fd);<o:p></o:p></p>
<p class="MsoPlainText">> + }<o:p></o:p></p>
<p class="MsoPlainText">> +}<o:p></o:p></p>
<p class="MsoPlainText">> +<o:p></o:p></p>
<p class="MsoPlainText">> diff --git a/tests/meson.build b/tests/meson.build index<o:p></o:p></p>
<p class="MsoPlainText">> 9b87a0d24..b45695f09 100644<o:p></o:p></p>
<p class="MsoPlainText">> --- a/tests/meson.build<o:p></o:p></p>
<p class="MsoPlainText">> +++ b/tests/meson.build<o:p></o:p></p>
<p class="MsoPlainText">> @@ -331,6 +331,7 @@ intel_xe_progs = [<o:p></o:p></p>
<p class="MsoPlainText">> 'xe_sysfs_scheduler',<o:p></o:p></p>
<p class="MsoPlainText">> 'xe_sysfs_timeslice_duration',<o:p></o:p></p>
<p class="MsoPlainText">> 'xe_tlb',<o:p></o:p></p>
<p class="MsoPlainText">> + 'xe_multi_tile',<o:p></o:p></p>
<p class="MsoPlainText">> ]<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> intel_xe_eudebug_progs = [<o:p></o:p></p>
<p class="MsoPlainText">> --<o:p></o:p></p>
<p class="MsoPlainText">> 2.43.0<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
</div>
</div>
</body>
</html>