72 lines
2.0 KiB
Diff
72 lines
2.0 KiB
Diff
From 90656fc8e4150fc175ddadb788912674b2c4a705 Mon Sep 17 00:00:00 2001
|
|
From: "Mario Limonciello (AMD)" <superm1@kernel.org>
|
|
Date: Thu, 16 Oct 2025 10:01:42 -0500
|
|
Subject: [PATCH] amdgpu: Slice and dice the string for APUs
|
|
|
|
The string will generally have a CPU and GPU component, so if both
|
|
are found split it up. Make sure that it starts with AMD to be
|
|
consistent.
|
|
|
|
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
|
|
Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
|
|
---
|
|
amdgpu/amdgpu_asic_id.c | 29 +++++++++++++++++++++++------
|
|
1 file changed, 23 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/amdgpu/amdgpu_asic_id.c b/amdgpu/amdgpu_asic_id.c
|
|
index 7bdb2b67..2eeca0ec 100644
|
|
--- a/amdgpu/amdgpu_asic_id.c
|
|
+++ b/amdgpu/amdgpu_asic_id.c
|
|
@@ -107,6 +107,7 @@ out:
|
|
static void amdgpu_parse_proc_cpuinfo(struct amdgpu_device *dev)
|
|
{
|
|
const char *search_key = "model name";
|
|
+ const char *radeon_key = "Radeon";
|
|
char *line = NULL;
|
|
size_t len = 0;
|
|
FILE *fp;
|
|
@@ -124,18 +125,34 @@ static void amdgpu_parse_proc_cpuinfo(struct amdgpu_device *dev)
|
|
if (strncmp(line, search_key, strlen(search_key)))
|
|
continue;
|
|
|
|
- /* get content after colon and strip whitespace */
|
|
- value = strtok_r(line, ":", &saveptr);
|
|
- value = strtok_r(NULL, ":", &saveptr);
|
|
- if (value == NULL)
|
|
- continue;
|
|
+ /* check for parts that have both CPU and GPU information */
|
|
+ value = strstr(line, radeon_key);
|
|
+
|
|
+ /* get content after the first colon */
|
|
+ if (value == NULL) {
|
|
+ value = strstr(line, ":");
|
|
+ if (value == NULL)
|
|
+ continue;
|
|
+ value++;
|
|
+ }
|
|
+
|
|
+ /* strip whitespace */
|
|
while (*value == ' ' || *value == '\t')
|
|
value++;
|
|
saveptr = strchr(value, '\n');
|
|
if (saveptr)
|
|
*saveptr = '\0';
|
|
|
|
- dev->marketing_name = strdup(value);
|
|
+ /* Add AMD to the new string if it's missing from slicing/dicing */
|
|
+ if (strncmp(value, "AMD", 3) != 0) {
|
|
+ char *tmp = malloc(strlen(value) + 5);
|
|
+
|
|
+ if (!tmp)
|
|
+ break;
|
|
+ sprintf(tmp, "AMD %s", value);
|
|
+ dev->marketing_name = tmp;
|
|
+ } else
|
|
+ dev->marketing_name = strdup(value);
|
|
break;
|
|
}
|
|
|
|
--
|
|
2.50.0
|
|
|