diff options
Diffstat (limited to 'kernel/main.c')
| -rw-r--r-- | kernel/main.c | 17 |
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 = { |
