From nobody Sun Jul 26 13:28:52 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1781556634; cv=pass; d=zohomail.com; s=zohoarc; b=CmIwW11SuC4DJ3V2t0gZIyZR6u91yoLDDnTxxEVzr0CPmRbVusn5M0wJRKIsAz8RpTEeVXIg5MkSFUe4XHk0ZLeh50Rk1t7szpzIiGqQ8AlmC4zhcW08oD8N2fPFuIGiV+xUo+8wxRgwP4YVXZNxrAJGSf/dT+yJfXRHegfXhSQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781556634; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=e+frQh2NW5cQvuE/XvBHJmeGXCpBoTNmBDFpVa7b+Dk=; b=RptMKvJufAmcDin41YqSe6/GI2WhUOv66OPIY46m1dZcI9Rf3sW3gXaqc/N3Kb1egSCbHha4zXfn/rEoCzoxN4UJLpab+12ZFbJPefz/RH473BKR1ri/JryAywjfer3yqsNTLl00HdYvHtMbCz7oR9rDhgU+psUM4PpevZBh0lI= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781556634947135.11841111754484; Mon, 15 Jun 2026 13:50:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZEFc-0003ut-3w; Mon, 15 Jun 2026 16:49:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZEFa-0003uf-Cc for qemu-devel@nongnu.org; Mon, 15 Jun 2026 16:49:42 -0400 Received: from mail-westus3azlp170100009.outbound.protection.outlook.com ([2a01:111:f403:c107::9] helo=PH7PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZEFY-0005Aj-QS for qemu-devel@nongnu.org; Mon, 15 Jun 2026 16:49:42 -0400 Received: from DM4PR12MB5390.namprd12.prod.outlook.com (2603:10b6:5:389::15) by PH7PR12MB5807.namprd12.prod.outlook.com (2603:10b6:510:1d3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.18; Mon, 15 Jun 2026 20:49:00 +0000 Received: from DM4PR12MB5390.namprd12.prod.outlook.com ([fe80::2815:c27e:a0a:2720]) by DM4PR12MB5390.namprd12.prod.outlook.com ([fe80::2815:c27e:a0a:2720%6]) with mapi id 15.21.0113.015; Mon, 15 Jun 2026 20:49:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=djHGZTWXm4kT0raezpR9+diYhVhNIz5NmaN2fhO1/797cmCyD7B9qKj/07VbY//hvT3ea4DsviX1K4z3782OFtA9GtBUr86N4KtXCSpgc1S+pzoHdodqlFKbOaNaw3qWTZfcPn3R/npnYDuelJbfBmNCpdB6+Bd3utbS6JxfWWym4aJWpTWNYF4hKam88Xia4afu8sKvwmM/o+13p45jjlx909WY4E/AalUC8E0mo7LMQOHEUrJukiKBeNA7BlN8uzFomLhz4kWLTLCQaraI/n32nL4g8ACPrIdG4dKkjiNUZ0PXPXuSWEC5PV9E17WfmXfdtx8JrXCmaPZq6hAdrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=e+frQh2NW5cQvuE/XvBHJmeGXCpBoTNmBDFpVa7b+Dk=; b=bXZWHsTG0qqZtqQ0lKJd6qZNMlelIMW/rPd4Mvl4s2WHhLNX+qCzrp9emQZKFOn/iwXONNJZ562XqmYrGTV1IeAe9bUt5tOOZ4R3vNpUpb7J9RcArPjk+tgF/38a1P+R9uOP2JN5IeD/MY62nfM7HpPVGOQoAqoqfRva+Aqay6R3ctdZwMh28bH4Ndpl2/mcn2cMaDVRH3c9Ynjks/FZMjvYveTi0e7uv3a5b0+ByPUIC1vcrLJFgAnB5wdZt25Fp3zGUwAsdQUtycudo0udYmGd/3QybvZKm2bH8Dj4jtfzdPm74Yw4EvwEvsN9xkq01lyfWfmnuUNpbuZugmqClA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e+frQh2NW5cQvuE/XvBHJmeGXCpBoTNmBDFpVa7b+Dk=; b=Kxnh9nEpMJt41eE8Z+NbYuosrkpKebUJqXsNbs9WWpSyNw776xyhWWF4fp3lcMiGu9sfZUV4OhsuuRA9Zyutrz6YTlvoCRGc2m9spEP7qszk1GUJfKrMYMbZmzNuk6DA3wsfhDsg9ybKIqwv8VQB162PIFR6Rc8l1fCFkpPN4Fc5tu9vvE/1lAYXWmo4dPY7QIumwEwlnvuq5cRIys6ckcqWr74m6KaMNsTnMliChkMlpA7sj0xNow0WbNWhtJD7ctkJkLzC4enNDIob62991Z8FoEZzysViuvlTouRm4gJOYwaZZopbqyrG4idxJ4EZTOg0dkjgRfqWGJcQAb+f1Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; From: Nathan Chen To: qemu-devel@nongnu.org Cc: Yi Liu , Eric Auger , Zhenzhong Duan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu , Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Matt Ochs , Nicolin Chen , Shameer Kolothum , Nathan Chen Subject: [PATCH v2 1/3] iommufd: Introduce handler for device ATS support Date: Mon, 15 Jun 2026 13:48:47 -0700 Message-ID: <20260615204849.3659647-2-nathanc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260615204849.3659647-1-nathanc@nvidia.com> References: <20260615204849.3659647-1-nathanc@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0110.namprd03.prod.outlook.com (2603:10b6:a03:333::25) To DM4PR12MB5390.namprd12.prod.outlook.com (2603:10b6:5:389::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR12MB5390:EE_|PH7PR12MB5807:EE_ X-MS-Office365-Filtering-Correlation-Id: 83918dae-553f-40cc-d940-08decb1f86ee X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|376014|23010399003|22082099003|18002099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: 86q3AxQqTbI/YTj4pYr1jgQgma2TUSyWbK41D4Y2jgj6DFKA5KJkx+bx86JGQY6mMhAF3leUDbmh8uvfPfYCbmI7G0yBC0CZo2afX3PBcxgH1fOr/KmeIvs7H1DOmSn91OrkPZFENDAit4859hYpvt81u6yWMRR3tVE2nn56d98Hsknm8+Ni+Bof1RARhQYbcc7Ro6m9kjK6jSG1wL95iMEqrNkoenwY97nrdP4C67M56EflF/FdihExUmypCvo7BhY4FJGR3GZHXdI74jHk5tCl7lbAAkYZeprXtag1Vo7ZDq3+yOvfmZqyB40/w3Gj+jtDGPpPHQJFna38lRSZoMJSCDLkhzQCgfXh0Md0ofNWKn0DVEw15T+MkIsLH5QcihjadYWp2vOET375apWUS0Qng7g9bF29IrHyThNgAuXs2e6w5vrkmqPNt8ZpXI3sHvvns5wownZeScpIJAqxpEkLRb3zmnld9z+WYcps0Ju0fX6+5GfSrydtjbkwHAw0s+0ZmqnrxzGX+QFDjTH7v8bkISQIKjmCkf8RY7yYGt7zWpHLBD7yai51pcnJ+jCQ5HWJpcy62TshFNo7+LOi3LDlyqZB/iAPfuOPqKh4e4uXz/CngEXTaLU9zCDWT1SgU79aw9D7BZgl8MNoW7czZ37V8yfazAzQY11BK3whaUofSQk3LoZWGLwiK1Horlow X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5390.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(23010399003)(22082099003)(18002099003)(11063799006)(56012099006); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?q6ZwlTiqVibtpknN8Y+wf1UskS+8oi+D5wEbvFG+aiYakJ9UZfrMYoOH7hY7?= =?us-ascii?Q?22RGcGRftaqcwgDLaIBOgKg4mdsQwXeQEZi1uUgq6f2RRWaPsWfEaEhKQtxV?= =?us-ascii?Q?JnXSABWEXZy8XjZuh9h5M9QGvf0IG0IRE3xl0IUxwP4fcmd+WqQjZxvjhJyM?= =?us-ascii?Q?GcH2IDyNbAuH7Ogmx/BMreTUkhUA6dZtiXPSj4BESPHTR+wuGZX19257qkrg?= =?us-ascii?Q?Q8N37jEynHr3nJ6xcxDNUMZFOxX/FcpdTTHTz65vRCH8TpkWl1bW+smaUiU2?= =?us-ascii?Q?82jF0QWotjAcR9k981b8LA7Tkts8JXww/XRLOoGitY6BghoQ7yhnJLqnTQzw?= =?us-ascii?Q?5SYf75ZqhhMi8F6sGieM+ZBpMH8IRByWfRXeDf1CA9DnxDxGIQVVtOTWmQXG?= =?us-ascii?Q?lm6qMuorNiTyGtLzu3RwWqbVJabBGSt6bUXXtPcgMntjnHCFW+NMf98NyIDd?= =?us-ascii?Q?DGgDNZemHK7CmaQBeBt4KFGAKr11l2Z2UTvxivnq6UpjuAiOjBdOp3ZxSwSI?= =?us-ascii?Q?erfl/YxSLNRdO09hl4TXCUVN2QhG1MDHIT9rWyfQypZIViEzasJxk6H6NIC/?= =?us-ascii?Q?RM9/BHnJ57Ynn58jSWhrJbrH8dN412n+L0vP2Kmbs6ssQ7+6Dl8UGfKzz6Cp?= =?us-ascii?Q?xgSkdJzKh5BlFNhLyLMEyEAMcgAsm9H7q8H6uHR+IFTaJhfD1Ug1BuAiQxx7?= =?us-ascii?Q?/HAY06q8UdPUvODXzL/rtoCSEvjmr8WlQCe7HGVtFdNcvlOAudx/zNQrYuJ9?= =?us-ascii?Q?Q+RBYOZX5O9xG2ooTPkTICDVLPdXA0T3h2W645sPEOemL6HXMnyTgxDqV+VV?= =?us-ascii?Q?QxkgWw001HpTJ5G2hXm+mYFHQMmZw9uOqT3YBNP541s8KAC/DhF4lLrFbNTp?= =?us-ascii?Q?lV3uCa+j/KNlmaSsc3MzNtccM5fVjamKOU0hzRuKfNwK9uzjIQbxxlcp7xog?= =?us-ascii?Q?vSNXNtjUa6itsW+gdwFOajd9GLaUHOU9oMatcRGgOhB6vAcUL9QbGq5zrZsz?= =?us-ascii?Q?S2eaNkMXcA9LVXe47i3xLzmNDZzcHjM/Vpv2OZLqoLXa/ervEcPZcvdJX2xG?= =?us-ascii?Q?pArKNl1U6w3AnCX5wn+ps+CoZ8lIRk9jl/nDlsbjksP21U1Tj4dvUZWR7Kuu?= =?us-ascii?Q?ka3+qldowrqJsD6BsrVqh0YKc7AXMBnwjKhB5I1hYa6jfeSFNC477EeyW51y?= =?us-ascii?Q?sPxroBKUIRWS13uRmJROog7zMcC72y6RhVVawTKSWnUzMc37oi5j7gTJktcQ?= =?us-ascii?Q?nbr5h/m6Nz5WQRKvJTsp/LjdxaEE5u4swZHBzdTUeovPgq4ytcQR23JZTeuS?= =?us-ascii?Q?i8h0SLAuTryf1pg0XMtSvZuTsJbifoxMiQXDvC9KGiVvvcEOo71HsYsYYysw?= =?us-ascii?Q?MHlJDvro8OxpSNx2YU2+O5uP1JTP/AVnk5NDiABYELSbIg+9KQN20pyKKrGZ?= =?us-ascii?Q?ChuclEQKvqWaRnRd1UXNN2sUqFWO4OJoyPOgeIfH2bg5xNqKsdjgPRS3AKsI?= =?us-ascii?Q?STvTl6KMyY4iwWgI6tdMovKKnVCwFLgnOo7QAYX352L2G14cUKJevJ3ZxCdM?= =?us-ascii?Q?rufJYQzaxcBR/5ARSpL+sqFu7EBZaY0+qopg2M6S0ldwI9o+sH6k72D+gbc/?= =?us-ascii?Q?2BcOuVcQ0o5YMZESwyE/sUDUmVvy3JoOEZXJWcpvo8wUqTuMN7zLNrv1Sg+q?= =?us-ascii?Q?am3RW6dnXB6myP2W9xlmY9Vr7ViHbbaojAVUc9ZGhJyql7/WZ81fpYEAorMN?= =?us-ascii?Q?man1Urz5tw=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83918dae-553f-40cc-d940-08decb1f86ee X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5390.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2026 20:49:00.2427 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: eak46xY3VUQb1ChHTvahB9nV2lQW3t2MQv2TTP8fbTd4o5N/cs17F2JeM9tjgi/linD44WR07twQtTjnbuOUSA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5807 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: permerror client-ip=2a01:111:f403:c107::9; envelope-from=nathanc@nvidia.com; helo=PH7PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1781556635591158500 Content-Type: text/plain; charset="utf-8" From: Nathan Chen Introduce a support_ats() handler that returns whether ATS is supported for a device associated with a host IOMMU device, checking if the IOMMU_HW_CAP_PCI_ATS_NOT_SUPPORTED capability bit is set. Implement this handler in a new function for iommufd. Suggested-by: Shameer Kolothum Signed-off-by: Nathan Chen Reviewed-by: C=C3=A9dric Le Goater Reviewed-by: Shameer Kolothum --- include/system/host_iommu_device.h | 9 +++++++++ backends/iommufd.c | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/include/system/host_iommu_device.h b/include/system/host_iommu= _device.h index f000301583..2cb5365340 100644 --- a/include/system/host_iommu_device.h +++ b/include/system/host_iommu_device.h @@ -133,6 +133,15 @@ struct HostIOMMUDeviceClass { * Returns: true on success, false on failure. */ bool (*get_pasid_info)(HostIOMMUDevice *hiod, PasidInfo *pasid_info); + /** + * @support_ats: Returns true if ATS can be used by the device, + * false if the host IOMMU reports it is unavailable. + * + * @hiod: handle to the host IOMMU device + * + * Returns: true if ATS is supported, false otherwise + */ + bool (*support_ats)(HostIOMMUDevice *hiod); }; =20 /* diff --git a/backends/iommufd.c b/backends/iommufd.c index 410b044370..7cc6767b4b 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -573,6 +573,13 @@ static int hiod_iommufd_get_cap(HostIOMMUDevice *hiod,= int cap, Error **errp) } } =20 +static bool hiod_iommufd_support_ats(HostIOMMUDevice *hiod) +{ + HostIOMMUDeviceCaps *caps =3D &hiod->caps; + + return !(caps->hw_caps & IOMMU_HW_CAP_PCI_ATS_NOT_SUPPORTED); +} + static bool hiod_iommufd_get_pasid_info(HostIOMMUDevice *hiod, PasidInfo *pasid_info) { @@ -595,6 +602,7 @@ static void hiod_iommufd_class_init(ObjectClass *oc, co= nst void *data) =20 hiodc->get_cap =3D hiod_iommufd_get_cap; hiodc->get_pasid_info =3D hiod_iommufd_get_pasid_info; + hiodc->support_ats =3D hiod_iommufd_support_ats; }; =20 static const TypeInfo types[] =3D { --=20 2.43.0 From nobody Sun Jul 26 13:28:52 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1781556595; cv=pass; d=zohomail.com; s=zohoarc; b=BjxBqDjRUx/eQUCLqDGSpTnkvyPjIT3D1WS0ArkYOMBfRcmSqgrdg9KJkbBYTrrD6VHzeqpwBOyH1lPD2XDTD1WYuU9Pu4LaJbM2gcW/LkDPpk0YHn3XOIKdNBfBDHH9IcuPGLfCMIX7sCEuY5cIUUOStjED0RY+TXGcelVrZdY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781556595; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JyYjY3gZAnNn0ZyZbYr1yOYVXqMB6ggMJxBKIdN1Om0=; b=adX6sA10pgYPFypVh+Pd4j3RY3MYeVCDgKv/lKn3IPvDflFt+oeaSQW6S9cKaBlmMe4j4ogYH5BNlnxgdDmlyyWOGl84hIzs6l8SFBUxtmbZsYQzKEuEboKDKcVpvX8vNgrnLMErw43BcYLbFs4OGUBQP+g2LdT1WL+QL9Q0zQ0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781556595507261.6422996154389; Mon, 15 Jun 2026 13:49:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZEFe-0003w2-Tu; Mon, 15 Jun 2026 16:49:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZEFc-0003vP-Ks for qemu-devel@nongnu.org; Mon, 15 Jun 2026 16:49:44 -0400 Received: from mail-westus3azlp170100009.outbound.protection.outlook.com ([2a01:111:f403:c107::9] helo=PH7PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZEFa-0005Aj-My for qemu-devel@nongnu.org; Mon, 15 Jun 2026 16:49:44 -0400 Received: from DM4PR12MB5390.namprd12.prod.outlook.com (2603:10b6:5:389::15) by PH7PR12MB5807.namprd12.prod.outlook.com (2603:10b6:510:1d3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.18; Mon, 15 Jun 2026 20:49:02 +0000 Received: from DM4PR12MB5390.namprd12.prod.outlook.com ([fe80::2815:c27e:a0a:2720]) by DM4PR12MB5390.namprd12.prod.outlook.com ([fe80::2815:c27e:a0a:2720%6]) with mapi id 15.21.0113.015; Mon, 15 Jun 2026 20:49:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=v+qrsfhtbol+O3pU4SLerDoRs23/oPMM91zw3lsI0wK3fdsyqU+hJd8sRC/5U9eH1oHNG5Yi1m0lp7Llh7HqolZ6WE3qTdr/N/kCM1RbGfmSNBCHKq3zbGIXi9pHqKsSlp5r9fyNbdNGuQH+jXqMUEbnhgExM0ZH1rfH7ODq85LUfYksCMEG27U/xGtfMX25UESXMSa+l+EpTuKMz0+WQgx8hl7GpW+gCzS/GMGMsyGK5N+i559UkGEp4KSUDmzh04esEvO5MuebRqJXIv0/1MxZrlNUUyEUiokcadZ/kVezPXr6FWSVasPaSAMInZGv4Klo1namfLMGKok97dIcLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JyYjY3gZAnNn0ZyZbYr1yOYVXqMB6ggMJxBKIdN1Om0=; b=C5EY86NV86wpd6dKbSHcPa1q5qQ7xfhNzJUDqWNaZmzbLFxdJcdENTYrDDxOaSFS+bsV3/5uS2NcOyZkDT34npCIvUQOejNDkhg//imBg8rEeT6BdUXmu1itDklgtRUi+ZBeGnyw17x53f7R4avXbJGqIRS0tuNyybNlXNO9cfGMniG+CQNUoC4Y9hZpGFhmtlZ2AjHup8JDbnrqG0cenUNKD3JmqrczzhDCh5Z+/xBHJe3YVCWaFSegbvq13EjH80DwLu3Y5r8SS6/aw4mOwKsuhj665By6+dYUTNnSRHibnpBFGEBpRbMIFEKFITw2kdHuugGq+7IdoPoeuoLyMg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JyYjY3gZAnNn0ZyZbYr1yOYVXqMB6ggMJxBKIdN1Om0=; b=A4JFaIABL1ogsxJw9iqmY5T/kDFRCcRTCvvI7awz+asp2bCUbkY5ejb3sRVxz+oAx6Ao0a1pYfPxuIDOWpkbiIxwIyN2USXz6Kj0Vc5m4BMtKCiJaPc+xVVJPdePbeAVcqa+N+VMLUXH3mL47zhgECFIl1DnLu1OubesVS5PxXUiQeV77Gc39g00TPeWe3Av7c9oOBBJxb/acgn3ldXG55KEvu8lVwLbCGm4hK1iakIn8tOLiR3SW7hDe2qkcK/zpX686p6tBzTKBQnUrrC+prdEADcyOQxIbNnvFW+1Fz/b8ugO7RDYLyxKRS6GDJAmCnuvfA/kihy2HIdBFoZJwA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; From: Nathan Chen To: qemu-devel@nongnu.org Cc: Yi Liu , Eric Auger , Zhenzhong Duan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu , Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Matt Ochs , Nicolin Chen , Shameer Kolothum , Nathan Chen Subject: [PATCH v2 2/3] vfio/pci: Add ats property Date: Mon, 15 Jun 2026 13:48:48 -0700 Message-ID: <20260615204849.3659647-3-nathanc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260615204849.3659647-1-nathanc@nvidia.com> References: <20260615204849.3659647-1-nathanc@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0268.namprd03.prod.outlook.com (2603:10b6:a03:3a0::33) To DM4PR12MB5390.namprd12.prod.outlook.com (2603:10b6:5:389::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR12MB5390:EE_|PH7PR12MB5807:EE_ X-MS-Office365-Filtering-Correlation-Id: b7b60880-24a2-402d-3cae-08decb1f8808 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|376014|23010399003|22082099003|18002099003|11063799006|6133799003|56012099006; X-Microsoft-Antispam-Message-Info: +KnJphicjQ56sQKfHSxyjvrXViFYLrwvu274VGQEfbLMpCPoI2oaxTheTT1zEzsLAodbbBVWKtyQg+6xW0u/fyq0g5jlg98pEqkfQdVXCKxWN3pYVOnqEUQ0LYWSNgDPc90WV42T6VVUEetytn8Y03Xd1ijOEiTQowOBja3fTGEgt3x3hMw6fhFdpWuR3X8LMk1Y1JBRAzTK2PSDo8A8AOCTaZ3Kr3hWkeiXoE7NmZavKOxpV2iq5ArSCG6O3PklyJLk02hLnsjXslZbtQfK+4IQr0U3Lf+Ed6upYyEFcyMVRQJUFi/Oa/dEwlovX1b5vWPFz0Gwm4b9aevC2g/XElFdMBrROk1zVV/yTzgu+Ro6LfsP7eltbUDXn1pm8ccUF9BziCgPPHQHaDrjF+V6G0QeHvbK67/QkVvLMy4XqX9j0cBXKn4+feRqMLUkfMG00+ftrlCRVOsg7BeOzsflEwbEGNBoN/feUh6iNaoqpAe8jQfxv3C/PAc2JSF82pRFFZHTgMTrEjwvhQlcmCFI/mUsjSVUKnfZwuGAiYhtlG7Ia2X/Gs60hdLq/ecHYgQERqyGqpwRoOCNjRpHBEsDUehS1CsbPOxu+x+WfgkboMpinuSQdV1RZkYkB6n9v0TiHQ5WuFhJPq/cx9U2FhcBKQpwmjj1tBrqByYIaYiIWHbohX6vrPXB5XrmQY4QNcy7 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5390.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(23010399003)(22082099003)(18002099003)(11063799006)(6133799003)(56012099006); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WPLFvtkz4DDTuSzaNL4RukFf3+CgszB+8SPt9q4wE8HxaWOpYNjh0AUgVdor?= =?us-ascii?Q?t8gCikW3YINL9naWCaA917XWcAIFCGvWblBM3siCHGHsClfv/zUlvgwNJrR/?= =?us-ascii?Q?8eQa6BwBagC4Vjo0gkpimcw2NnrCQbZ5uCwdacXq5Ga3KfxQ4P2JUJ7yJJNl?= =?us-ascii?Q?zO1T6X3W3dVVhsb/k0CVluEOjOfB39tu6MaNcUcWNbI95S55mVFRWPbNXqfB?= =?us-ascii?Q?FYQ7NSNJoXF92lLGFhjX9QgqKRP/aObkYt8Ga12xX5f6ine0zOm41xF8SHzi?= =?us-ascii?Q?FWnSPXyfQFcR2h/gT6QTPhJ341pB7ooSUsjpbwGGZBBUOqvjGj7nhlIEU6/N?= =?us-ascii?Q?DDIHxT+PZivUp/9MpgCYSyu1fnc5oY7R85ruOhPPE1xBd5XtKEZOfILKp6bN?= =?us-ascii?Q?f6WgsitN+vT4CujQjBzABFoECx46vWBdjyhqrFcE2ckoZm6ZcAHJL7R36u2D?= =?us-ascii?Q?JKFiQNnWS413KpXqXz4rhcDiL9QbDcKpbO10m3sbFHHiq+n6WQZKEGepsCEG?= =?us-ascii?Q?TRaTNsOmjdyEIECrMjab3Oa+3HNtRDZThZ539gg/UB5SQWfO/De4MX0LEAff?= =?us-ascii?Q?HNur7kla60MWu6SnT9hgIP9McI48xK1xTa+dfHToIWVAlxX9zo2RPbcBB7v+?= =?us-ascii?Q?qxQ9BVUI+63eTGvXfzReFd84iRM7l7SyjR/fJPl2KrbFu/aJKHA0lUVHyvO1?= =?us-ascii?Q?ECZTyWPofimfBjo1UL5yFgth+JIRXTxGNn+GnRLW3ox9BjY0upE3h0jDiEhC?= =?us-ascii?Q?g+j1jgmTi7EOVqhi++UZn2LbxKYV3SGUANMItHdvYtIv/A43ZA7MTq14PPWf?= =?us-ascii?Q?csna454nSuxQX3a4kyIMh2kQ12WIu88GwV8eB9o+mYyAytMHLkSX52Oo+/2E?= =?us-ascii?Q?4Qm0gYfOWXgp/A6+x4DxA19uaW1qyDkVbu31Do465AmoNDdnIgsUek7UEqax?= =?us-ascii?Q?Zv+sZEFELoeyh9kAOrKT6QKLxjrjZNpPrRNpbcbsB4KVhGpkOVDGnQgQijR7?= =?us-ascii?Q?Trdl/GVVuvde/fF0ntIg4HCMEdtMM/KQ5O/3je4QWeGdLnAk3fRTx12yAOjm?= =?us-ascii?Q?lAFE6kEv2jua7sKamB+3uEFmxbQxiY/6L7/oXh9eLac5kOYButlulShu4kMR?= =?us-ascii?Q?hTJkLH+xO/ML65bkAEhjWxIs+XCWCd+FdxI3kre3/bNuFJYZKVSkkvdmA9+C?= =?us-ascii?Q?aqjonTxOJ4ONvqUMvYps94FvZBgaBlWDwvFELriNBGt1WeUc+C9ghoVwgprt?= =?us-ascii?Q?RSH13vPquyP56nC4nWieGAibWCNMYsBy3acMg0IwFknX4U4b60+LSRA+zx9U?= =?us-ascii?Q?eE07mXPdi0R/DI7o38AgdA5OJCuV/S9hqUCTAES7PO6A7rAWK4+TIEKHIOVU?= =?us-ascii?Q?CzgfyYv3q2sGr82JPfkB9Bd4G0czeMKRLm/FWGY2tTr5Fly6Vgi+RtQudny7?= =?us-ascii?Q?OGLSmnv8xEUJt6Rm7GCSY2WEe3AOUSWLFBvtMc0vV0YIujt0jx6xDIkdgI+D?= =?us-ascii?Q?nJNmHfpwA5/6PhKrzCV7WmsdpavEk5AErddjWFhytj17NIzIBe//NPL6AoT5?= =?us-ascii?Q?dJ3hohLZjcQSjwSaoGK9cyPnyvvWwt926qmSYTgvhXizbon3IJhDu/I/VEFu?= =?us-ascii?Q?EnEskuYH8Hy2+lCfrMwbLLFKiFCC3r5DWLREBbj3QmDp4cMTc8Lhfx8jLHkh?= =?us-ascii?Q?vshx2pUV8dbvPSnHB7SCZ6rhyHQV1v6sRX3PoAXot8KHqQFQj0oqHL04a+zF?= =?us-ascii?Q?PDfplpxuNg=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: b7b60880-24a2-402d-3cae-08decb1f8808 X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5390.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2026 20:49:02.0754 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dSDWvbc7lXSe1WKzctYNPiLBWbpuMscaecqGOy6ppKitTWrVmEDdvGqNq2K3nFk3HbHDgBv5AF8m9MDO11eDtg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5807 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: permerror client-ip=2a01:111:f403:c107::9; envelope-from=nathanc@nvidia.com; helo=PH7PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1781556598088158500 Content-Type: text/plain; charset="utf-8" From: Nathan Chen Add an "ats" OnOffAuto property to vfio-pci. When the device has an ATS extended capability in config space but we should not expose it (ats=3Doff, or ats=3Dauto and kernel reports IOMMU_HW_CAP_PCI_ATS_NOT_SUPPORTED), mask the capability so the guest does not see it. If ATS is explicitly requested but not supported by the kernel, fail device realize. This aligns with the kernel's per-device effective ATS reporting and allows vfio-pci to mask ATS when the host kernel reports ATS as unsupported. Introduce a new compat for the changed default for vfio-pci device ATS property, from "on" to "auto". Suggested-by: Shameer Kolothum Signed-off-by: Nathan Chen --- hw/vfio/pci.h | 1 + hw/core/machine.c | 1 + hw/vfio/pci.c | 74 +++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 73 insertions(+), 3 deletions(-) diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h index c3a1f53d35..f2934f2d84 100644 --- a/hw/vfio/pci.h +++ b/hw/vfio/pci.h @@ -188,6 +188,7 @@ struct VFIOPCIDevice { bool clear_parent_atomics_on_exit; bool skip_vsc_check; uint16_t vpasid_cap_offset; + OnOffAuto ats; VFIODisplay *dpy; Notifier irqchip_change_notifier; VFIOPCICPR cpr; diff --git a/hw/core/machine.c b/hw/core/machine.c index 4d8b15d99e..c0cdf7c9da 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -43,6 +43,7 @@ GlobalProperty hw_compat_11_0[] =3D { { "chardev-vc", "encoding", "cp437" }, { "tpm-crb", "cap-chunk", "off" }, { "tpm-crb", "x-allow-chunk-migration", "off" }, + { "vfio-pci", "ats", "on" }, }; const size_t hw_compat_11_0_len =3D G_N_ELEMENTS(hw_compat_11_0); =20 diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 9c06b25e63..0f592ada89 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2546,7 +2546,49 @@ static bool vfio_pci_synthesize_pasid_cap(VFIOPCIDev= ice *vdev, Error **errp) return true; } =20 -static void vfio_add_ext_cap(VFIOPCIDevice *vdev) +/* + * Determine whether ATS capability should be advertised for @vdev, based = on + * whether it was enabled on the command line and whether it is supported + * according to the kernel. + * + * Store whether ATS capability should be advertised in @ats_needed. + * + * Returns false only when ats=3Don is explicitly requested but the kernel + * reports it is not supported. Returns true in all other cases. + */ +static bool vfio_pci_ats_requested_and_supported(VFIOPCIDevice *vdev, + bool *ats_needed, Error *= *errp) +{ + HostIOMMUDevice *hiod =3D vdev->vbasedev.hiod; + HostIOMMUDeviceClass *hiodc; + bool ats_supported; + *ats_needed =3D false; + + if (vdev->ats =3D=3D ON_OFF_AUTO_OFF) { + return true; + } + + *ats_needed =3D true; + if (!hiod) { + return true; + } + hiodc =3D HOST_IOMMU_DEVICE_GET_CLASS(hiod); + if (!hiodc || !hiodc->support_ats) { + return true; + } + + ats_supported =3D hiodc->support_ats(hiod); + if (vdev->ats =3D=3D ON_OFF_AUTO_ON && !ats_supported) { + error_setg(errp, "vfio-pci: ATS requested but not supported by ker= nel"); + *ats_needed =3D false; + return false; + } + + *ats_needed =3D ats_supported; + return true; +} + +static void vfio_add_ext_cap(VFIOPCIDevice *vdev, bool ats_needed) { PCIDevice *pdev =3D PCI_DEVICE(vdev); bool pasid_cap_added =3D false; @@ -2635,7 +2677,18 @@ static void vfio_add_ext_cap(VFIOPCIDevice *vdev) */ case PCI_EXT_CAP_ID_PASID: pasid_cap_added =3D true; - /* fallthrough */ + pcie_add_capability(pdev, cap_id, cap_ver, next, size); + break; + case PCI_EXT_CAP_ID_ATS: + /* + * If ATS is requested and supported according to the kernel, = add + * the ATS capability. If not supported according to the kerne= l or + * disabled on the qemu command line, omit the ATS cap. + */ + if (ats_needed) { + pcie_add_capability(pdev, cap_id, cap_ver, next, size); + } + break; default: pcie_add_capability(pdev, cap_id, cap_ver, next, size); } @@ -2657,6 +2710,7 @@ static void vfio_add_ext_cap(VFIOPCIDevice *vdev) bool vfio_pci_add_capabilities(VFIOPCIDevice *vdev, Error **errp) { PCIDevice *pdev =3D PCI_DEVICE(vdev); + bool ats_needed =3D false; =20 if (!(pdev->config[PCI_STATUS] & PCI_STATUS_CAP_LIST) || !pdev->config[PCI_CAPABILITY_LIST]) { @@ -2667,7 +2721,11 @@ bool vfio_pci_add_capabilities(VFIOPCIDevice *vdev, = Error **errp) return false; } =20 - vfio_add_ext_cap(vdev); + if (!vfio_pci_ats_requested_and_supported(vdev, &ats_needed, errp)) { + return false; + } + + vfio_add_ext_cap(vdev, ats_needed); return true; } =20 @@ -3815,6 +3873,7 @@ static const Property vfio_pci_properties[] =3D { DEFINE_PROP_BOOL("skip-vsc-check", VFIOPCIDevice, skip_vsc_check, true= ), DEFINE_PROP_UINT16("x-vpasid-cap-offset", VFIOPCIDevice, vpasid_cap_offset, 0), + DEFINE_PROP_ON_OFF_AUTO("ats", VFIOPCIDevice, ats, ON_OFF_AUTO_AUTO), }; =20 static void vfio_pci_set_fd(Object *obj, const char *str, Error **errp) @@ -3973,6 +4032,15 @@ static void vfio_pci_class_init(ObjectClass *klass, = const void *data) "a vIOMMU. A value of 0 (default= ) places the capability at the " "end of the extended configurati= on space. The offset must be " "4-byte aligned and within the P= CIe extended configuration space"); + object_class_property_set_description(klass, /* 11.1 */ + "ats", + "Control guest visibility of the= ATS PCIe extended capability. " + "Valid values are on, off, and a= uto (default). " + "'off' always masks ATS. " + "'on' requires ATS support for t= he device and fails realize if the " + "host kernel reports ATS as unav= ailable for this device. " + "'auto' masks ATS only when the = host kernel reports " + "ATS as unavailable"); } =20 static const TypeInfo vfio_pci_info =3D { --=20 2.43.0 From nobody Sun Jul 26 13:28:52 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1781556595; cv=pass; d=zohomail.com; s=zohoarc; b=FFJtKMFUtU7btpcIqDXRFvoNkLEI5ARssxBpSM94YiNlh2hklIQJhiVQosYl/ulrfhg5UcXHZetIWsB0qEDvlg5pxfOMpMso2n0KGWJgybnIfFyv1J9B8SrafmeA66+APyvaiQQmmN21xnL2+NKpPCDd0J0/ePuaRTEYb0Fgr3s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781556595; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dzh4wBWo3NUqJpCccSSKoNR90uG/Cc0eUrVkFtLy2aU=; b=eTAFH/W4kuOrggu0Z1Ydb0h1X6spI7WlX+zR09rK1Dst/8sjTi9p9KnbmIk5X+WPOQYIfEi/4r1E2fGKkpVfqpwS5XTgRT6zDNGfpjfIznBa9BHB9kfmZ9RLRTUH3e0CJdFBUz1uL9XDV3uz/XjOgZM5tWxhJ7Yx40A4MrtnWzM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781556595703417.9245291357522; Mon, 15 Jun 2026 13:49:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZEFH-0003Vi-0M; Mon, 15 Jun 2026 16:49:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZEF9-0003V0-Tj for qemu-devel@nongnu.org; Mon, 15 Jun 2026 16:49:16 -0400 Received: from mail-westus2azlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c005::5] helo=CO1PR03CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZEF8-00053r-2w for qemu-devel@nongnu.org; Mon, 15 Jun 2026 16:49:15 -0400 Received: from DM4PR12MB5390.namprd12.prod.outlook.com (2603:10b6:5:389::15) by SJ2PR12MB9006.namprd12.prod.outlook.com (2603:10b6:a03:540::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.18; Mon, 15 Jun 2026 20:49:03 +0000 Received: from DM4PR12MB5390.namprd12.prod.outlook.com ([fe80::2815:c27e:a0a:2720]) by DM4PR12MB5390.namprd12.prod.outlook.com ([fe80::2815:c27e:a0a:2720%6]) with mapi id 15.21.0113.015; Mon, 15 Jun 2026 20:49:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=erAW6NKL/IJYHRLsKfV/5gqltd6hWWG8lLsCiAnX3kk1RTVC2NRu4y/Dac9NJsTPP9WSSC5tN6NsZkFZYzKBFg3n8Awam/xpZGitHHpcsS/KPEytS93nWtM2+QhMjRCsVvRjIc579UXjy1y89MeEILMa/5BvQevy/B5BJH8AcHuIIUOdz275TXGcMOfXE9RDGHwwFltB4i/iq+QUQZWesaX+IQ2YNsrRzLZ4wuWYFGV9ElH5jRSXRfPWnEENa2rv3eKkYde4rKbzIcZoTTj3XpUe8MyOWozaagPjs97Tb6TlalFkDtwEImTJJMmWNVMYP2ZzTcw0v6nvmF7d4fB8mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dzh4wBWo3NUqJpCccSSKoNR90uG/Cc0eUrVkFtLy2aU=; b=wp7a/isjl2k7DXLu3XPceDcPpocg79mAEofczZjbn0U4bd+ehFszJtBZz/BU4HLRYjUqm1BLP3X8SSavCzEHwAxRSca7p0MPunDl9FegQ7w44k5BqAfJa3+BlPwELzfV8vohgyQVMlHSm4CV9kW+64CVRMiUxADGbNe3A2rOW3+tHrqL5Dn4kxmf5d9sD/31iZ4WvXavgMO2uJhV5BWoT3GKr9s8VuRSPrrF8fg+FD7BDOw80RWpT9KSeS1a+zOcMx7Nyqnq5BQ1/YhD86uuOvGtNIfjt1nb7gmu1nOGE1J58/UJO4jpocq0iptcKJZnvWdUXIvR4GCqVipGdv7lZw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dzh4wBWo3NUqJpCccSSKoNR90uG/Cc0eUrVkFtLy2aU=; b=m5wxyuJ2Pe87rZv9DRtWw4X4gqwJ4KzH1TMT5V0+yMoNN977as/UUF8f87n1iBSy6l+5UkYLjmx1ETwTFEbpIhpf3UvBNNNcFyPqzVmcI/iZH7PPATbux7oYnpkbS13mCrQ/k3dCsRRpgzpJtGPqiEWt2ysvmZAz7QRpbKwl/PalNIGB23lyITbZ9YTQtyzzxgLD9EiZxmWn9HXrk+8jvG+D2T43Jh6CdwyVU1K6NQ1CygaBXU0T4JXo+aX4kmrWH7uFYNFbOpFpuBnTRGsxJ9a+31FLXV2/ypyUyh/S0q4XWfMTslcL7u1mNy9ezBS5qIvNY8jOu+OymWvfs+xDjg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; From: Nathan Chen To: qemu-devel@nongnu.org Cc: Yi Liu , Eric Auger , Zhenzhong Duan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu , Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Matt Ochs , Nicolin Chen , Shameer Kolothum , Nathan Chen Subject: [PATCH v2 3/3] vfio/pci: Warn when ats=on but host device lacks ATS cap Date: Mon, 15 Jun 2026 13:48:49 -0700 Message-ID: <20260615204849.3659647-4-nathanc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260615204849.3659647-1-nathanc@nvidia.com> References: <20260615204849.3659647-1-nathanc@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0104.namprd03.prod.outlook.com (2603:10b6:a03:333::19) To DM4PR12MB5390.namprd12.prod.outlook.com (2603:10b6:5:389::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR12MB5390:EE_|SJ2PR12MB9006:EE_ X-MS-Office365-Filtering-Correlation-Id: 0bfaeebf-e4b4-4322-5c37-08decb1f8903 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|376014|23010399003|18002099003|22082099003|11063799006|56012099006|6133799003; X-Microsoft-Antispam-Message-Info: UOozweNcXtTlIeI6OtOUEM3GPwOsnFkznXg8UZKK6NKqNO2z79BpKkUFK/6wdI51cGDKz3vdjIVlrF8R7U7cjQBEkRx5rLIfj7N7hRPki0D/eUHlUuVbPP3CjS0tP7SNO/xCPQHo5T9FqWbjs3yScM8WVSBW8qXU42p8H8wk3wXndymzU/d1yOZT0jGMvrEpTNuFxJgpqjhZxEkLRsIxCG4NHq4q9VVuGvLurBCDt5YEIUgwnIybLAIddIafkCGQqvFjWdCv06iuTbzg1L7JGuGZrGrmHg0D2guPnZqTXziKa9zdNwmRJ+yB3AUe2fuK4yQ3/jxOwajoBPntFbPvceKQY17byjeNZ3FHX5SQe+wQ9yMUjSUvwt9bUFPwYkHgj392ibhFDkFoxL68oCXq9RR1Kwxjq/uSy09MsluAgQJELaqu1JpiStaDAMBJw+zSWEdjUob/lcCHfKKSqQjMR/kWJlnfAvH3MjsuxpaFW3F2+MeIZ1MW6Ne8ZVnEtQApNpLrlQCuC/96fmE3jDgXCTU63lfySRTyme7c3uRDngh2tA1CL4SoS/DxSEQG5ssqs+QB2rIQN8mFUUZRAfMbFBqtdfRkSi0KysSHnjQ8+L5vbJ+pOV0hUVZDd/MKI0utFYToyAokbwV7te9hPkSYazzH+D/hX4nixz5FgIx2+DpZqpdYEGA7Cs26Q6pgcjMj X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5390.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(23010399003)(18002099003)(22082099003)(11063799006)(56012099006)(6133799003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?X+E2p5ncCHJVOKAT8PC0JAIlCuXaORwEj7g5JQKFQofpr08ENnIzBzfg4orQ?= =?us-ascii?Q?gWV8BCrLRwsop5nalrXhEjjvSjzI27ifzLZvKgNpqIz0YRwIRmBiVnAebSJg?= =?us-ascii?Q?fEMXCqNeew1CUmOGCSwYsfAPOkotEfT0hAIFq1t3pRMLR4/OKHt07FJnn274?= =?us-ascii?Q?/z6DscqLANvJUX84XKogJ1xP0Z1xD9TDUcpWMUrNTmkVnGqt1WNAhDo7INZM?= =?us-ascii?Q?MfjXeE0TQpsCRUlxfHzdiqZAkRILHB5VflquQs9Z2T5dDzr1aQLB5JweNvVd?= =?us-ascii?Q?rxyMFQ07TbBZAHGPj/v1BDTb3ObXiyIFXMQBR7s5+BC4jqsyuvU2EzI5aPvL?= =?us-ascii?Q?5HKjx3sMWMLltjAs9hc8Baj2MexjDYUdUylizPGgkFtxmWd6uedFKaZIWitm?= =?us-ascii?Q?KIpEt/Pb9T0F048iUZ/oTO1L50WGBBX/N6Lbl94crHWAKCJNyjo6dpAY/jJw?= =?us-ascii?Q?383eJDq2m0/f5/oYoLc0uvsXb6txAyKVhUf89MXW6+9Im8KJyVXG6ARsY/TT?= =?us-ascii?Q?OdRi4NivGYlWrffIhTqQUY8f1EGIkVqEmF6r4dj2iziRhqA4d21yfANU+hwH?= =?us-ascii?Q?TpeCIXOolMTuzxQyAoj2pwxNfLH1C7yGK69xPb1JpdA9IuRzGwumcRgUo9+K?= =?us-ascii?Q?gQQ2CozRO6lh7gocp9u/IlYGSZtsj0Q+Ek2xNyfnORDKVQiou8oI3Ciuu349?= =?us-ascii?Q?QByn7FhouIYCDsAEfOp3Zk9n7UzaeDnvsEJLEIV3gKr0xiwgBouVQvin7NaP?= =?us-ascii?Q?uq2HPdf9XUGnMvfoJU7teiNHIjooZ/Oo4kPuegL/nZ90GITyyHvS/zN7CnpO?= =?us-ascii?Q?O/o7B3rIWQuhwt5lVON54rlGees9DrhE9RBONdALi8KfLTGwpphXHdIJf9oY?= =?us-ascii?Q?QUhUTBEUanu4zLSFfFVb3XghflBAbyUL0CJlqYVqhDFgpe0aHq90EYjRSKJf?= =?us-ascii?Q?kBlkwGJxgFiTvwHJQgrGC5f6Ey5DNagjjJtHMZnXtbhS1EUmPFpxlVq3mEBJ?= =?us-ascii?Q?pUoKf80hqyLIS4xjWElHcOjgCIQ7/dXouAB981YQ5rWhUHCOXtLpuwlO8+GA?= =?us-ascii?Q?DQwA4P0FeSt7XktyaAx+bWEupTtK16OShGgSsLDesw2zOwGqRsjM/Z/fIEcA?= =?us-ascii?Q?cYOAD4PrZ3faJpRP8xZVy+GWJ6krNEZtr3/2YdSbLtjj8B0pdkRpbpxom2K2?= =?us-ascii?Q?0xEZA/SOx5NsZq2SLDgaej4qjVOU0rERv6xlNf+K5Qmc0vjdwaqP02zvNaC8?= =?us-ascii?Q?fewcJa4EZaxtDVmBgH7b4e76I3/BVE0P2fkEpOX+5IM45GpeyJGGjy+p67G2?= =?us-ascii?Q?4LjNPw8WYPhUFGw+8oGkPirYaVkl7JzywNDNO7R5pfB9rAFH//xyAC2GANbu?= =?us-ascii?Q?P/PUjxt7w6FlkCD5pddVjX9mpJv/Hh4WJGgtOoh7gT1jxNf/UB9VOwGwQBMv?= =?us-ascii?Q?uSodw8ltW7WwgMiF773e7OYIpJQC+MhQOoHvz+fvWHfFfd9QLgQdWYY/OuTS?= =?us-ascii?Q?NeHfFaaw9iAe0F5C5dicFao4uzMxiE9MrIs9rzvJrdwXtzaz2X+NDOZLjY8t?= =?us-ascii?Q?fuNUHVgJs2a6PqlaAQ/CUsALiL9e5Og5d2a0ULidtZbBj2l9OVXUPbBqXkzN?= =?us-ascii?Q?dqcctToH2D+1Fz60vE+vmGBF+stB3rp53JNOKBYctOdcUW1K5iLMdm/cxfQP?= =?us-ascii?Q?/h7hOUOFHoK2OrjXZaEvN89In6x8qgOnIYuHfEaKgXqkMC+iygu7CUHVLOE7?= =?us-ascii?Q?cbiLWg9W4Q=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0bfaeebf-e4b4-4322-5c37-08decb1f8903 X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5390.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2026 20:49:03.7499 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: e4ZY2X6lg13o8umeV5FfEi/R6be24yHk3IXLl911uMZTUzF6ysCTbgAuVeujU5kaES0TTatmtPxSkrL7A2HDfg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB9006 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: permerror client-ip=2a01:111:f403:c005::5; envelope-from=nathanc@nvidia.com; helo=CO1PR03CU002.outbound.protection.outlook.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1781556598028158500 Content-Type: text/plain; charset="utf-8" From: Nathan Chen Emit a warning when ats=3Don is requested but the physical device does not advertise ATS, since ATS cannot be exposed to the guest in this case. Signed-off-by: Nathan Chen Reviewed-by: Shameer Kolothum --- hw/vfio/pci.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 0f592ada89..49ba6813ee 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2592,6 +2592,7 @@ static void vfio_add_ext_cap(VFIOPCIDevice *vdev, boo= l ats_needed) { PCIDevice *pdev =3D PCI_DEVICE(vdev); bool pasid_cap_added =3D false; + bool ats_cap_present =3D false; Error *err =3D NULL; uint32_t header; uint16_t cap_id, next, size; @@ -2680,6 +2681,7 @@ static void vfio_add_ext_cap(VFIOPCIDevice *vdev, boo= l ats_needed) pcie_add_capability(pdev, cap_id, cap_ver, next, size); break; case PCI_EXT_CAP_ID_ATS: + ats_cap_present =3D true; /* * If ATS is requested and supported according to the kernel, = add * the ATS capability. If not supported according to the kerne= l or @@ -2699,6 +2701,11 @@ static void vfio_add_ext_cap(VFIOPCIDevice *vdev, bo= ol ats_needed) error_report_err(err); } =20 + if (vdev->ats =3D=3D ON_OFF_AUTO_ON && !ats_cap_present) { + warn_report("vfio-pci: ats=3Don requested, but host device has no " + "ATS extended capability"); + } + /* Cleanup chain head ID if necessary */ if (pci_get_word(pdev->config + PCI_CONFIG_SPACE_SIZE) =3D=3D 0xFFFF) { pci_set_word(pdev->config + PCI_CONFIG_SPACE_SIZE, 0); --=20 2.43.0