Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp1553636pxb; Fri, 20 Aug 2021 08:12:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwbf+TxmiRzWZeQOuKT7UZGX6KxCBbZWZvmNF47nezY5KkEp+WjQJKq9sPtcP1eLuS0ttEb X-Received: by 2002:a1c:1bc1:: with SMTP id b184mr4497157wmb.106.1629472357305; Fri, 20 Aug 2021 08:12:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629472357; cv=none; d=google.com; s=arc-20160816; b=f7K6Wx07+YyynYpHxioluh+PlSsDYwGsOBYhIm2v3wWBH6hqbSY8kebkk6BMPmnGTG Ho5zB7kk6XFdlSvbgtH9MtZ51lCnbe2nkEgHF1m6MW0dMXbfBhkzTyeiptQhvfiILI2v G44B6xJPh3QPiWbb4durY+DTuZfrYYjPJhsCbYse6QzJUABgB8DWkBFtWydaM/460HCe I5kuuLdkFdC6OAjgwGgHiinR3ZQa5cR80HcImjNklip276PGflqiN8uRNmw1hqwA/CU/ BOVlFzQTHZMKZgNuITzYO+sBGrQqD25pJFFuLNe8C5QCOx1cCKCc6pjuONz83cKNT0Vy OvaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :to:from:dkim-signature; bh=J6xs05yNYRNH4+bOrI7rjJsNjJ79OPA4UsByQYaTXTA=; b=xhHw6GTv5gx0j4LnZbS7GQMumEzX6Ih+okxbusIlHyOrgGv2JMbijgAcowCBl58315 rbjePPbZHL7xBwufHdMM4BDb0a1W4fsCP5nrMuCzdU0bUhFyicstEUqkJP6/3hEkxAiZ eBe44lGxMY1DHH7wUBcKzWEO9/DOWXOfxxmyQ3hdfjxiqBL5DU6myTdNcC/G2MXluZAW 0RCyjadsgUeLYFFNtRnHodsDXQUds4cyqdEocgBBHNxMt6FaebgG6caebLpL/Ox2GdDy CzNPYIP3/RNxL1mV3w2MV/dFD+2lRNUjrGNkRyGvPrULEe76HwQ6mEH5WUImoBZA+kRZ kIng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VWM323HR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e8si7528551edm.138.2021.08.20.08.12.05; Fri, 20 Aug 2021 08:12:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VWM323HR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240977AbhHTPIL (ORCPT + 99 others); Fri, 20 Aug 2021 11:08:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:50364 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240968AbhHTPII (ORCPT ); Fri, 20 Aug 2021 11:08:08 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 78A3060FDA for ; Fri, 20 Aug 2021 15:07:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1629472050; bh=3/L8H2QBs6PnSlI28I97iO39q8f+miKaNwO+fzjrnSs=; h=From:To:Subject:Date:In-Reply-To:References:From; b=VWM323HRjeduxjlFYIj1d45h50AbtRBng4M+LQ9DSxhpTlIfw5FirnwFaG28C9mYi 5TYKTuCT8DOgNmm4GPtZd1XLAzEm+oS6QkgGoP1IbHtiq4FRe0BtJdinMiux46rSoN TU7bHCR7hCYpxz82p1Jvhq8Z4gUEUDER25BqG15Kaaxr8C0NicYsLA5H9bFV75DwJT pINJ2umYOc0jQhpMdFC1Zm/jM7qibIW+vr8vLVGupDJ1YvHsxCMKX4zTVWVIwSy0Al o+XhNyGjd8KijWDwri+8oOg40bj+i2LQLEzU42ZN1/NJLGKQA4ocecKPZ/59U5O/aI jmk3G2B4/uacw== From: Oded Gabbay To: linux-kernel@vger.kernel.org Subject: [PATCH 3/4] habanalabs: remove unnecessary device status check Date: Fri, 20 Aug 2021 18:07:18 +0300 Message-Id: <20210820150719.67934-3-ogabbay@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210820150719.67934-1-ogabbay@kernel.org> References: <20210820150719.67934-1-ogabbay@kernel.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Checking if the device is operational when entering the function to wait for user interrupt is not something that is useful or necessary. It is not done in any other wait_for_cs ioctl path. If the device becomes non-operational during the wait, the reset function will make sure the process wait is interrupted. Instead, move the check to the beginning of hl_wait_ioctl(). It will block any attempt to wait on CS or user interrupt once the device is already marked as non-operational. Signed-off-by: Oded Gabbay --- drivers/misc/habanalabs/common/command_submission.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/misc/habanalabs/common/command_submission.c b/drivers/misc/habanalabs/common/command_submission.c index 8a2f75de6df8..a97bb27ebb90 100644 --- a/drivers/misc/habanalabs/common/command_submission.c +++ b/drivers/misc/habanalabs/common/command_submission.c @@ -2741,10 +2741,6 @@ static int _hl_interrupt_wait_ioctl(struct hl_device *hdev, struct hl_ctx *ctx, interrupt = &hdev->user_interrupt[interrupt_offset]; spin_lock_irqsave(&interrupt->wait_list_lock, flags); - if (!hl_device_operational(hdev, NULL)) { - rc = -EPERM; - goto unlock_and_free_fence; - } if (copy_from_user(&completion_value, u64_to_user_ptr(user_address), 4)) { @@ -2891,6 +2887,12 @@ int hl_wait_ioctl(struct hl_fpriv *hpriv, void *data) u32 flags = args->in.flags; int rc; + /* If the device is not operational, no point in waiting for any command submission or + * user interrupt + */ + if (!hl_device_operational(hpriv->hdev, NULL)) + return -EPERM; + if (flags & HL_WAIT_CS_FLAGS_INTERRUPT) rc = hl_interrupt_wait_ioctl(hpriv, data); else if (flags & HL_WAIT_CS_FLAGS_MULTI_CS) -- 2.17.1