Update amdsmi_wrapper.py and name fields

When updating the wrapper I ran into an issue with anonymous structs.
Generated wrapper would contain a string split into multiple lines,
which is invalid python.

e.g.
    'struct_struct anonymous
    (struct.... amdsmi.h:355)'

After naming the structs - the issue is gone. BDF union now has to be
addressed with .fields

e.g.
    OLD: bdf.function_number
    NEW: bdf.fields.function_number

Change-Id: Ib3c640c088ad0cc67893d636827356902051f17f
Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>
This commit is contained in:
Galantsev, Dmitrii
2023-08-28 18:42:12 -05:00
parent 1d24dd93a6
commit 03cfdeefd5
9 changed files with 449 additions and 543 deletions
+4 -4
View File
@@ -1847,10 +1847,10 @@ amdsmi_status_t amdsmi_get_processor_handle_from_bdf(amdsmi_bdf_t bdf,
return status;
}
amdsmi_bdf_t found_bdf = gpu_device->get_bdf();
if (bdf.bus_number == found_bdf.bus_number &&
bdf.device_number == found_bdf.device_number &&
bdf.domain_number == found_bdf.domain_number &&
bdf.function_number == found_bdf.function_number) {
if ((bdf.fields.bus_number == found_bdf.fields.bus_number) &&
(bdf.fields.device_number == found_bdf.fields.device_number) &&
(bdf.fields.domain_number == found_bdf.fields.domain_number) &&
(bdf.fields.function_number == found_bdf.fields.function_number)) {
*processor_handle = devs[idx];
return AMDSMI_STATUS_SUCCESS;
}
+4 -4
View File
@@ -171,10 +171,10 @@ amdsmi_status_t AMDSmiDrm::init() {
continue;
}
bdf.function_number = device->businfo.pci->func;
bdf.device_number = device->businfo.pci->dev;
bdf.bus_number = device->businfo.pci->bus;
bdf.domain_number = device->businfo.pci->domain;
bdf.fields.function_number = device->businfo.pci->func;
bdf.fields.device_number = device->businfo.pci->dev;
bdf.fields.bus_number = device->businfo.pci->bus;
bdf.fields.domain_number = device->businfo.pci->domain;
vendor_id = device->deviceinfo.pci->vendor_id;
+10 -8
View File
@@ -73,10 +73,11 @@ amdsmi_status_t gpuvsmi_get_pids(const amdsmi_bdf_t &bdf, std::vector<long int>
struct dirent *dir;
/* 0000:00:00.0 */
snprintf(bdf_str, 13, "%04x:%02x:%02x.%d", bdf.domain_number & 0xffff,
bdf.bus_number & 0xff,
bdf.device_number & 0x1f,
bdf.function_number & 0x7);
snprintf(bdf_str, 13, "%04x:%02x:%02x.%d",
bdf.fields.domain_number & 0xffff,
bdf.fields.bus_number & 0xff,
bdf.fields.device_number & 0x1f,
bdf.fields.function_number & 0x7);
d = opendir("/proc");
if (!d)
@@ -121,10 +122,11 @@ amdsmi_status_t gpuvsmi_get_pid_info(const amdsmi_bdf_t &bdf, long int pid,
struct dirent *dir;
/* 0000:00:00.0 */
snprintf(bdf_str, 13, "%04x:%02x:%02x.%d", bdf.domain_number & 0xffff,
bdf.bus_number & 0xff,
bdf.device_number & 0x1f,
bdf.function_number & 0x7);
snprintf(bdf_str, 13, "%04x:%02x:%02x.%d",
bdf.fields.domain_number & 0xffff,
bdf.fields.bus_number & 0xff,
bdf.fields.device_number & 0x1f,
bdf.fields.function_number & 0x7);
std::string path = "/proc/" + std::to_string(pid) + "/fdinfo/";