On 2026-10-02 11:53, Philip Yang wrote:
Source-identification address mode has never been tested or enabled, so
reject it in __check_vpod_info() instead of running with an untested
config. Both the inband and the sideband vpod config paths go through
this validation. The SOURCE_IDENT handling in the rest of the driver is
left in place for when the mode is enabled.
Also drop r from the vpod-commit error message, __check_vpod_info()
returns bool, so r is uninitialized there.
v2: use switch to check address mode.
Signed-off-by: Philip Yang <[email protected]>
Reviewed-by: Felix Kuehling <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
index 3051fadac50b..758265670340 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
@@ -137,14 +137,21 @@ static bool __check_vpod_info(struct amdgpu_device *adev,
vpod->size, ppod->size);
return false;
}
- if (vpod->addr_mode >= AMDGPU_UALINK_ADDR_MODE_MAX) {
+
+ switch (vpod->addr_mode) {
+ case AMDGPU_UALINK_ADDR_MODE_SOURCE_ALIAS:
+ break;
+ case AMDGPU_UALINK_ADDR_MODE_SOURCE_IDENT:
dev_warn(adev->dev,
- "UALINK: invalid addr mode %u\n",
+ "UALINK: source-identification addr mode is not
supported\n");
+ return false;
+ default:
+ dev_warn(adev->dev, "UALINK: invalid addr mode %u\n",
vpod->addr_mode);
return false;
}
- weight =
- bitmap_weight(vpod->active_accel_bits, AMDGPU_UALINK_ACCEL_MAX);
+
+ weight = bitmap_weight(vpod->active_accel_bits,
AMDGPU_UALINK_ACCEL_MAX);
if (weight != vpod->size) {
dev_warn(adev->dev,
"UALINK: vPod size doesn't match vpod_active_accels list:
%u != %u\n",
@@ -1351,8 +1358,7 @@ static ssize_t ualink_vpod_config_commit_store(struct
kobject *kobj,
if (info->vpod.id != AMDGPU_UALINK_VPOD_ID_INVALID &&
!__check_vpod_info(adev, info)) {
dev_err(adev->dev,
- "UALINK: vpod-commit __check_vpod_info() failed: %d\n",
- r);
+ "UALINK: vpod-commit __check_vpod_info() failed\n");
return -EINVAL;
}