From nobody Mon Jun 8 06:36:46 2026 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B35A03ACEFF for ; Mon, 1 Jun 2026 13:42:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321333; cv=none; b=KduOYvzeWnKm2JpAN+2D4UUWV1wU3hIn9JML/29JU0FoBDoWvd2iEtuS+d8pPZsqXk8oQwX1ZHRTIUHQCih1jYwswHc1ZwbkYg8EswkYgrF6adIP/tw9Qt8/2beot0+sZPIRLcXk4X6D63b7Hm5hyt1IdSjY7fXvNaGxY8sdRfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321333; c=relaxed/simple; bh=0y/oGJrRC3jE45D5ExsR9EmSG6axfTipRPStNl6A4f4=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=fTZesD1OPRgtII9BYQNXJoW4UttcoF5Ku+p54lFuZ5ahdGVbGqxjw8vlbUBmAfhw8BSOlLMSB/mmNekIp3CvJLwA+/sOjwv8hxTScqPye46Cu+rnn2L6oAeTvGFdJCnkeSWcq58NSpXWkaYm/SHyqdY9k47KeGyKZLmufaBB1VU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--praan.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=KZWr+L07; arc=none smtp.client-ip=209.85.214.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--praan.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="KZWr+L07" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-2c0c20f7581so15648295ad.0 for ; Mon, 01 Jun 2026 06:42:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780321331; x=1780926131; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=3cDewhvIRKNQtJoPSUw7b+ZCGblkR4c9l/2JildOedY=; b=KZWr+L07S+BUIlXXZqlz5hMeyz/47b9LimSjmNa7b4p1erXmwG7QUxzU0swHnwy5He nOuMEAuByE+kxACQmWGBSN2d9eqfaI1OWK7FLSMk0j/HmPKvqkv1Y+ps5E5Br4R4TFSi eL8R+qA6K/taKGq5bdBU8e+Pe6Oq4mWA7ABrA45WMJ3EJmV4jdMgnAXjgLBm0PMcTb4p Go7JCZd/snBkarn84WFAwOPZuUROSfezUMYoI1RGckJO3iqw1sz+I+rHGKyrXx3PAgaG 1aBQYcVinNqmTKYxACLCMsH5+VBFftviPB9WHWX7RBZq1T4SzGd1cjKDQbVE058WnLsS s0Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780321331; x=1780926131; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3cDewhvIRKNQtJoPSUw7b+ZCGblkR4c9l/2JildOedY=; b=PpmvwIXD/Uyvd4Jqrsu4ZbiiB1QsdwAX0CVYdgOsv/8iql/F7v1MM/ANCe6GrH4c4r e92A+KYZK7LiJ+1kG3BfBZK6RoyjqR0ndsEt8jIIzZlG9Bb+gJlhx0u57ykKXd55/oPo c/C9fclexZ7vMNCCAgD1B3t0+gPrJj9qpATny1dmmZyuBPzDRsKkldTXjdVt7ESeGpoy LSWmrnoNOzPa6ZHaocd/1rofcBsiJIaiQQI6X1PpFfulMoIcJ6EhKfb565kO6JVR2cpU a/q+BZi0sIxaLGqldmgTsnGc3ZzvF2YCjaPbFMHQ/xTGBnqt8hB4JyNkWYHVBpYsSzZ5 Ia2w== X-Forwarded-Encrypted: i=1; AFNElJ9AIwkV+iL07VQ8g9qdXKSSfnMBC4uPIxZ+YNp0OqnYG2vz30P6N6Pmra1KUmKm/t0Ggqm85BAZajCLTfU=@vger.kernel.org X-Gm-Message-State: AOJu0YxmXzY8jbdP0XUc4tpV21hDPT/oSv60d9shNjJ10N5hhMc92bj1 t52VNSxoBADepha97Q86NSliwZXP+ei8N9bo1gYZAqSDIM+3icaXMdaxwK9y8WON+u/lVDO2u2O xtA== X-Received: from plbmn13.prod.google.com ([2002:a17:903:a4d:b0:2b4:6553:4533]) (user=praan job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:380b:b0:2b7:a350:463f with SMTP id d9443c01a7336-2bf367c0cbdmr133865095ad.10.1780321330651; Mon, 01 Jun 2026 06:42:10 -0700 (PDT) Date: Mon, 1 Jun 2026 13:41:59 +0000 In-Reply-To: <20260601134204.2150602-1-praan@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260601134204.2150602-1-praan@google.com> X-Mailer: git-send-email 2.54.0.823.g6e5bcc1fc9-goog Message-ID: <20260601134204.2150602-2-praan@google.com> Subject: [PATCH 1/6] iommu/amd: Clear aliases before setting the rlookup_table to NULL From: Pranjal Shrivastava To: iommu@lists.linux.dev, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Ankit Soni , Jason Gunthorpe , Bjorn Helgaas , Samiullah Khawaja , Pranjal Shrivastava , sashiko-bot@kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In iommu_ignore_device(), clearing the primary devid in the lookup table before calling setup_aliases() causes rlookup_amd_iommu() to fail for aliases. This prevents clearing the Device Table Entries (DTEs) for DMA aliases. Fix this by moving the setup_aliases() call before clearing the rlookup_table entry. Fixes: 99fc4ac3d297 ("iommu/amd: Introduce per PCI segment alias_table") Reported-by: sashiko-bot@kernel.org Closes: https://lore.kernel.org/all/20260529153216.2AD1E1F00899@smtp.kernel= .org/ Signed-off-by: Pranjal Shrivastava --- drivers/iommu/amd/iommu.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index f1333071da10..a94de66a885e 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -745,10 +745,12 @@ static void iommu_ignore_device(struct amd_iommu *iom= mu, struct device *dev) return; =20 devid =3D PCI_SBDF_TO_DEVID(sbdf); - pci_seg->rlookup_table[devid] =3D NULL; - memset(&dev_table[devid], 0, sizeof(struct dev_table_entry)); =20 + /* Clear aliases while rlookup is still valid */ setup_aliases(iommu, dev); + + pci_seg->rlookup_table[devid] =3D NULL; + memset(&dev_table[devid], 0, sizeof(struct dev_table_entry)); } =20 =20 --=20 2.54.0.823.g6e5bcc1fc9-goog From nobody Mon Jun 8 06:36:46 2026 Received: from mail-pg1-f202.google.com (mail-pg1-f202.google.com [209.85.215.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B97B13AC0DC for ; Mon, 1 Jun 2026 13:42:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321337; cv=none; b=a1n+bFMcz2efKPnLjM8cMPlWy1mUogffKtuHzJZsvQZDIv3rnh4siBA4Z2xmmNEpQz+X9VcmUXSUpP97nuzq1c1IoZE4hF2Sf+PWlFAuJJXLB+mR9EpQFiyd3NeJ5T0ARCWTapjRsi1ATLPvwdDOlQDuVFZlP4IlTdZF5cE+poQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321337; c=relaxed/simple; bh=b85lZZdAEpendsttCqpo8oWZqe64dF3AQ7gsmsmlFcQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=fafxUxQ6aiQUnYSjXIZTWcydPJa76EuYay1TNHA5fdouGUH9BNgNMag2LC28suPXqkOUcKQccrkqtpwGJGhHj59DGjXVaX47ofKPPLdREpNNq2GulGX0qiXA1Xnk+Y2nMwz4mBibHJMU/x+L4QEbdCCYwvpQcXiQ1bZXzFSWWEM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--praan.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=iG4li94A; arc=none smtp.client-ip=209.85.215.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--praan.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="iG4li94A" Received: by mail-pg1-f202.google.com with SMTP id 41be03b00d2f7-c857fa2706aso1214931a12.2 for ; Mon, 01 Jun 2026 06:42:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780321334; x=1780926134; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=PLxfBWSy/eY/9f0RcQZ6Xq3ck7ox0I1FIw/EK+42VaI=; b=iG4li94Ay/MRRPsmQR9pTixVzNmReXxsLGr1RParZychkrVJz7MEPWqe2+RoL3cSgy rpcKwd2nWddDS99DG+nxU5jLXsD5fUuYDhq2rMn/EvQQWCRWG9zVRzy3oE00woRdqU3Z yMr+6x4K32298IT4phtw+Le7jjqkefEgpDiA+bEY78RVYfCHbRMpc9meAn0ysHWAUshW xMWV2Vak0OKoRBGpglAQFck+j4JHGzO+yFTKmwTynpmzFoyxXEsrFWC0uemufDEyS7Pa F07wIqO0L1C0LLwZypFYhjZS0UEJRF3dqaW5iI87kfj4C+r04pceCaQn2OkHN6MZUjgw hycA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780321334; x=1780926134; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PLxfBWSy/eY/9f0RcQZ6Xq3ck7ox0I1FIw/EK+42VaI=; b=tRYO2370+238x+f6QcSy0pRoRvmrXfrmD3Nibrov+1I+OlNk0Wy+ubHmj9eiMDmlUY lYdo+j1jZkk5RA/z8+Lv5bQdK9g88qcgW8dvc61pjvhoi9d00y9uavDcrjEZmk+J9x5t IozXMacxJp08PMSC5hJubJ0rMCeXwLBOaw7S4kSNbQShQqhLAbaqmfACY2g52gXpsQ35 7i/7TMrO8ar3eJbchgyVzG0+d8hF0QlSawxXtDW3uiGj+q5pbxqeYdACNHnTWHWbCLZO ycg7GQ1J+OYf1EZvMmiYdrD6ZyklTTV+iSirQfRIy6pK6HP/uLA33F2ZfjaqNR+GnJzu yIUA== X-Forwarded-Encrypted: i=1; AFNElJ+iZNoE1gscPNcSuFSEQABvfNvihf6SkEiWYzPy731QddweGCVeOQmkk1L5wkrjQAZpSUVahNSPrn4QjbU=@vger.kernel.org X-Gm-Message-State: AOJu0Yyv6rHgXJJ6dMxLk2c/SFGigtP1VTr4j7GcRylgL6CL/AlUXZeS LpFmWxyz6Eg+f98yU8tZ0OxvEUNTwVHi2NQk5pispBcudkXEX2iGhsfNb1hqHxBvfntlNUM6hbA XAg== X-Received: from pgaf27.prod.google.com ([2002:a63:381b:0:b0:c79:65ab:b3b4]) (user=praan job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:489:b0:3b3:be1f:c89b with SMTP id adf61e73a8af0-3b42823a7e2mr12624173637.22.1780321333571; Mon, 01 Jun 2026 06:42:13 -0700 (PDT) Date: Mon, 1 Jun 2026 13:42:00 +0000 In-Reply-To: <20260601134204.2150602-1-praan@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260601134204.2150602-1-praan@google.com> X-Mailer: git-send-email 2.54.0.823.g6e5bcc1fc9-goog Message-ID: <20260601134204.2150602-3-praan@google.com> Subject: [PATCH 2/6] iommu/amd: Clear DTE with update_dte256 in iommu_ignore_device() From: Pranjal Shrivastava To: iommu@lists.linux.dev, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Ankit Soni , Jason Gunthorpe , Bjorn Helgaas , Samiullah Khawaja , Pranjal Shrivastava , sashiko-bot@kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The iommu_ignore_device() function currently uses memset() to clear the Device Table Entry (DTE), which risks torn writes because the hardware reads DTEs as atomic 256-bit qwords. Fix this by using update_dte256() to perform a hardware-safe atomic clear when a live dev_data entry is available. Fixes: 99fc4ac3d297 ("iommu/amd: Introduce per PCI segment alias_table") Reported-by: sashiko-bot@kernel.org Closes: https://lore.kernel.org/all/20260529153216.2AD1E1F00899@smtp.kernel= .org/ Signed-off-by: Pranjal Shrivastava --- drivers/iommu/amd/iommu.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index a94de66a885e..9b5861e241d7 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -750,7 +750,16 @@ static void iommu_ignore_device(struct amd_iommu *iomm= u, struct device *dev) setup_aliases(iommu, dev); =20 pci_seg->rlookup_table[devid] =3D NULL; - memset(&dev_table[devid], 0, sizeof(struct dev_table_entry)); + + /* Clear DTE if we have a live entry */ + if (dev_data) { + struct dev_table_entry new =3D {}; + + amd_iommu_make_clear_dte(dev_data, &new); + update_dte256(iommu, dev_data, &new); + } else { + memset(&dev_table[devid], 0, sizeof(struct dev_table_entry)); + } } =20 =20 --=20 2.54.0.823.g6e5bcc1fc9-goog From nobody Mon Jun 8 06:36:46 2026 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 060433AD53B for ; Mon, 1 Jun 2026 13:42:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321338; cv=none; b=OVjk/+Zuvzu8vJ4nn4FB7VSgbhvps1X65Gta0Mt5EuaWPc4mzayjfO5h9w5wAHpf/FlF0TYQPGJB9x6d8P5IPTy4V7oopDC8rNtxxHwKMj1q9mxBouCgOb0ZuyH13t/0zCgn5nvT15zuFy+xt9VCFX2nZhfAxdDtM4WAK8FFdB8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321338; c=relaxed/simple; bh=Ju72LWXz/B8md71qQh8t/Jq+vqDu3BYR+Mvmt3R6GnM=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=NdvNBOrVBpkMR4FOu+O2TJkqwVHp7Vwrfd7JqfKq6hLhl9ajU79mQU1U3C2l3qZQ0NbPzOj/uV0tSdjHTFc/34OCv0OauRNbyTN/Prc2KY9zAm8uosF6kFy8PALLW9CbqvgFfGDycX6yBHtzws4l1IlI0Xur5yPLWITLgs9hXaQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--praan.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=qr1nuu4m; arc=none smtp.client-ip=209.85.214.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--praan.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="qr1nuu4m" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-2c0bf6904a6so27525975ad.1 for ; Mon, 01 Jun 2026 06:42:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780321336; x=1780926136; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=YXVaCkW8Gnzx6rEb7LWE+bpldCw6MgCsucYo9vO+yHM=; b=qr1nuu4mZGfdEV76P0h3WX/RspEPtguV1o5WG6a0sHoiGTPKfVhZPNIgfsXxd5R6eT zaZZp1yqeBDIzdf6pKHzSvRATfWXdaSUrcE8PwoHAq0lbdf9WFiYSgtTzwKSBYgSB8qT bQ8HLJ2xrN3DhGSzSiMwEVEpHlySZHEgdQYChUxvmBNLtmd1+5z11Q0pmlSyCLXSS4ch AIXSgfojUKEF2mfMjkU0eqi0uHCsrQ/rUsnkKysnVfcX5R40+92+pR57sClfmbWOT4vf z/zd2X2AXSrVsh1FF8Of+4QrOMf7wPOBugF5UwYF42ocuPrUsS1ybSAC7i7QcPTohxAD DeRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780321336; x=1780926136; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YXVaCkW8Gnzx6rEb7LWE+bpldCw6MgCsucYo9vO+yHM=; b=IHFlLjDYUx015bJ5q3bI8EOyuspMN3XWYOLAON8wBDhgs0jlIoluiiPX23BCDNOY7e 2fRqI/hVHHhfoPXDk9uQGidNCvXa4dQtFOa0HbJreCLY+NDVj8B5OW48OGeB/WCSmntY yU98LARuCECmcT6eiYRpDtkVG2qYAHuMWTF4LsuZNCiN8nOV/vgYJ9WZYhdZ8eedub+L uKX9jtmMpoC6QmesLbg051h4pFB6m7pQs+pfBjE1U+lb0ySsjUEW1CKdnfZThlvj7Lm1 41L66m+AVbLAp0t94HYY5z6X+xyYkS9iVsdyXBu74c4zj43C1vu5PP0SmBsyhyqvBdTq il9Q== X-Forwarded-Encrypted: i=1; AFNElJ9tnh2ZFuYMTzegN5rN5niEt/dl3mLoVduls3gRLG+WvBWiwxtBIeKGV3XiGZPxISu8pDCAi2Hoz0q2m98=@vger.kernel.org X-Gm-Message-State: AOJu0YwuAtrJVs9FjcCxfaCBBzCIwgdyGu7D/pwgKrxfKBnYPNdT7w5w fTTwCz7B0JcuQTT6dlYavNFjCb5/15tba+eRIl3U5Lggx+rga9jDKocmQyeIsUTeVLVEfpw894K 0hA== X-Received: from plrx24.prod.google.com ([2002:a17:902:b418:b0:2ba:f5a6:38db]) (user=praan job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:8d0:b0:2bd:c5f8:504f with SMTP id d9443c01a7336-2bf368d9ee5mr123694865ad.40.1780321335923; Mon, 01 Jun 2026 06:42:15 -0700 (PDT) Date: Mon, 1 Jun 2026 13:42:01 +0000 In-Reply-To: <20260601134204.2150602-1-praan@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260601134204.2150602-1-praan@google.com> X-Mailer: git-send-email 2.54.0.823.g6e5bcc1fc9-goog Message-ID: <20260601134204.2150602-4-praan@google.com> Subject: [PATCH 3/6] iommu/amd: Split probe error paths to preserve IRQ remapping From: Pranjal Shrivastava To: iommu@lists.linux.dev, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Ankit Soni , Jason Gunthorpe , Bjorn Helgaas , Samiullah Khawaja , Pranjal Shrivastava , sashiko-bot@kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Split the amd_iommu_probe_device() error paths into err_deinit and out_err. Proper init failures continue to call iommu_ignore_device() while configuration failures (like PD_MODE_NONE or ATS mismatches) skip it to preserve the rlookup_table entry required for IRQ remapping. Reported-by: sashiko-bot@kernel.org Closes: https://lore.kernel.org/all/20260529153216.2AD1E1F00899@smtp.kernel= .org/ Suggested-by: Ankit Soni Signed-off-by: Pranjal Shrivastava --- drivers/iommu/amd/iommu.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 9b5861e241d7..c3b3750d4a22 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -737,6 +737,7 @@ static int iommu_init_device(struct amd_iommu *iommu, s= truct device *dev) static void iommu_ignore_device(struct amd_iommu *iommu, struct device *de= v) { struct amd_iommu_pci_seg *pci_seg =3D iommu->pci_seg; + struct iommu_dev_data *dev_data =3D dev_iommu_priv_get(dev); struct dev_table_entry *dev_table =3D get_dev_table(iommu); int devid, sbdf; =20 @@ -2477,8 +2478,7 @@ static struct iommu_device *amd_iommu_probe_device(st= ruct device *dev) if (ret) { dev_err(dev, "Failed to initialize - trying to proceed anyway\n"); iommu_dev =3D ERR_PTR(ret); - iommu_ignore_device(iommu, dev); - goto out_err; + goto err_deinit; } =20 amd_iommu_set_pci_msi_domain(dev, iommu); @@ -2512,6 +2512,10 @@ static struct iommu_device *amd_iommu_probe_device(s= truct device *dev) if (dev_is_pci(dev)) pci_prepare_ats(to_pci_dev(dev), PAGE_SHIFT); =20 + return iommu_dev; + +err_deinit: + iommu_ignore_device(iommu, dev); out_err: return iommu_dev; } --=20 2.54.0.823.g6e5bcc1fc9-goog From nobody Mon Jun 8 06:36:46 2026 Received: from mail-pf1-f201.google.com (mail-pf1-f201.google.com [209.85.210.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 469E33AF64D for ; Mon, 1 Jun 2026 13:42:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321340; cv=none; b=LQmY3627B6HJVJa2bKSyYBM+rKV5kkqiy1qlHUn4vkC7sTzMh/6W0WsAyJmcaKMiDOmp129SxT6vjWZ9VnqWMEV87UIM9Mi4hHjxgPZG+pT639N2V0b3G+XWTz1yI01Lcn2d7SRnzIYqhIjuUL4lZNIkzqr3F/kzaDLpWzUy8fc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321340; c=relaxed/simple; bh=d9ra7+VpNlaICDKwllpNtvFlzWuKQw76LK9YtUjnPP0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=Bp2C/G5KWM4pVA4CGmUR2hWZ7T/rx4BTBclzK9qxXONkGkJgVNunb4GzTpz0wAHOxiw+XU9Q3Eb6mkuF+3woVVfanESqV0oG8J5+auezB6cJ16igegBbMdxQMB5XKGVI8Fu+ZxrIkxSqrR5GWAj0mi1+AM9wRSZeTkD981WsaRk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--praan.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=n9nfDmVb; arc=none smtp.client-ip=209.85.210.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--praan.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="n9nfDmVb" Received: by mail-pf1-f201.google.com with SMTP id d2e1a72fcca58-8422875c676so1543879b3a.0 for ; Mon, 01 Jun 2026 06:42:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780321338; x=1780926138; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=qHVa4tUQPxfN3QUwaWtlq81eFxiSoG8gp/4WszuwXdI=; b=n9nfDmVbx1hVOgZ3EBQYS8ohms5iVe7exa5JVoacdptIuR+6W3sU+NvRvMUuNMqyXi CczINo+8dPWZXAQIDzpLbrmvyywP9yGZOqqmsnSoimBN+BYtSwiD4rU8NzNl69KAKB8F uJJux1Xd9dzhAVNWOwMvvliWSY+Rxj+5I9i49ltWX0ddpg9dfTNpMjOvZst2AjNHhqQz njiljyMmWRhIIoKSNPlSgfrNMVzcsjKp6/rhLXuAIIpc8u2uEEAbz8x47Z4IN6E4eAbw LfdzclxkmgzZMtX7qUPi1MYoQZcGWxeDyMYY2XkR8dwmD8WPZAjeZu85TIDiCZbn4cc1 Z8Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780321338; x=1780926138; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qHVa4tUQPxfN3QUwaWtlq81eFxiSoG8gp/4WszuwXdI=; b=s9B6S4K75rFPUQUVr3zyj2gkoQZkhkrxdqm/q7RmogMcbuXrU3+IaqPKcr/odzYr74 YQQBv8i+neW7FB4v/cFaxeKAKwgdw/u3Di6fxls5a3/2PUxdjPyl6XWCq4JiesiG1D4H Hm9LHOI/DjdPRfhpRwl6AhEHfh4WBrJ5YYz4Gj1PIc0nc3IYAvy/b1oXEK8e4mD0k0Rl F7f2TGs0C/2AqpLxbi87ldfydXIrtd3LQfBQW6YkrHnhc3X3zpgIj3XDXST7GnD4IOVH 2e6TP44qhIg5W61yOVdGcFnWv4l09E4ssz7+75e4pMjh1+MLJh/ZhTZULuPlzA4JpwLt O5+g== X-Forwarded-Encrypted: i=1; AFNElJ8JcqRIYyEifd4+HAUcM8oWOU2pOIRCTWFSkKL4e/QwUKkkSiZGUhVksLUOsMo1HucRRzn+/INSBTjuBiw=@vger.kernel.org X-Gm-Message-State: AOJu0YwJWGu3hdKPojGLa7vWCWoU7j/dHx4Y1STSTr3yI5xCEu34YO7I zBxRQN3ivzSqr2CSLhP8EuYRlrbOa9a5jU3fGtGWDXxWqI4D3vD4gzN3Bxh1LPoFSutgRDswbQJ 1lA== X-Received: from pfbdi4.prod.google.com ([2002:a05:6a00:4804:b0:842:3a6c:99f5]) (user=praan job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:278b:b0:842:4c2f:a576 with SMTP id d2e1a72fcca58-8424c2fc01dmr3577714b3a.16.1780321338241; Mon, 01 Jun 2026 06:42:18 -0700 (PDT) Date: Mon, 1 Jun 2026 13:42:02 +0000 In-Reply-To: <20260601134204.2150602-1-praan@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260601134204.2150602-1-praan@google.com> X-Mailer: git-send-email 2.54.0.823.g6e5bcc1fc9-goog Message-ID: <20260601134204.2150602-5-praan@google.com> Subject: [PATCH 4/6] iommu/amd: Fix Use-After-Free in non-fatal probe error path From: Pranjal Shrivastava To: iommu@lists.linux.dev, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Ankit Soni , Jason Gunthorpe , Bjorn Helgaas , Samiullah Khawaja , Pranjal Shrivastava , sashiko-bot@kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When amd_iommu_probe_device() fails for optional features (e.g. PD_MODE_NONE), the dev_data remains globally linked with a pointer to the struct device. Since the IOMMU core does not invoke release_device() after a probe failure, this could lead to a UAF once the physical device is removed. Fix this by introducing amd_iommu_clear_device_dte() to clear the HW state and setting dev_data->dev =3D NULL on the non-fatal error path. Reported-by: sashiko-bot@kernel.org Closes: https://lore.kernel.org/all/20260529153216.2AD1E1F00899@smtp.kernel= .org/ Signed-off-by: Pranjal Shrivastava --- drivers/iommu/amd/iommu.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index c3b3750d4a22..4ef6024c5a4e 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -734,6 +734,15 @@ static int iommu_init_device(struct amd_iommu *iommu, = struct device *dev) return 0; } =20 +static void amd_iommu_clear_device_dte(struct amd_iommu *iommu, + struct iommu_dev_data *dev_data) +{ + struct dev_table_entry new =3D {}; + + amd_iommu_make_clear_dte(dev_data, &new); + update_dte256(iommu, dev_data, &new); +} + static void iommu_ignore_device(struct amd_iommu *iommu, struct device *de= v) { struct amd_iommu_pci_seg *pci_seg =3D iommu->pci_seg; @@ -753,14 +762,10 @@ static void iommu_ignore_device(struct amd_iommu *iom= mu, struct device *dev) pci_seg->rlookup_table[devid] =3D NULL; =20 /* Clear DTE if we have a live entry */ - if (dev_data) { - struct dev_table_entry new =3D {}; - - amd_iommu_make_clear_dte(dev_data, &new); - update_dte256(iommu, dev_data, &new); - } else { + if (dev_data) + amd_iommu_clear_device_dte(iommu, dev_data); + else memset(&dev_table[devid], 0, sizeof(struct dev_table_entry)); - } } =20 =20 @@ -2517,6 +2522,11 @@ static struct iommu_device *amd_iommu_probe_device(s= truct device *dev) err_deinit: iommu_ignore_device(iommu, dev); out_err: + if (dev_data) { + amd_iommu_clear_device_dte(iommu, dev_data); + dev_data->dev =3D NULL; + } + return iommu_dev; } =20 --=20 2.54.0.823.g6e5bcc1fc9-goog From nobody Mon Jun 8 06:36:46 2026 Received: from mail-pg1-f202.google.com (mail-pg1-f202.google.com [209.85.215.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 915B43B1ECD for ; Mon, 1 Jun 2026 13:42:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321343; cv=none; b=Uk30ItMn63u63kNnsm5J/FueYXTBpjgqwplEPG9j0EW24Z30ZULIz3Lm7NC3ZWkByL3QbPV66dDXbnQluNl0HOjCoq9kaWWpDEmhIHM7UpbxgsOvQ7jlQyOozwZl2zkSUt1O53+x+jbZvD5d2L9LpDnE0uvfRy0AEZSlOQTdpis= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321343; c=relaxed/simple; bh=auMnztirMjgLsVdaqQpnSuNWy8GRXz3WqB05wPcZf6k=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=KpNi6t1p9MimbZzG84aAxWMav8C0r+CK+n29+zrdoZbm3FUSznJUEJ9KclE8ZtbKbqW4EQhHy1xW8iPpx7HFpkZMmxBHiQTHQnTLgAJeSGuI4lPvGhhhdiqA4hUplphGz0RZcCBcW28rkdHJaGAj6bBLuiTgDC2ssZGT9jAaJ7Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--praan.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=hQmGk23B; arc=none smtp.client-ip=209.85.215.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--praan.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="hQmGk23B" Received: by mail-pg1-f202.google.com with SMTP id 41be03b00d2f7-c85a2c129b3so735933a12.1 for ; Mon, 01 Jun 2026 06:42:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780321341; x=1780926141; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=7R6BZcslBAGGRXzQms4jp3f5RHV26tlAI7OzQzhdeIE=; b=hQmGk23BcpWUBPxfvnZy7P2eoVl05awEdLzS9CvorwM7aMoBOHBfg3GKYBjTrtJmjX cg2f8nVo12qfQHvCKNAoAxz1EMZbAHjewsHf7cXLpqIWfqkc+YzGtkplHiB9PEjpwq/0 Mh4HxfbCIale0w2ADxwUWa4xtzyH11ELrVxOI6ZuyPleKnV9iSumH6OKwGud9E+rQ0/9 W9mnkVC65UR65bqKW7EjyyJM5BAZW6Gw3RSUE/ZRIvNhY+YUYWTQGn7rZVin/XP1+EAw Q+725GT3e7Jfs8CY0akY+h4Li4sD4wKBfxCEwr9N8Jcsyna3K7iqQHI6K8LqOGZn3/8x dTOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780321341; x=1780926141; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7R6BZcslBAGGRXzQms4jp3f5RHV26tlAI7OzQzhdeIE=; b=JS3OMwBn+VgWOIVgnWkegr+z6K9pHOkp2eXnICKrEk8O/+qFLQfnLr6PrX2iXrgrHJ onxfSUJDV7Qvy+XHORZc/Li4kCEBco1U2iu8Zrsluhd8njQZItlCU/jWfPEbQsoQRqg8 oz/MApTTYK42a5iXHvH8AAIjqIxIxqeJ78FwFeRV33XwbmfeCE+hJ3dKHGcYyLFucm+g ddHMDBbeYSa97IXeBd+s5bE6/JhfDk9hktkCqQFTGGdPSsV9wL/rU83g/OFNl7Me9dTv 9xIj00slbUXkpUwFD6KcwOmCpUIQN6Y4+JzwWyinQCU3DLCOEYZzto2+LWvqoRE3Xjny fz0g== X-Forwarded-Encrypted: i=1; AFNElJ/KWvvDzOuq4yCPSgXViV8HAiVe4Q3Ut9m6XPH3gaPxRyWvy3prKq8SDrRjR0HuqQ0l4bza5US9tXMa9wI=@vger.kernel.org X-Gm-Message-State: AOJu0YwHeVZLuXzv/anrXqsNXldkQanFJ+RC/Mg5ZYxTkIGqrTg+CDb6 w4vVRCN4oxbwyrVcjquxIomcGtHtIuopufbHidhjAD1FWEnQQxqYh9EUiJLdjEZSkwn/FrCkgT+ Y2g== X-Received: from pgbgc5.prod.google.com ([2002:a05:6a02:4b85:b0:c85:80d8:9229]) (user=praan job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:8213:b0:3b3:f46:1f0a with SMTP id adf61e73a8af0-3b427f5bd3cmr12362565637.42.1780321340582; Mon, 01 Jun 2026 06:42:20 -0700 (PDT) Date: Mon, 1 Jun 2026 13:42:03 +0000 In-Reply-To: <20260601134204.2150602-1-praan@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260601134204.2150602-1-praan@google.com> X-Mailer: git-send-email 2.54.0.823.g6e5bcc1fc9-goog Message-ID: <20260601134204.2150602-6-praan@google.com> Subject: [PATCH 5/6] iommu/amd: Fail probe on ATS configuration failure From: Pranjal Shrivastava To: iommu@lists.linux.dev, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Ankit Soni , Jason Gunthorpe , Bjorn Helgaas , Samiullah Khawaja , Pranjal Shrivastava Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Update the driver to call pci_prepare_ats() after checking if pci_ats_supported() and fail the probe_device if pci_prepare_ats() returns an error. Additionally, update pdev_enable_cap_ats() to WARN_ON() a failure in pci_enable_ats(). Signed-off-by: Pranjal Shrivastava --- drivers/iommu/amd/iommu.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 4ef6024c5a4e..783f53cb8599 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -566,10 +566,17 @@ static inline int pdev_enable_cap_ats(struct pci_dev = *pdev) if (amd_iommu_iotlb_sup && (dev_data->flags & AMD_IOMMU_DEVICE_FLAG_ATS_SUP)) { ret =3D pci_enable_ats(pdev, PAGE_SHIFT); - if (!ret) { - dev_data->ats_enabled =3D 1; - dev_data->ats_qdep =3D pci_ats_queue_depth(pdev); - } + + /* + * pci_enable_ats() should not fail here because earlier + * checks have already verified support & config. + */ + if (WARN_ON(ret)) + return ret; + + dev_data->ats_enabled =3D 1; + dev_data->ats_qdep =3D pci_ats_queue_depth(pdev); + ret =3D 0; } =20 return ret; @@ -2514,8 +2521,17 @@ static struct iommu_device *amd_iommu_probe_device(s= truct device *dev) else dev_data->max_irqs =3D MAX_IRQS_PER_TABLE_512; =20 - if (dev_is_pci(dev)) - pci_prepare_ats(to_pci_dev(dev), PAGE_SHIFT); + if (dev_is_pci(dev)) { + struct pci_dev *pdev =3D to_pci_dev(dev); + + if (pci_ats_supported(pdev)) { + ret =3D pci_prepare_ats(pdev, PAGE_SHIFT); + if (ret) { + iommu_dev =3D ERR_PTR(ret); + goto out_err; + } + } + } =20 return iommu_dev; =20 --=20 2.54.0.823.g6e5bcc1fc9-goog From nobody Mon Jun 8 06:36:46 2026 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9948D3B2D06 for ; Mon, 1 Jun 2026 13:42:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321346; cv=none; b=OuDOXeeLBzvWBLbUamxjeA8CmrRt4FKl4Pt4F7qn5vtOw1keEydKqiTml7ShXARYNCLCFHeEGJnvW/prwsUSP7HXv+dRjnSnX8MirRjM0gdrOGiuXyt3zKoN+oBQbumtgI2SsD699csH1gNYLCe+WsVUyhz+J0FYXVuRiQEqCss= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780321346; c=relaxed/simple; bh=w9aL2jXBkSQc60s7PCYdOXjxGsJtviB4VjNKmXS4Hw8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=b3OBneg7XGRuACRApg6uIIv0PvIp2sfD4UUeZcLqaHxf1dI9ZZ2nKsLiTGnu92mcFUL/PteEVAZyVhvQyKvO1qGwTbCDSqedu4pAbEFnMOCA3WEEPyass8J8BeO1hlEUCr4LpCO6x+rm8ZKH1aqW2JxGHvNwopmxnjd8QVlAUBQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--praan.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=J5IpyRcY; arc=none smtp.client-ip=209.85.214.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--praan.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="J5IpyRcY" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-2bf11699875so45111255ad.1 for ; Mon, 01 Jun 2026 06:42:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780321345; x=1780926145; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=pWexhegNnVMZtjViVug1/DougZixUK6pa8KgAqOhU80=; b=J5IpyRcYjT+9kfjvogEenlMSN5c8t00cMLIAfpYd2aYJrhhLO6/smbUfk9nHSOsGC/ /4mq4kxlTLH8YTg1MJHM4NglfYYEZSlOECnKAT9CuBBFze9uzgXTpZRdxQEem1NMWUXE BDTPPHaqIAUlQR9/w89tW8Fl0WozTuZmh9ozLPQgaFNUqLsMWFHFh1EJ/hPCQVMTlb9+ SnZpbuE/bt0ojSpitBPESCTFSPEJkHVAZYAv20+DXW3JeF+oeCJw8owJEOKvWWiBWt3z 6hL8g488Rh1D4Z/K+kb1l19KPjyHbIy4kETiNCZ8c2/M0XK2d2ji6+Bpt/caIApGGeO/ yysA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780321345; x=1780926145; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pWexhegNnVMZtjViVug1/DougZixUK6pa8KgAqOhU80=; b=NFoTzw6M3guCAYoqBI0R8JNbaYYyXXVtyxdL9twy34bP6Qag/OpWJ29CdOLtDuGKWz LIdsqdk0InRDLuR4UjSU7nNxMvALzCFfPvTSVbMVltq3GmSeCkQvYFOw33/1k/VbNxZa Exyh7nMZRHBIWeW0UoP9068eXkEPjNTs43M3j4wknZfkIrEXZx2RKgN0lZTNrSCoyawu ia7nSXVKXkGthEQS8F8nNMsVqXqmmosIwss3sFg08qv6fUq6OEhwIPOkCLLX1/M+JSIr IjcYXFpTL2eACub39KcIQpg/wTMO7H29lruXlSspLuSaCaHKqFAzw90fVPQj/Q9MhLW4 k1rQ== X-Forwarded-Encrypted: i=1; AFNElJ9wxnFb0+G6oDaRtWYv5ZK5xXIHnTvj/GJnOPedPi1NkeASjGpdzvwrsZBCUUvxhKOPckGJj8zSMNfKkQo=@vger.kernel.org X-Gm-Message-State: AOJu0Yz4IKNeiQXYxr3s+zK8BssAm8CUchqIXykn7SMcP4Unlx6WVcnN PxInrEw6Ka8WLMrzrfBsKriYIdfya+s4os3FpucfiMj3jmyTa/nMhRbLhEHI0phHS0lnS8ZZvUk 3SQ== X-Received: from plbke7.prod.google.com ([2002:a17:903:3407:b0:2bf:1274:55fb]) (user=praan job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:cecc:b0:2c1:6ed:513b with SMTP id d9443c01a7336-2c106ed52bfmr2564075ad.16.1780321344530; Mon, 01 Jun 2026 06:42:24 -0700 (PDT) Date: Mon, 1 Jun 2026 13:42:04 +0000 In-Reply-To: <20260601134204.2150602-1-praan@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260601134204.2150602-1-praan@google.com> X-Mailer: git-send-email 2.54.0.823.g6e5bcc1fc9-goog Message-ID: <20260601134204.2150602-7-praan@google.com> Subject: [PATCH 6/6] PCI/ATS: Mandate checking pci_ats_supported() before pci_prepare_ats() From: Pranjal Shrivastava To: iommu@lists.linux.dev, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Joerg Roedel , Suravee Suthikulpanit , Vasant Hegde , Ankit Soni , Jason Gunthorpe , Bjorn Helgaas , Samiullah Khawaja , Pranjal Shrivastava , Baolu Lu , Nicolin Chen Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Currently, pci_prepare_ats() internally calls pci_ats_supported() and returns -EINVAL if the device does not support ATS. While this provides a silent safety check, it conflates support detection with configuration. Update pci_prepare_ats() to wrap the internal pci_ats_supported check in a WARN_ON(). This mandates all callers to call pci_prepare_ats() only if the function supports ATS. Update the function documentation to mention that callers must verify ATS support (via pci_ats_supported()) before calling pci_prepare_ats(). Suggested-by: Baolu Lu Reviewed-by: Nicolin Chen Signed-off-by: Pranjal Shrivastava --- drivers/pci/ats.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c index ec6c8dbdc5e9..e10a0ceb2645 100644 --- a/drivers/pci/ats.c +++ b/drivers/pci/ats.c @@ -53,7 +53,9 @@ EXPORT_SYMBOL_GPL(pci_ats_supported); * @ps: the IOMMU page shift * * This must be done by the IOMMU driver on the PF before any VFs are crea= ted to - * ensure that the VF can have ATS enabled. + * ensure that the VF can have ATS enabled. Callers must verify that ATS is + * supported by the device (e.g. via pci_ats_supported()) before calling t= his + * function. * * Returns 0 on success, or negative on failure. */ @@ -61,7 +63,7 @@ int pci_prepare_ats(struct pci_dev *dev, int ps) { u16 ctrl; =20 - if (!pci_ats_supported(dev)) + if (WARN_ON(!pci_ats_supported(dev))) return -EINVAL; =20 if (WARN_ON(dev->ats_enabled)) --=20 2.54.0.823.g6e5bcc1fc9-goog