From patchwork Tue Feb 4 08:46:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacek Lawrynowicz X-Patchwork-Id: 13958799 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F162EC0218F for ; Tue, 4 Feb 2025 08:46:31 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6FF4A10E5B5; Tue, 4 Feb 2025 08:46:31 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="hauMOlti"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6A4F710E5B3 for ; Tue, 4 Feb 2025 08:46:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1738658790; x=1770194790; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CXeZOu2Sfg+nBksYHxVPgfDbPl0OpiBp0xZA+D45oCg=; b=hauMOltiRWRFKVeA4LCnKtzbYeJV6qFrF8tUKGlQo/UUJJq1i6ZNoOsz KKIfrnMqgBmfOeMF8JqEAhAnRfsnlOKNlZN97g+EJeAgaAQP9fLpaRAnS wjQobtArELm7/goJ40YJGNpecS7A079oiTRpxNjHscqRrsbQelJjZCQOE XCZdik284WpVisL9Py0zQdLZB37SBld5FsvC4NaAWSvQBEAi4mdo5MvWM krvwPxQCUth12Jt6uKJ1T7RShrXlZxGu7EovALfhk0ih2PBQ4bRTzvS9E Wo75VpUbNB5hl3h7lT6OiXkudHgfgMVLU9sQniAOwcfbJzjPMNlZuoZ1r Q==; X-CSE-ConnectionGUID: jAavQFq+QquoSNBBxSkr8Q== X-CSE-MsgGUID: 1/+KNdMoQ1Gg1cPOr2C2/w== X-IronPort-AV: E=McAfee;i="6700,10204,11335"; a="39434720" X-IronPort-AV: E=Sophos;i="6.13,258,1732608000"; d="scan'208";a="39434720" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2025 00:46:30 -0800 X-CSE-ConnectionGUID: Nn73Va2BSnez40AKPDBC5w== X-CSE-MsgGUID: PD4I/k3zQFy2IHKDKCm0zg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,258,1732608000"; d="scan'208";a="115531583" Received: from jlawryno.igk.intel.com ([10.91.220.59]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2025 00:46:28 -0800 From: Jacek Lawrynowicz To: dri-devel@lists.freedesktop.org Cc: oded.gabbay@gmail.com, quic_jhugo@quicinc.com, maciej.falkowski@linux.intel.com, Andrzej Kacprowski , Jacek Lawrynowicz Subject: [PATCH 2/6] accel/ivpu: Prevent runtime suspend during context abort work Date: Tue, 4 Feb 2025 09:46:18 +0100 Message-ID: <20250204084622.2422544-3-jacek.lawrynowicz@linux.intel.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20250204084622.2422544-1-jacek.lawrynowicz@linux.intel.com> References: <20250204084622.2422544-1-jacek.lawrynowicz@linux.intel.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Andrzej Kacprowski Increment the runtime PM counter when entering ivpu_context_abort_work_fn() to prevent the device from suspending while the function is executing. Reviewed-by: Jacek Lawrynowicz Signed-off-by: Andrzej Kacprowski Signed-off-by: Jacek Lawrynowicz --- drivers/accel/ivpu/ivpu_job.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/accel/ivpu/ivpu_job.c b/drivers/accel/ivpu/ivpu_job.c index c1013f511efa6..004059e4f1e89 100644 --- a/drivers/accel/ivpu/ivpu_job.c +++ b/drivers/accel/ivpu/ivpu_job.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -965,6 +966,9 @@ void ivpu_context_abort_work_fn(struct work_struct *work) unsigned long ctx_id; unsigned long id; + if (drm_WARN_ON(&vdev->drm, pm_runtime_get_if_active(vdev->drm.dev) <= 0)) + return; + if (vdev->fw->sched_mode == VPU_SCHEDULING_MODE_HW) ivpu_jsm_reset_engine(vdev, 0); @@ -987,7 +991,7 @@ void ivpu_context_abort_work_fn(struct work_struct *work) ivpu_mmu_discard_events(vdev); if (vdev->fw->sched_mode != VPU_SCHEDULING_MODE_HW) - return; + goto runtime_put; ivpu_jsm_hws_resume_engine(vdev, 0); /* @@ -1000,4 +1004,8 @@ void ivpu_context_abort_work_fn(struct work_struct *work) if (job->file_priv->aborted) ivpu_job_signal_and_destroy(vdev, job->job_id, DRM_IVPU_JOB_STATUS_ABORTED); mutex_unlock(&vdev->submitted_jobs_lock); + +runtime_put: + pm_runtime_mark_last_busy(vdev->drm.dev); + pm_runtime_put_autosuspend(vdev->drm.dev); }