From nobody Mon Feb 9 01:35:16 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 BAA3150094C; Thu, 15 Jan 2026 22:47:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517269; cv=none; b=h2Oeb719qReVGGrtEKqTsLLvTbjWvEo7woiJ1cR5MCEZJhJ5c+L0BV3Zy6Z7mhq0xYuQe5chUZzf/OvlCkaSVY2axGk7QzJUFAreuwAZCkO2QCc+gInAXfVl2kAymj0VQ0ySxRFOoxVhSkLzABH2hrk9iXEfWweYQNAyqnnvrgM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517269; c=relaxed/simple; bh=EqY+KQZRvX9sO7EOaoaSOiJxezrgX+A/PifeBN3VL1w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=d6gIZf6OpD7/ekic3DdAtEck7peYFnw2TB8BhbqL9ctUBHvK3SWUUbXy1yX2h04cYWWCjglGvOSJUK+PBs8Yp3u2wV2lhkf6fYQDvB2gxu0nJUYD+5jvUNBsQJ8dMcRX14fIvO+UYLE0/J7Vey4ezs8MuyPcHQzF1Cgl+w49Pn8= 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=mElcAp5+; arc=none smtp.client-ip=198.175.65.21 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="mElcAp5+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768517268; x=1800053268; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=EqY+KQZRvX9sO7EOaoaSOiJxezrgX+A/PifeBN3VL1w=; b=mElcAp5+kNWBPtT/Ln99KP0gKhc/GUiZQwWrmRgPIC2oHwLCE6Us8Iky zqK87q39luOLjOfEsonWusG123hnW4z/Ea/WIlIOQ5tz2VBlHeUZjyIQ5 SRMYqNQb8d7SmlWG8KI2qHhGudI52DaITCOpzN6cCPqvbd5YKswwT+USU X9adcWVORRBtU34THxhxwMWpHKyxfUh0X+2BovFR2ai6UqPjEQQ+iVtLO LQjY/HdttBL4QzGvDlG8IbPrpRnoQUCrWj95ljj7ihCKM70b5VO/GHTdp jtlQ9v5H18EZbukO1J5W6yy9fe7iPCNlo4eO4nBFOoxmiJSEoG/GoGkdm w==; X-CSE-ConnectionGUID: DZBpAEuuRR6umnGul3vetQ== X-CSE-MsgGUID: KqIMPLI5Sjqq+TwNcsdYhw== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69744626" X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="69744626" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:46 -0800 X-CSE-ConnectionGUID: MLxKiL1MSYefl1U3BJ4X1w== X-CSE-MsgGUID: GQ/6KFCwQ8u5y4ctnuHxUA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="204965427" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:46 -0800 From: Vinicius Costa Gomes Date: Thu, 15 Jan 2026 14:47:19 -0800 Subject: [PATCH RESEND 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: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-1-59e106115a3e@intel.com> References: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> In-Reply-To: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> To: Dave Jiang , Vinod Koul , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768517265; l=2407; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=EqY+KQZRvX9sO7EOaoaSOiJxezrgX+A/PifeBN3VL1w=; b=jFS5D7tCSyzY8n/alaRQ7wZ/ZNIAX81d321AleqOARZ5QFVkRiczjff8bNlBAVrdexcKfKV2N qQ8bZKi4OraDTHTPhxWW1MCYbHesdkEojLXS3WTtD4MejooesIhymIi 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 c26128529ff4..a704475d87b3 100644 --- a/drivers/dma/idxd/device.c +++ b/drivers/dma/idxd/device.c @@ -1125,7 +1125,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; @@ -1454,11 +1458,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; @@ -1554,10 +1554,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 fb80803d5b57..dd32b81a3108 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -1104,12 +1104,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.52.0 From nobody Mon Feb 9 01:35:16 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 9A6E627A91D; Thu, 15 Jan 2026 22:47:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517269; cv=none; b=FHmuTSRIWajRIUXC8baBNCMvGzNA2U9TU4rUFvfxgf4NMW3N4mmLUTwzNgVRt9W62aRRUK5jjEDCl1M6dDZycuDpFtLODXrM5O5gF2As0twUoM7Lmlzx3vbC16l2l3aiQZb5+XagDeKWbkHHqEHnpkfPMOlu7HpYszOjpJXkxBE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517269; c=relaxed/simple; bh=iLD6dAIQdTx0q9g8zeHSLNaFu3s5+AYcoK5gKpCmhiM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JPzu9/MrK+rRdL7cpqM9gKsNUzU0OjikkID+9/6uw/m6h9Z3GWh1yU/Es7UsN5dBTG+aNt7/ODadK/+eYiyrnIdrk+sHN6xTtp13IU4FdlLBG0hO5VfdjWCbCRL/4YBgn10keZaTJKWf6xTyBBwQXFOy65j8BaIMxm7MjKWQjIU= 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=CEv6jeBj; arc=none smtp.client-ip=198.175.65.21 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="CEv6jeBj" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768517268; x=1800053268; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=iLD6dAIQdTx0q9g8zeHSLNaFu3s5+AYcoK5gKpCmhiM=; b=CEv6jeBjmUqefW8E0P2rXLy9bwoGxf+JifQZXs/wSMFcQtePuTmDlsEk zqJRCcPeK4LHWL+d2leOpfyP8canUrANxjqyuUovbdHUcIsSXiJkphFEh SJuAPTBDYI1mHWe/cmKCFMgCdGqDibj4JYdo5ESJBhFOJlTvCCYKXwGiN U4iUONY1B5nxYORbsJqXqBXRxhh7G8VlCsbELCh/Hz8x2eegBB0+pKQ88 Key3ETuTh2p96F65rLnw3F4e9sSrPlvObs16LPoj3qEutGPxRa1A1AP9Q 2+rtGvzTaouMmV1Dn6X0nhnvY3YhrGtcN9Dmb1JFk+8oI/c1JI2Ac3LQs g==; X-CSE-ConnectionGUID: g4RMiuNFQtGXM3c3lT1ouA== X-CSE-MsgGUID: lIjotBJtQFmFN88ziA38+g== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69744627" X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="69744627" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:46 -0800 X-CSE-ConnectionGUID: DZDxfnUpRSGoXgybz7M5FA== X-CSE-MsgGUID: /tCMMSteS+yjITvDKhh9Xg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="204965431" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:46 -0800 From: Vinicius Costa Gomes Date: Thu, 15 Jan 2026 14:47:20 -0800 Subject: [PATCH RESEND 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: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-2-59e106115a3e@intel.com> References: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> In-Reply-To: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> To: Dave Jiang , Vinod Koul , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768517265; l=1623; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=iLD6dAIQdTx0q9g8zeHSLNaFu3s5+AYcoK5gKpCmhiM=; b=Moxnt1dJ5N+BHUDL3Xquf7ZOOy5/6aPHi9KFCvAulzL/V/P4mB2XlZdL0dnte/OmTgollTj5/ BdSfmL1iNP/Bhy/OtMXLrSen+T3pJ5Q2nPQ7+7ZjuLTHHbTJTuFqknq 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 a704475d87b3..5265925f3076 100644 --- a/drivers/dma/idxd/device.c +++ b/drivers/dma/idxd/device.c @@ -831,6 +831,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 dd32b81a3108..1c3f9bc7364b 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -973,7 +973,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.52.0 From nobody Mon Feb 9 01:35:16 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 4D63131AABA; Thu, 15 Jan 2026 22:47:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517271; cv=none; b=c13wFTYe8/ZW9VAvY5Ph57th2c5Ekn1gxVuqDRqi8leB9W93D25gX7ldn0O77vP+oM7uLIQLhiwhywjZoMCysRWz3rb8u2WmnBtaHN8BKNF79dsKoesvJrDsGv6gmRb077SpTShL1UYLkXWMMXR9SNZOrXS2d81CHYWk15LIkpA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517271; c=relaxed/simple; bh=TD0ye6q43JjiW1lwMlhZYqmGxxTrmbilxB5xlOIjE3Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=U04zY1iPLCPAxJJ9lXY5U2z/QsJBuqZqA96xX0RCZXC5L5vN/k3iYVbpUlC2ztrffXb3Zfm+fGMN65kVlrSCSRCsGHG4gDdRfLf8sjOPZ4NJGgxYu4ttLUnziMiyq4p0mnj9TAWAfwc0jrQuVVnOrUOhKcG7KM/0r7u4AycVT38= 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=CBVado7d; arc=none smtp.client-ip=198.175.65.21 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="CBVado7d" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768517269; x=1800053269; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=TD0ye6q43JjiW1lwMlhZYqmGxxTrmbilxB5xlOIjE3Y=; b=CBVado7daAyCtqGv39DqHlzaz0pFUJTgd0uF+WFaUUdXThmvW4FJjWVz IUrhrImM/SmgL2QeMH5krsjddx2hckGJMb7f7G10VdAtJaI4NpA0pMFKJ FTVNGOFhtWtMZQXuKaBafaCzJacqMWip4GCRD802+3+o5LXsNLDALelH5 KZt1hRYkVklt/0IogPGDxolCROPy8MSBxdDJcqrYaND1PJ61cKlZRQBNr eSQQa4D/OHZjKUGTXySq0ZN4ZGv7HDW9OFcaEWPCUnbkHVrNsrIa+WZip eu6sE077A6+wDTt25GH+B2ft+9xVxOIFrxF1vKqmwHRT2Y7CsSpSzUWy1 Q==; X-CSE-ConnectionGUID: mJXAOM0LS7SuDfTRdsF4Qw== X-CSE-MsgGUID: /QU6yn8wRr6eS0/YH97mDA== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69744629" X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="69744629" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:47 -0800 X-CSE-ConnectionGUID: npJec2NxTHeKVKsAT9SiVw== X-CSE-MsgGUID: KD6LvXUqT6KJI03lXgEHwg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="204965435" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:47 -0800 From: Vinicius Costa Gomes Date: Thu, 15 Jan 2026 14:47:21 -0800 Subject: [PATCH RESEND 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: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-3-59e106115a3e@intel.com> References: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> In-Reply-To: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> To: Dave Jiang , Vinod Koul , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768517265; l=957; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=TD0ye6q43JjiW1lwMlhZYqmGxxTrmbilxB5xlOIjE3Y=; b=st85q7OgJS7nKHr2pOlkPC8nKFIHN2KXb93KfsHeFVrs8k4NuhTefp1mvpTuwiA3crwfwo83x ZsD3XJAIiQTA0shRMEm0lwyZIB07DPpGplusft0xnZoPZ/cT7I7f3DG 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 1c3f9bc7364b..f1cfc7790d95 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -1146,6 +1146,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.52.0 From nobody Mon Feb 9 01:35:16 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 2634131A80E; Thu, 15 Jan 2026 22:47:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517271; cv=none; b=X3kk+ZfZJbybALn7aiuHMvHwBoUS8GGG9s4qp4Z2HVLm1Ond0oC914Wl92SEpHgtPVJKoYNEMhkcHfH5Vb9Uv/DEg/5HuMRVzNI8lK05mhQ7Q7oWOCkNLpbIO6kHyGFnblTt2fspDmsYCDreM3wV14ISTIrCc+lJa8kWG4EFH/8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517271; c=relaxed/simple; bh=fQFVrrJvhOcF42eR0C7CrMxagcf0o/IjdULewIHfil8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HA+ObqPzXSnlxzamEeVkDurG8txUeUDael1pcvl2BPjvtKqdwYseQuYaTDycgE5GrMBO+OZ7zkIFENkgLJv7uqbO8IM0hpa7f0BQzaoNg/QJMVVSxyRjVWiHnYA3Zm9xTc3/Dm1ksx8X7+NMJDpJ0Ef8X3eJ3O2hYfuyIOlyB/k= 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=B5G6u8Jg; arc=none smtp.client-ip=198.175.65.21 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="B5G6u8Jg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768517269; x=1800053269; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=fQFVrrJvhOcF42eR0C7CrMxagcf0o/IjdULewIHfil8=; b=B5G6u8JgVNJbBHaUnmY7JVyGo9CJRctuGlcWuqk9fmNKnIAmysf7ul7A lLpaQFJPrlzKJfZVXT8zUQcoEvw14zKIpLIkbRsajt9Q6k3dgc/Be4JdK mRXgPhP6LunmnPQbLhERirax/FBbuzfy/DA5hcfPLirwgfNqqbhNwjRCB 72fFF8F+Cw2cxQ2yf0sZ6ceGHyHErb5c+KRv6o9Ok8drAt4VITx69d6tJ jD84kHqWnX6fQOPxV3i0NTYwXJU5JEIzhze3NzK9SuHe+U7HadVlA36Mn 0R+xKhZ39DyCJxkKhzH/BR6iZ+xeyg6bTqE2o9Xt9ATpqwbjgaYisXqbo Q==; X-CSE-ConnectionGUID: rglov05USFucSnjEyS29ow== X-CSE-MsgGUID: 0PaND2vVQYiv43K2lT+u4g== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69744631" X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="69744631" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:47 -0800 X-CSE-ConnectionGUID: VbqMkWIWTm+OQnJUBQ+zEw== X-CSE-MsgGUID: gspDh6+kSfydO0YgkzO1Pg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="204965439" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:47 -0800 From: Vinicius Costa Gomes Date: Thu, 15 Jan 2026 14:47:22 -0800 Subject: [PATCH RESEND 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: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-4-59e106115a3e@intel.com> References: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> In-Reply-To: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> To: Dave Jiang , Vinod Koul , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768517265; l=3438; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=fQFVrrJvhOcF42eR0C7CrMxagcf0o/IjdULewIHfil8=; b=vkSq/oIgsCaVMqt/Qds3dt8itJj3JZU9gLg2g/2jrf9bGuMVFzFXQbrn8H3FGoOGDZK8I2q9s 3JAP4Klip2aDEHcOX1hzcUR931WWPdjJJVgE2PO4BV+rRq8NKiRi6d0 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 --- 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 5265925f3076..b8422dc7d2ca 100644 --- a/drivers/dma/idxd/device.c +++ b/drivers/dma/idxd/device.c @@ -1339,6 +1339,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); @@ -1347,6 +1352,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 ea8c4daed38d..ce78b9a7c641 100644 --- a/drivers/dma/idxd/idxd.h +++ b/drivers/dma/idxd/idxd.h @@ -803,6 +803,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.52.0 From nobody Mon Feb 9 01:35:16 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 E89BE32F74B; Thu, 15 Jan 2026 22:47:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517271; cv=none; b=H8ko19EPj+wIdSIEe7CgkaPOoZ0ngCX1o41el4jL+Adhq/fM3vGdY3F3lXGb57yklxrn2UXLD76NCo/vZWqb5B0FuNzbyrXKwvsnWP1ntkKlCC22C3lKLMaKAzg8VKZ0LWi26ljpZi28bQJGReyUrtgU17T32aEh/30Y961tK5k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517271; c=relaxed/simple; bh=BV7lMSrUhko16pgH7KI3ki6fwDPKZHhE02VtGVOee/w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nBstwc3xZ3voF9HHzDLEL77U3Br7OChupGL9N6dQsBARxnNveGC00JZZ3FaU6NS8aZ5geb4qRBqZzvRU7W6suvT5FU5JAfNm4+bAplPf/jW12Gnj7/RYCAtUgQIUSnUUKwkd3PhSwIVG0a0TuCEcLtWtLLRssQfkOHqGLqhfjbs= 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=AHz3AeVi; arc=none smtp.client-ip=198.175.65.21 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="AHz3AeVi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768517270; x=1800053270; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=BV7lMSrUhko16pgH7KI3ki6fwDPKZHhE02VtGVOee/w=; b=AHz3AeVi8UYtt1TTYAcGSWHXlrEh88hNEcdIqzV9tYZwvij1nB8Mnyuw iJ5KisQfYKI2vLP1GamAmRhk+wKpHkKIPiUGLYImxArC1l96ZjNZQDeFW YnAYKfGE6o6zUk1zIAySNpOTZeZSDEL8YExQfjLKqXsRMFWfDZuErd154 oK8tnLJrzndlqcJSytLpEXR/B5gYbMH1zg7oIUiGXXXLRpvQ8sW4kcFv2 pbN4GZSKwONUeWoqfTVutNsqAZ2nBLsuNuM87oJYmA93wQjYzC+DMJFAk wDj1O0L9y+czUCTKtlt+aKQDDfN5AOsHMstuYtIAs42YcskCOvLcBnEZG w==; X-CSE-ConnectionGUID: ytuTPdTmRcWf5C56eDGTVQ== X-CSE-MsgGUID: Mvqos7bhSzezjct9eey+Sg== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69744633" X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="69744633" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:47 -0800 X-CSE-ConnectionGUID: U6RRwWitRYW0jw3Kq25Dww== X-CSE-MsgGUID: BSZRh1G1R5iWwMfRFgGSCg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="204965444" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:47 -0800 From: Vinicius Costa Gomes Date: Thu, 15 Jan 2026 14:47:23 -0800 Subject: [PATCH RESEND 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: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-5-59e106115a3e@intel.com> References: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> In-Reply-To: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> To: Dave Jiang , Vinod Koul , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768517265; l=1354; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=BV7lMSrUhko16pgH7KI3ki6fwDPKZHhE02VtGVOee/w=; b=Ks5nshQkRkJesxtTr7YbD6kRKp0naQc08LX8lPjCZra+dWOa50V5P1rTbgLVqxTHOmG+u/oHd eFQYFHCh85KBCxMUtpWxO1yW+gHtVEimYC/FXtKDBeT/XgCQKAa7P9s 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 Reviewed-by: Dave Jiang --- 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.52.0 From nobody Mon Feb 9 01:35:16 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 1A9C3330D29; Thu, 15 Jan 2026 22:47:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517273; cv=none; b=NjYGbfmSbIlc6HVB+IUU0B3O559XjxsrMOPJk+01mDiW2sQlrLpeXKxQS8qwpT4EA2isYNbXzOLyrjT855EWaGY3YAxztJsYWXuujZ2JdrK0KlL7kHiM1oCBmXOVCgVQeFKBWnl0PNu1M8B2qw9421+j6oQFyXOqeCQaWbYTiTc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517273; c=relaxed/simple; bh=PupvgR8RmYXOn4O6I8PE4/ridnLMAk1et8YKJIT3bcA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tV3/B/ky8/MWbeyl4Qkc8+wvmo3Qurt9+Rlucyho6aCrgupnEl/Vus1CBkSGBFoMHDm3DOzNU0l60a8CSJQm7DFmulGF/NvuV5wpqo/n3bk+iZrP6pUmtayAt9AUmVgWdTEZeiQGK3TvBW8LvQ2bB4E6vfdOUDDC9tMWk782JSw= 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=BWzomA+N; arc=none smtp.client-ip=198.175.65.21 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="BWzomA+N" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768517271; x=1800053271; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=PupvgR8RmYXOn4O6I8PE4/ridnLMAk1et8YKJIT3bcA=; b=BWzomA+NJe5KlC8dmfvRH0WSu9Y1ZRA/reip+r3DGM+2vxQYUSlXE3bR KgIbHmgkLqsH5h8Iq1/CUm8sEFx5RTA7f4Z0nwZgeDmUy+oi0C47g657F 55khfCQ97+RtueLfcbqwlaHS9a1Eyt+cXX3WprGLsBoiiuda18b8RQhM3 krE7Z1tX4YQU2AUXzfR/2qJq95sN2PzD0yHHdsx18NN7htmoYeS7BI9JI iyi1f+VURqYhepfg0sDlAfo7O1urKxEcncxplITkVnIhc3lW1V9KAN1GI 2XABRLLQkd9uEpKImYVg8/nYMHYp+dpWoK2S/qokbGdmHNZpGbC9HOdST g==; X-CSE-ConnectionGUID: XcduCf88QEGRTyEZ5DcJ1Q== X-CSE-MsgGUID: fACXQs/SQpOKS0UJ4k5z6Q== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69744635" X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="69744635" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:48 -0800 X-CSE-ConnectionGUID: KCUJV66wR0ypFhl8nacIUQ== X-CSE-MsgGUID: XCVSDmBcQEuPuLLD25Ixjg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="204965451" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:47 -0800 From: Vinicius Costa Gomes Date: Thu, 15 Jan 2026 14:47:24 -0800 Subject: [PATCH RESEND 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: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-6-59e106115a3e@intel.com> References: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> In-Reply-To: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> To: Dave Jiang , Vinod Koul , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768517265; l=1195; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=PupvgR8RmYXOn4O6I8PE4/ridnLMAk1et8YKJIT3bcA=; b=z3qZfzyyXDWZ5zXiVXX1TSXEUufGcbIs/iab7C1hm1lcDFMrRIIeA7xHAf0O/KX7bjkfWF8WQ nTCkp197LWGCMgsGOxYP0ehEFNGpo1f4WFX2EaXhXgO+cTpKij5+jSH 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 Reviewed-by: Dave Jiang --- 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.52.0 From nobody Mon Feb 9 01:35:16 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 422EA33121B; Thu, 15 Jan 2026 22:47:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517273; cv=none; b=ErkefhLZU8j6E90M4q1dLLhrVsQIpz250Jw/QXAEjicz6Gz9t8ZDneNzJmDOR84Hgmjtud15vVa2vsOTRKhzylKWnHXS5W1K7XonWgP72/+zyynFrzhq1xX0FvXvRzhTsnXX4ZHvai5dmzWOFxP9Dyt5FjfDHG9jneZQCXpFmUo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517273; c=relaxed/simple; bh=Fl4iu5qlLERicKEA6AODOo4UaiFTsq4rUJHJ2dZySbk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CVhmfR77maLFqrHHLahXTbxAoi62BQW4omvkVPVnB31wFQNiUWHeGkQd6qy0Zkq0E0/t56JOVL24G8tsHuEd7WQ5E4zUREXlgs+VmOKPi+vV6ZDW3/61o5n0Z1DBJE7bq7BxJknxS7gv+Ja1MqlYCCNDDYU+eG72eKEnz5wZXH0= 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=c4YTuZgi; arc=none smtp.client-ip=198.175.65.21 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="c4YTuZgi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768517271; x=1800053271; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=Fl4iu5qlLERicKEA6AODOo4UaiFTsq4rUJHJ2dZySbk=; b=c4YTuZgiGbGrHbYbGyO5pthvX0mn96dKq+FL2a1LEsmgiKcxFZHGs3Nb IbcHKeCmmRC0xAPGfL/ABgupY9oThkJHxKzmOe9tC3DMqu4mBnGYAiOZq ZE6SsXDTK3I0UuhtgUuH+ojISMR8rVsWCy/uvXnK8iFNiT6HtyaKY41yN EofmiiNDTnvP43THIdzh0pd93IZs9poyB3uUxWH2tQzdgFzszCDl+G23M Z6/ZjO3g8cofNJAV1iCtWMaBAuHGglXSoTSLF+R0NB5MzhcWwFkxkx09f 2x1BzyJVpNN8DDmPI12xQssPQMncm+lLe9CTrDXgZsTLG663oRSWkvjmj Q==; X-CSE-ConnectionGUID: uRHaXK7NSUOlQQW9/hj/fA== X-CSE-MsgGUID: ZVYy8V9CQoyFV/iBD00cpw== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69744637" X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="69744637" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:48 -0800 X-CSE-ConnectionGUID: 7A2laGH+RYCGsx6uDKcBgw== X-CSE-MsgGUID: IJ0VCn3hSP2oLe8QBYdl7Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="204965456" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:48 -0800 From: Vinicius Costa Gomes Date: Thu, 15 Jan 2026 14:47:25 -0800 Subject: [PATCH RESEND 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: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-7-59e106115a3e@intel.com> References: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> In-Reply-To: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> To: Dave Jiang , Vinod Koul , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768517265; l=803; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=Fl4iu5qlLERicKEA6AODOo4UaiFTsq4rUJHJ2dZySbk=; b=YoXR5sQCrcuxCSpZnFfVw7f6uE2prEIiGo03ZgWk6gf5pIr6uvxmwyHOP7GI6A/igRhavGv4P CPOYLIT1S0XB/PYLCtNdTcDB8RV06rXQt1w12gOW2VX6ne4AuJyub/9 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 cc2c83d7f710..6d251095c350 100644 --- a/drivers/dma/idxd/sysfs.c +++ b/drivers/dma/idxd/sysfs.c @@ -1836,6 +1836,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.52.0 From nobody Mon Feb 9 01:35:16 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 4A96933121E; Thu, 15 Jan 2026 22:47:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517273; cv=none; b=QdgUoo2OOZYf7N4SoXq4IEHs1Hx08WmYwc9Z2OUa+p9xLyrCchXvrGsg1TwZt13wp2qHHYS8Uj8z2UK3U7/37k1LY8eAgCAj8VV9M6RhW2qz3eaIxQ+yM6UNDWpCPnVl8VxVqThlT+k9sr3CgPblPiSrnasBERWlR6SvgQgfAQ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517273; c=relaxed/simple; bh=E6r10Vjgp+Cb+VrpjpK4E2zB/lECRR5DHSeVUSGCkHQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=L88shwFjcZA23HkdumpDvJUHGWhAlxfC6Cr9y/2IcNBQPmJRKSVFTVXhkowyY7Bs4/SxKTi/Yub8GnWfbCcAJGRkzfOcmtUhLYiE37Wc6j7t3yhRWn/H4deCU8X2wj9RsOKVNZMeizGSxk6Xb1ZsKaNt1QGvzCuZHhSZHzLin0E= 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=f5xAWyu4; arc=none smtp.client-ip=198.175.65.21 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="f5xAWyu4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768517271; x=1800053271; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=E6r10Vjgp+Cb+VrpjpK4E2zB/lECRR5DHSeVUSGCkHQ=; b=f5xAWyu4g/pKxYUpbXfjHVQjlASkJfC1/jr8GIVeV5fOJ5o3KKmj4GCQ vueIhXjSv05JIQIqiV5tVRgWc3vjv0f+BcMubL7HHow9xiUIvL5rkU2mm HbTuaRkYDkeQ2iBTdvhtj+Hn4gNvsHdYSaD1ZPx8ZKKMcpcRnFny1xV41 OJca0UG6Pzs7kcS7oEkf59cjbY0rtsguHJmXD1Jphg+AKIuwUuNdT1Tu3 HtY0PJIO9R0j1nhkUZ62vqGlpPeDO+StOFH2AJegj/pUdozvhzpYhsV1F 0J9wmDIk5aiMRO+Di8b95PmQWDPTgcfRoSgg9lIQ8e63/8HmBnLPEGE8F A==; X-CSE-ConnectionGUID: i+o/T1SbRVuLoVgJ0/uKkQ== X-CSE-MsgGUID: +iunSySwQne7CrLeLRL1GQ== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69744639" X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="69744639" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:48 -0800 X-CSE-ConnectionGUID: eLoMXfkMQWihKh4NlRYYKg== X-CSE-MsgGUID: 59lMaDfbTvig76EMi6h8BA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="204965459" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:48 -0800 From: Vinicius Costa Gomes Date: Thu, 15 Jan 2026 14:47:26 -0800 Subject: [PATCH RESEND 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: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-8-59e106115a3e@intel.com> References: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> In-Reply-To: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> To: Dave Jiang , Vinod Koul , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768517265; l=1614; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=E6r10Vjgp+Cb+VrpjpK4E2zB/lECRR5DHSeVUSGCkHQ=; b=GNFLQ+zY5HMpRrab3sX43uULogUkShaQmwb2BXQ/e/ri3eKr75cbdHiJF1gbPptcoS+RT8J1E JoYvSaEi5I/ARIkK9/z5xC0NePwZ9eAcI8YC7LzQnQEnxgqT265icsk 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 b8422dc7d2ca..6de61f0d486f 100644 --- a/drivers/dma/idxd/device.c +++ b/drivers/dma/idxd/device.c @@ -175,6 +175,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 @@ -382,7 +383,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; @@ -1556,7 +1556,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.52.0 From nobody Mon Feb 9 01:35:16 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 3CDDD332EC5; Thu, 15 Jan 2026 22:47:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517274; cv=none; b=GrgTIVLmGp8UE02fyXu3kUUWg8S2N34notUqoOEi0EAKhczAo7vo6miIlcX2Kx1H+/5oM+kSnZRyAZfz0WAAoHzwVvxPGlp1tv/g1jjjhnem2tmeE0ixyekZnP+0Fmu4JBnhjhrdgWqcF6aXpQolUPh9APVlYUI4bQwOiZX83mA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517274; c=relaxed/simple; bh=RxNM18srddSP28EYbn1kqrE9vIrJUCYN5TX9llVtj+g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MLyXDUmkHrRTSWlWiNCDbxr88nFDhwhdFZ/O8uX3/hCnXaTEtjgfZCAVaiBSZaLoPqi2tNtBUCEbxkZlDjuRTL36N9FSPA3z08+aI9429AwYtGSMVbuik7M3E1Uoy8tHILDRkRcqlBn3gFHMZ8O/tZByT5VxqwnPFoMqc23noRM= 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=CmPMpHZd; arc=none smtp.client-ip=198.175.65.21 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="CmPMpHZd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768517273; x=1800053273; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=RxNM18srddSP28EYbn1kqrE9vIrJUCYN5TX9llVtj+g=; b=CmPMpHZdqCMQtEPsV17kI/AN2dfYHvXchsxM4zUGill578bPC1PzMesa ly7bbRTMm/9NfvSwESdEQ/ihzfU7rQT9F+pnb4IPR6XB08iy6tHy/jvPv FO80BH8ODPxn6lNKOov6yrlHH5ou3iQZ5GiiuFPyzy3bmhOBd7Ou1reaM 4+p8fWq5a02NW8sB97saTU62EBB02B9jF+ThBLBm/OxpYNlG0uhshtoMf LWyvW4CWAqQWVFQoHBx7FyjqYIjuC9j+RUsrLOglr8VOT4i41Qlk8quS9 JOnQDaD6ajNOFyAnEf99kpksvrQ2c6pn+7ljXhB3MrExdh8zCSbIMD3TK Q==; X-CSE-ConnectionGUID: tZY0K3XrRtOoY98IweAvJQ== X-CSE-MsgGUID: gViNG0GmQ3C4RQlEh5UVJw== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69744641" X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="69744641" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:49 -0800 X-CSE-ConnectionGUID: Gu9PPzXOSQS7zMsO7G925A== X-CSE-MsgGUID: 6gwmj6nIRJq5xDdM26U+Fg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="204965462" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:48 -0800 From: Vinicius Costa Gomes Date: Thu, 15 Jan 2026 14:47:27 -0800 Subject: [PATCH RESEND 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: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-9-59e106115a3e@intel.com> References: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> In-Reply-To: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> To: Dave Jiang , Vinod Koul , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768517265; l=1533; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=RxNM18srddSP28EYbn1kqrE9vIrJUCYN5TX9llVtj+g=; b=hNczthOYzRh3UUvir4qSA225qd2hXRyyXq02aJsm0ZznM1LrtPhwkxP5x3kRZDAFqe63bgq7s /xnc1XVG+GgC3bNraWCXiou12m94ji8SGooI9SHrSdiWAhiEIhQFLaH 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.52.0 From nobody Mon Feb 9 01:35:16 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 3CBB5332EB5; Thu, 15 Jan 2026 22:47:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517275; cv=none; b=FLtQwQk2K9HHNkuLmA2jP+dmBcDuiNi2iqL18XJciUuCz/E89VRx+1ARzK3EeCInaKXpuRRVpLd7Wm3dSK0aBu0WzZc/LxgU1snekkNQokjWoTEajOIuKXRItL+Q7h86/5UaRTD8nj2Qf7SAwzK3DyB10eFtwQqUq7pYLZKXNTQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768517275; c=relaxed/simple; bh=KpLXdRoaik/x7bR3CGxKS3JXx10JphxEOhx8AoLyI2s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rbU6a1g2wBvNNE5ft0A3n4XzwKjCkOlgDGqSmB9aoFjjb2o6h+6EIo7nAfQ0anZwnsrwBC6TIPiU1PspiRf+evdqSmwS0E8Qg+zb9oV+1t/kXIwHCwALmmym4mLyGOsIHHGpxyNr7irCVtu30GzxsETGe4h5ePE9Tya/P//zg+A= 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=XoCdJUiO; arc=none smtp.client-ip=198.175.65.21 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="XoCdJUiO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768517273; x=1800053273; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=KpLXdRoaik/x7bR3CGxKS3JXx10JphxEOhx8AoLyI2s=; b=XoCdJUiOQ7dzkXmB6+a3Bj3hW7KaRK5TiMUYJBfyP8xkmhdkDhAuhH5I e7xTI8XC6as/i7379eGnwjgcRf5bnJSkzlVsuBwIJkF9obznn3HyIGwtM bIn0FBjrGeUHMRsxEuMcg8PgjmmfHOwpVY0H8LrI8Ubv7cHhGahhvg0gE TQdtQAPDQOqSDvES3GZ8stMktTGJ2f65Z/BXnXlca6RiKoaDe2Si1xo1q HzYKo1GlFrsB9Mw6M7JftX5yukxkA3VYxLwddTbGY9i6abz6rfm2NUyYh V0RsVW6wyyAo2CYIN6IGG/mXePVMkYcOWw+R16Beer7uO9E+G1hUU4sWT A==; X-CSE-ConnectionGUID: VwN+Y+hMQYa7jsR6S5wJZA== X-CSE-MsgGUID: ljSD+GMQRuybWqxOvcoA6g== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="69744643" X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="69744643" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:49 -0800 X-CSE-ConnectionGUID: S7qidUV/ReeciY5JYjLkbg== X-CSE-MsgGUID: zCsEdskNShCKtlwdsCQy6g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,229,1763452800"; d="scan'208";a="204965465" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 14:47:49 -0800 From: Vinicius Costa Gomes Date: Thu, 15 Jan 2026 14:47:28 -0800 Subject: [PATCH RESEND 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: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-10-59e106115a3e@intel.com> References: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> In-Reply-To: <20260115-idxd-fix-flr-on-kernel-queues-v3-v2-0-59e106115a3e@intel.com> To: Dave Jiang , Vinod Koul , Dan Williams Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Vinicius Costa Gomes X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768517265; l=1193; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=KpLXdRoaik/x7bR3CGxKS3JXx10JphxEOhx8AoLyI2s=; b=s7fgvYfnIIDYr2zT366r6NX8wvVDfhN9bsSmmokoPym6TpTNimB4DAO8Sud2C2AhvqF2K4CuT 67CfF1CFd0UB8wskfSzTva7aJF/ZtasRae3ftqcQ3aNhU7nqIfFfYZt 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 6de61f0d486f..be6ba88d1577 100644 --- a/drivers/dma/idxd/device.c +++ b/drivers/dma/idxd/device.c @@ -834,10 +834,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.52.0