[SWDEV-529030/SWDEV-531217] Fix tests & output for partitioned configurations (CPX, DPX, QPX, etc.)
Changes:
- Updated AMD SMI firmware to display "N/A" for unavailable firmware in partitioned environments, improving clarity.
Example (in DPX):
$ amd-smi firmware
GPU: 0
FW_LIST:
...
FW 12:
FW_ID: PM
FW_VERSION: 00.86.39.00
GPU: 1
FW_LIST: N/A
- Fixed amd-smi partition not showing current partition information on
asics with inablity to set memory or accelerator partitions.
$ amd-smi partition -c -m
CURRENT_PARTITION:
GPU_ID MEMORY ACCELERATOR_TYPE ACCELERATOR_PROFILE_INDEX PARTITION_ID
0 NPS1 CPX 2 0
1 N/A N/A N/A 1
2 N/A N/A N/A 2
3 N/A N/A N/A 3
4 N/A N/A N/A 4
5 N/A N/A N/A 5
6 NPS1 SPX 0 0
7 NPS1 SPX 0 0
8 NPS1 SPX 0 0
MEMORY_PARTITION:
GPU_ID MEMORY_PARTITION_CAPS CURRENT_MEMORY_PARTITION
0 N/A NPS1
1 N/A N/A
2 N/A N/A
3 N/A N/A
4 N/A N/A
5 N/A N/A
6 N/A NPS1
7 N/A NPS1
8 N/A NPS1
- Refactored amd_smi_drm_example.cc:
- Grouped partition changes and restores original partition settings.
- Now handles partitioned environments allowing example to continue even if some APIs are not supported in partitioned configurations.
- Modified amdsmi_asic_info_t (see amdsmi_get_gpu_asic_info()) to report OAM ID as N/A if 0xFFFFFFFF (was 0xFFFF).
Allows for better handling of OAM IDs in partitioned environments (DNE for non-primary nodes,
since its a physical identifier). Easier to handle in tests and example code (ie. now consistent w/ max size of the structure's value).
- Introduced amdsmi_RAII_open_FD() (internal API) to manage file descriptors using RAII, ensuring proper closure and preventing resource leaks.
Updated the following APIs to use this function:
- amdsmi_get_gpu_asic_info(), amdsmi_get_gpu_vram_usage(),
amdsmi_get_gpu_vram_info(), amdsmi_get_gpu_vbios_info(),
amdsmi_get_gpu_driver_info(), amdsmi_get_gpu_virtualization_mode()
- Updated AMD SMI test_base.cc/.h:
- Improved output and handling for partitioned environments.
- Added detailed ASIC information logging to align with structure changes.
- Enhanced error messages for better context before ASSERT checks.
- Resolved test failures in partitioned environments by updating
logic and handling for partition-specific configurations.
Fixed tests include:
- computepartition_read_write.cc, frequencies_read_write.cc,
gpu_metrics_read.cc, mem_util_read.cc, memorypartition_read_write.cc,
perf_level_read.cc, perf_level_read_write.cc, power_cap_read_write.cc,
power_read.cc, sys_info_read.cc, gpu_busy_read.cc
Change-Id: I36e903f8fddd714c74c719459c71aba8bbb77e6f
Signed-off-by: Charis Poag <Charis.Poag@amd.com>
Resetting head + adding fixes for tests ran in partitions
Change-Id: I0c1e9ac07488b50c95f3bc6d8a724e67d2c715dc
Signed-off-by: Charis Poag <Charis.Poag@amd.com>
This commit is contained in:
zatwierdzone przez
Arif, Maisam
rodzic
f0233eb664
commit
391451752b
@@ -845,7 +845,7 @@ typedef struct {
|
||||
uint64_t device_id; //!< The device ID of a GPU
|
||||
uint32_t rev_id; //!< The revision ID of a GPU
|
||||
char asic_serial[AMDSMI_MAX_STRING_LENGTH];
|
||||
uint32_t oam_id; //!< 0xFFFF if not supported
|
||||
uint32_t oam_id; //!< 0xFFFFFFFF if not supported
|
||||
uint32_t num_of_compute_units; //!< 0xFFFFFFFF if not supported
|
||||
uint64_t target_graphics_version; //!< 0xFFFFFFFFFFFFFFFF if not supported
|
||||
uint32_t subsystem_id; //!> The subsystem ID
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
|
||||
#include "amd_smi/amdsmi.h"
|
||||
#include "amd_smi/impl/amd_smi_gpu_device.h"
|
||||
@@ -58,6 +59,24 @@ std::string smi_split_string(std::string str, char delim);
|
||||
std::string smi_amdgpu_get_status_string(amdsmi_status_t ret, bool fullStatus);
|
||||
amdsmi_status_t smi_clear_char_and_reinitialize(char buffer[], uint32_t len,
|
||||
std::string newString);
|
||||
|
||||
/**
|
||||
* @brief Opens a file descriptor for the specified path with RAII semantics and caching.
|
||||
*
|
||||
* This function attempts to open a file descriptor (FD) for the given file path and flags.
|
||||
* It maintains a cache of weak pointers to previously opened FDs, allowing for reuse of
|
||||
* file descriptors if they are still valid. If a valid FD for the path exists in the cache,
|
||||
* it is reused; otherwise, a new FD is opened. The returned FD is managed by a std::shared_ptr
|
||||
* with a custom deleter that ensures the FD is properly closed when no longer in use.
|
||||
*
|
||||
* Thread safety is ensured via a static mutex.
|
||||
*
|
||||
* @param path The file system path to open.
|
||||
* @param flags Flags to use when opening the file (as per open(2)).
|
||||
* @return std::shared_ptr<int> Shared pointer managing the file descriptor, or nullptr on failure.
|
||||
*/
|
||||
std::shared_ptr<int> amdsmi_RAII_FD_handler(const std::string& path, int flags);
|
||||
|
||||
/**
|
||||
* @brief Wait for user input, a debugging function to pause the program
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user