lkml.org 
[lkml]   [2021]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/12] habanalabs: enable access to info ioctl during hard reset
    Date
    From: Dani Liberman <dliberman@habana.ai>

    Because info ioctl is used to retrieve data, some of its opcodes may be
    used during hard reset.
    Other ioctls should be blocked while device is not operational.

    Signed-off-by: Dani Liberman <dliberman@habana.ai>
    Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
    Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
    ---
    drivers/misc/habanalabs/common/command_submission.c | 5 +----
    drivers/misc/habanalabs/common/habanalabs_ioctl.c | 7 -------
    2 files changed, 1 insertion(+), 11 deletions(-)

    diff --git a/drivers/misc/habanalabs/common/command_submission.c b/drivers/misc/habanalabs/common/command_submission.c
    index 7a277f442207..8be547b0926c 100644
    --- a/drivers/misc/habanalabs/common/command_submission.c
    +++ b/drivers/misc/habanalabs/common/command_submission.c
    @@ -1146,9 +1146,6 @@ static int hl_cs_sanity_checks(struct hl_fpriv *hpriv, union hl_cs_args *args)
    enum hl_cs_type cs_type;

    if (!hl_device_operational(hdev, &status)) {
    - dev_warn_ratelimited(hdev->dev,
    - "Device is %s. Can't submit new CS\n",
    - hdev->status[status]);
    return -EBUSY;
    }

    @@ -2997,7 +2994,7 @@ int hl_wait_ioctl(struct hl_fpriv *hpriv, void *data)
    * user interrupt
    */
    if (!hl_device_operational(hpriv->hdev, NULL))
    - return -EPERM;
    + return -EBUSY;

    if (flags & HL_WAIT_CS_FLAGS_INTERRUPT)
    rc = hl_interrupt_wait_ioctl(hpriv, data);
    diff --git a/drivers/misc/habanalabs/common/habanalabs_ioctl.c b/drivers/misc/habanalabs/common/habanalabs_ioctl.c
    index 15797d55b4e8..6c7339978bae 100644
    --- a/drivers/misc/habanalabs/common/habanalabs_ioctl.c
    +++ b/drivers/misc/habanalabs/common/habanalabs_ioctl.c
    @@ -774,7 +774,6 @@ static long _hl_ioctl(struct file *filep, unsigned int cmd, unsigned long arg,
    const struct hl_ioctl_desc *ioctl, struct device *dev)
    {
    struct hl_fpriv *hpriv = filep->private_data;
    - struct hl_device *hdev = hpriv->hdev;
    unsigned int nr = _IOC_NR(cmd);
    char stack_kdata[128] = {0};
    char *kdata = NULL;
    @@ -783,12 +782,6 @@ static long _hl_ioctl(struct file *filep, unsigned int cmd, unsigned long arg,
    u32 hl_size;
    int retcode;

    - if (hdev->hard_reset_pending) {
    - dev_crit_ratelimited(dev,
    - "Device HARD reset pending! Please close FD\n");
    - return -ENODEV;
    - }
    -
    /* Do not trust userspace, use our own definition */
    func = ioctl->func;

    --
    2.25.1
    \
     
     \ /
      Last update: 2021-11-28 20:37    [W:3.188 / U:0.588 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site