From nobody Sat Oct 4 00:31:20 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5B99E225D7; Thu, 21 Aug 2025 23:00:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817213; cv=none; b=UaNslVcpzMuG48x5SxIPlBSL7P72eCTpQxrFxBsz/NeZf3zhLLXFEJBmI5H/accn30KpeGi5ahpSs85ohyn+Qt1AvjmX4H28vdvAJnbOCYkMdF1NA8qI3tq7b0fW3r3G+c3vkpKlS1y3ARpwsQkJSNX2sgCL/eharLJoxvPxJMc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817213; c=relaxed/simple; bh=9hFoTAyqA9GW3b1BG5uuf9nkTjArO+R+7ljWgK9e/84=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BhjN81PYS0fMT4yQJDRROl8gpM8N5bnl1S27PMOV3iatgS/VFxR6LdYEGzury3ujdfWXL/pd4+Y5VGeP93EGvT7A9YFoBITYnehxHxqKWMcoIr6mk0dx8wBSoDEWwFqWI2Aa2FJE/TXuQ7zzvUGULpSiBijeOzRxTRc91uNENKs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Kebygcm6; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Kebygcm6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755817211; x=1787353211; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=9hFoTAyqA9GW3b1BG5uuf9nkTjArO+R+7ljWgK9e/84=; b=Kebygcm6CRQdslHsH692CUv7f9XUxMmzN58I1SbLrrG44bPzATwZJP3c 1qc+3MppZeGXaX4WXTkEue/r3q7u82Ptj5l20Rsj8MVkR9OetQBoCAWY6 xhSHGp+to616JhYEEBy6LrFZOI+e7qK6Q5ql8RMN5n3SRHuG3AcuJWRjK i4BLkA2trFsezPuyiOt72YCVMS4Q4dQZEAg+LoavbhbdAfFFZrU65FfE7 SPfMTdIKppJ9juTwLW8/xcmRZI1BJd+3Spm+p972W+lLe+JM6SZkiY65a eChUfLYrrSKmf35Cn66TcYwnA+5e+m15s8l4KxLcaExLWxQa97QY68n18 w==; X-CSE-ConnectionGUID: hUbhZoUFTDuY+gecuRxXyA== X-CSE-MsgGUID: ywpgd0C4RsCJUzPdlkI+PQ== X-IronPort-AV: E=McAfee;i="6800,10657,11529"; a="60748483" X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="60748483" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 X-CSE-ConnectionGUID: AmWp8JPAQ1uXY2LBhEfVag== X-CSE-MsgGUID: gDJ1g01nQmKD+cCmyfLNVQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="168444339" Received: from vcostago-mobl3.jf.intel.com (HELO [10.98.24.157]) ([10.98.24.157]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:09 -0700 From: Vinicius Costa Gomes Date: Thu, 21 Aug 2025 15:59:35 -0700 Subject: [PATCH v2 01/10] dmaengine: idxd: Fix lockdep warnings when calling idxd_device_config() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-1-595d48fa065c@intel.com> References: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> In-Reply-To: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> To: Dave Jiang , Vinod Koul , Fenghua Yu , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-2e5ae X-Developer-Signature: v=1; a=ed25519-sha256; t=1755817209; l=2407; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=9hFoTAyqA9GW3b1BG5uuf9nkTjArO+R+7ljWgK9e/84=; b=4zM0hVrYq7L3++Rpj2z4r4t+eTmpcE5jVYeK1zyg31KPVADppYHxEB5/EQwWE9fObMA4Di3cW riPabTypymfBZYZQHE7BRnnMYA414KTxCeDbnGnZWfnGOKzP0fNshqG X-Developer-Key: i=vinicius.gomes@intel.com; a=ed25519; pk=aJkrtgqgT6TZ8iIHSG8/rTPsmlYnjMrUjCsMYvCzntk= Move the check for IDXD_FLAG_CONFIGURABLE and the locking to "inside" idxd_device_config(), as this is common to all callers, and the one that wasn't holding the lock was an error (that was causing the lockdep warning). Suggested-by: Dave Jiang Signed-off-by: Vinicius Costa Gomes Reviewed-by: Dave Jiang --- drivers/dma/idxd/device.c | 17 +++++++---------- drivers/dma/idxd/init.c | 10 ++++------ 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/drivers/dma/idxd/device.c b/drivers/dma/idxd/device.c index 5cf419fe6b46..ac41889e4fe1 100644 --- a/drivers/dma/idxd/device.c +++ b/drivers/dma/idxd/device.c @@ -1107,7 +1107,11 @@ int idxd_device_config(struct idxd_device *idxd) { int rc; =20 - lockdep_assert_held(&idxd->dev_lock); + guard(spinlock)(&idxd->dev_lock); + + if (!test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags)) + return 0; + rc =3D idxd_wqs_setup(idxd); if (rc < 0) return rc; @@ -1434,11 +1438,7 @@ int idxd_drv_enable_wq(struct idxd_wq *wq) } } =20 - rc =3D 0; - spin_lock(&idxd->dev_lock); - if (test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags)) - rc =3D idxd_device_config(idxd); - spin_unlock(&idxd->dev_lock); + rc =3D idxd_device_config(idxd); if (rc < 0) { dev_dbg(dev, "Writing wq %d config failed: %d\n", wq->id, rc); goto err; @@ -1534,10 +1534,7 @@ int idxd_device_drv_probe(struct idxd_dev *idxd_dev) } =20 /* Device configuration */ - spin_lock(&idxd->dev_lock); - if (test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags)) - rc =3D idxd_device_config(idxd); - spin_unlock(&idxd->dev_lock); + rc =3D idxd_device_config(idxd); if (rc < 0) return -ENXIO; =20 diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c index f98aa41fa42e..c25bd0595561 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -1092,12 +1092,10 @@ static void idxd_reset_done(struct pci_dev *pdev) idxd_device_config_restore(idxd, idxd->idxd_saved); =20 /* Re-configure IDXD device if allowed. */ - if (test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags)) { - rc =3D idxd_device_config(idxd); - if (rc < 0) { - dev_err(dev, "HALT: %s config fails\n", idxd_name); - goto out; - } + rc =3D idxd_device_config(idxd); + if (rc < 0) { + dev_err(dev, "HALT: %s config fails\n", idxd_name); + goto out; } =20 /* Bind IDXD device to driver. */ --=20 2.50.1 From nobody Sat Oct 4 00:31:20 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0A32C2D97AA; Thu, 21 Aug 2025 23:00:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817213; cv=none; b=sp76eskbEZZ+6ghert3lzzp6mpkyCnJ7iG3AdZkhFZ39cDWOJpeoV7vrMaDfqITVFpisu4q94kHazK5OJy4Bvf4xnZ3z+iGMofEop1Yt3lMzAuekSgTYJ7n5BBiDF95hhEWMG+JFyWC/5rQtuN8DptON755eWSXNPXjPY4YYKmw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817213; c=relaxed/simple; bh=LiR6UiEa6acPjfQGxMqC+K0UeXnvHSJT9NIh4YbeZ30=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AFPtra8xnI+TgAotRDPnJCmvcM2W6MXqUQljf9c3lzBMBa1g37lP0JQ5BiDqeT5CMKWt0yxX1wUEAfJXhMvVuzbL4jsI+8gGFLgGkBpGoRqqb8Sr+z5B1Km9j8/lBZKD6tbWy+49Gg/s+vkFxtFyDNqXhfcc76WUCGJSnmCoPSk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=ZOV6KYca; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ZOV6KYca" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755817212; x=1787353212; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=LiR6UiEa6acPjfQGxMqC+K0UeXnvHSJT9NIh4YbeZ30=; b=ZOV6KYca5oIKX9wPWCEJ2vs6BXRy0VjrXNZlZAyBVm/9dXmbiSfmPVFU p3vHSZzgcQ4pOq0YjhBWYIeF3R7obbQ254Bh68FcjC51UA1KSb1BBKixq NuVUL+BJvHU3tTWg4KJHuGfPMaXS0QW78K9j1Ifs6E1FPcRXkLwwpqXyN Wb6M/NRlQ/dR1+gWyfj+gXF4ANNRn6Mw9XX3aEMFVHiooOSG3TRfwlxT8 wcWfT9GxGnGbQC7r2IG68I2IY6/yE3xKwHntjZLs7V2P91P38WDhRaWLM 3WN4ZF6NcCtlBcUPx3KgTqSKcAUt9u6g3eUoxrduCVJyGYurjh7SX8zBR A==; X-CSE-ConnectionGUID: pcEXy5utSta4+K1L0eXhZQ== X-CSE-MsgGUID: YS1Y3a0lT6+minK4tcs34g== X-IronPort-AV: E=McAfee;i="6800,10657,11529"; a="60748486" X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="60748486" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 X-CSE-ConnectionGUID: oWxBUYvoS2abppPH2MeupA== X-CSE-MsgGUID: K5WnBS57RV+nCquSKDP7WA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="168444345" Received: from vcostago-mobl3.jf.intel.com (HELO [10.98.24.157]) ([10.98.24.157]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 From: Vinicius Costa Gomes Date: Thu, 21 Aug 2025 15:59:36 -0700 Subject: [PATCH v2 02/10] dmaengine: idxd: Fix crash when the event log is disabled Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-2-595d48fa065c@intel.com> References: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> In-Reply-To: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> To: Dave Jiang , Vinod Koul , Fenghua Yu , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-2e5ae X-Developer-Signature: v=1; a=ed25519-sha256; t=1755817209; l=1623; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=LiR6UiEa6acPjfQGxMqC+K0UeXnvHSJT9NIh4YbeZ30=; b=e/b/icctIIed9YVVOP6pe6vv3mxqZtqaQX336MfijQeOTCvfyD5nvd1ZVUeY+Za1t7Zezf0zw D+swy58AYSTAIg/fdDkoAyLyfwozM6E43vcos3OmelP8C7mIvW8fZez X-Developer-Key: i=vinicius.gomes@intel.com; a=ed25519; pk=aJkrtgqgT6TZ8iIHSG8/rTPsmlYnjMrUjCsMYvCzntk= If reporting errors to the event log is not supported by the hardware, and an error that causes Function Level Reset (FLR) is received, the driver will try to restore the event log even if it was not allocated. Also, only try to free the event log if it was properly allocated. Fixes: 6078a315aec1 ("dmaengine: idxd: Add idxd_device_config_save() and id= xd_device_config_restore() helpers") Reviewed-by: Dave Jiang Signed-off-by: Vinicius Costa Gomes --- drivers/dma/idxd/device.c | 3 +++ drivers/dma/idxd/init.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/dma/idxd/device.c b/drivers/dma/idxd/device.c index ac41889e4fe1..02bda8868e24 100644 --- a/drivers/dma/idxd/device.c +++ b/drivers/dma/idxd/device.c @@ -815,6 +815,9 @@ static void idxd_device_evl_free(struct idxd_device *id= xd) struct device *dev =3D &idxd->pdev->dev; struct idxd_evl *evl =3D idxd->evl; =20 + if (!evl) + return; + gencfg.bits =3D ioread32(idxd->reg_base + IDXD_GENCFG_OFFSET); if (!gencfg.evl_en) return; diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c index c25bd0595561..e9fe5471f722 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -961,7 +961,8 @@ static void idxd_device_config_restore(struct idxd_devi= ce *idxd, =20 idxd->rdbuf_limit =3D idxd_saved->saved_idxd.rdbuf_limit; =20 - idxd->evl->size =3D saved_evl->size; + if (idxd->evl) + idxd->evl->size =3D saved_evl->size; =20 for (i =3D 0; i < idxd->max_groups; i++) { struct idxd_group *saved_group, *group; --=20 2.50.1 From nobody Sat Oct 4 00:31:20 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A88B2EA46E; Thu, 21 Aug 2025 23:00:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817214; cv=none; b=aQVroCxeO/2YslC7Bj4EAJIQDgp9wuklxt/uu4EjR5UGk39BhfVWFKyZXcVZT/7Zc+MknqPwEhlefoo+48fTFdpGMtO6j3kEtL52aD4lXrSzClYgYQdXjw51k69q9ATzpTFjjFeTl4Nn06rTOflA12XEaGsnJ1T4h6UPhv/3PQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817214; c=relaxed/simple; bh=jnUpxiVQ2K9IeAsLKQJQuwj4wopCBvx82O8espnIa2U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qgBaPs4AERGj7uP2HCnaFlYd4zrNvgVm90xzOXn/EH4mD6o+8iGnXhTbrQFT83J5KmAdNvMoKCx1c0THU7DburkzgYinpqqZLo85I3BcCivPthn31OQxXvLO54QwxowGVSvpbPg73gqRKx561mfQGsd/Emm14K532Z2RLD1qOj0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=joO4I71/; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="joO4I71/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755817213; x=1787353213; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=jnUpxiVQ2K9IeAsLKQJQuwj4wopCBvx82O8espnIa2U=; b=joO4I71/7SQVVZW69j61A6qkHFEpaXIJ0vN8UA017+p/xNGeY9PZlFxx Y16CaoOFCCOJ6NzZcdvv6wVVmei/jimnBADcLT96oBYPGTLmDsVx36wuR dcL9LKxFOeF7pOo+LRRw4b9YMoLqN8lO9LA6VfQjx80utMC9wlCmPrF6n xDwPLl5lugT1zCImIVr+uikw8vY1RYxzfrtfhSbXziYg5CbfppQQbTRVM GSwpHBq6+sqEZECFw39C9jjvMwzYprr75Gu1WGbGChM9h6++C0Np8E4b7 KdB/0oGXuL3RtGwLH5Yi7OTdvbTwd/uVJVW+o4JdLp7FDjugeyeV8R7MU A==; X-CSE-ConnectionGUID: 2PMWiS0kTeuQePkdHai7rg== X-CSE-MsgGUID: O0AvZ0cXSf2PfG0ta4U8EQ== X-IronPort-AV: E=McAfee;i="6800,10657,11529"; a="60748488" X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="60748488" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 X-CSE-ConnectionGUID: xbUIQ4uXRtGY91IDFq9lIw== X-CSE-MsgGUID: op30307URzOWAke36WRw8w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="168444350" Received: from vcostago-mobl3.jf.intel.com (HELO [10.98.24.157]) ([10.98.24.157]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 From: Vinicius Costa Gomes Date: Thu, 21 Aug 2025 15:59:37 -0700 Subject: [PATCH v2 03/10] dmaengine: idxd: Fix possible invalid memory access after FLR Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-3-595d48fa065c@intel.com> References: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> In-Reply-To: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> To: Dave Jiang , Vinod Koul , Fenghua Yu , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-2e5ae X-Developer-Signature: v=1; a=ed25519-sha256; t=1755817209; l=957; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=jnUpxiVQ2K9IeAsLKQJQuwj4wopCBvx82O8espnIa2U=; b=OkWShZlspGaFjVyeVMuBU0AYuRNqQGr+5PCVQuMXmMNDHGfRSQnhe4M3WTz9IpHY1cAyDR6WI Kh4sMCMqvFtB4gxJlUecCrEC7PmXCFJbjPRN026nkS1yOyGYJt3Q9J3 X-Developer-Key: i=vinicius.gomes@intel.com; a=ed25519; pk=aJkrtgqgT6TZ8iIHSG8/rTPsmlYnjMrUjCsMYvCzntk= In the case that the first Function Level Reset (FLR) concludes correctly, but in the second FLR the scratch area for the saved configuration cannot be allocated, it's possible for a invalid memory access to happen. Always set the deallocated scratch area to NULL after FLR completes. Fixes: 98d187a98903 ("dmaengine: idxd: Enable Function Level Reset (FLR) fo= r halt") Reviewed-by: Dave Jiang Signed-off-by: Vinicius Costa Gomes --- drivers/dma/idxd/init.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c index e9fe5471f722..a5f4c80bf7a6 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -1134,6 +1134,7 @@ static void idxd_reset_done(struct pci_dev *pdev) } out: kfree(idxd->idxd_saved); + idxd->idxd_saved =3D NULL; } =20 static const struct pci_error_handlers idxd_error_handler =3D { --=20 2.50.1 From nobody Sat Oct 4 00:31:20 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 52DC32EAB84; Thu, 21 Aug 2025 23:00:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817215; cv=none; b=Reink5AYM8jKtGk0pufTxolwwGieJT9Y3DK4enpKTmrSM0K0iLfAIa5wCJB/YzKOdei3y3vKIfFcJtSIyOkWaTtfC3HvguD+QkXcL/ogIktW7eYBJH1dp2qaJq1Z63TXVe9TfMu+LiExeh4No15rr+m+XvYmHw6LG/U+u/VoZyg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817215; c=relaxed/simple; bh=1rsBcE9VpQ7SBF4zvv4WFKkDlb1Z7pK2vW4cbeyBbSo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X9iy0iYaBfFgtQ/xWxr8TjLS5rveeVN6PdCdrFjex/tvzQKFSX2b4IpJE4xqxnAZogIvKA8dqlxZFp3SBYVhFM6wCVRmQvKRsNLpul+piSHRQ0Re0HFHMZaAiLqOZvTU+BnzjsjNB+b3a2sMvShWVWsENnSQBs7uDYOyKl4hick= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=YflNOWUP; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="YflNOWUP" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755817213; x=1787353213; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=1rsBcE9VpQ7SBF4zvv4WFKkDlb1Z7pK2vW4cbeyBbSo=; b=YflNOWUPIJCTq4FxNDCl5NC84w1OHSeDHqaOHxWYaTyPFCbc1SckRKEY +TYgBWEfU/8A5D2xi1GRMPS9UR0qLHcaYBikRxSDwVtRiTu50fwY38gKn eJ4GghY2yAcvWcoJFgHxK1nAyUr/1Wvd936kuhuPszn4rY+3euWR/yT35 4J4taBysS5gNHkcHk14JdhLFfrO8jLyuz4u5tvFtZDKM7+u+rUqduc5q2 WFngC4NDZFAnZE3c0AbYqRTehzmubW/Fb6koDzC8+SFQ18t2squ0wE/ji XwS9PezXZ4XKcQmVH5lLUbdmUurfupxc+6H548bbL9v6ox3CN8MjMDd7c w==; X-CSE-ConnectionGUID: 9BBRUgjJQwyukPtxG6zbgA== X-CSE-MsgGUID: uAaVa6ScTvq2vNALCGGOKA== X-IronPort-AV: E=McAfee;i="6800,10657,11529"; a="60748490" X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="60748490" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 X-CSE-ConnectionGUID: NwuQRM3lRwWgawzKTrdlfg== X-CSE-MsgGUID: QSQtNPCkT9eburAQIj3FGg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="168444354" Received: from vcostago-mobl3.jf.intel.com (HELO [10.98.24.157]) ([10.98.24.157]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 From: Vinicius Costa Gomes Date: Thu, 21 Aug 2025 15:59:38 -0700 Subject: [PATCH v2 04/10] dmaengine: idxd: Flush kernel workqueues on Function Level Reset Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-4-595d48fa065c@intel.com> References: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> In-Reply-To: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> To: Dave Jiang , Vinod Koul , Fenghua Yu , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-2e5ae X-Developer-Signature: v=1; a=ed25519-sha256; t=1755817209; l=3438; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=1rsBcE9VpQ7SBF4zvv4WFKkDlb1Z7pK2vW4cbeyBbSo=; b=YyIl5d254g1vwD9QdQQ4ozm+UxA721DiFOMtzj14xvo/D1DmGSaFLf/jWoGoMpSk6RHOMlYGy NRulHKT6bAXB7+dXxlkJi1nTI1aHNLEraGIIpdo1lp2FuRqqVqvT0MC X-Developer-Key: i=vinicius.gomes@intel.com; a=ed25519; pk=aJkrtgqgT6TZ8iIHSG8/rTPsmlYnjMrUjCsMYvCzntk= When a Function Level Reset (FLR) happens, terminate the pending descriptors that were issued by in-kernel users and disable the interrupts associated with those. They will be re-enabled after FLR finishes. idxd_wq_flush_desc() is declared on idxd.h because it's going to be used in by the DMA backend in a future patch. Signed-off-by: Vinicius Costa Gomes Reviewed-by: Dave Jiang --- drivers/dma/idxd/device.c | 20 ++++++++++++++++++++ drivers/dma/idxd/idxd.h | 1 + drivers/dma/idxd/irq.c | 16 ++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/drivers/dma/idxd/device.c b/drivers/dma/idxd/device.c index 02bda8868e24..c62808e30417 100644 --- a/drivers/dma/idxd/device.c +++ b/drivers/dma/idxd/device.c @@ -1319,6 +1319,11 @@ void idxd_wq_free_irq(struct idxd_wq *wq) =20 free_irq(ie->vector, ie); idxd_flush_pending_descs(ie); + + /* The interrupt might have been already released by FLR */ + if (ie->int_handle =3D=3D INVALID_INT_HANDLE) + return; + if (idxd->request_int_handles) idxd_device_release_int_handle(idxd, ie->int_handle, IDXD_IRQ_MSIX); idxd_device_clear_perm_entry(idxd, ie); @@ -1327,6 +1332,21 @@ void idxd_wq_free_irq(struct idxd_wq *wq) ie->pasid =3D IOMMU_PASID_INVALID; } =20 +void idxd_wq_flush_descs(struct idxd_wq *wq) +{ + struct idxd_irq_entry *ie =3D &wq->ie; + struct idxd_device *idxd =3D wq->idxd; + + if (wq->state !=3D IDXD_WQ_ENABLED || wq->type !=3D IDXD_WQT_KERNEL) + return; + + idxd_flush_pending_descs(ie); + if (idxd->request_int_handles) + idxd_device_release_int_handle(idxd, ie->int_handle, IDXD_IRQ_MSIX); + idxd_device_clear_perm_entry(idxd, ie); + ie->int_handle =3D INVALID_INT_HANDLE; +} + int idxd_wq_request_irq(struct idxd_wq *wq) { struct idxd_device *idxd =3D wq->idxd; diff --git a/drivers/dma/idxd/idxd.h b/drivers/dma/idxd/idxd.h index 74e6695881e6..fb7f570e002b 100644 --- a/drivers/dma/idxd/idxd.h +++ b/drivers/dma/idxd/idxd.h @@ -784,6 +784,7 @@ void idxd_wq_quiesce(struct idxd_wq *wq); int idxd_wq_init_percpu_ref(struct idxd_wq *wq); void idxd_wq_free_irq(struct idxd_wq *wq); int idxd_wq_request_irq(struct idxd_wq *wq); +void idxd_wq_flush_descs(struct idxd_wq *wq); =20 /* submission */ int idxd_submit_desc(struct idxd_wq *wq, struct idxd_desc *desc); diff --git a/drivers/dma/idxd/irq.c b/drivers/dma/idxd/irq.c index 1107db3ce0a3..8d0eaf5029fa 100644 --- a/drivers/dma/idxd/irq.c +++ b/drivers/dma/idxd/irq.c @@ -397,6 +397,17 @@ static void idxd_device_flr(struct work_struct *work) dev_err(&idxd->pdev->dev, "FLR failed\n"); } =20 +static void idxd_wqs_flush_descs(struct idxd_device *idxd) +{ + int i; + + for (i =3D 0; i < idxd->max_wqs; i++) { + struct idxd_wq *wq =3D idxd->wqs[i]; + + idxd_wq_flush_descs(wq); + } +} + static irqreturn_t idxd_halt(struct idxd_device *idxd) { union gensts_reg gensts; @@ -415,6 +426,11 @@ static irqreturn_t idxd_halt(struct idxd_device *idxd) } else if (gensts.reset_type =3D=3D IDXD_DEVICE_RESET_FLR) { idxd->state =3D IDXD_DEV_HALTED; idxd_mask_error_interrupts(idxd); + /* Flush all pending descriptors, and disable + * interrupts, they will be re-enabled when FLR + * concludes. + */ + idxd_wqs_flush_descs(idxd); dev_dbg(&idxd->pdev->dev, "idxd halted, doing FLR. After FLR, configs are restored\n"); INIT_WORK(&idxd->work, idxd_device_flr); --=20 2.50.1 From nobody Sat Oct 4 00:31:20 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ADCC62C0299; Thu, 21 Aug 2025 23:00:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817215; cv=none; b=H0tLL0n9iFjc14GcN4RkoZt0xE0iM/fpyVc7PsuQEc6O2FD2UVp5xBTTT9UwVr3AL1+ZsT9VI09RKGCV2z1P3+gaydfVpCBRfZk4Llq1j1esF0RfFtRmxZjYru2rtfmfGtDxGPt3zpYDU6AYJtCkIT67bUURKiMehQJw/Jw+Eu0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817215; c=relaxed/simple; bh=UiRVDRNElmnuQn1IkTxW0cyZ8FQfjc/JQob2A2ENmEA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c4FaWVAGJqHeB+O1DBZXs0RlrvCLh7kwv18ZShdXHn0RRwGm4C6MmEu/smsEapCy4r6pfEaq4/92JJ1WgwNqUNocDo3Iy121MljeUCAn85L3arVHqhBgCwV6Vz9CCHL+uwFxiSucTjzNEvHw1P8zTeu66LP96dusQGtvsj18Fq4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=bNhcEYvP; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="bNhcEYvP" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755817214; x=1787353214; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=UiRVDRNElmnuQn1IkTxW0cyZ8FQfjc/JQob2A2ENmEA=; b=bNhcEYvPMdrn+cg1uIiW0+mvJcYhba8RL7zdtNnD7wVsv609Q8l5YkGi zv/aarJQPhSBMx/TA9zZnl0YQxXSpTL8FNWoeHt14QheGmPi23XtX6axd Dw4P+rZgRTr2Sslfk0d2Ms3Yt5lOLcOBKW9xnbDvEc+crBV+r+UMYGtu0 tKBSz1YP50Ccp8himzrEYk3HvFcfUP9i7UFCdh6NLmeRDv4G1I5I0yl6L jcrHPekzsOI9yGN2AvuuT7kqitn2HdsnhpPXfC/gAi5cRLr1PhtuojhC5 IyrF0eDMqkMeaH8757d52CUSsrI17tlLyZRYD3CA7t8buRIYJKUmpTbsI w==; X-CSE-ConnectionGUID: 7JlRy67+QduGup+rwqXF5w== X-CSE-MsgGUID: Ly0dsp6tTPGLYaQ+vHGJ+g== X-IronPort-AV: E=McAfee;i="6800,10657,11529"; a="60748492" X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="60748492" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 X-CSE-ConnectionGUID: W8GVwglcQHq1unJAm91HKw== X-CSE-MsgGUID: fz+B0CjmSxaLfrEvS6FP5g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="168444357" Received: from vcostago-mobl3.jf.intel.com (HELO [10.98.24.157]) ([10.98.24.157]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 From: Vinicius Costa Gomes Date: Thu, 21 Aug 2025 15:59:39 -0700 Subject: [PATCH v2 05/10] dmaengine: idxd: Flush all pending descriptors Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-5-595d48fa065c@intel.com> References: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> In-Reply-To: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> To: Dave Jiang , Vinod Koul , Fenghua Yu , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-2e5ae X-Developer-Signature: v=1; a=ed25519-sha256; t=1755817209; l=1354; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=UiRVDRNElmnuQn1IkTxW0cyZ8FQfjc/JQob2A2ENmEA=; b=kr9R2HdXi7gDAmARzLB0AJNwLAJeh/+SGIFQEkWYTcAHeYClWCiODuwBRBz3B7/sio44POSH+ M38AJAmXjI9BtdC0pYYSdDSsFcS68IzgBQqPE87ilCrsG2WiGZPL091 X-Developer-Key: i=vinicius.gomes@intel.com; a=ed25519; pk=aJkrtgqgT6TZ8iIHSG8/rTPsmlYnjMrUjCsMYvCzntk= When used as a dmaengine, the DMA "core" might ask the driver to terminate all pending requests, when that happens, flush all pending descriptors. In this context, flush means removing the requests from the pending lists, so even if they are completed after, the user is not notified. Signed-off-by: Vinicius Costa Gomes --- drivers/dma/idxd/dma.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/dma/idxd/dma.c b/drivers/dma/idxd/dma.c index dbecd699237e..e4f9788aa635 100644 --- a/drivers/dma/idxd/dma.c +++ b/drivers/dma/idxd/dma.c @@ -194,6 +194,15 @@ static void idxd_dma_release(struct dma_device *device) kfree(idxd_dma); } =20 +static int idxd_dma_terminate_all(struct dma_chan *c) +{ + struct idxd_wq *wq =3D to_idxd_wq(c); + + idxd_wq_flush_descs(wq); + + return 0; +} + int idxd_register_dma_device(struct idxd_device *idxd) { struct idxd_dma_dev *idxd_dma; @@ -224,6 +233,7 @@ int idxd_register_dma_device(struct idxd_device *idxd) dma->device_issue_pending =3D idxd_dma_issue_pending; dma->device_alloc_chan_resources =3D idxd_dma_alloc_chan_resources; dma->device_free_chan_resources =3D idxd_dma_free_chan_resources; + dma->device_terminate_all =3D idxd_dma_terminate_all; =20 rc =3D dma_async_device_register(dma); if (rc < 0) { --=20 2.50.1 From nobody Sat Oct 4 00:31:20 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4AFB42EB5D9; Thu, 21 Aug 2025 23:00:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817215; cv=none; b=piFMcE+AHrBNb+c7gQpTy3ebJWX7XqZx/2ooqq3JrBGZgs9BWqNlS2EqKWE76lmr9immoHGU29OKj4cSHI0iTOgF5HD9Il9u8t4KySY17ECb80CzH7ma/4/O3Q+dkzwVGdxx508QYPZJPezVCF4avaAVzKMpNPVkJbmEh9Pr+TI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817215; c=relaxed/simple; bh=i0VF6j4XNf3wZ5mLiaW6rvuHr0vTYui7v7+GTstbbYs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UBen3yEXsCi/w5xWxhc0tSQ9gwVkQ/R1sBS1S33D9eS4UaOuf1PsEG/QHF55LxY3OAd3UyCA1Z1mDUy7VbWqsTvlDbpl4UaGn5AuK3PSkU4Ca+R4w6ii7NKz8O114lBFPSG+7M4pUipeDn8IMX3a789AUGFe8sFHqk0pSvSukrU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=YinmHyeV; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="YinmHyeV" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755817214; x=1787353214; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=i0VF6j4XNf3wZ5mLiaW6rvuHr0vTYui7v7+GTstbbYs=; b=YinmHyeVKD5vN0UQGSjNF1aR5In4crttdrAbBD6dnRSwgGDDFoyjTurd KMStmgEgWIJrrXgI+KZfFU7xQA0wVIRzSslejIJixJvyrS1RZFucdEY0Y s21Vg/dBONNBN4YlOsGbEJKjhSjJ4+4l2MjWwDUkeh4J3wrfQpfF6b8S+ bF7esz4nsUoXF33ildyiNTsVmcPRaOtEaTf1J0SjjEeLW+D/gvQ1d2xS8 v/wQOIsUQ64F4EFD05pMCkFXpZim9Cm7DSSQdaHIapYfyKsEqdYknYAJi sGFluOd8YGQi1MbX2W3ehimKv/25G/uYQZS/9UwjwWlph6U3MGEozLfFu w==; X-CSE-ConnectionGUID: 9hWbAM2PQiaS+/mPJHQi6w== X-CSE-MsgGUID: ev04fdEoQdq5IpBRb9Mkcw== X-IronPort-AV: E=McAfee;i="6800,10657,11529"; a="60748495" X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="60748495" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 X-CSE-ConnectionGUID: SBmvqYo6QdGuDqgwOC/yBg== X-CSE-MsgGUID: GdgmGPxCR+uOZ45X1iAodQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="168444360" Received: from vcostago-mobl3.jf.intel.com (HELO [10.98.24.157]) ([10.98.24.157]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 From: Vinicius Costa Gomes Date: Thu, 21 Aug 2025 15:59:40 -0700 Subject: [PATCH v2 06/10] dmaengine: idxd: Wait for submitted operations on .device_synchronize() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-6-595d48fa065c@intel.com> References: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> In-Reply-To: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> To: Dave Jiang , Vinod Koul , Fenghua Yu , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-2e5ae X-Developer-Signature: v=1; a=ed25519-sha256; t=1755817209; l=1195; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=i0VF6j4XNf3wZ5mLiaW6rvuHr0vTYui7v7+GTstbbYs=; b=D+RZZmlsyRbt3038TyUQpm9R6EvNB5UvGkr/IhV04njEpk9QF4RbpW7a0h1NuGp+eiI8o6SqI waeztjMyHcYAezU6kss+r1EWiETI5KWsXzrxmSofH+gkY0wVFY+BOb5 X-Developer-Key: i=vinicius.gomes@intel.com; a=ed25519; pk=aJkrtgqgT6TZ8iIHSG8/rTPsmlYnjMrUjCsMYvCzntk= When the dmaengine "core" asks the driver to synchronize, send a Drain operation to the device workqueue, which will wait for the already submitted operations to finish. Signed-off-by: Vinicius Costa Gomes --- drivers/dma/idxd/dma.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/dma/idxd/dma.c b/drivers/dma/idxd/dma.c index e4f9788aa635..9937b671f637 100644 --- a/drivers/dma/idxd/dma.c +++ b/drivers/dma/idxd/dma.c @@ -203,6 +203,13 @@ static int idxd_dma_terminate_all(struct dma_chan *c) return 0; } =20 +static void idxd_dma_synchronize(struct dma_chan *c) +{ + struct idxd_wq *wq =3D to_idxd_wq(c); + + idxd_wq_drain(wq); +} + int idxd_register_dma_device(struct idxd_device *idxd) { struct idxd_dma_dev *idxd_dma; @@ -234,6 +241,7 @@ int idxd_register_dma_device(struct idxd_device *idxd) dma->device_alloc_chan_resources =3D idxd_dma_alloc_chan_resources; dma->device_free_chan_resources =3D idxd_dma_free_chan_resources; dma->device_terminate_all =3D idxd_dma_terminate_all; + dma->device_synchronize =3D idxd_dma_synchronize; =20 rc =3D dma_async_device_register(dma); if (rc < 0) { --=20 2.50.1 From nobody Sat Oct 4 00:31:20 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F17C2EBB85; Thu, 21 Aug 2025 23:00:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817216; cv=none; b=Q6Hj0p2x0VFjYzoo2eB22c0PzkjZicEa0KBXVj7HS+Q7ealOq0M3rugishxCQF6NDcjqg3u/WBcnhChkhTWvpEbtmTZ49NZ+qLaLMebzo/QjXd5+9eyWWvx4IbWkNRWwl4DFUiAdLrTGt84MbT5P3HjtdhEeuN2oUXs/s35XWQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817216; c=relaxed/simple; bh=eLTK3oZaMnnq8VX6zD4DLG+0DDkxzaiClUQRvhGDtUs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Qh1L/JEdFFT5NsM523cTAfFOVkDk6a/UHln7h/F2EusR7f0urSTVEHqr/V7t+3BUu0qzfaJlBu5QeKcXzFqspriHCKKjaxW9IO0KMiiFO8X17WYIGg+IXVcd6Hd9hvX92Ufa3fxOYBhDeIyDNpntC1PMHxRGHqaeZn4ZR+qBE8o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=hjUiMaWU; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="hjUiMaWU" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755817215; x=1787353215; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=eLTK3oZaMnnq8VX6zD4DLG+0DDkxzaiClUQRvhGDtUs=; b=hjUiMaWUSAijGxyszu8auGCuPMrzmxR7oeJu8asUmYIlqXykEF031FYk bofNK0pPSWVhlujRnTG1aNG1yGkWr8c0diz/dZjsdCUyesdahhVX1HhId 9NDoEjYoWIRiWrClzQBbnTPBfixG2/S2JfSdrgEOXuFYudvZEqpeGdfzd SKGJQn8fzZ5BPWkgr7/nPpRWbU6kBQFBrqA/ev0DxUP5Ebu5uHPFfa/uy oVWmjakB/RUJc5wVxrNLiNmT86gm2OFp5mEZjuh2xgdOk1JyrvvFLqFfT Vf8bKRGzKYRrwMIaB8DO8Xd4bAcyKtrTKzTC1+C6jSzw/1nUdSnKK3K7A A==; X-CSE-ConnectionGUID: eIn/13ggSlur9uwHXvhUWQ== X-CSE-MsgGUID: kNYwM4nATAug6qt3IoH9DA== X-IronPort-AV: E=McAfee;i="6800,10657,11529"; a="60748498" X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="60748498" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 X-CSE-ConnectionGUID: +pLTWXtpQgWlLMhyakB/fQ== X-CSE-MsgGUID: 9P87EGdrRwyWDeHUr1PE2g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="168444364" Received: from vcostago-mobl3.jf.intel.com (HELO [10.98.24.157]) ([10.98.24.157]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 From: Vinicius Costa Gomes Date: Thu, 21 Aug 2025 15:59:41 -0700 Subject: [PATCH v2 07/10] dmaengine: idxd: Fix not releasing workqueue on .release() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-7-595d48fa065c@intel.com> References: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> In-Reply-To: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> To: Dave Jiang , Vinod Koul , Fenghua Yu , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-2e5ae X-Developer-Signature: v=1; a=ed25519-sha256; t=1755817209; l=803; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=eLTK3oZaMnnq8VX6zD4DLG+0DDkxzaiClUQRvhGDtUs=; b=eQhOm3PO1EcgY+A3utUceYn9jDbif8cTs+wGIVPOaZdsfGluBggMT/w7LBpYEAQnDaWHX8Czf EfJbWi6lgcJBpqe1v/9+TAiZTAban8bkcOueEOA9RH+jVOcA+QYDUxn X-Developer-Key: i=vinicius.gomes@intel.com; a=ed25519; pk=aJkrtgqgT6TZ8iIHSG8/rTPsmlYnjMrUjCsMYvCzntk= The workqueue associated with an DSA/IAA device is not released when the object is freed. Fixes: 47c16ac27d4c ("dmaengine: idxd: fix idxd conf_dev 'struct device' li= fetime") Reviewed-by: Dave Jiang Signed-off-by: Vinicius Costa Gomes --- drivers/dma/idxd/sysfs.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/dma/idxd/sysfs.c b/drivers/dma/idxd/sysfs.c index 9f0701021af0..cdd7a59140d9 100644 --- a/drivers/dma/idxd/sysfs.c +++ b/drivers/dma/idxd/sysfs.c @@ -1812,6 +1812,7 @@ static void idxd_conf_device_release(struct device *d= ev) { struct idxd_device *idxd =3D confdev_to_idxd(dev); =20 + destroy_workqueue(idxd->wq); kfree(idxd->groups); bitmap_free(idxd->wq_enable_map); kfree(idxd->wqs); --=20 2.50.1 From nobody Sat Oct 4 00:31:20 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E2BD2EBBAC; Thu, 21 Aug 2025 23:00:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817217; cv=none; b=lAnsgmXYYz/axaAJbhRaTnGl6FbVeGDV76NmorTHFakVnq0fbt0mnknB6pJWw4f8rKAdBbJG2CTwl1Ljpl258kQosDbu3uWJrjjE/8AwxAvQzN3k2jhBAQLhq0g/dqcq3FKQ6jTdP58Nuflyk4vD7AqEKGh0OVYuf389YLJ2gkA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817217; c=relaxed/simple; bh=AcUvlloJcRxP1Gh65pW1h/uhxTIyQhMoNri7bxjpC2A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S0ptD8QqBplZ6WrW5bgNVZTFKEBLcgNUDNnUYo8SwCHZ6lqES3AtCWC5XsWFIqjTCckyEB55xh9HlmscnXBy0reSGE634Uq/8VE5yohCFxpKf7mdYqN56REQTmUNAgb1upwajHN195tttN+g2kBibf5n0XDXzP1SXvpsAjk5fyQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=hgwxWpqE; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="hgwxWpqE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755817216; x=1787353216; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=AcUvlloJcRxP1Gh65pW1h/uhxTIyQhMoNri7bxjpC2A=; b=hgwxWpqEZh3nC5fUA40ezYNpCfu1SjD2QUfVoeWnlQYY5wp4REPW+4AG 09r0tKRb+yz/AYtwCl/46Syb4ISvPPAoDQRET+groKMKTJB/2pBAF5YoB JneYt8hgYtDXI7LhuINE8n4m0oFZT0nU3oqro/pL/Fc1j81U8w6l1s9Aq e10p4ptjeyCLTg2CgkUJoKZ4HQ+l4Qy9sqJqca96XdmFQya4mTE0sTHn+ RV06M7BUqLf0gnxWGR3uqN9dRr7IYf/BSsGhFH4OHRy/wiBm0F1tAqZPw GUFxTZTnMKyYBpShwVnGVNjfzFNSpJgLXzJrQ1QsBjStUXdNApXG7+RG3 w==; X-CSE-ConnectionGUID: maMIXh/2RJumEsODqk/biQ== X-CSE-MsgGUID: 7AC5vyBPTyOBaf+CjQTZlg== X-IronPort-AV: E=McAfee;i="6800,10657,11529"; a="60748499" X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="60748499" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:11 -0700 X-CSE-ConnectionGUID: jPiQ1p2uRS+/n1yUmeSfhA== X-CSE-MsgGUID: lm4fO7kiRZOAJapV+nAPbw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="168444366" Received: from vcostago-mobl3.jf.intel.com (HELO [10.98.24.157]) ([10.98.24.157]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 From: Vinicius Costa Gomes Date: Thu, 21 Aug 2025 15:59:42 -0700 Subject: [PATCH v2 08/10] dmaengine: idxd: Fix memory leak when a wq is reset Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-8-595d48fa065c@intel.com> References: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> In-Reply-To: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> To: Dave Jiang , Vinod Koul , Fenghua Yu , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-2e5ae X-Developer-Signature: v=1; a=ed25519-sha256; t=1755817209; l=1614; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=AcUvlloJcRxP1Gh65pW1h/uhxTIyQhMoNri7bxjpC2A=; b=ozkczljI3PazGA+LNVQ8gxk62dVaTdJJnD/NUEFSheruantMHmxcQxUseyN1OAG+Fom+1NxnC pdAodInGN//CZyLg03qX0gL28tCMYAb/7WrVUtQ293BdaUR36tYu406 X-Developer-Key: i=vinicius.gomes@intel.com; a=ed25519; pk=aJkrtgqgT6TZ8iIHSG8/rTPsmlYnjMrUjCsMYvCzntk= idxd_wq_disable_cleanup() which is called from the reset path for a workqueue, sets the wq type to NONE, which for other parts of the driver mean that the wq is empty (all its resources were released). Only set the wq type to NONE after its resources are released. Fixes: da32b28c95a7 ("dmaengine: idxd: cleanup workqueue config after disab= ling") Reviewed-by: Dave Jiang Signed-off-by: Vinicius Costa Gomes --- drivers/dma/idxd/device.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/dma/idxd/device.c b/drivers/dma/idxd/device.c index c62808e30417..ddce262853b0 100644 --- a/drivers/dma/idxd/device.c +++ b/drivers/dma/idxd/device.c @@ -174,6 +174,7 @@ void idxd_wq_free_resources(struct idxd_wq *wq) free_descs(wq); dma_free_coherent(dev, wq->compls_size, wq->compls, wq->compls_addr); sbitmap_queue_free(&wq->sbq); + wq->type =3D IDXD_WQT_NONE; } EXPORT_SYMBOL_NS_GPL(idxd_wq_free_resources, "IDXD"); =20 @@ -367,7 +368,6 @@ static void idxd_wq_disable_cleanup(struct idxd_wq *wq) lockdep_assert_held(&wq->wq_lock); wq->state =3D IDXD_WQ_DISABLED; memset(wq->wqcfg, 0, idxd->wqcfg_size); - wq->type =3D IDXD_WQT_NONE; wq->threshold =3D 0; wq->priority =3D 0; wq->enqcmds_retries =3D IDXD_ENQCMDS_RETRIES; @@ -1536,7 +1536,6 @@ void idxd_drv_disable_wq(struct idxd_wq *wq) idxd_wq_reset(wq); idxd_wq_free_resources(wq); percpu_ref_exit(&wq->wq_active); - wq->type =3D IDXD_WQT_NONE; wq->client_count =3D 0; } EXPORT_SYMBOL_NS_GPL(idxd_drv_disable_wq, "IDXD"); --=20 2.50.1 From nobody Sat Oct 4 00:31:20 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F06A72EBDE0; Thu, 21 Aug 2025 23:00:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817217; cv=none; b=VI5qHZx/UftVXZdcix3Cw1jT5ak85baO/b7Ml61q2ext6Ufn7C6A2TMYJa4J2OtHHpfGi6PgcvEvW042mDudUxemdFaGlAQ+cKxXlczVzb42xX8UjCCmvs4bdBECQISGAOl2iTCVAVMZ5q54eoBzpFfz/MsN/mY4rap5C3SGOqk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817217; c=relaxed/simple; bh=gX6w7tFGb3222D0jzgCq6DGMv3NUgvN/JDxvautEv6k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cUbPPEalVLCmLokaA+3rjjrEOhXbgzSFb/135HK1J9Ue6HJPx4un9bUMq4d20/Qcpm0B+HNhgvOrGlt3ftqYwmLzQ9mYn1DOkbaKICHuWlh4ZiR16bx/ezJB8xOIxYBuO/9kEc2MqiF+G/ZM1ChIKvYMORgpMyuCyC5LQ3p9GkE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=dMgq7p/X; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="dMgq7p/X" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755817216; x=1787353216; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=gX6w7tFGb3222D0jzgCq6DGMv3NUgvN/JDxvautEv6k=; b=dMgq7p/XnKC4utYsf0CRfe5HWpOCLb232CkLOPCEZFxAgJ3T3LkPWL+H YFbJpAKM67xQhjfTXm9EPMxk6jEJKHW3/8BJfc2TxG5MF+5lws7L4Wlvo R7OEOynluisnBKIIyp3iZQeid/A0gjICqVo+tBUoRpHVKGBl1qtoa5+QG 2fE04YcHGPbTj1O2n54mkX0FIURvDlDaLh8RUz4+4ZvC2+tgpmCdooZE1 ryEGYCYlmSrn5E0SkFgYWt9JfBybmBnQZsQbctw3H9q/syuLlClJuXZqk TD6vwv7/IK9KHQLZXMA970v6M8xsAgJO74jXsz8sMTksJgJYGndojmwSw w==; X-CSE-ConnectionGUID: 6n5HRAtrTgqs3r+7NHNUsA== X-CSE-MsgGUID: XF0dxCb+SGye8byPSshJ+Q== X-IronPort-AV: E=McAfee;i="6800,10657,11529"; a="60748501" X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="60748501" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:11 -0700 X-CSE-ConnectionGUID: cd/kKEtBSKe/CBuxdmfmHw== X-CSE-MsgGUID: IFOGlWiEQUStY1guaeqqeQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="168444371" Received: from vcostago-mobl3.jf.intel.com (HELO [10.98.24.157]) ([10.98.24.157]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 From: Vinicius Costa Gomes Date: Thu, 21 Aug 2025 15:59:43 -0700 Subject: [PATCH v2 09/10] dmaengine: idxd: Fix freeing the allocated ida too late Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-9-595d48fa065c@intel.com> References: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> In-Reply-To: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> To: Dave Jiang , Vinod Koul , Fenghua Yu , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-2e5ae X-Developer-Signature: v=1; a=ed25519-sha256; t=1755817209; l=1533; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=gX6w7tFGb3222D0jzgCq6DGMv3NUgvN/JDxvautEv6k=; b=+YKPLeKRz/ET+RMAsPwJEUtJ7IjHwZZ/XkHIcubbPnvyNmbE+v/+KmDvtsaY4YnZdDSyXPAM6 AV8DpUfr12GCiLYzDD4moyTNcOIUOeCdBiQmF9LgEZUueX2yKpi0Tos X-Developer-Key: i=vinicius.gomes@intel.com; a=ed25519; pk=aJkrtgqgT6TZ8iIHSG8/rTPsmlYnjMrUjCsMYvCzntk= It can happen that when the cdev .release() is called, the driver already called ida_destroy(). Move ida_free() to the _del() path. We see with DEBUG_KOBJECT_RELEASE enabled and forcing an early PCI unbind. Fixes: 04922b7445a1 ("dmaengine: idxd: fix cdev setup and free device lifet= ime issues") Reviewed-by: Dave Jiang Signed-off-by: Vinicius Costa Gomes --- drivers/dma/idxd/cdev.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c index 7e4715f92773..4105688cf3f0 100644 --- a/drivers/dma/idxd/cdev.c +++ b/drivers/dma/idxd/cdev.c @@ -158,11 +158,7 @@ static const struct device_type idxd_cdev_file_type = =3D { static void idxd_cdev_dev_release(struct device *dev) { struct idxd_cdev *idxd_cdev =3D dev_to_cdev(dev); - struct idxd_cdev_context *cdev_ctx; - struct idxd_wq *wq =3D idxd_cdev->wq; =20 - cdev_ctx =3D &ictx[wq->idxd->data->type]; - ida_free(&cdev_ctx->minor_ida, idxd_cdev->minor); kfree(idxd_cdev); } =20 @@ -582,11 +578,15 @@ int idxd_wq_add_cdev(struct idxd_wq *wq) =20 void idxd_wq_del_cdev(struct idxd_wq *wq) { + struct idxd_cdev_context *cdev_ctx; struct idxd_cdev *idxd_cdev; =20 idxd_cdev =3D wq->idxd_cdev; wq->idxd_cdev =3D NULL; cdev_device_del(&idxd_cdev->cdev, cdev_dev(idxd_cdev)); + + cdev_ctx =3D &ictx[wq->idxd->data->type]; + ida_free(&cdev_ctx->minor_ida, idxd_cdev->minor); put_device(cdev_dev(idxd_cdev)); } =20 --=20 2.50.1 From nobody Sat Oct 4 00:31:20 2025 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C7A822ECE97; Thu, 21 Aug 2025 23:00:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817218; cv=none; b=fvdVFrWFOmB2GLSDI9YnertPr58pnLhIh20vbNcE3jslkHaCLLFqzS2JWawzHIzJEyz5X/WAOC141/tG+6OvQXVB+g5rqsLmW8FcWO+2jUBcpRhfja7I3gB/sYD+DlKfafRajGw3imWGqJ76qm6G4V9eTb3bRsuwry9cFOdFyfM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755817218; c=relaxed/simple; bh=W51MrwzFJgFBMfOJDZMbvPNlljcaK8etAkXOFsk3k8Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a/54myZ/ZnOZPuQBTgvO58wZ+9+WfLDs+krh28Dc2Naf37cwpoGTD5OP0fmWCFWEgLer+ZFtixBHoy8ycPvoXaVqF6sw9gUZjjwmd1gD8HRAw9DpkdHfpoB/Y3kRreBXhlUyh9N5jZIhB7MDyn8aLU6HLBavoY/f2wTWLFTn8f4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=VKxGesIc; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="VKxGesIc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1755817217; x=1787353217; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=W51MrwzFJgFBMfOJDZMbvPNlljcaK8etAkXOFsk3k8Y=; b=VKxGesIcjPn1Y4pDJ/wDOBmVUfffcsV8zRomdEOI/iBMx61Mmr+eZVNj /c4WWTYJImvCefKC3KCY94abcfRYE/bL3gFPfU3YnsOzeP29vpqydc50u CFcO5mBGb3leFzvzI+PGAB4qB1dgOAVrgqDiOC1+emrjbw8hzXi2xW93B ixxkWyxQeOBPRukOheyOmCbIedgD8gw2RM35r+fAZ8GGMEJ8eqMeZuQi7 nqUSK33Y45FsjQsVkvpNbQZSSHZAgoht//pCwCuquSCzVH532a+9hNiL0 yANdi9ilPozCNM8yL71Wv46xU8N9ij0qMLHsy6u6l34blOHbD8wHmcwrV A==; X-CSE-ConnectionGUID: /KPtAZjZTYung36OqaSkvg== X-CSE-MsgGUID: Us48xTraT6WMuouceGtUFw== X-IronPort-AV: E=McAfee;i="6800,10657,11529"; a="60748502" X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="60748502" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:11 -0700 X-CSE-ConnectionGUID: FcDF4eyHTUyb0NEttUic+g== X-CSE-MsgGUID: 7KL3XuYuReODwSG1u551gQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,309,1747724400"; d="scan'208";a="168444373" Received: from vcostago-mobl3.jf.intel.com (HELO [10.98.24.157]) ([10.98.24.157]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2025 16:00:10 -0700 From: Vinicius Costa Gomes Date: Thu, 21 Aug 2025 15:59:44 -0700 Subject: [PATCH v2 10/10] dmaengine: idxd: Fix leaking event log memory Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-10-595d48fa065c@intel.com> References: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> In-Reply-To: <20250821-idxd-fix-flr-on-kernel-queues-v3-v2-0-595d48fa065c@intel.com> To: Dave Jiang , Vinod Koul , Fenghua Yu , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-2e5ae X-Developer-Signature: v=1; a=ed25519-sha256; t=1755817209; l=1193; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=W51MrwzFJgFBMfOJDZMbvPNlljcaK8etAkXOFsk3k8Y=; b=2qpLaxZA8bnR44i+b4t1ZElqRHmM5Kz8SuUkmPfpqw4VqYpC6J+LpeDhPD9SRx+WDCEzhEFhU AIVi+5ekkQ5B2QFW4ndKKLJgLCQLcT48Q3gncNVj7xnixJ+9mmG6R07 X-Developer-Key: i=vinicius.gomes@intel.com; a=ed25519; pk=aJkrtgqgT6TZ8iIHSG8/rTPsmlYnjMrUjCsMYvCzntk= During the device remove process, the device is reset, causing the configuration registers to go back to their default state, which is zero. As the driver is checking if the event log support was enabled before deallocating, it will fail if a reset happened before. Do not check if the support was enabled, the check for 'idxd->evl' being valid (only allocated if the HW capability is available) is enough. Fixes: 244da66cda35 ("dmaengine: idxd: setup event log configuration") Reviewed-by: Dave Jiang Signed-off-by: Vinicius Costa Gomes --- drivers/dma/idxd/device.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/dma/idxd/device.c b/drivers/dma/idxd/device.c index ddce262853b0..0cf1425e9a7c 100644 --- a/drivers/dma/idxd/device.c +++ b/drivers/dma/idxd/device.c @@ -818,10 +818,6 @@ static void idxd_device_evl_free(struct idxd_device *i= dxd) if (!evl) return; =20 - gencfg.bits =3D ioread32(idxd->reg_base + IDXD_GENCFG_OFFSET); - if (!gencfg.evl_en) - return; - mutex_lock(&evl->lock); gencfg.evl_en =3D 0; iowrite32(gencfg.bits, idxd->reg_base + IDXD_GENCFG_OFFSET); --=20 2.50.1