From nobody Mon Feb 9 07:43:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 7B40B3A89C7; Wed, 21 Jan 2026 18:34:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020499; cv=none; b=pcZf0DWOH7SEQqpgdwB9ODNOwO/7S27sS+hczuALf7e1JJLuc9Pkyap/w+TDYfFGA1vrPkqyFCs7LGg5dGwXTk9wllAQrSfuiDxyiUDtYp1gmBVlmBBRUPU18DEffSjvma5mYMxdeVVIMR16rhYzAmpoDJELipLjr8+L+qy7bjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020499; c=relaxed/simple; bh=XLrTXkAciRqKGJJORhw6bznnGQL8Wr0o313Upu3L7M0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EsWg0EG+BdgmvNk5yva6JQGUnIV6hsZsQEsgbcTRkcY1AUX8wAQ8fWQkL8SJdA+R++eYVjIed9RhMZiZsHgtljl9pkrl569/yC3GB5bU9alu9sgt/9nLSyEbBng+WFrZi2hRdCq7z0WnTXQcm6YgXqXIODMdZw6mdDCYZeVO49I= 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=lpqALLm8; arc=none smtp.client-ip=192.198.163.15 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="lpqALLm8" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769020498; x=1800556498; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=XLrTXkAciRqKGJJORhw6bznnGQL8Wr0o313Upu3L7M0=; b=lpqALLm8pXP7z9fwlOTfmOSpPZLoCQsh8fUZRQRQsL0RCTsWgxR68Xhg UfNPErYG04u3VF/kPNkYfubI94UWlU5C1/zKK0XnbmFWnE6/ck29uHK7l IxlYW5sKCrZ997mPWBXi8Lnf5BHsAEIul3Xp3HlK486aWKN6NbpljcMY+ 2JepZaQooC0Fb2D7XOqPsFla7z74YXwNk5mRB9KZ+4mfw9agj654JMHOa zovd2Xs1ayR3cnVb1O4gnuaCvXJ3IMeYEwy2kFl6g0puioxcpZJhSqnSy qiCfhZzIOb8FJi5Kn9NzIajC3DwSf18AI3sBacZWl+ecQarzmUPJdzLi4 Q==; X-CSE-ConnectionGUID: PI8Y061BRVeSgnXvAOXwDA== X-CSE-MsgGUID: OSn3zYvgRCiHh9AAxLomvg== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="70349893" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="70349893" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:55 -0800 X-CSE-ConnectionGUID: SmvHdUHVT4CzV2LPkUx6Jw== X-CSE-MsgGUID: b43BaP6IShOV8PcslobGAQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="210678455" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:54 -0800 From: Vinicius Costa Gomes Date: Wed, 21 Jan 2026 10:34:27 -0800 Subject: [PATCH v3 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: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-1-7ed70658a9d1@intel.com> References: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@intel.com> In-Reply-To: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@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=1769020494; l=2455; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=XLrTXkAciRqKGJJORhw6bznnGQL8Wr0o313Upu3L7M0=; b=BqmqZURATwpp7B16yr+70ElZYn5DDz7/7ntUJzqJmNCX97dIk5sK82PBgjgbO+abH6xy7xMSG chSPULDUzNuDrSKD+kipKVETRxMUPPEK4i6DA6EC2l37hp20cxeuleC 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 Reviewed-by: Dave Jiang Signed-off-by: Vinicius Costa Gomes --- 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 07:43:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 882EA34DB6F; Wed, 21 Jan 2026 18:34:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020500; cv=none; b=nZwGWWauHGBi02iA3yXBUDa3nMCG3WjnFMzNDwMDbUBv+dqmogYMcKl3U7nmSRdzfu3E/e18ArT+b/MDR18Y5ZEy2TXLdN79039tpIbeGIvauoAIIz1HzP2nSnhXUuPCjnDFXH/iwqyANjX8YVhNHJG3rAckd0SoB9LiBQgwzbc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020500; c=relaxed/simple; bh=iLD6dAIQdTx0q9g8zeHSLNaFu3s5+AYcoK5gKpCmhiM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JFfRXR4HzN2F/MNn/SKOw9MWHjUmuicf5ZQo4Ii1dkw+axi2JFEKvlRlJY5AzUv0JnKnKDwIlrJjmpfBuQstDKJaqgiNiW86mjX9RJ9glacv72mYKGkIzUXDwvuoo0o0DpFmjzeYe6XKBRBo2K22fSPukN9vuqjdlyCliaNKEKk= 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=awYwAWvh; arc=none smtp.client-ip=192.198.163.15 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="awYwAWvh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769020498; x=1800556498; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=iLD6dAIQdTx0q9g8zeHSLNaFu3s5+AYcoK5gKpCmhiM=; b=awYwAWvhbiaUnW/J/P44DYSz9+HEUiTJGsOPOFWKtRZpLBiDaUpSA4gt tDXI0p8JXBBvcn5DPMLQAv7UGLu/Y+O1MxBuCCLdoHbDkDYUoTCT+I83G QvZyInLm9xFTv9ZkVK9E61e26BV2Qx8qtCGuIoztoOEyExnU9/l5UU7l0 TLEbWXyygJFm6k2VZRnD4OGM7+XiIW0gMLHJW70NJXTqsP4y70OOh5S2/ Hq8WRotKQ536816wU+bOV+3w4wS7ulAkQU2rJh5z7oh8/ki8WZF5MHBO5 poY4jeD/cf7FxeMaf7kdPOh6bfSp8pFTwvLSSFY0Xooh0afCWrhPPO7xK g==; X-CSE-ConnectionGUID: 3d5vHcATQsW97IIdHYIMYg== X-CSE-MsgGUID: hnWrBXtzTi++EtZFvr6xJg== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="70349896" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="70349896" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:55 -0800 X-CSE-ConnectionGUID: 6UT2XrtuTjCj+ZtiZfqKrA== X-CSE-MsgGUID: /HNDS74OSLGI87L6W9Bq+g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="210678458" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:54 -0800 From: Vinicius Costa Gomes Date: Wed, 21 Jan 2026 10:34:28 -0800 Subject: [PATCH v3 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: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-2-7ed70658a9d1@intel.com> References: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@intel.com> In-Reply-To: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@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=1769020494; l=1623; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=iLD6dAIQdTx0q9g8zeHSLNaFu3s5+AYcoK5gKpCmhiM=; b=Py66MCNRYtLQtiCAcjegedy/qC2lV01/22JrVzegCOCVqqrGuWNZ2PXUBj7KqhHmwKCAR6Kt2 NxVzTpLN7VnDAeAy4cYB/CSJqBDuj8m3Jksy0ftjgmhFrz8I6uGDrB8 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 07:43:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 496E13C1FC1; Wed, 21 Jan 2026 18:34:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020500; cv=none; b=ijKsEQunXsmo3t11Ml77BKjaQRVH8NabnpHtU7kF/TXcJTCnCBwjSuyaC9IuayXhh7LZQS9IS/AKK1iYBNQ8FmMBoqK0KM5c3Lva0sL5Pe/qq28sqdhnGLxBK52fC7L2iiR7cO3SqgpJX2D9xo/W8ipn6Xfu4UeSJivGLBhVr4o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020500; c=relaxed/simple; bh=TD0ye6q43JjiW1lwMlhZYqmGxxTrmbilxB5xlOIjE3Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JODzd4KQxr9WUTm/UStyjFXZTf0EhqGRk06mU92xD9Ew/EmQoQP9HR4b5QOwMRX8ycAR9PSSKbvKvzfJcwh5vx2PfAIcc3PifvnLutC9XEnv4eu9sflQmxAM/dP4ZDWdaSKrMkozgyP11kGEI/5DC7l9HVCFXuXVXD0NE6EHJ1I= 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=Wz/x7wak; arc=none smtp.client-ip=192.198.163.15 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="Wz/x7wak" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769020498; x=1800556498; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=TD0ye6q43JjiW1lwMlhZYqmGxxTrmbilxB5xlOIjE3Y=; b=Wz/x7wakABc2KaAD714WhT8nHj73YR5QKwsdRFcq3CCJPw/fG3CruyQz ATxJ+dX2aWYdfctormcqeJmV1WsZTepv1TEP2nTorzX7KM0CkMKTDXjJn Sf1lf9sAUspPyRjRT1Z9n2uoVv6FUJUYHtZhnZC7ByRikL/0uUL2nLbqa Oe+i/5Vyd1Oyobtf8mKLZ+mgYpixzcBgQQDBvgZgVvsQBwpC5DE0D9C11 Jom3F0Xq+8l8mG027GgoKlBH94xsXVafx3ksV4nNUv6yo2RDZ3H15vBW1 By04e3cvubqnlFfMvjKyxtFDaM9d4bTASpA2ik/UB5z5EPRUwF/mXNEFf A==; X-CSE-ConnectionGUID: w6Y/1Nd5S8WiDcUMPpgTpg== X-CSE-MsgGUID: s42oRmHDQhue25fV0Ax4zQ== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="70349898" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="70349898" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:56 -0800 X-CSE-ConnectionGUID: T+AfmtA1RSy9eThTRyt67Q== X-CSE-MsgGUID: 8owLhS8HTWGBdnnv8oVASg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="210678461" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:54 -0800 From: Vinicius Costa Gomes Date: Wed, 21 Jan 2026 10:34:29 -0800 Subject: [PATCH v3 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: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-3-7ed70658a9d1@intel.com> References: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@intel.com> In-Reply-To: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@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=1769020494; l=957; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=TD0ye6q43JjiW1lwMlhZYqmGxxTrmbilxB5xlOIjE3Y=; b=GzOyff6yvKnVy6gi9wmrZCSNO8hHXNFzPGFFfCGiQ7uqNHyVA9HuS4zlisukyM7mu3eZAD6HG hU41/iYQ2zsAf9vzNacoCMWRNl6/TPp4nRcCnx+rqkKzpElZ34ZAjfQ 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 07:43:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 BA8DF3DA7D3; Wed, 21 Jan 2026 18:34:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020502; cv=none; b=M2HrfGTarTwoFX/3LuQRn0wZEOiuN947Xj1KTPTDC8zqVWo5mfT5UAY8LcvHj7SHCBsaCT+py8MIOZWmZ+qsjixgWyHENXmxzFrBUCurflB7v3lVYCz1LTQW/PrH8oCXQt5IkuJU5gdjx/ITEBcsTv2ZcytLR42uWjrySILrnlc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020502; c=relaxed/simple; bh=njKeUhSH2tyS6rtMuzBKozakzz3C8aDQolCg7dB4/r0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z+s/KWf28O/BqvDXwjyQaso0y7VOKrvzHni/Lkc7LJBz+EFPBN0n3gc7lll8LszegiWmF7CSsdkEUrrcKnTDNv+NrkLhM5LucjFJuEHJmlybxXbBB+0h+l5oqO7OarumabKoG2XwRNGQmh4LfLbOGVwrPFDBbVsC/nPMewde6ho= 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=GexNV5LH; arc=none smtp.client-ip=192.198.163.15 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="GexNV5LH" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769020500; x=1800556500; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=njKeUhSH2tyS6rtMuzBKozakzz3C8aDQolCg7dB4/r0=; b=GexNV5LHG5nggU/KcyPmDEX0fF0VpAycKaXOxrlBJJNl/dchU9M+Ufdv GesbI+6oQj/suypDeSRC+pzM6Q+J5cyyIxakSGMdKVSW33/gFjn+7eDqK Aga00FbGCul9swxAvJP8E4sQIfjWqWUY30DZliLRB1hZ/nINg2DK36nlj R+Kc0evOsPUI8ty5Z8bIN2G0J/7P3ZZbPm2WXhdqSUSrRWnUUuk/5Ms7+ E4hUdqMJQgE51TrJJxtd9gGOSGGnUMNHLCgFvBXJSgcRQzTwyPzn0OB9s ojMLHm38hHZ7fInIIEJ7ja3E/+F/2Der+A1/GrHSiA7Fbk/7aeP1prc4P A==; X-CSE-ConnectionGUID: 2ebm2cSYTKKjYlSWY8TY9w== X-CSE-MsgGUID: HuV8bfqNQVWe6RUeGtzLIg== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="70349900" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="70349900" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:56 -0800 X-CSE-ConnectionGUID: /CuBAsVCRk2RvcMo6GuLVw== X-CSE-MsgGUID: eno419LVSjSmcsJEhCI/Aw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="210678464" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:54 -0800 From: Vinicius Costa Gomes Date: Wed, 21 Jan 2026 10:34:30 -0800 Subject: [PATCH v3 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: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-4-7ed70658a9d1@intel.com> References: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@intel.com> In-Reply-To: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@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=1769020494; l=3474; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=njKeUhSH2tyS6rtMuzBKozakzz3C8aDQolCg7dB4/r0=; b=vReA2dfA1EMxv0xJsiHQlQFfGoJDX7xrmqbSm6u1CEcXXobz8m7bkb0kYauxdD+lu5VnVo+Qx A3s2c5BqTIYARtMVfnnpyfzvj5JgmcD7O5XZGsnTWy2GsMMTYn59yz1 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 | 22 ++++++++++++++++++++++ drivers/dma/idxd/idxd.h | 1 + drivers/dma/idxd/irq.c | 16 ++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/drivers/dma/idxd/device.c b/drivers/dma/idxd/device.c index 5265925f3076..5e890b6771cb 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,23 @@ 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; + + guard(mutex)(&wq->wq_lock); + + 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 07:43:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 47DE03D1CAF; Wed, 21 Jan 2026 18:35:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020502; cv=none; b=NvPA/sVs67PqxhvaW+0yOfnGqVtKXvEylOxGI0MWf979+raSIjZjkv/N9D+ebiCaVFTHnUQV6Ww/MOL1lW2KUrlaCb8ZI1Mm2r0AQRIQou+nUP5vHdPrFwtDKa5FP7E39kVGqR+9r6tZuqbaSdXQaVa9QZy/TBy2/8nKEVwgsCk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020502; c=relaxed/simple; bh=tAQS2VaVQs4OzjvaAkumRVNNh21fccVfyEgiBZ3K+ZE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hYPMHiI8BnKsCMk8+HLkG1sT/86Wdtf5slj3+u3PM/CAq/FDRQmtvnXwZP/+FSGNBK8RoEudKk8fh9OSdRDXGriClwnaZYPgj4Va+JIgkB0Q2JfR8ftF4KxMII4WM2z7yVenPrKERhzTveDs0CMXsp6gDyxP7a0G/ZGgqjwlXa4= 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=k/CYQV7A; arc=none smtp.client-ip=192.198.163.15 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="k/CYQV7A" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769020500; x=1800556500; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=tAQS2VaVQs4OzjvaAkumRVNNh21fccVfyEgiBZ3K+ZE=; b=k/CYQV7AkmW5CIDETRWLQCu3uKrSRZlZ75YL3N+Om65Byn54v26mrZeM KtDuhP1lvtpiPBIW2YTsD5YBb7OVCUF8i/xFBog321XBQ5aU5Gei9odvj yDlT+FQYqrCTZv2DtZLc882KvT4y+VRiK0mzRhgA8xHPS0upktX2gCtpG /vdfUvIinZWbKvqrIQJdYdBrPJHHNOdgmlJ//gWJ5BQzkqm+7czrfem7p f8lyZQZ+CA2VMhQxHJv0T/q662wWC8PGxw96UEfaT4E1054/5O9N7iJMb fqULjC3r+OV+qDq3rz30RB9R6MnWbX+W3V0WQCI6ihITZdNoPia3L10d/ A==; X-CSE-ConnectionGUID: z3JE1ZaeQ5mAhPPkzz7ZxA== X-CSE-MsgGUID: JF2QCPngR/StS3X54TcjrQ== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="70349902" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="70349902" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:56 -0800 X-CSE-ConnectionGUID: YFZ1G1zGQhWOUxi1wil9JA== X-CSE-MsgGUID: qHPMk3sxQrONk8LvpgsKpQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="210678467" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:54 -0800 From: Vinicius Costa Gomes Date: Wed, 21 Jan 2026 10:34:31 -0800 Subject: [PATCH v3 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: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-5-7ed70658a9d1@intel.com> References: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@intel.com> In-Reply-To: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@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=1769020494; l=1402; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=tAQS2VaVQs4OzjvaAkumRVNNh21fccVfyEgiBZ3K+ZE=; b=ftBVqy0q4o8l0XYn2oRpwa3MVWnWT3S2oP/NtM3trpTEjvwE/SJH3E8kAf88XlrbzCXq8o/KB QyqfgkADUA3BME6Dixerwy7s31tmb1DpuyFKei1OaNHMZ9HTsCjR1gn 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. Reviewed-by: Dave Jiang 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.52.0 From nobody Mon Feb 9 07:43:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 A018A3DAC13; Wed, 21 Jan 2026 18:35:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020503; cv=none; b=JttOVpFV/WQYPrCNGJtEFKlHOE/qPbbMEyiHeM6bmFZp+KOc0/JQaSmeb3TTw/Ilz35mSs+RpxmDtRzBQOGSsd3YGy1oWuqgOHPGGHzRBvnjyoeNVBpxCN51d26ZP9I7+XuWK4V9d/6quKISoOaYvefEdaGw+UG0i4Xk8SVdh24= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020503; c=relaxed/simple; bh=xB8N5q8I7kbV6Ztld4qJHNyrVrvAmYmEBJ5LDbjmrww=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ROvQPczgbEhAJgEruHubMWAVbDdSu8I23NXfdZPYeSX+GS4JVa61z8yUb20oegz2PO7uUmQeb6fcBYCOlcBhpr/Gi+f+jhy5eXFKKIwpANIqI3vUyzIh5qxXQ338kZkMA6I/efzP3gt2pDobiNOQECCXI5hjjoAMQM2zbdNWqE0= 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=jS17zQP4; arc=none smtp.client-ip=192.198.163.15 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="jS17zQP4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769020501; x=1800556501; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=xB8N5q8I7kbV6Ztld4qJHNyrVrvAmYmEBJ5LDbjmrww=; b=jS17zQP4m4GwzzuOPelkAXQoEqaNBvw+bGE8PKMgA9U5iOIP0d59HHch CGW4GHDW7pn0+ItGFg8OIaBkut40eMOTZcZyLqzhS7C+tNd3KQ+LQJlvt l+pGWRAvI9xFGpToAEuTXdeXtj9FQjLT7Xl8rJdCoMDXijE5J97PtjCaE ZYHBfGlMFWrgzGffSgtoHOwh+f0kSaEDlwkM9cRryHe58FSPijDxD4OCy A/JQRG36MKxwm7bzo8HrH+/YnEDbON4sEhJJUChmiSBLGg8ENAEBtKlLa NkqKt1IGFS0xo4rDbtfNFJxtB0cJQEIVhcZochE0mEkSCEBm0NkXtUmSl Q==; X-CSE-ConnectionGUID: I+9ppen+TjWxJfBEaR8//A== X-CSE-MsgGUID: 0AztEto4S9SwWiHBpgoJQA== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="70349903" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="70349903" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:56 -0800 X-CSE-ConnectionGUID: ZwFd0iIdQvO6QBU6T/iG4Q== X-CSE-MsgGUID: 0Fc/F5WaSbiF99utDK/wog== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="210678470" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:54 -0800 From: Vinicius Costa Gomes Date: Wed, 21 Jan 2026 10:34:32 -0800 Subject: [PATCH v3 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: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-6-7ed70658a9d1@intel.com> References: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@intel.com> In-Reply-To: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@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=1769020494; l=1243; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=xB8N5q8I7kbV6Ztld4qJHNyrVrvAmYmEBJ5LDbjmrww=; b=9817eWM1ojIb1MBqzdUfPKQcCcmymfDf+Xl79WIG3tg354lYv2HRVxQMyBqT/jtvVz3AcqnC8 rU6gAEuDfR2AhuGzuzyo0mMWEZy+eW4WVe0Nnfs1CPhet4Z4Va7sLu0 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. Reviewed-by: Dave Jiang 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.52.0 From nobody Mon Feb 9 07:43:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 4C48F3E95B7; Wed, 21 Jan 2026 18:35:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020506; cv=none; b=Im2Zh+e+5ot+dlSHgjdq+sRm2P4p4Wy+vrhJAuegJ8m+t+PLu/ufQGtbWjUEnk26usYguaa0D8BXX8pA6K9UM/EbJ7522QcI2b0NmYn+idNYQL+2JMHWILLIVzwn2734PRoFdzHT/EUM/XDDlZAG0Ivwd2XBjb8ObqAK9ukHoWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020506; c=relaxed/simple; bh=Fl4iu5qlLERicKEA6AODOo4UaiFTsq4rUJHJ2dZySbk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=b81c3MiItSiB/jV4r1LgKo+kAGhPCy/LtTpPg6uNZ0JUJBeJT7Ua/IdrVT3IP2rdhCJb+uqiTYG6r9kB6NauF/q5i5fGW/NCn93WgqULyCa5UC0CdkJpepz2s0FKQfFvj5N9avD2jpSFVIMwn07GNXyM6mI3mnpe0ruZ8jpfZwE= 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=X6ceG3Rr; arc=none smtp.client-ip=192.198.163.15 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="X6ceG3Rr" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769020503; x=1800556503; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=Fl4iu5qlLERicKEA6AODOo4UaiFTsq4rUJHJ2dZySbk=; b=X6ceG3RrAUpMBVaZ5fDwuIMeian11cn5U+OcYol/IqD0IOnR/YQg2x1F Bh27GQeIBBdClQ3H/lKRKL9BVcnb/jOzHT88fpkxf/C13VbAspG6kZdUK C32csuxElmqh2WKN6OpN3xstkGUOSPKdbw/6jsAJjCSirpnPmr9vPEtS3 3ZAYPW/mNuD2/y7DWu/w190YmyIxESXtHTVmcseRYezizUl2//OVYUS7Q qhMpacojHOFwYY6BWCDoFIMKW4EyeXaVchG8sAP2jkaVwKFSlgFSuApBG p8EnYggdK5QfkuuSZDB8NBsYsORDt7WRSmgvU6JEGsJHQL9tHiorVz2Ix Q==; X-CSE-ConnectionGUID: pUcarnwuS2edC7PzDetLDA== X-CSE-MsgGUID: DYAImknEQ5+VRl87hymt+A== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="70349908" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="70349908" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:56 -0800 X-CSE-ConnectionGUID: SKc6xF11Q5+cgMgOv7vh3w== X-CSE-MsgGUID: NjoH2fevRsy7o+X8ajCKxA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="210678473" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:54 -0800 From: Vinicius Costa Gomes Date: Wed, 21 Jan 2026 10:34:33 -0800 Subject: [PATCH v3 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: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-7-7ed70658a9d1@intel.com> References: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@intel.com> In-Reply-To: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@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=1769020494; l=803; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=Fl4iu5qlLERicKEA6AODOo4UaiFTsq4rUJHJ2dZySbk=; b=STqb73qmfrW7fdSxfhJINvLLiHHt7bzueKB6UlStmKKV6EiUhd9bcjUbvDec7lny59VQBO2su tKlqimKOBv0CZzvOXu5kF9ebEijIR4ZZP6hnBSOiGxLpVfanx8yc3cc 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 07:43:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 3D0CA3E958B; Wed, 21 Jan 2026 18:35:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020505; cv=none; b=V2kawdBAGnpm2XPgVMqSmFEOPOi/PEnDRSsTnYYcL2h+oGvq4YQhlp/q4HcFU9kRIwwuuVydIIF2V7znwhNDbafVHFPQLp1PVs8AFoD5d75qWpu0ijaF9t9C5UVsF8O5psJ8U3rOMkRrkmC0gIP8afgSGl6mF3+K/Q3VewGoJTU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020505; c=relaxed/simple; bh=tauCY6vkWDYmy1V08ddQkgcF50qlMxCqdAyDBGoLsaQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dxMv3yFfW/1j9Rxw6dLVinqQNMZgnZqs3709m0+Fxx7UhyL0/MJwi3VGmlZroM3bPkd0umLH2HVafx7ZBHirFJHu8zpopohuELOxNkruiVI2jwMPCh8XShi0v7Djz1J58xlpR1jLvjwF39wV2z8AhFM3Vk4CRHQ5ukpAjYa07/Q= 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=QTM0voLX; arc=none smtp.client-ip=192.198.163.15 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="QTM0voLX" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769020503; x=1800556503; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=tauCY6vkWDYmy1V08ddQkgcF50qlMxCqdAyDBGoLsaQ=; b=QTM0voLX9dGItnzi9AsKM6UHaiKzzlosBIemPOCvBJzM64YZ4qlsp5JV m4Rnejta+29NklQPcKgQ2SxxgfrHypA52LZocDa/HG0t9sszpXRkblV9N AUBC5xe8vxjRQpXRsb0tM2Gyamwr5JMVPMc5vtU6APWWFBroJVEU60sve YhGXOFLSfy2LYwIxY6HdF7Z5eOxgW+8a47uotXn2k+ezqFMXHnG2Hygid Hs4DFtfhaDCWrlfzMXZloEdilp0vPJY+RrVc0XVPT/B+MNppD/lRioXsT 3Ta+bR7LrjQ0SAzUW7aj5xaDUs5+0pxwwM8uVpUD4FaieF+IKJhcXLpKa Q==; X-CSE-ConnectionGUID: 84JReQBkSCeZ1YnKZjK5vA== X-CSE-MsgGUID: YKgmODaQQ1yD5Y8eQk62vw== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="70349907" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="70349907" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:56 -0800 X-CSE-ConnectionGUID: xQHc3+TiTgeTBEz5gUYIzQ== X-CSE-MsgGUID: KHDA/cSrSJqSMZ4DEC5q7w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="210678476" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:54 -0800 From: Vinicius Costa Gomes Date: Wed, 21 Jan 2026 10:34:34 -0800 Subject: [PATCH v3 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: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-8-7ed70658a9d1@intel.com> References: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@intel.com> In-Reply-To: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@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=1769020494; l=1614; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=tauCY6vkWDYmy1V08ddQkgcF50qlMxCqdAyDBGoLsaQ=; b=5czP+2/5pJlJ95kmkdwSBmufLmSBIP0xn5Ub7uHsQ404vHPNhvMmJDHD6J7LkinL95IGUkYA+ BV3boBJxCf+BLqP/UXfBOg077H2CvW5Z9RlBpKyzC/I5I+BuT3Yc96L 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 5e890b6771cb..efd7bfccc51f 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; @@ -1558,7 +1558,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 07:43:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 EC0E03ED10F; Wed, 21 Jan 2026 18:35:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020507; cv=none; b=YAsuWwgyv/Ccmsl4Fq9ZLmf8fmSjNviDCbpkeLT+2w9yo0zkMcB4MO1N7FIHgPUeCvf/f2K4Cvkx0uSTowpT+zdza9D6I3Dvn/TSH9gAy4xAwxV4fJOxHbWpEJTL2Rkx82GeGALyXpklQZ3iP8FaMcgW1RP4LI9GRGa/UQAam/4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020507; c=relaxed/simple; bh=RxNM18srddSP28EYbn1kqrE9vIrJUCYN5TX9llVtj+g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=t7OO7w56QxepyM3Q7sh2fo/xgp16St/WVwXCXgrCPwMLHZYp+DVXWcZIdoIAHIy440yEUMTYGv17aiwEYVOt9/iFSAaxxR5LUhX8onzjde+Qml19593KXXyCZ1bArUei5X/grHUjEyX96ZlhzeoF0asY7kdx3inw8/3XNc3cAX4= 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=io9CtvBG; arc=none smtp.client-ip=192.198.163.15 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="io9CtvBG" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769020506; x=1800556506; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=RxNM18srddSP28EYbn1kqrE9vIrJUCYN5TX9llVtj+g=; b=io9CtvBGQJIL8OiwE0g6KmiYVk/140/mti/K6HsKlF6Z6IgkMbAyqBMs QARC7H8FRFrb3UO+tNV10THSQt9EYhF3pOh9J9vEDanToAqTybH3txDTP 1hFM0Z+FwUNP1PQhE6dkvW10PV9/epsGjIgjbo8fhQjLoKBWVOxodIlqC lcdlx6FuSOGXF1aIdwUJeF2BDXuM9xT5iFuB1uFPz5K2C16lu8YAKwfvj bM1R+9rfklJCw+0/yrhoSDW8CIMMuxZYlDfC4bQsWO9xPcjC5JW4jFGDl MCzxK7anDVeo7MZvCNqrGKu92MHr9HzAIdNR5y7mhwXnT7p6UdnAdiv/+ g==; X-CSE-ConnectionGUID: 9L9CTKtMT/qjSOe8XVH4bQ== X-CSE-MsgGUID: +zgPfHhqT8W9JrxeXcEspA== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="70349912" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="70349912" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:56 -0800 X-CSE-ConnectionGUID: m2zDAQFSSFWWVLr7nSr2fg== X-CSE-MsgGUID: sbYUW35tTjOj9BCSKvixEg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="210678479" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:54 -0800 From: Vinicius Costa Gomes Date: Wed, 21 Jan 2026 10:34:35 -0800 Subject: [PATCH v3 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: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-9-7ed70658a9d1@intel.com> References: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@intel.com> In-Reply-To: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@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=1769020494; l=1533; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=RxNM18srddSP28EYbn1kqrE9vIrJUCYN5TX9llVtj+g=; b=C3YbDT8SGcWhBZ2paEeX8ogJ3KK8AUWK/v895QEfCTMejlyDwTrUf0+0b0car7hUEZ/NF9sJj hkBTe4POj83BtARLcgDEt5lWNH6j4sIeyNNa5n+O918yrZBt+FjSale 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 07:43:22 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 EDE513E9F6F; Wed, 21 Jan 2026 18:35:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020506; cv=none; b=lzYPZIZqWvGerA8/Ah4hi8FLUqVmbIPcAr49AsZuqeAAFdwQ6RWTfBoZMQWpnGBh7cPT1xBu8a4o44jWEPfYLPHcdmfjondduAl54T2GOAgruMIp/j+TiaXKJvkT57WOMB2dEAvmyBam5/GzUXr9JYU3XanEYCv1NC8g3dIEixA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769020506; c=relaxed/simple; bh=8fs+IRPI/uJgEhAeatUkd4esbyaSZkFcjLl5G4+kxm0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=n3MTdXBA8WhfedYRwFu6AxqmqmCo9TAXaf79cWWU2TAtG5VgWPeXkgPrNPKRJfzhth1qPSQwame3zLKfcfm3GKqq9K4LG5DAr2+XR9uUhuUm8SGAcF6Fzxm8pSvPXsi/jEas3a32w6ftIy5GwauEnPp0kRpHoM0iNz0qd5djiZ0= 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=dE8+K91h; arc=none smtp.client-ip=192.198.163.15 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="dE8+K91h" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769020504; x=1800556504; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=8fs+IRPI/uJgEhAeatUkd4esbyaSZkFcjLl5G4+kxm0=; b=dE8+K91hqS7dGkmcwJwCPyGloe/m9UNxOVCxVyAJoinswvALz4S9uU42 wfDEEA6XSv+P3DCUq/psyjFFUoDlGHUY6nTKTJ/qzYkhgVvYcsGfeN5GQ RU4Dxh+QrrhjYg7ZoW/Z2a+gkZY4IYbARMDX8Gyx4/17escY7C0bAg+8e kWCrdIo1o+srHBtuxl7T1UH2V5Mcbmdy2ASyQiHrDCpwyMdN1UkR3ivnN B6x6N2+QwOuJu9FFz3dGwyRjdKFFyxF0WsKgq5zb25xVk+fm8USiNHNU/ okEuqqC2ctzV8BJMyyyet8DyGpbswftTMfIiADdKf/o6JAw9ku0vXYz0L A==; X-CSE-ConnectionGUID: 1pePCQeJSouADX1nDHQ6Mg== X-CSE-MsgGUID: HtKF/hdgSNqLdyhsXXympA== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="70349913" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="70349913" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:57 -0800 X-CSE-ConnectionGUID: SC88BCxxQuiGVZTqrpjqjw== X-CSE-MsgGUID: LJbKSTtATkqroULb+y1oVw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="210678481" Received: from vcostago-desk1.jf.intel.com (HELO [10.88.27.144]) ([10.88.27.144]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 10:34:54 -0800 From: Vinicius Costa Gomes Date: Wed, 21 Jan 2026 10:34:36 -0800 Subject: [PATCH v3 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: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-10-7ed70658a9d1@intel.com> References: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@intel.com> In-Reply-To: <20260121-idxd-fix-flr-on-kernel-queues-v3-v3-0-7ed70658a9d1@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=1769020494; l=1193; i=vinicius.gomes@intel.com; s=20230921; h=from:subject:message-id; bh=8fs+IRPI/uJgEhAeatUkd4esbyaSZkFcjLl5G4+kxm0=; b=ADnpNWhBclc3WYUa3atOVvFjQ4GaO2apF4NKCwwB/iIIaNtzYL16GxlCS0keeZktfAYuE1G4V CT4UsH+DfDZAm39W3CMLjIX2X4IuWhbw98N+UDyt9MyGTOUU+b1kaQy 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 efd7bfccc51f..131138483b87 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