habanalabs: enable access to info ioctl during hard reset

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>
This commit is contained in:
Dani Liberman 2021-11-22 21:47:30 +02:00 committed by Oded Gabbay
parent 1880f7acd7
commit 2487f4a281
2 changed files with 1 additions and 11 deletions

View File

@ -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; enum hl_cs_type cs_type;
if (!hl_device_operational(hdev, &status)) { 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; return -EBUSY;
} }
@ -2997,7 +2994,7 @@ int hl_wait_ioctl(struct hl_fpriv *hpriv, void *data)
* user interrupt * user interrupt
*/ */
if (!hl_device_operational(hpriv->hdev, NULL)) if (!hl_device_operational(hpriv->hdev, NULL))
return -EPERM; return -EBUSY;
if (flags & HL_WAIT_CS_FLAGS_INTERRUPT) if (flags & HL_WAIT_CS_FLAGS_INTERRUPT)
rc = hl_interrupt_wait_ioctl(hpriv, data); rc = hl_interrupt_wait_ioctl(hpriv, data);

View File

@ -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) const struct hl_ioctl_desc *ioctl, struct device *dev)
{ {
struct hl_fpriv *hpriv = filep->private_data; struct hl_fpriv *hpriv = filep->private_data;
struct hl_device *hdev = hpriv->hdev;
unsigned int nr = _IOC_NR(cmd); unsigned int nr = _IOC_NR(cmd);
char stack_kdata[128] = {0}; char stack_kdata[128] = {0};
char *kdata = NULL; char *kdata = NULL;
@ -783,12 +782,6 @@ static long _hl_ioctl(struct file *filep, unsigned int cmd, unsigned long arg,
u32 hl_size; u32 hl_size;
int retcode; 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 */ /* Do not trust userspace, use our own definition */
func = ioctl->func; func = ioctl->func;