Repository navigation
xrt-smi: support platform device identification and aie2ps validate archive - #10093
Conversation
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Advertised AIE2PS validation tests still directly query unsupported PCIe identifiers and can fail during default validation.
Review effort: Balanced
Findings: 1
What changed in this PR
Adds platform-device identification and AIE2PS validation archive routing to xrt-smi.
Changes:
- Adds string-based device identification with PCIe/VBNV fallbacks.
- Maps AIE2PS hardware to the VE2 validation archive and Strix configuration.
- Updates device listings and reports to use platform-aware identification.
| File | Description |
|---|---|
XBUtilities.cpp |
Uses platform-aware names and hardware detection. |
smi.h |
Adds string/device hardware lookup APIs. |
smi.cpp |
Implements AIE2PS detection and archive routing. |
smi_ryzen.cpp |
Selects Strix configuration for AIE2PS. |
query_requests.h |
Defines the device part-name query. |
info_platform.h |
Declares platform-aware device naming. |
info_platform.cpp |
Implements device-name fallback behavior. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
clang-tidy review says "All clean, LGTM! 👍" |
|
clang-tidy review says "All clean, LGTM! 👍" |
| }; | ||
| } | ||
|
|
||
| config_gen_aie2ps:: |
There was a problem hiding this comment.
Is it captured somewhere in documentation, what all commands are applicable to aie2ps family of devices? Confluence?
There was a problem hiding this comment.
Hi @aktondak , it is not in a dedicated page yet. The applicable command surface is defined in code in config_gen_aie2ps (smi_ryzen.cpp)
- examine reports: aie-partitions/host/platform/telemetry/preemption/clocks/debug;
- validate tests: latency/throughput/runlist-latency/runlist-throughput;
|
clang-tidy review says "All clean, LGTM! 👍" |
|
clang-tidy review says "All clean, LGTM! 👍" |
Add a device_id_str query so shims can report a human-readable part number (e.g. xc2ve3858). xrt-smi examine now shows this string as the device Name, falling back to the ROM VBNV and then the numeric device id when the query is empty, so existing devices are unaffected. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Signed-off-by: Wendy Liang <wendy.liang@amd.com>
Support device identification for platform parts (e.g., xc2ve3858) by querying device_id_str before falling back to pcie_id in smi_hardware_config, mapping them to the aie2ps hardware family. Use the aie2ps family to resolve the validate runner archive to Runner/xrt_smi_ve2.a. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Signed-off-by: Wendy Liang <wendy.liang@amd.com>
Update validation test runners and diagnostic tools to determine hardware type via get_hardware_type(device) instead of querying pcie_id directly, preventing errors on platform devices that lack PCIe IDs. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Signed-off-by: Wendy Liang <wendy.liang@amd.com>
Provide a dedicated config_gen_aie2ps configuration generator that advertises only the validation tests supported on aie2ps devices (latency and throughput, with runlist tests hidden), avoiding failures from tests like GEMM which are not packaged in xrt_smi_ve2.a. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Signed-off-by: Wendy Liang <wendy.liang@amd.com>
Implement device hardware type resolution locally in XBUtilities to avoid requiring new symbol exports or shim-side implementations. Validation test runners and diagnostic tools now determine hardware type through XBUtilities::get_hardware_type(device), checking device_id_str first for platform parts before querying pcie_id, ensuring backward compatibility with existing shims. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Signed-off-by: Wendy Liang <wendy.liang@amd.com>
|
clang-tidy review says "All clean, LGTM! 👍" |
* Remove validate tests from PFs (#10040) * [XRT-SMI] Cleanup logic into specific files and prune VF specific options (#10047) * update platform report (#10052) * CR-1272937: xrt::kernel::group_id() throw on missing memory connectivity (#10028) When a kernel argument has no memory bank connectivity, group_id() returned 65535 (no_memidx encoded as 0xFFFF). Passing that value to xrt::bo() caused a cryptic std::out_of_range crash instead of an actionable error. Validate the argument index and memory group assignment in group_id() and throw xrt_core::error(EINVAL) with a descriptive message. connectivity and no_memidx are public so group_id() can use them. * CR-1272937: throw from group_id() only for buffer arguments (#10059) group_id() must still throw when a global/constant argument has no memory connectivity so xrt::bo is not given bank 0xffff. Scalar, stream, and local arguments are queried by field applications and must keep the legacy encoded invalid group. * AIESW-41600 Remove skipped validate tests for npu3 (#10062) * update list of commands for vf (#10075) * xrt-smi: gate validate hidden options, align --pmode help, report each --loop iteration (#10076) Require --advanced to parse validate hidden options (matching examine), and use the same --pmode mode list as configure for Ryzen/NPU3. Run the validate --loop iterations from the validate subcommand instead of inside TestRunner::startTest, so each iteration's result is printed and recorded in the JSON output instead of only the last one. A warning in a later iteration no longer masks an earlier failure. * Support displaying soft realtime in aie-partitions report (#10085) * [XRT-SMI] Add warning for enabled categories after disable (#10081) * Use create_dtrace_handle_elf API for creating dtrace handle (#10084) * xrt-smi: support platform device identification and aie2ps validate archive (#10093) Signed-off-by: Wendy Liang <wendy.liang@amd.com> Signed-off-by: Akshay Tondak <aktondak@amd.com>



Problem solved by the commit
Platform (non-PCI) devices such as
xc2ve3858(Versal Edge / aie2ps / npu12) lacked device identification inxrt-smiand failed duringexamineandvalidate. Specifically:xrt-smi examineattempted to queryrom_vbnvandpcie_id, which are not supported on platform devices, resulting in missing or fallback device names and unrecognized hardware types.xrt-smi validatefailed to resolve the validate runner archive path and hardware configuration foraie2psplatform devices.Bug / issue (if any) fixed, which PR introduced the bug, how it was discovered
Discovered when running
xrt-smi examineandxrt-smi validateon platform SoC targets (e.g.,xc2ve3858).How problem was solved, alternative solutions (if any) and why they were rejected
Added
device_id_strquery (query_requests.h):xq::device_id_strto allow shims to report a human-readable part name (e.g."xc2ve3858") sourced from device-tree compatible strings.xrt_core::platform::get_device_name()ininfo_platform.{h,cpp}to inspectdevice_id_strfirst, falling back torom_vbnvand numeric PCIe device ID so existing devices remain unaffected.XBUtilities.cppto useget_device_name().Platform device identification in
smi_hardware_config(smi.{h,cpp},smi_ryzen.cpp):get_hardware_type()andget_family()takingstd::string devid_strandconst xrt_core::device* dev.device_id_strbefore falling back topcie_id, mapping"xc2ve3858"tohardware_type::aie2ps/hardware_family::aie2ps.get_validate_archive_path()to resolvehardware_family::aie2pstoRunner/xrt_smi_ve2.a.smi_ryzen.cppandXBUtilities.cppto callget_hardware_type(device)instead of queryingpcie_iddirectly.Risks (if any) associated the changes in the commit
Low risk. Standard PCIe and Ryzen devices continue to fall back to
rom_vbnvandpcie_idwithout behavioral changes.What has been tested and how, request additional testing if necessary
xrt-smi examineonxc2ve3858: device name displays asxc2ve3858and architecture version displays asaie2ps.xrt-smi validatelocates and unpacks theRunner/xrt_smi_ve2.atest suite archive.Documentation impact (if any)
None