summaryrefslogtreecommitdiffstats
path: root/kernel/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/main.c')
-rw-r--r--kernel/main.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/kernel/main.c b/kernel/main.c
index 25bd5eb..63657f3 100644
--- a/kernel/main.c
+++ b/kernel/main.c
@@ -2256,8 +2256,8 @@ MODULE_PARM_DESC(sema_probe, "Dump sema-service map + slot values for a GPU VA")
static int nv_vgpu_sema_map_add_set(const char *val, const struct kernel_param *kp)
{
char buf[64];
- char *comma, *comma2;
- u64 va = 0, pa = 0, len = 0;
+ char *comma, *comma2, *comma3;
+ u64 va = 0, pa = 0, len = 0, ap = 0;
strscpy(buf, val, sizeof(buf));
comma = strchr(buf, ',');
@@ -2269,10 +2269,17 @@ static int nv_vgpu_sema_map_add_set(const char *val, const struct kernel_param *
*comma2 = '\0';
if (kstrtoull(buf, 0, &va) || kstrtoull(comma + 1, 0, &pa))
return -EINVAL;
- if (comma2 && kstrtoull(comma2 + 1, 0, &len))
- return -EINVAL;
+ if (comma2) {
+ comma3 = strchr(comma2 + 1, ',');
+ if (comma3)
+ *comma3 = '\0';
+ if (kstrtoull(comma2 + 1, 0, &len))
+ return -EINVAL;
+ if (comma3 && kstrtoull(comma3 + 1, 0, &ap))
+ return -EINVAL;
+ }
- return gsp_sema_service_add_map(va, pa, len);
+ return gsp_sema_service_add_map(va, pa, len, (u32)ap);
}
static const struct kernel_param_ops nv_vgpu_sema_map_add_ops = {