mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 20:53:53 +08:00
habanalabs: show the process context dram usage
When the user query the dram usage of a context, show it the dram usage of its context, not the user context that is currently running on the device. This has no effect right now as we only have a single process and a single context, but this makes the code more ready for multiple process support. Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
4aecb05e52
commit
02e921e42b
@ -89,8 +89,9 @@ static int hw_events_info(struct hl_device *hdev, struct hl_info_args *args)
|
||||
return copy_to_user(out, arr, min(max_size, size)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
static int dram_usage_info(struct hl_device *hdev, struct hl_info_args *args)
|
||||
static int dram_usage_info(struct hl_fpriv *hpriv, struct hl_info_args *args)
|
||||
{
|
||||
struct hl_device *hdev = hpriv->hdev;
|
||||
struct hl_info_dram_usage dram_usage = {0};
|
||||
u32 max_size = args->return_size;
|
||||
void __user *out = (void __user *) (uintptr_t) args->return_pointer;
|
||||
@ -104,7 +105,9 @@ static int dram_usage_info(struct hl_device *hdev, struct hl_info_args *args)
|
||||
prop->dram_base_address);
|
||||
dram_usage.dram_free_mem = (prop->dram_size - dram_kmd_size) -
|
||||
atomic64_read(&hdev->dram_used_mem);
|
||||
dram_usage.ctx_dram_mem = atomic64_read(&hdev->user_ctx->dram_phys_mem);
|
||||
if (hpriv->ctx)
|
||||
dram_usage.ctx_dram_mem =
|
||||
atomic64_read(&hpriv->ctx->dram_phys_mem);
|
||||
|
||||
return copy_to_user(out, &dram_usage,
|
||||
min((size_t) max_size, sizeof(dram_usage))) ? -EFAULT : 0;
|
||||
@ -218,7 +221,7 @@ static int hl_info_ioctl(struct hl_fpriv *hpriv, void *data)
|
||||
break;
|
||||
|
||||
case HL_INFO_DRAM_USAGE:
|
||||
rc = dram_usage_info(hdev, args);
|
||||
rc = dram_usage_info(hpriv, args);
|
||||
break;
|
||||
|
||||
case HL_INFO_HW_IDLE:
|
||||
@ -321,7 +324,7 @@ long hl_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
|
||||
cmd = ioctl->cmd;
|
||||
} else {
|
||||
dev_err(hdev->dev, "invalid ioctl: pid=%d, nr=0x%02x\n",
|
||||
task_pid_nr(current), nr);
|
||||
task_pid_nr(current), nr);
|
||||
return -ENOTTY;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user