forked from Minki/linux
habanalabs: handle case of interruptable wait
Same as we handle it in the regular wait for CS, we need to handle the case where the waiting for user interrupt was interrupted. In that case, we need to return correct error code to the user. Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
This commit is contained in:
parent
b07e6c7ef5
commit
429d77ca27
@ -2102,6 +2102,12 @@ wait_again:
|
||||
spin_unlock(&interrupt->wait_list_lock);
|
||||
goto wait_again;
|
||||
}
|
||||
} else if (completion_rc == -ERESTARTSYS) {
|
||||
dev_err_ratelimited(hdev->dev,
|
||||
"user process got signal while waiting for interrupt ID %d\n",
|
||||
interrupt->interrupt_id);
|
||||
*status = HL_WAIT_CS_STATUS_INTERRUPTED;
|
||||
rc = -EINTR;
|
||||
} else {
|
||||
*status = CS_WAIT_STATUS_BUSY;
|
||||
}
|
||||
@ -2159,8 +2165,9 @@ static int hl_interrupt_wait_ioctl(struct hl_fpriv *hpriv, void *data)
|
||||
memset(args, 0, sizeof(*args));
|
||||
|
||||
if (rc) {
|
||||
dev_err_ratelimited(hdev->dev,
|
||||
"interrupt_wait_ioctl failed (%d)\n", rc);
|
||||
if (rc != -EINTR)
|
||||
dev_err_ratelimited(hdev->dev,
|
||||
"interrupt_wait_ioctl failed (%d)\n", rc);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user