On Sun, Feb 12, 2023 at 10:44:35PM +0200, Oded Gabbay wrote:
> From: Tomer Tayar <[email protected]>
>
> When user closes the device file descriptor, it is checked whether the
> device is still in use, and a message is printed if it is.
I guess this is only for debugging your user-space component?
Because kernel driver should not make any assumption about
user-space behavior. Closing whenever user wants should be
no problem.
> +static void print_device_in_use_info(struct hl_device *hdev, const char
> *message)
> +{
> + u32 active_cs_num, dmabuf_export_cnt;
> + char buf[64], *buf_ptr = buf;
> + size_t buf_size = sizeof(buf);
> + bool unknown_reason = true;
> +
> + active_cs_num = hl_get_active_cs_num(hdev);
> + if (active_cs_num) {
> + unknown_reason = false;
> + compose_device_in_use_info(&buf_ptr, &buf_size, " [%u active
> CS]", active_cs_num);
> + }
> +
> + dmabuf_export_cnt = atomic_read(&hdev->dmabuf_export_cnt);
> + if (dmabuf_export_cnt) {
> + unknown_reason = false;
> + compose_device_in_use_info(&buf_ptr, &buf_size, " [%u exported
> dma-buf]",
> + dmabuf_export_cnt);
> + }
> +
> + if (unknown_reason)
> + compose_device_in_use_info(&buf_ptr, &buf_size, " [unknown
> reason]");
> +
> + dev_notice(hdev->dev, "%s%s\n", message, buf);
why not print counters directly, i.e. "active cs count %u, dmabuf export count
%u" ?
> if (!hl_hpriv_put(hpriv)) {
> - dev_notice(hdev->dev, "User process closed FD but device still
> in use\n");
> + print_device_in_use_info(hdev, "User process closed FD but
> device still in use");
> hl_device_reset(hdev, HL_DRV_RESET_HARD);
You really need reset here ?
Regards
Stanislaw