[{"id":3682824,"web_url":"http://patchwork.ozlabs.org/comment/3682824/","msgid":"<2efed1ea-e373-41d0-bc37-4adac8378169@intel.com>","list_archive_url":null,"date":"2026-04-27T16:31:39","subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","submitter":{"id":13225,"url":"http://patchwork.ozlabs.org/api/people/13225/","name":"Dave Jiang","email":"dave.jiang@intel.com"},"content":"On 4/26/26 10:54 PM, Nicolin Chen wrote:\n> Controlled by the IOMMU driver, ATS is usually enabled \"on demand\" when a\n> given PASID on a device is attached to an I/O page table. This is working\n> even when a device has no translation on its RID (i.e., the RID is IOMMU\n> bypassed).\n> \n> However, certain PCIe devices require non-PASID ATS on their RID even when\n> the RID is IOMMU bypassed. Call this \"always on\".\n> \n> For example, CXL spec r4.0 notes in sec 3.2.5.13 Memory Type on CXL.cache:\n>  \"To source requests on CXL.cache, devices need to get the Host Physical\n>   Address (HPA) from the Host by means of an ATS request on CXL.io.\"\n> \n> In other words, the CXL.cache capability requires ATS; otherwise, it can't\n> access host physical memory.\n> \n> Introduce a new pci_ats_always_on() helper for the IOMMU driver to scan a\n> PCI device and shift ATS policies between \"on demand\" and \"always on\".\n> \n> Add the support for CXL.cache devices first. Pre-CXL devices will be added\n> in quirks.c file.\n> \n> Note that pci_ats_always_on() validates against pci_ats_supported(), so we\n> ensure that untrusted devices (e.g. external ports) will not be always on.\n> This maintains the existing ATS security policy regarding potential side-\n> channel attacks via ATS.\n> \n> Cc: linux-cxl@vger.kernel.org\n> Suggested-by: Vikram Sethi <vsethi@nvidia.com>\n> Suggested-by: Jason Gunthorpe <jgg@nvidia.com>\n> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>\n> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>\n> Reviewed-by: Kevin Tian <kevin.tian@intel.com>\n> Tested-by: Nirmoy Das <nirmoyd@nvidia.com>\n> Acked-by: Nirmoy Das <nirmoyd@nvidia.com>\n> Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>\n\nReviewed-by: Dave Jiang <dave.jiang@intel.com>\n\n\n> ---\n>  include/linux/pci-ats.h       |  3 +++\n>  include/uapi/linux/pci_regs.h |  1 +\n>  drivers/pci/ats.c             | 43 +++++++++++++++++++++++++++++++++++\n>  3 files changed, 47 insertions(+)\n> \n> diff --git a/include/linux/pci-ats.h b/include/linux/pci-ats.h\n> index 75c6c86cf09dc..d14ba727d38b3 100644\n> --- a/include/linux/pci-ats.h\n> +++ b/include/linux/pci-ats.h\n> @@ -12,6 +12,7 @@ int pci_prepare_ats(struct pci_dev *dev, int ps);\n>  void pci_disable_ats(struct pci_dev *dev);\n>  int pci_ats_queue_depth(struct pci_dev *dev);\n>  int pci_ats_page_aligned(struct pci_dev *dev);\n> +bool pci_ats_always_on(struct pci_dev *dev);\n>  #else /* CONFIG_PCI_ATS */\n>  static inline bool pci_ats_supported(struct pci_dev *d)\n>  { return false; }\n> @@ -24,6 +25,8 @@ static inline int pci_ats_queue_depth(struct pci_dev *d)\n>  { return -ENODEV; }\n>  static inline int pci_ats_page_aligned(struct pci_dev *dev)\n>  { return 0; }\n> +static inline bool pci_ats_always_on(struct pci_dev *dev)\n> +{ return false; }\n>  #endif /* CONFIG_PCI_ATS */\n>  \n>  #ifdef CONFIG_PCI_PRI\n> diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h\n> index 14f634ab9350d..6ac45be1008b8 100644\n> --- a/include/uapi/linux/pci_regs.h\n> +++ b/include/uapi/linux/pci_regs.h\n> @@ -1349,6 +1349,7 @@\n>  /* CXL r4.0, 8.1.3: PCIe DVSEC for CXL Device */\n>  #define PCI_DVSEC_CXL_DEVICE\t\t\t\t0\n>  #define  PCI_DVSEC_CXL_CAP\t\t\t\t0xA\n> +#define   PCI_DVSEC_CXL_CACHE_CAPABLE\t\t\t_BITUL(0)\n>  #define   PCI_DVSEC_CXL_MEM_CAPABLE\t\t\t_BITUL(2)\n>  #define   PCI_DVSEC_CXL_HDM_COUNT\t\t\t__GENMASK(5, 4)\n>  #define  PCI_DVSEC_CXL_CTRL\t\t\t\t0xC\n> diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c\n> index ec6c8dbdc5e9c..fc871858b65bc 100644\n> --- a/drivers/pci/ats.c\n> +++ b/drivers/pci/ats.c\n> @@ -205,6 +205,49 @@ int pci_ats_page_aligned(struct pci_dev *pdev)\n>  \treturn 0;\n>  }\n>  \n> +/*\n> + * CXL r4.0, sec 3.2.5.13 Memory Type on CXL.cache notes: to source requests on\n> + * CXL.cache, devices need to get the Host Physical Address (HPA) from the Host\n> + * by means of an ATS request on CXL.io.\n> + *\n> + * In other words, CXL.cache devices cannot access host physical memory without\n> + * ATS.\n> + */\n> +static bool pci_cxl_ats_always_on(struct pci_dev *pdev)\n> +{\n> +\tint offset;\n> +\tu16 cap;\n> +\n> +\toffset = pci_find_dvsec_capability(pdev, PCI_VENDOR_ID_CXL,\n> +\t\t\t\t\t   PCI_DVSEC_CXL_DEVICE);\n> +\tif (!offset)\n> +\t\treturn false;\n> +\n> +\tif (pci_read_config_word(pdev, offset + PCI_DVSEC_CXL_CAP, &cap))\n> +\t\treturn false;\n> +\n> +\treturn cap & PCI_DVSEC_CXL_CACHE_CAPABLE;\n> +}\n> +\n> +/**\n> + * pci_ats_always_on - Whether the PCI device requires ATS to be always enabled\n> + * @pdev: the PCI device\n> + *\n> + * Returns true, if the PCI device requires ATS for basic functional operation.\n> + */\n> +bool pci_ats_always_on(struct pci_dev *pdev)\n> +{\n> +\tif (pci_ats_disabled() || !pci_ats_supported(pdev))\n> +\t\treturn false;\n> +\n> +\t/* A VF inherits its PF's requirement for ATS function */\n> +\tif (pdev->is_virtfn)\n> +\t\tpdev = pci_physfn(pdev);\n> +\n> +\treturn pci_cxl_ats_always_on(pdev);\n> +}\n> +EXPORT_SYMBOL_GPL(pci_ats_always_on);\n> +\n>  #ifdef CONFIG_PCI_PRI\n>  void pci_pri_init(struct pci_dev *pdev)\n>  {","headers":{"Return-Path":"\n <linux-pci+bounces-53232-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=gmNEH+Mq;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=104.64.211.4; helo=sin.lore.kernel.org;\n envelope-from=linux-pci+bounces-53232-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=\"gmNEH+Mq\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=198.175.65.21","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=intel.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=intel.com"],"Received":["from sin.lore.kernel.org (sin.lore.kernel.org [104.64.211.4])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g48Q25h8Hz1yHv\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 02:38:18 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id 4808D30236DB\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 27 Apr 2026 16:31:52 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 6E2773D6673;\n\tMon, 27 Apr 2026 16:31:45 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [198.175.65.21])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id EF7CE3D649F;\n\tMon, 27 Apr 2026 16:31:42 +0000 (UTC)","from orviesa001.jf.intel.com ([10.64.159.141])\n  by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Apr 2026 09:31:43 -0700","from msatwood-mobl.amr.corp.intel.com (HELO [10.125.108.172])\n ([10.125.108.172])\n  by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Apr 2026 09:31:42 -0700"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777307505; cv=none;\n b=Fy2yyadcCQ2sF69QsIOtXKdHl9IGu3AIBxSGGV6uigbie8fR+sSjdY/OloZfn2utOLnQrLnzvjmdO7wRwv/QPQA1S5n73ChNGeaPxvrqQes/DDc6tbW/vrlkCpJKvus1826ReWKC+4PChfWfsEkFDRlJGSCsgxkjDoR4KJ6qmO8=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777307505; c=relaxed/simple;\n\tbh=RJ9UPp8EF7z1uvB7R2RYJWNX1kg1lSd61NxnC8m0o8k=;\n\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n\t In-Reply-To:Content-Type;\n b=WaPYNzkLA2tmZfEM4zxZ2iQ/JSV471ZYvBdKq79h/bkK8UzgINbKvDI1tMj9M+pTlCWuPNnopZuf0k0NoYkVX0v4MAoUksHsqKmi30Vp3ewhXkI+E0+RJslx6TGC9evuJjECBamwBkfbsVzDT7pc126K5QuGJL6jkX3ksFwLF5E=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=intel.com;\n spf=pass smtp.mailfrom=intel.com;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=gmNEH+Mq; arc=none smtp.client-ip=198.175.65.21","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1777307503; x=1808843503;\n  h=message-id:date:mime-version:subject:to:cc:references:\n   from:in-reply-to:content-transfer-encoding;\n  bh=RJ9UPp8EF7z1uvB7R2RYJWNX1kg1lSd61NxnC8m0o8k=;\n  b=gmNEH+MqDbG/X5ny1aiUUqCwyVFlwMo3Dunc9S3oupiObq1DI/QlMfd0\n   ZJmDIlhYAcNR+3CD32ppttLi1cSGb6ngdzBxp6r3NlssJtKyZe1w7ixV6\n   1FbsjMtOPO0Gl+IQov9HV8tKT5AtAnPi5ZieQIUUiVOZgbaO9vep1n6T0\n   Gudm3AqFAbMwzSZ6p1nl9qrTmBNKKrm8LxdWHQX5oXKr1Rfsx/r3eZjnI\n   fuNwB/znuaFlnyK3/Yj66RdrGPVJIXvXczsG9SeBn/cVWXqGl1BHymH8I\n   TUUj4Y1ktIp5jm5752DRQAmEUYh2rthi3xsvKT0nRmY3NayPTMO5EkF79\n   w==;","X-CSE-ConnectionGUID":["w3P6qVORSTONtAW0Xl/fRw==","LCC0RagbSjCpVrwYJkeKiQ=="],"X-CSE-MsgGUID":["plAwMEBvRnCEr4TMCSetVg==","D8PgNkBgQgSIF6wwRjcL7w=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11769\"; a=\"78093619\"","E=Sophos;i=\"6.23,202,1770624000\";\n   d=\"scan'208\";a=\"78093619\"","E=Sophos;i=\"6.23,202,1770624000\";\n   d=\"scan'208\";a=\"271816236\""],"X-ExtLoop1":"1","Message-ID":"<2efed1ea-e373-41d0-bc37-4adac8378169@intel.com>","Date":"Mon, 27 Apr 2026 09:31:39 -0700","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","To":"Nicolin Chen <nicolinc@nvidia.com>, jgg@nvidia.com, will@kernel.org,\n robin.murphy@arm.com, bhelgaas@google.com","Cc":"joro@8bytes.org, praan@google.com, baolu.lu@linux.intel.com,\n kevin.tian@intel.com, miko.lenczewski@arm.com,\n linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev,\n linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,\n dan.j.williams@intel.com, jonathan.cameron@huawei.com, vsethi@nvidia.com,\n linux-cxl@vger.kernel.org, nirmoyd@nvidia.com","References":"<cover.1777269009.git.nicolinc@nvidia.com>\n <f6734b9dad0050138676f11ecd14e9db1cf6b697.1777269009.git.nicolinc@nvidia.com>","Content-Language":"en-US","From":"Dave Jiang <dave.jiang@intel.com>","In-Reply-To":"\n <f6734b9dad0050138676f11ecd14e9db1cf6b697.1777269009.git.nicolinc@nvidia.com>","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"7bit"}},{"id":3684955,"web_url":"http://patchwork.ozlabs.org/comment/3684955/","msgid":"<69f3cc82926_3291a910039@djbw-dev.notmuch>","list_archive_url":null,"date":"2026-04-30T21:41:22","subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","submitter":{"id":93110,"url":"http://patchwork.ozlabs.org/api/people/93110/","name":"Dan Williams (nvidia)","email":"djbw@kernel.org"},"content":"Nicolin Chen wrote:\n> Controlled by the IOMMU driver, ATS is usually enabled \"on demand\" when a\n> given PASID on a device is attached to an I/O page table. This is working\n> even when a device has no translation on its RID (i.e., the RID is IOMMU\n> bypassed).\n> \n> However, certain PCIe devices require non-PASID ATS on their RID even when\n> the RID is IOMMU bypassed. Call this \"always on\".\n> \n> For example, CXL spec r4.0 notes in sec 3.2.5.13 Memory Type on CXL.cache:\n>  \"To source requests on CXL.cache, devices need to get the Host Physical\n>   Address (HPA) from the Host by means of an ATS request on CXL.io.\"\n> \n> In other words, the CXL.cache capability requires ATS; otherwise, it can't\n> access host physical memory.\n> \n> Introduce a new pci_ats_always_on() helper for the IOMMU driver to scan a\n> PCI device and shift ATS policies between \"on demand\" and \"always on\".\n> \n> Add the support for CXL.cache devices first. Pre-CXL devices will be added\n> in quirks.c file.\n> \n> Note that pci_ats_always_on() validates against pci_ats_supported(), so we\n> ensure that untrusted devices (e.g. external ports) will not be always on.\n> This maintains the existing ATS security policy regarding potential side-\n> channel attacks via ATS.\n> \n> Cc: linux-cxl@vger.kernel.org\n> Suggested-by: Vikram Sethi <vsethi@nvidia.com>\n> Suggested-by: Jason Gunthorpe <jgg@nvidia.com>\n> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>\n> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>\n> Reviewed-by: Kevin Tian <kevin.tian@intel.com>\n> Tested-by: Nirmoy Das <nirmoyd@nvidia.com>\n> Acked-by: Nirmoy Das <nirmoyd@nvidia.com>\n> Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>\n> ---\n>  include/linux/pci-ats.h       |  3 +++\n>  include/uapi/linux/pci_regs.h |  1 +\n>  drivers/pci/ats.c             | 43 +++++++++++++++++++++++++++++++++++\n>  3 files changed, 47 insertions(+)\n> \n> diff --git a/include/linux/pci-ats.h b/include/linux/pci-ats.h\n> index 75c6c86cf09dc..d14ba727d38b3 100644\n> --- a/include/linux/pci-ats.h\n> +++ b/include/linux/pci-ats.h\n> @@ -12,6 +12,7 @@ int pci_prepare_ats(struct pci_dev *dev, int ps);\n>  void pci_disable_ats(struct pci_dev *dev);\n>  int pci_ats_queue_depth(struct pci_dev *dev);\n>  int pci_ats_page_aligned(struct pci_dev *dev);\n> +bool pci_ats_always_on(struct pci_dev *dev);\n>  #else /* CONFIG_PCI_ATS */\n>  static inline bool pci_ats_supported(struct pci_dev *d)\n>  { return false; }\n> @@ -24,6 +25,8 @@ static inline int pci_ats_queue_depth(struct pci_dev *d)\n>  { return -ENODEV; }\n>  static inline int pci_ats_page_aligned(struct pci_dev *dev)\n>  { return 0; }\n> +static inline bool pci_ats_always_on(struct pci_dev *dev)\n> +{ return false; }\n>  #endif /* CONFIG_PCI_ATS */\n>  \n>  #ifdef CONFIG_PCI_PRI\n> diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h\n> index 14f634ab9350d..6ac45be1008b8 100644\n> --- a/include/uapi/linux/pci_regs.h\n> +++ b/include/uapi/linux/pci_regs.h\n> @@ -1349,6 +1349,7 @@\n>  /* CXL r4.0, 8.1.3: PCIe DVSEC for CXL Device */\n>  #define PCI_DVSEC_CXL_DEVICE\t\t\t\t0\n>  #define  PCI_DVSEC_CXL_CAP\t\t\t\t0xA\n> +#define   PCI_DVSEC_CXL_CACHE_CAPABLE\t\t\t_BITUL(0)\n>  #define   PCI_DVSEC_CXL_MEM_CAPABLE\t\t\t_BITUL(2)\n>  #define   PCI_DVSEC_CXL_HDM_COUNT\t\t\t__GENMASK(5, 4)\n>  #define  PCI_DVSEC_CXL_CTRL\t\t\t\t0xC\n> diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c\n> index ec6c8dbdc5e9c..fc871858b65bc 100644\n> --- a/drivers/pci/ats.c\n> +++ b/drivers/pci/ats.c\n> @@ -205,6 +205,49 @@ int pci_ats_page_aligned(struct pci_dev *pdev)\n>  \treturn 0;\n>  }\n>  \n> +/*\n> + * CXL r4.0, sec 3.2.5.13 Memory Type on CXL.cache notes: to source requests on\n> + * CXL.cache, devices need to get the Host Physical Address (HPA) from the Host\n> + * by means of an ATS request on CXL.io.\n> + *\n> + * In other words, CXL.cache devices cannot access host physical memory without\n> + * ATS.\n> + */\n> +static bool pci_cxl_ats_always_on(struct pci_dev *pdev)\n> +{\n> +\tint offset;\n> +\tu16 cap;\n> +\n> +\toffset = pci_find_dvsec_capability(pdev, PCI_VENDOR_ID_CXL,\n> +\t\t\t\t\t   PCI_DVSEC_CXL_DEVICE);\n> +\tif (!offset)\n> +\t\treturn false;\n> +\n> +\tif (pci_read_config_word(pdev, offset + PCI_DVSEC_CXL_CAP, &cap))\n> +\t\treturn false;\n> +\n> +\treturn cap & PCI_DVSEC_CXL_CACHE_CAPABLE;\n\nApologies for coming to this late and forgive me if the following has\nalready been asked and answered. Why not check for actual CXL.cache\nprotocol on the wire being present?\n\nI.e. replace pci_cxl_ats_always_on() with a pdev->is_cxl_cache and this\nincremental change (compile tested only):\n\ndiff --git a/include/linux/pci.h b/include/linux/pci.h\nindex 2c4454583c11..45d87af4de63 100644\n--- a/include/linux/pci.h\n+++ b/include/linux/pci.h\n@@ -483,7 +483,8 @@ struct pci_dev {\n \tunsigned int\tis_pciehp:1;\n \tunsigned int\tshpc_managed:1;\t\t/* SHPC owned by shpchp */\n \tunsigned int\tis_thunderbolt:1;\t/* Thunderbolt controller */\n-\tunsigned int\tis_cxl:1;               /* Compute Express Link (CXL) */\n+\tunsigned int\tis_cxl_mem:1;           /* Compute Express Link (CXL.mem) */\n+\tunsigned int\tis_cxl_cache:1;         /* Compute Express Link (CXL.cache) */\n \t/*\n \t * Devices marked being untrusted are the ones that can potentially\n \t * execute DMA attacks and similar. They are typically connected\n@@ -809,7 +810,7 @@ static inline bool pci_is_display(struct pci_dev *pdev)\n \n static inline bool pcie_is_cxl(struct pci_dev *pci_dev)\n {\n-\treturn pci_dev->is_cxl;\n+\treturn pci_dev->is_cxl_mem || pci_dev->is_cxl_cache;\n }\n \n #define for_each_pci_bridge(dev, bus)\t\t\t\t\\\ndiff --git a/drivers/pci/probe.c b/drivers/pci/probe.c\nindex b63cd0c310bc..c01f0e8362f1 100644\n--- a/drivers/pci/probe.c\n+++ b/drivers/pci/probe.c\n@@ -1733,9 +1733,8 @@ static void set_pcie_cxl(struct pci_dev *dev)\n \tpci_read_config_word(dev, dvsec + PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS,\n \t\t\t     &cap);\n \n-\tdev->is_cxl = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE, cap) ||\n-\t\tFIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM, cap);\n-\n+\tdev->is_cxl_cache = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE, cap);\n+\tdev->is_cxl_mem = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM, cap);\n }\n \n static void set_pcie_untrusted(struct pci_dev *dev)","headers":{"Return-Path":"\n <linux-pci+bounces-53553-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=PsIch+r7;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-53553-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"PsIch+r7\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g677F5KJ6z1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 07:47:21 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id D121D30E92C8\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 21:42:00 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 51F253B2FD5;\n\tThu, 30 Apr 2026 21:41:25 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E2C13A3830\n\tfor <linux-pci@vger.kernel.org>; Thu, 30 Apr 2026 21:41:25 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 7AB2CC2BCB4;\n\tThu, 30 Apr 2026 21:41:24 +0000 (UTC)","from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41])\n\tby mailfauth.phl.internal (Postfix) with ESMTP id 94594F40069;\n\tThu, 30 Apr 2026 17:41:23 -0400 (EDT)","from phl-frontend-03 ([10.202.2.162])\n  by phl-compute-01.internal (MEProxy); Thu, 30 Apr 2026 17:41:23 -0400","by mail.messagingengine.com (Postfix) with ESMTPA; Thu,\n 30 Apr 2026 17:41:22 -0400 (EDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777585285; cv=none;\n b=tfaFmZUsHlfjYjGZJ0c6awXl4B79mMbA08+wsX4G+hW4ORnO5OP2GUI2T4oilRjb+RSH2C3u3dxBwSPCtfMZyz8ezw/qRf5EpLjpRZObUvBQSv8fnHoHCGn7amOCoMoqOgJt9CNQ1QkQ5BoJTQT/bxjdfos/4b9rBq/B5q3EMFU=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777585285; c=relaxed/simple;\n\tbh=6Uq6A0mV41CjUmZm/vm4w/OOWYrR+v7vH90TRC9z6Fo=;\n\th=Date:From:To:Cc:Message-ID:In-Reply-To:References:Subject:\n\t Mime-Version:Content-Type;\n b=iriHr20CSiw9seiMHaWC9Nbr45ohGU2Vn70493KQgkWlUBMqbeZxZzA4V+9xVvkPV2acpKM4ZEJJ6HboGLkX6jvtf75k1BiaygDuNI7ChTuthwDzjUEklLumK8VIeBr5syRl8WbIqETBQSoRyfPTPU/f0YDyI+fBWib/HQt75mE=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=PsIch+r7; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1777585285;\n\tbh=6Uq6A0mV41CjUmZm/vm4w/OOWYrR+v7vH90TRC9z6Fo=;\n\th=Date:From:To:Cc:In-Reply-To:References:Subject:From;\n\tb=PsIch+r76xe72kDqHEkIy33zsA/upJwkYlyJcXfDyiRuR5To+68rQPGQMZYBuzk6g\n\t OqKsk4CKKljGZ4QsKB2u9pHR3qC+IX6vPFXmk0WonrKsNlCPTW/caKB/I2PBU+4LYP\n\t jem+yd5tvvCataumYlnJd4kg+44AFIs+4cCwip94FIUtHSB3+w5X3M4RiuBynLOKRg\n\t LFgk5yyt5Amex8TZc/RETnZTXUmraT1ZvIun0VVLyobWM8QA1uJkkkHiNlOESXjrHN\n\t LiYO8pmpOG5gEhCv1oMTGOjMZYcMbDng1jG/NpR9y53aghQnDaBBkh5ExRRHnlnHmr\n\t NT0As/Hq251hA==","X-ME-Sender":"<xms:g8zzaXQgENWylzGXUzS7DIy7_MVtLBvpGnZlXC6l9lnbPza6jZNeIA>\n    <xme:g8zzadrgxzQZ8WQG377jnrScN_1U5hCKalHb5bGZSKQ7lOm2Kt7jtomXEU8wzGdzW\n    HI1uBlg8278mRPA6Bp-08Xca4RMYLU0UjuSX-RgCI3vwI0N0oPurZxC>","X-ME-Received":"\n <xmr:g8zzaVbhYpXjrya_LEUA3uzHZjKUJzC0xXQq5VMswANFGQFxnzNmGCRQ_1pCJbKyq_Xx7LN_oSCk6TeC3Jsk1KBzRwNq69olvpE>","X-ME-Proxy-Cause":"\n gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdekkeegvdcutefuodetggdotefrod\n    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr\n    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug\n    hrpeffhffvvefkjghfufggtgfgsehtjeertddttdejnecuhfhrohhmpedfffgrnhcuhghi\n    lhhlihgrmhhsucdlnhhvihguihgrmddfuceoughjsgifsehkvghrnhgvlhdrohhrgheqne\n    cuggftrfgrthhtvghrnhepvdegheeikeetleeuffeuheefjeejvdejvdevteefgfffveeh\n    vdeuvdffveffvdehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh\n    hfrhhomhepughjsgifodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhithihqddujeej\n    vdeftdegheehqdeffeefleegtdegjedqughjsgifpeepkhgvrhhnvghlrdhorhhgsehfrg\n    hsthhmrghilhdrtghomhdpnhgspghrtghpthhtohepudelpdhmohguvgepshhmthhpohhu\n    thdprhgtphhtthhopehnihgtohhlihhntgesnhhvihguihgrrdgtohhmpdhrtghpthhtoh\n    epjhhgghesnhhvihguihgrrdgtohhmpdhrtghpthhtohepfihilhhlsehkvghrnhgvlhdr\n    ohhrghdprhgtphhtthhopehrohgsihhnrdhmuhhrphhhhiesrghrmhdrtghomhdprhgtph\n    htthhopegshhgvlhhgrggrshesghhoohhglhgvrdgtohhmpdhrtghpthhtohepjhhorhho\n    seeksgihthgvshdrohhrghdprhgtphhtthhopehprhgrrghnsehgohhoghhlvgdrtghomh\n    dprhgtphhtthhopegsrgholhhurdhluheslhhinhhugidrihhnthgvlhdrtghomhdprhgt\n    phhtthhopehkvghvihhnrdhtihgrnhesihhnthgvlhdrtghomh","X-ME-Proxy":"<xmx:g8zzaYSE2Jx2rmrznxwwijil_ZmrHDUyhv1L3KBMpWgsfpdh-pmukw>\n    <xmx:g8zzaTfrAvo-mm8m-MnLVDxuPIDBNyMJjefbSFFwBffYMXtMvtg62g>\n    <xmx:g8zzaXl6uO6HxKg7ZZ5PmEP7eTvxQ1ZgcCJmUc5_nR0WJ0X3CYUxaw>\n    <xmx:g8zzaYiUjLOfhXDHc_GPQpF-MzkP6c3lJ6rNi8T8q18PotbHRkcXnA>\n    <xmx:g8zzaYEECV6ZeJ-2SWMSsTalAYimtXj19iYzO4gXvViI0c_Q9VsuGDzS>","Feedback-ID":"i67ae4b3e:Fastmail","Date":"Thu, 30 Apr 2026 14:41:22 -0700","From":"\"Dan Williams (nvidia)\" <djbw@kernel.org>","To":"Nicolin Chen <nicolinc@nvidia.com>,\n jgg@nvidia.com,\n will@kernel.org,\n robin.murphy@arm.com,\n bhelgaas@google.com","Cc":"joro@8bytes.org,\n praan@google.com,\n baolu.lu@linux.intel.com,\n kevin.tian@intel.com,\n miko.lenczewski@arm.com,\n linux-arm-kernel@lists.infradead.org,\n iommu@lists.linux.dev,\n linux-kernel@vger.kernel.org,\n linux-pci@vger.kernel.org,\n dan.j.williams@intel.com,\n jonathan.cameron@huawei.com,\n vsethi@nvidia.com,\n linux-cxl@vger.kernel.org,\n nirmoyd@nvidia.com","Message-ID":"<69f3cc82926_3291a910039@djbw-dev.notmuch>","In-Reply-To":"\n <f6734b9dad0050138676f11ecd14e9db1cf6b697.1777269009.git.nicolinc@nvidia.com>","References":"<cover.1777269009.git.nicolinc@nvidia.com>\n <f6734b9dad0050138676f11ecd14e9db1cf6b697.1777269009.git.nicolinc@nvidia.com>","Subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","Mime-Version":"1.0","Content-Type":"text/plain;\n charset=utf-8","Content-Transfer-Encoding":"7bit"}},{"id":3684979,"web_url":"http://patchwork.ozlabs.org/comment/3684979/","msgid":"<afPlkW5zlTSHwQCT@Asurada-Nvidia>","list_archive_url":null,"date":"2026-04-30T23:28:17","subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","submitter":{"id":82183,"url":"http://patchwork.ozlabs.org/api/people/82183/","name":"Nicolin Chen","email":"nicolinc@nvidia.com"},"content":"On Thu, Apr 30, 2026 at 02:41:22PM -0700, Dan Williams (nvidia) wrote:\n> > +static bool pci_cxl_ats_always_on(struct pci_dev *pdev)\n> > +{\n> > +\tint offset;\n> > +\tu16 cap;\n> > +\n> > +\toffset = pci_find_dvsec_capability(pdev, PCI_VENDOR_ID_CXL,\n> > +\t\t\t\t\t   PCI_DVSEC_CXL_DEVICE);\n> > +\tif (!offset)\n> > +\t\treturn false;\n> > +\n> > +\tif (pci_read_config_word(pdev, offset + PCI_DVSEC_CXL_CAP, &cap))\n> > +\t\treturn false;\n> > +\n> > +\treturn cap & PCI_DVSEC_CXL_CACHE_CAPABLE;\n[...]\n> Apologies for coming to this late and forgive me if the following has\n> already been asked and answered. Why not check for actual CXL.cache\n> protocol on the wire being present?\n\nActually it would make the patch smaller. The thing is that this\nis_cxl property wasn't added when I started the series. So, it's\nnot using it. :)\n\n> @@ -1733,9 +1733,8 @@ static void set_pcie_cxl(struct pci_dev *dev)\n>  \tpci_read_config_word(dev, dvsec + PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS,\n>  \t\t\t     &cap);\n>  \n> -\tdev->is_cxl = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE, cap) ||\n> -\t\tFIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM, cap);\n> -\n> +\tdev->is_cxl_cache = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE, cap);\n> +\tdev->is_cxl_mem = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM, cap);\n\nOne caveat is that:\n\nHere it checks the cap from:\n\tPCI_DVSEC_CXL_FLEXBUS_PORT_STATUS (0xE) via\n\t\tPCI_DVSEC_CXL_FLEXBUS_PORT_STATUS (0x7)\n\nOn the other hand, mine checks from:\n\tPCI_DVSEC_CXL_CAP (0xA) via\n\t\tPCI_DVSEC_CXL_DEVICE (0x0)\n\nThe spec mentions in 8.2.1.3.1 DVSEC Flex Bus Port Capability: \"\n  Note: The Mem_Capable, IO_Capable, and Cache_Capable fields are\n  also present in the DVSEC Flex Bus for the device [which is the\n  legacy name for DVSEC 0x0]. This allows for future scalability\n  where multiple devices, each with potentially different\n  capabilities, may be populated behind a single Port.\n\"\n\nNot arguing that set_pcie_cxl() is wrong, but I am not sure if there\nwould be any side effect to rely on the \"legacy name\" over DVSEC 0x0.\n\nIs there any CXL expert who can help confirm?\n\nThanks!\nNicolin","headers":{"Return-Path":"\n <linux-pci+bounces-53556-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=mMLBm6kV;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-53556-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"mMLBm6kV\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.201.58","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com","smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g69Nm3tglz1y1d\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 09:29:12 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 9FEC2302B825\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 23:28:58 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 8EA7A3C13E3;\n\tThu, 30 Apr 2026 23:28:55 +0000 (UTC)","from CH4PR04CU002.outbound.protection.outlook.com\n (mail-northcentralusazon11013058.outbound.protection.outlook.com\n [40.107.201.58])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 39F6081ACA;\n\tThu, 30 Apr 2026 23:28:54 +0000 (UTC)","from BL0PR05CA0003.namprd05.prod.outlook.com (2603:10b6:208:91::13)\n by CYYPR12MB8890.namprd12.prod.outlook.com (2603:10b6:930:c7::8) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.15; Thu, 30 Apr\n 2026 23:28:41 +0000","from BL6PEPF0001AB4B.namprd04.prod.outlook.com\n (2603:10b6:208:91:cafe::e1) by BL0PR05CA0003.outlook.office365.com\n (2603:10b6:208:91::13) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.16 via Frontend Transport; Thu,\n 30 Apr 2026 23:28:40 +0000","from mail.nvidia.com (216.228.117.161) by\n BL6PEPF0001AB4B.mail.protection.outlook.com (10.167.242.69) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9870.22 via Frontend Transport; Thu, 30 Apr 2026 23:28:40 +0000","from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com\n (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 30 Apr\n 2026 16:28:20 -0700","from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail204.nvidia.com\n (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 30 Apr\n 2026 16:28:19 -0700","from Asurada-Nvidia (10.127.8.12) by mail.nvidia.com (10.129.68.6)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend\n Transport; Thu, 30 Apr 2026 16:28:18 -0700"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777591735; cv=fail;\n b=SU/ntVzSKYU2006Ij+kzh1Bc87MtkKqBva3/s/fXY5+xsUFL2ijXudTGKkPRqP1BaFapzNtcwx95tcjK0W83wTI0u4lFpHMSlSQnvhJdDLboTzYnnO7WtfdMy6xcU1MOF9spndyyJSorwoKq/jpNa2SMpTLbhpNmWbx59zIh8+Y=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=IRUBYmhAuYfAijpbVwQQ6MbIu/KB1LGUpheZWgJwUvzR0y0XF0IJMzOo+d2CfeCNOEcgi4eCHrqKv1DRwveKSSQ22X2Iia5GQcw/dFy+VL5wGVfiGB6owb8a3fqvxmIdOyvSHrxRdQMaCdmzLWj360QBs4szUiP8pylJFIXWO8anTE4nbGn/IJ5AmSd3j35Hk69ubIhyV0w3ADKyAWGyny7Asq+8NeBvAowCQcp4trrpfJbD6zAzlk/xtETLlWUKGdfDun0JR53REdOrQamzXCtPXL9UmbH2Z2D5GOCh+MxYMleIMI6nSY7zuITQTQ28z8KrsebbHBV0zMIE9fIx4w=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777591735; c=relaxed/simple;\n\tbh=6b9Vd6TlijgcvXMNJ8qFtyei7G88cZrT4mbPgr3T/SU=;\n\th=Date:From:To:CC:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=PEFkSY+hni7Nh1RSfOj6Qs2E/bd5+fjR0VYnlcKhMdEgUBDYlas5+Hj/hoM2HOXu765UNv7CaJOmzSZJ6kZomJtflD4vWzMP5tu36AelZv4i4yKXu7jgyehzRUw+UhRr++DilZKahpCPbKjNYgtvZcEOFc7n89DdlNDMMMLyPuM=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=f5eETolv2CRJ+KGuzqHXNWHz75SkAhmrcTAnZvVauEE=;\n b=DcEBcN4HBFB8NWFbLvBWERyOGFPSntjOFSqRbi0GMnmezSqbxkTA+ehmkCGBQrPRj1c3HtOcoFPwBaDuK0DCHoJA89sEoEO0sOGlA5J6nojLKvgDKaCVi6ymK5+NXw8KGoifvj+7Y+KERpXkiMybXtfyR9apmccjBlXK8P23Ijx8uoHAivTItFD6Z6wqiNu3RzkDO61xi48aTpolc6IjsJcwNTuHsVSvQP4Z87obrTjMOrZbUd0DmOi8gRNvfnMjD0qRso+vi1OGvi7KTWaWDJeTLgYZxJ/BW6i1mi6+/5HXco0To9G6e3y2AsdHFzdp+wHB2tp0cfkvI2346cY4mA=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com;\n spf=fail smtp.mailfrom=nvidia.com;\n dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=mMLBm6kV; arc=fail smtp.client-ip=40.107.201.58","i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.161) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none (0)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=f5eETolv2CRJ+KGuzqHXNWHz75SkAhmrcTAnZvVauEE=;\n b=mMLBm6kV3YOXYYJRO8e/70BpjU0vtzzslFfTmDnSUjzo0eu4teU98t91S7Zuhi2jYjJZ75CdkSXrA+ebqHf4wcc/bHafQBH905u8wKDSpG4veX7yExnCUY5Xz2/XnjyNmSYrWYXVWjKJZx3nbcH9jW7iZQPltdEg9LlmQrjMx4YKhfjIWxEWHjWvbLNxCx669JFcue4suZSgwJrExaE7p8LKG2zAyTDgbuVz0xa+OlWpUHaO6xWUkd4UFcXtSjJlhe13oLDjXL8FSEAHMZsKnAH1uzL/E3gnFg1OxHL0/v+iHN5KUv8aLQ2OfVcK21bISyOcGu2B7xNOm9BKs3al2g==","X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 216.228.117.161)\n smtp.mailfrom=nvidia.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;","Received-SPF":"Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.117.161 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C","Date":"Thu, 30 Apr 2026 16:28:17 -0700","From":"Nicolin Chen <nicolinc@nvidia.com>","To":"\"Dan Williams (nvidia)\" <djbw@kernel.org>","CC":"<jgg@nvidia.com>, <will@kernel.org>, <robin.murphy@arm.com>,\n\t<bhelgaas@google.com>, <joro@8bytes.org>, <praan@google.com>,\n\t<baolu.lu@linux.intel.com>, <kevin.tian@intel.com>,\n\t<miko.lenczewski@arm.com>, <linux-arm-kernel@lists.infradead.org>,\n\t<iommu@lists.linux.dev>, <linux-kernel@vger.kernel.org>,\n\t<linux-pci@vger.kernel.org>, <dan.j.williams@intel.com>,\n\t<jonathan.cameron@huawei.com>, <vsethi@nvidia.com>,\n\t<linux-cxl@vger.kernel.org>, <nirmoyd@nvidia.com>","Subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","Message-ID":"<afPlkW5zlTSHwQCT@Asurada-Nvidia>","References":"<cover.1777269009.git.nicolinc@nvidia.com>\n <f6734b9dad0050138676f11ecd14e9db1cf6b697.1777269009.git.nicolinc@nvidia.com>\n <69f3cc82926_3291a910039@djbw-dev.notmuch>","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Disposition":"inline","In-Reply-To":"<69f3cc82926_3291a910039@djbw-dev.notmuch>","X-NV-OnPremToCloud":"ExternallySecured","X-EOPAttributedMessage":"0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"BL6PEPF0001AB4B:EE_|CYYPR12MB8890:EE_","X-MS-Office365-Filtering-Correlation-Id":"23c0172c-c533-40ce-6828-08dea710366b","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|1800799024|7416014|376014|82310400026|36860700016|22082099003|18002099003|56012099003;","X-Microsoft-Antispam-Message-Info":"\n\tPa5XL9cSlKqDuP7K5er0RtlkfJlY6adNW4aBqIePvmlGlf2io5JMLUpDrZMmdQCur3kdjKuKsbw+2PBDs+vWOXxC7HDq6oqqUdS5Zf4lsh9yCoL1tgkKZ0Zk+CfpKPzqNYFkzrq2xjVgHcBbquKg3o8QJuKC7d5Pce/b5InXoVQ7UUw58WAVmGFA1j1KMC3fD/Sg9twNxRIf+5jgXNx4xq7ot/gEgiidMJwMmcMKrjhSuABFeCwkHSY5rbP3LZrxEUaEsKY/swl/TBkd9VJgoBKwutwRHBEMMr4hh6jw3NCPSQ0MP279pS+hbV67Tjc/6uzTB7dFchhVPoFJ7mLuyhLtlpFd7gGgZC32H36FKdTOYr/s9vW8VCf0K+q5E3M26QDnEqL5Zrbyt1u1eM3Xlzgwg/SalaFaO5A8feXpVicq18t9kRy5W7sXYkQShKQOCQw8VXqrFQu6MkFVbbVqaQZ3gbdxG6p9SppQdg+Ce9AgX7Ax+PuIgH7LzQaCgBmBpZZk3mr4PBcfze4eTUdhAJfMHFJUgN85lL7kO17xprhTqPKI9oagtLzBE81dJR+7NxosDbKEH1Cnb4CuskLgpEduiwXIHObnCBmR88VGCgSAQRkl6uqpv1MebVQBU/3uPJuxYXlC7QsTcrRex+XSdgssRX5RVRYkrc3ncp55Nh/hryWNXxV+mnoqzN9SC0NfIYbsFk4zSWuSqV+fCf4S/WD3DVhHFz5ZCnLog8eFES8=","X-Forefront-Antispam-Report":"\n\tCIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(82310400026)(36860700016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n\t5QRvdu2tsMZaZN6LaVF5mfJKTnQpODLoriiYBkjWTsLktvO7JrdjeDySsyOcq+ZSbIbea/2/wMMiUp3qI/TmGNNtk0phWymDrrdWo4AJpPyKM5Mi1oZRe16vqbQ1AIOzxtEfhN+IOcZAwsqQ5M9Ka6FjB5Ddy+i7rreix7amE3EoJQywtaWvJGx5ZoGzAdgmpDcMZBAaRHGfpFPFAA0Aag5WcwpfPpElHrg6+viV9PBu7bskH2EXw3+rOuwHFDQ+p7so24CPzX2Jc8bGmEtGw/dFSMtvw3dX/jos/Ra2Ad4ncIv5ILL8egmbbzTOh/e367j/Bj500kSv7oSlgcRlcIcHTZVtwNBDBM82yNmqjrekRkbYDYO1mcOtL9tzY5HKdNU0z7ti4PE0fcjbuapGKbdA6cagOm54xxrC0Q4opB8n7e2kdOpNIl4pPvil7MNL","X-OriginatorOrg":"Nvidia.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"30 Apr 2026 23:28:40.5541\n (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 23c0172c-c533-40ce-6828-08dea710366b","X-MS-Exchange-CrossTenant-Id":"43083d15-7273-40c1-b7db-39efd9ccc17a","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n\tBL6PEPF0001AB4B.namprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"CYYPR12MB8890"}},{"id":3685243,"web_url":"http://patchwork.ozlabs.org/comment/3685243/","msgid":"<69f536ed263dd_3291a910017@djbw-dev.notmuch>","list_archive_url":null,"date":"2026-05-01T23:27:41","subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","submitter":{"id":93110,"url":"http://patchwork.ozlabs.org/api/people/93110/","name":"Dan Williams (nvidia)","email":"djbw@kernel.org"},"content":"Nicolin Chen wrote:\n> On Thu, Apr 30, 2026 at 02:41:22PM -0700, Dan Williams (nvidia) wrote:\n> > > +static bool pci_cxl_ats_always_on(struct pci_dev *pdev)\n> > > +{\n> > > +\tint offset;\n> > > +\tu16 cap;\n> > > +\n> > > +\toffset = pci_find_dvsec_capability(pdev, PCI_VENDOR_ID_CXL,\n> > > +\t\t\t\t\t   PCI_DVSEC_CXL_DEVICE);\n> > > +\tif (!offset)\n> > > +\t\treturn false;\n> > > +\n> > > +\tif (pci_read_config_word(pdev, offset + PCI_DVSEC_CXL_CAP, &cap))\n> > > +\t\treturn false;\n> > > +\n> > > +\treturn cap & PCI_DVSEC_CXL_CACHE_CAPABLE;\n> [...]\n> > Apologies for coming to this late and forgive me if the following has\n> > already been asked and answered. Why not check for actual CXL.cache\n> > protocol on the wire being present?\n> \n> Actually it would make the patch smaller. The thing is that this\n> is_cxl property wasn't added when I started the series. So, it's\n> not using it. :)\n> \n> > @@ -1733,9 +1733,8 @@ static void set_pcie_cxl(struct pci_dev *dev)\n> >  \tpci_read_config_word(dev, dvsec + PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS,\n> >  \t\t\t     &cap);\n> >  \n> > -\tdev->is_cxl = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE, cap) ||\n> > -\t\tFIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM, cap);\n> > -\n> > +\tdev->is_cxl_cache = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE, cap);\n> > +\tdev->is_cxl_mem = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM, cap);\n> \n> One caveat is that:\n> \n> Here it checks the cap from:\n> \tPCI_DVSEC_CXL_FLEXBUS_PORT_STATUS (0xE) via\n> \t\tPCI_DVSEC_CXL_FLEXBUS_PORT_STATUS (0x7)\n> \n> On the other hand, mine checks from:\n> \tPCI_DVSEC_CXL_CAP (0xA) via\n> \t\tPCI_DVSEC_CXL_DEVICE (0x0)\n> \n> The spec mentions in 8.2.1.3.1 DVSEC Flex Bus Port Capability: \"\n>   Note: The Mem_Capable, IO_Capable, and Cache_Capable fields are\n>   also present in the DVSEC Flex Bus for the device [which is the\n>   legacy name for DVSEC 0x0]. This allows for future scalability\n>   where multiple devices, each with potentially different\n>   capabilities, may be populated behind a single Port.\n> \"\n> \n> Not arguing that set_pcie_cxl() is wrong, but I am not sure if there\n> would be any side effect to rely on the \"legacy name\" over DVSEC 0x0.\n> \n> Is there any CXL expert who can help confirm?\n\nYou appear to be confusing Cache_Capable and Cache_Enabled.\n\n\"8.2.1.3.1 DVSEC Flex Bus Port Capability\" != \"8.2.1.3.3 DVSEC Flex Bus Port Status\"\n\nCache_Capable is only a capability. To check that the device has\nactually trained the CXL.cache alternate protocol you need to look at\nthe status register.","headers":{"Return-Path":"\n <linux-pci+bounces-53611-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=GpK1WTsd;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-53611-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"GpK1WTsd\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6nJk1C0Nz1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 02 May 2026 09:27:50 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id B973D30160EE\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  1 May 2026 23:27:46 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 21D802F12AD;\n\tFri,  1 May 2026 23:27:44 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id F2E5D1A8F7B\n\tfor <linux-pci@vger.kernel.org>; Fri,  1 May 2026 23:27:43 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 9D28AC2BCB4;\n\tFri,  1 May 2026 23:27:43 +0000 (UTC)","from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])\n\tby mailfauth.phl.internal (Postfix) with ESMTP id A88FDF40068;\n\tFri,  1 May 2026 19:27:42 -0400 (EDT)","from phl-frontend-04 ([10.202.2.163])\n  by phl-compute-04.internal (MEProxy); Fri, 01 May 2026 19:27:42 -0400","by mail.messagingengine.com (Postfix) with ESMTPA; Fri,\n 1 May 2026 19:27:42 -0400 (EDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777678064; cv=none;\n b=QTZ4HpRRgF8E+vV5DUU3UCSuZwhVe8mTJqtMarAvtfsN9JPXdZYMoPz8Op/MuIlRCJi5J2tBfPWJfJE2/MVm3eRGz7wNH1Z2b5WUdFNHLpLLiw/ooX1d5z7uW/1M3FcEXV99lougGaJOu++5uB5SKCGzzut+sykpg37R4F1Gljw=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777678064; c=relaxed/simple;\n\tbh=2k5q00p8L2SCLrIAB5imsL6AkKQY6Gzh059g+5BeG2w=;\n\th=Date:From:To:Cc:Message-ID:In-Reply-To:References:Subject:\n\t Mime-Version:Content-Type;\n b=RQAKWKQLz8M38bX1afeZMkGNc3DN3Fd9aNq03UT/vGDPLM+p/FiM96O0IH87C14Xk50QAWUDfahthGIiekfyFuVR3bVlHKBEc7YDFZpGFTK0VdldGlHGxnnqLiQhiD52LQlxnWJu36coeBZ1IUi94wnuu/GDNd0BC0HK+GVtRis=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=GpK1WTsd; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1777678063;\n\tbh=2k5q00p8L2SCLrIAB5imsL6AkKQY6Gzh059g+5BeG2w=;\n\th=Date:From:To:Cc:In-Reply-To:References:Subject:From;\n\tb=GpK1WTsdYFhkQb0stH7wNNsrKIrKqEtaXpi9/uDZCt6BTrZQ/He5NU6QAwLlnoLwC\n\t guztffc7OZxlBaMIA9GgkUmNak6mZ0l6v/SH2BubVjYHSapzqR07sJtenDlLjb0Vrf\n\t v7E19++DWZxAQljDbzWC2g6cDaNL4h2ZNp3GUom+nSceiT02UMxYF1c7bzVKCQJi7w\n\t LhZSFokhuaklTiveWalu1i9UIbtf7EzuBvHSl6Tn8WpWJECAmwOOkZeG2+YOFpRNQC\n\t FdFRSQyOL7IBFs1To1+z1lE46+H5yQFJkQZMV7pLy8Zey+hDZ/6QYdNFDysU++zY6d\n\t NTW4EPoONmbRA==","X-ME-Sender":"<xms:7jb1acHY-tPHMvyM98Jqckvdort1JVM99gSyfPMsEDUEEqUbN5gJcQ>\n    <xme:7jb1acZG05AiWaobmeQsjEXn-98j1WHrGb-VSSRg-QhDdU4c6ZbZ71W-zZCFNzgcP\n    hsATR-XUCjE1wPvKH-tsF2n5eZQAociU5IiwePTIZ6RMgI-mJkYng4K>","X-ME-Received":"\n <xmr:7jb1ad0n3Xd6f7-Z65FKboAL6YNLzkFObSdXGqjzz9Ahin0-X8SPDiE_MFwfOjxAph1BtznRROZL2BxS1XNUm2Ti32Gg4nCO8Zc>","X-ME-Proxy-Cause":"\n gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeludehvdcutefuodetggdotefrod\n    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr\n    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug\n    hrpeffhffvvefkjghfufggtgfgsehtjeertddttdejnecuhfhrohhmpedfffgrnhcuhghi\n    lhhlihgrmhhsucdlnhhvihguihgrmddfuceoughjsgifsehkvghrnhgvlhdrohhrgheqne\n    cuggftrfgrthhtvghrnhepvdegheeikeetleeuffeuheefjeejvdejvdevteefgfffveeh\n    vdeuvdffveffvdehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh\n    hfrhhomhepughjsgifodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhithihqddujeej\n    vdeftdegheehqdeffeefleegtdegjedqughjsgifpeepkhgvrhhnvghlrdhorhhgsehfrg\n    hsthhmrghilhdrtghomhdpnhgspghrtghpthhtohepvddtpdhmohguvgepshhmthhpohhu\n    thdprhgtphhtthhopehnihgtohhlihhntgesnhhvihguihgrrdgtohhmpdhrtghpthhtoh\n    epughjsgifsehkvghrnhgvlhdrohhrghdprhgtphhtthhopehjghhgsehnvhhiughirgdr\n    tghomhdprhgtphhtthhopeifihhllheskhgvrhhnvghlrdhorhhgpdhrtghpthhtoheprh\n    hosghinhdrmhhurhhphhihsegrrhhmrdgtohhmpdhrtghpthhtohepsghhvghlghgrrghs\n    sehgohhoghhlvgdrtghomhdprhgtphhtthhopehjohhroheskegshihtvghsrdhorhhgpd\n    hrtghpthhtohepphhrrggrnhesghhoohhglhgvrdgtohhmpdhrtghpthhtohepsggrohhl\n    uhdrlhhusehlihhnuhigrdhinhhtvghlrdgtohhm","X-ME-Proxy":"<xmx:7jb1aUc7xep8-XO8N2WGdSLCmHALigT1u79gu81zGLEbTP19kskZDg>\n    <xmx:7jb1afAUat8iHAecyPX4xjpsjKHL7MLEgoZRwuNvZJIdGN1dLsSPFw>\n    <xmx:7jb1aW07DHrU6-JbKte1wiE-7EtcH2ze9v0pvjWzc_PNyAFr1HPPzg>\n    <xmx:7jb1afM_RN63IDbTfXgJndsz4SEIBN-UAnwcJ9lMdpGEKCGKX38t5A>\n    <xmx:7jb1aUc0Q01sB9YnmfYzZ1DP9YbWSwcXE7IeewNI6Ru4D3cN50Vq79pG>","Feedback-ID":"i67ae4b3e:Fastmail","Date":"Fri, 01 May 2026 16:27:41 -0700","From":"\"Dan Williams (nvidia)\" <djbw@kernel.org>","To":"Nicolin Chen <nicolinc@nvidia.com>,\n \"Dan Williams (nvidia)\" <djbw@kernel.org>","Cc":"jgg@nvidia.com,\n will@kernel.org,\n robin.murphy@arm.com,\n bhelgaas@google.com,\n joro@8bytes.org,\n praan@google.com,\n baolu.lu@linux.intel.com,\n kevin.tian@intel.com,\n miko.lenczewski@arm.com,\n linux-arm-kernel@lists.infradead.org,\n iommu@lists.linux.dev,\n linux-kernel@vger.kernel.org,\n linux-pci@vger.kernel.org,\n dan.j.williams@intel.com,\n jonathan.cameron@huawei.com,\n vsethi@nvidia.com,\n linux-cxl@vger.kernel.org,\n nirmoyd@nvidia.com","Message-ID":"<69f536ed263dd_3291a910017@djbw-dev.notmuch>","In-Reply-To":"<afPlkW5zlTSHwQCT@Asurada-Nvidia>","References":"<cover.1777269009.git.nicolinc@nvidia.com>\n <f6734b9dad0050138676f11ecd14e9db1cf6b697.1777269009.git.nicolinc@nvidia.com>\n <69f3cc82926_3291a910039@djbw-dev.notmuch>\n <afPlkW5zlTSHwQCT@Asurada-Nvidia>","Subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","Mime-Version":"1.0","Content-Type":"text/plain;\n charset=utf-8","Content-Transfer-Encoding":"7bit"}},{"id":3685244,"web_url":"http://patchwork.ozlabs.org/comment/3685244/","msgid":"<20260501234641.GB1381708@nvidia.com>","list_archive_url":null,"date":"2026-05-01T23:46:41","subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","submitter":{"id":79424,"url":"http://patchwork.ozlabs.org/api/people/79424/","name":"Jason Gunthorpe","email":"jgg@nvidia.com"},"content":"On Fri, May 01, 2026 at 04:27:41PM -0700, Dan Williams (nvidia) wrote:\n\n> You appear to be confusing Cache_Capable and Cache_Enabled.\n> \n> \"8.2.1.3.1 DVSEC Flex Bus Port Capability\" != \"8.2.1.3.3 DVSEC Flex Bus Port Status\"\n> \n> Cache_Capable is only a capability. To check that the device has\n> actually trained the CXL.cache alternate protocol you need to look at\n> the status register.\n\nThe capable is probably a reasonable choice here unless you are\nconfident the status will never change after the device is first\ndiscovered? ATS is being set early in the boot sequence.\n\nIt is pretty safe to be over eager with the ATS enablement, less safe\nto get it off when it needs to be on.\n\nJason","headers":{"Return-Path":"\n <linux-pci+bounces-53613-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=bn/J6+ms;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-53613-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"bn/J6+ms\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.93.201.51","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com","smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nvidia.com;"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6nm14BNHz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 02 May 2026 09:48:01 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id B879D301E954\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  1 May 2026 23:46:51 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 15D47337BA6;\n\tFri,  1 May 2026 23:46:51 +0000 (UTC)","from CY3PR05CU001.outbound.protection.outlook.com\n (mail-westcentralusazon11013051.outbound.protection.outlook.com\n [40.93.201.51])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id B091834A3AB;\n\tFri,  1 May 2026 23:46:49 +0000 (UTC)","from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19)\n by DS0PR12MB7511.namprd12.prod.outlook.com (2603:10b6:8:139::8) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.23; Fri, 1 May\n 2026 23:46:44 +0000","from LV8PR12MB9620.namprd12.prod.outlook.com\n ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com\n ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9870.022; Fri, 1 May 2026\n 23:46:44 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777679211; cv=fail;\n b=TCEVK9LPO+LD2Ei0rIPuVCPD0UnE3Bj89uiL3BasXVLHx/vulZtyMzYn9FYTybFMKqpNjTk0BfT1OHLu7UeYEkGlHFlsopcNBCzAVfLJSfE/AcyqLuvsKVSpgLK4ONaT44qBVfEh4C2RKWQ5JizsMNlywkuySfcIITmS0VIkLx4=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=jP0ztPxXA7qXMWrOI+VRADHgvcI43/iSTW6nXTBi54q1vfwCZoH7MElKXUaZvl/O5LdTOW352lPBiNS2xHjoA1Rfdo8gHVuUIpvTmnu7WT7iQEpbpEOt91ZHc/B6x+bbdzl03qdbvwqVuQVs6kvMNVuqUOPOa+4LQ537S2HLDey1zC+57qMDICoO+6iXuETMugZxmva8EsU8oua+eSnpWnuAyRWW/GdbH29pRArviCac8WBsh94fVohLsg0eYnV3ngdivP6bHaz0x1UL5jl2AOSncrukbMvsHZr5ASOC8iV7lyQZFuCpOxsoxtBYqafAT5NymZtIcBo6Z9y4Ke831w=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777679211; c=relaxed/simple;\n\tbh=LnMTtrYCr1sI6ocNilePtKJzlX9/3v5UotqlFD/eYdk=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:Content-Type:\n\t Content-Disposition:In-Reply-To:MIME-Version;\n b=kduB5wVUfMn13p0pIm6ZFIzLHb2KWtClDbAk8orE01JKbmdQRho9wUYP3AWob8BdV4aBvrlbkIDbFz3FOqCpfvdHDeob5YWuXHxeqIRc5xejz2bkRq5OigyPBHz0ZI2W17Tc0uIRLblLbBrOHm7ZMSLFyvBMJ1vjvHzl83iD340=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=XOW+3LD3hVmaVzm1BjhUO50sBN+CcYoYiT5kIe678Gs=;\n b=K6OHQTGSL1qCDmAQQLCZla1mlXFf+1Gb6XWdIdixfkPrSYNglnlJ0VOxodKY9XqsgzYoEY/MhLLQN12FvUZ8fY8/MpT9O7XFlikz0D2IKFX6BO8tY/mGpKL0dg5/tVOqtrY6gypAzeznFDzfepk7NjafWjbs6YOugZZAoqzwUsM/vXi9195kd+6J9WAT4NmZbFF5wKDTbw01Mc/X8iCqg0mxB4VCTY822u1eZ8ZLY4QacWkbkZc0Dz+1d0d0ZRViuh7/Bhkh2SiDYKzmYF2+Ej1WMbUElrnNR3DxA0Hp0bvXrrtQ+v36OJGxp7lzr+CCPU5BmLVbavGkuI6hOCkAsg=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com;\n spf=fail smtp.mailfrom=nvidia.com;\n dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=bn/J6+ms; arc=fail smtp.client-ip=40.93.201.51","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;\n dkim=pass header.d=nvidia.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=XOW+3LD3hVmaVzm1BjhUO50sBN+CcYoYiT5kIe678Gs=;\n b=bn/J6+ms8QQwa5/ZxOikHQ1+zDaE+op2Ld+S8HzJiJDL5qkaOv7wAuV3AyjSK5Ikp9WHGMdUA23LL8oL5MUvvJo2qtTY5rBuCOKrbyBtHM1iilRr8aAB53Cv+tyoYqGifeCneuOx5c+asEujzQcQ5dOyJhyx7mVKgaF3znh+FFEdRgD7USiQBTxIm215ugNrNP/6/vcy3clorRaP+XY2QaxcyilZNPUC+6JqthBsgnjrMqM17wq7gAo3EtR+goqGEa9WA7PJ8vpynx8HKzxBOUm9WdyPYtYYkRKFOSiaFeZzHJQPObBkp3lf7gUcEp3wGQZ5qQi80LohW7AkSN+I3A==","Date":"Fri, 1 May 2026 20:46:41 -0300","From":"Jason Gunthorpe <jgg@nvidia.com>","To":"\"Dan Williams (nvidia)\" <djbw@kernel.org>","Cc":"Nicolin Chen <nicolinc@nvidia.com>, will@kernel.org,\n\trobin.murphy@arm.com, bhelgaas@google.com, joro@8bytes.org,\n\tpraan@google.com, baolu.lu@linux.intel.com, kevin.tian@intel.com,\n\tmiko.lenczewski@arm.com, linux-arm-kernel@lists.infradead.org,\n\tiommu@lists.linux.dev, linux-kernel@vger.kernel.org,\n\tlinux-pci@vger.kernel.org, dan.j.williams@intel.com,\n\tjonathan.cameron@huawei.com, vsethi@nvidia.com,\n\tlinux-cxl@vger.kernel.org, nirmoyd@nvidia.com","Subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","Message-ID":"<20260501234641.GB1381708@nvidia.com>","References":"<cover.1777269009.git.nicolinc@nvidia.com>\n <f6734b9dad0050138676f11ecd14e9db1cf6b697.1777269009.git.nicolinc@nvidia.com>\n <69f3cc82926_3291a910039@djbw-dev.notmuch>\n <afPlkW5zlTSHwQCT@Asurada-Nvidia>\n <69f536ed263dd_3291a910017@djbw-dev.notmuch>","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<69f536ed263dd_3291a910017@djbw-dev.notmuch>","X-ClientProxiedBy":"BYAPR05CA0029.namprd05.prod.outlook.com\n (2603:10b6:a03:c0::42) To LV8PR12MB9620.namprd12.prod.outlook.com\n (2603:10b6:408:2a1::19)","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"LV8PR12MB9620:EE_|DS0PR12MB7511:EE_","X-MS-Office365-Filtering-Correlation-Id":"beb77938-ca07-4a0f-0309-08dea7dbe68e","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|366016|1800799024|7416014|376014|22082099003|18002099003|56012099003;","X-Microsoft-Antispam-Message-Info":"\n\thS2bgXcGDxf/kF7zL3sfzYG9anhY9Vt2jXN4+eaUL1jbULq3wN7ys/XbKg20Oe3EGZ6SuhLb0Bioggu/kByif5PRivhPxYOGSXtNuDcoCwf0rM7m/8KwCsl0m1UKTvy+P9pcnOVgpaRZP1tkX0m5DBm5dDxEvGKT3avUyvLee5LCIF2HeF+0B8weyZtVhsXzb8hwlAkofauuosHzyqHe6nzIhgKp0LlfTYxZ7hb7R7vxHKhTdJaK4uQDwpktcBqDa/TAIx9xzJPFJuAcH79/Bb4utCIL+oyK80Z23m9ItZRWJk4Nn1EB9ytxTksDrg/9w8hH8GF4CtnyNqd1fpZoPLgqr42simArpVydM8ULW2iHmHJ906Y5erQ719xHkgiJi9JcLDovMMfO/kYo8L9/UY5mLUdTcO+LOwYOWheg9FIpglvMgrKnZ+VKescYu7Xzb5Br/UO4oBMnWhFpcxf5Ei3qIPiDJV37AgQNUHlw2HSeU2i1nSk/ADJEvZKsBsRRLqxGoWyCzGRLPGX20V2+M8MfaX6N0AGRP7foIig6MtV2L49DthPe85n6pMh5RQuADpxPrEQV56XlpC2QCttZsTREPvMSi/zDTdjQAUiQh3SCqfoMgp7HRBg9OI+lAvc4Tpd3sTZ7tCJUHhPaV9OvL+wXWmiwYRLyfSCzJ52qsf2HXU7SC2FeZKVDs5O9Jbgj","X-Forefront-Antispam-Report":"\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n JHzNKDww8fbfTiSI1pTp+Mmbej/3EBeRSXlML8XpoD4w4WQpQ4xlPxssV4R5G5qapwUgsHhVwqeD1d3q/rxNa7Fft/W/6h8zVzzgPpvW1oN2Ukdjwsf0lx09ZCsDvjiFlT8uII5Gl3ODPkj5N9+zeodNrZNEr08lPpDAOnNIDHx5vjzIiIjkBguBpPTkI2R0a0Ad+gJCKPQOhgMgCbvIpW9foShPJdnEGuLBToA3pap9pmpsymtLzjkmPoEpy4vmewZmRhiEq+jYvoTNODOnk/72XEBb+sGU0k5uVGXCB2rS4bnOkR+/hQtBeBsd0/Rv1fqbVMala7rf4C5bduy2CS+kl8xemhZP/TEBQCtGgA/YAgLLy2600bifdbFbzO09GDa0kvYDz8fdJ4LVIkvT3Azps83rvjkdohhP1IfqH8wluitigdlkpz1P9p+bkBVd6eHTAlkkgkZuUjEsnYbjuwKdCWlUEsEuHu4LHuXdtkO4k2TyVdzbO2/EyjQk7mlPsteqCitTXwaDvibQWpQiGEnYY5pPfs0rVbWd8DjBlueHISxoRbTHVghgj8woXmUdomeeU8LRz+6y6AsX+SJJt+FZJokj8D1DDIPL7xVeoCZ1v5FYySjutoEg2jemkdsV21oJyZnc2GyUbSxpT/9j9Uf9Wa4Gc7Q2kXq+KTT7eICOEXIEH2s3Sl/bGJfk479P0ACuyroK3xMglecw4nTyEZ2uAoMruG7w+LOHqiuriXYjEmBmAXvt6tnN43NW57tQLX2OivNW9Fz87rQiW312mhxJHfrP3R6k1V0BVK4dk4RcG1Gy7R5YyBR6VWCi5hvd08uf11FRx2qBm45d046D13Qep0RBzmSi/blXLmkfogdS9Z33udHLovlLvUZbpK2nYo3znu7oI1Zl8Vdfq8q2Yb4nqokeB/HxeCJzzR5iOtNtwA2bFDJSMN996AvYynFRYo0+gDNrq4wm/5tNysmw4F+EP9Y7B4mPUuOtR6E4VYz6mMNS2+bVxbSObLY6lEU++OlfgBQn1fI9qAGgAqWuQL6sHF/JgEO9lPAxcm4d4DgNmMsXmLUCQ9pZbkyKzBnIoWfRmwJKbTex13ygVr1bG0LL9ibcwMtwmWZiAQ1aRUihZNbbV3AJ/oZJskSnUyr2GjA4r+p3unmgf3t9l7Htfg6p2ygZwO8yVJqYYMvd2si/Hpqi/W0YT34tWIE0aEk73+3jBs0uwj7OYe11msXH8JJXBOYQu9OlwDdU2I8Gp1hS8JI15SPP+uibV1kNx8lONur/6X9Kk+fOAd6wtkxor/lPRak+qC68/w9O5tkdiJEWrMUbXrwqWpAxoIJF+Z3nbV1yxG84BH1V+GR/GNqxxNIlsrZeWAOY4yzwyDbFzBzJyrQ90Lx92AFUyvkEWwbxMoxgaPEjsXZIoJnXFSjrULYo+VvPPZskMTKcVt3M28KRLLZBloMf/ZcgVcSINxwWTfYYFLq44pudaG0Y3B4/AiitabBigyxG29WBfO7d2uYe80VKLK+cjgQWc9NAKu5cRKgMyd4BKKSKNfx7wIIJ2kIbgcE++xGHh6Zu+3m6C93s73AHqYIUD1khzQdU+sjTw3EHIXnYHZEu8hBJmXYbnSOG2M3cRDWFaXPhuFP9eYXTvYeB7aYrNW5F3XBJKWIkqe2eGfvOQLInE6Y38ZXJjYcUB7lAJjpu0+2veOC3K78V9NO/oPqTzjjNch/W6Dtu","X-OriginatorOrg":"Nvidia.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n beb77938-ca07-4a0f-0309-08dea7dbe68e","X-MS-Exchange-CrossTenant-AuthSource":"LV8PR12MB9620.namprd12.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"01 May 2026 23:46:44.3134\n (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":"\n yAW3b12MGineqXgNod5Q1XfQUYPCDZ05OZlESTx1zOKn2nNm4Ya4TDfSFlTkK4o9","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DS0PR12MB7511"}},{"id":3685248,"web_url":"http://patchwork.ozlabs.org/comment/3685248/","msgid":"<69f542f92e36e_3291a910052@djbw-dev.notmuch>","list_archive_url":null,"date":"2026-05-02T00:19:05","subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","submitter":{"id":93110,"url":"http://patchwork.ozlabs.org/api/people/93110/","name":"Dan Williams (nvidia)","email":"djbw@kernel.org"},"content":"Jason Gunthorpe wrote:\n> On Fri, May 01, 2026 at 04:27:41PM -0700, Dan Williams (nvidia) wrote:\n> \n> > You appear to be confusing Cache_Capable and Cache_Enabled.\n> > \n> > \"8.2.1.3.1 DVSEC Flex Bus Port Capability\" != \"8.2.1.3.3 DVSEC Flex Bus Port Status\"\n> > \n> > Cache_Capable is only a capability. To check that the device has\n> > actually trained the CXL.cache alternate protocol you need to look at\n> > the status register.\n> \n> The capable is probably a reasonable choice here unless you are\n> confident the status will never change after the device is first\n> discovered? ATS is being set early in the boot sequence.\n> \n> It is pretty safe to be over eager with the ATS enablement, less safe\n> to get it off when it needs to be on.\n\nTrue, a reset could turn on CXL.cache. Ok, stick with what you have.\n\nThe present state of alternate protocol negotiation is still relevant\nthough for distinguishing CXL protocol errors from other PCIe AER\n\"internal\" errors.\n\nNeed a bit of fixup work for that to refresh the status bit after reset.","headers":{"Return-Path":"\n <linux-pci+bounces-53614-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=UR5aMexr;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-53614-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"UR5aMexr\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6pVN2H9Zz1yJ0\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 02 May 2026 10:21:16 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 6F1C6304BBB3\n\tfor <incoming@patchwork.ozlabs.org>; Sat,  2 May 2026 00:19:28 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 58F4A23B61B;\n\tSat,  2 May 2026 00:19:10 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 35431238C0A;\n\tSat,  2 May 2026 00:19:10 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 479FBC2BCC6;\n\tSat,  2 May 2026 00:19:09 +0000 (UTC)","from phl-compute-07.internal (phl-compute-07.internal [10.202.2.47])\n\tby mailfauth.phl.internal (Postfix) with ESMTP id 6D4DBF4008A;\n\tFri,  1 May 2026 20:19:08 -0400 (EDT)","from phl-frontend-03 ([10.202.2.162])\n  by phl-compute-07.internal (MEProxy); Fri, 01 May 2026 20:19:08 -0400","by mail.messagingengine.com (Postfix) with ESMTPA; Fri,\n 1 May 2026 20:19:06 -0400 (EDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777681150; cv=none;\n b=WYGBWb0d8H/PPdEvdscCC0FqDrlnfOii74b/YQWlo29YZR16KFZcsMHyAC+LyRJrPG9puZ71HnM8H8EJ3fOeEtayOPjl3f7CSJTTZtQnVi4yBXpHfHIDJ+maomw1GLdqVI+nk6FmhXfWySlyuVoe33EibuKL6RCwhRimJYvdH5U=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777681150; c=relaxed/simple;\n\tbh=AP5JtaG8I7D1v0LgQNhGuJZhUd8kwkp1E37feztWb0M=;\n\th=Date:From:To:Cc:Message-ID:In-Reply-To:References:Subject:\n\t Mime-Version:Content-Type;\n b=h2Qlfj+5AaeaOlq6VjeRJ9N6tooEIr5JZjpu7bWJYk3iwvjL+E3/os1G6ZJLe4u6VTT8OVhx2jrlcD9c0Vk8rpSOlFpW9jYb9cox0nmNf7cpr+tZudiOW+k8WnItEkBG1VmK1RnzkQy0X+JVKMQ2e4nsQ4/Z/Y/o6GGihNXxa6s=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=UR5aMexr; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1777681150;\n\tbh=AP5JtaG8I7D1v0LgQNhGuJZhUd8kwkp1E37feztWb0M=;\n\th=Date:From:To:Cc:In-Reply-To:References:Subject:From;\n\tb=UR5aMexr6sdKEpwcxwp2PWNNLGHpodQxZUsycKLv5k9Aiwltm4OIgt0Iu2Tggp7NN\n\t l4PeqiYs6ppWS/417FP8hl33FbwukLTvJ33RUctkIaLEdFI4gM15w1L/kBrHXAmXJ6\n\t UgisGLMMlM3sFFrMupWBS6XMJ90/90yssI3tVIJkBW/qhWFtY3GBNqgT9DEwxN19dr\n\t KdMl5Wk3IOJTDI8CtRwsRMdAQ1pcyB4SKiYyFoL8JCamH5TBInEvOtRM0sXMccLvsW\n\t LbUsdvSvUFxS8av/iwJOiWRnatx/UXVubRRS2aAfmwUZ3ezemGsVN2UPfLLy3BmD+Z\n\t XAIkMNbj0PTlQ==","X-ME-Sender":"<xms:_EL1ab8UvC2-9pbbO2KQYSRWWigYdGEX84B4fmvQ_i8d6fw95U6xRQ>\n    <xme:_EL1aeKQlj9hLPCJrQgGNG8WqSS5p7etufmdMAUscppgic_Yav88H1XcPxC0eSRkM\n    Q26nqQqD3MKoA35QHlE1f3OU7MupB53NNx0PU40x3kUdGI9KSpT_o8>","X-ME-Received":"\n <xmr:_EL1aWhwra82VRDbo5ui8t1JWLDI1_fliQo6rhn3FgwR_-a-hDs8OR5oer8DVyejU2NeA8cyCvVVd-nnzvWRr7ACFRjmZG370VI>","X-ME-Proxy-Cause":"\n gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeludeivdcutefuodetggdotefrod\n    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr\n    ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug\n    hrpeffhffvvefkjghfufggtgfgsehtjeertddttdejnecuhfhrohhmpedfffgrnhcuhghi\n    lhhlihgrmhhsucdlnhhvihguihgrmddfuceoughjsgifsehkvghrnhgvlhdrohhrgheqne\n    cuggftrfgrthhtvghrnhepvdegheeikeetleeuffeuheefjeejvdejvdevteefgfffveeh\n    vdeuvdffveffvdehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh\n    hfrhhomhepughjsgifodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhithihqddujeej\n    vdeftdegheehqdeffeefleegtdegjedqughjsgifpeepkhgvrhhnvghlrdhorhhgsehfrg\n    hsthhmrghilhdrtghomhdpnhgspghrtghpthhtohepvddtpdhmohguvgepshhmthhpohhu\n    thdprhgtphhtthhopehjghhgsehnvhhiughirgdrtghomhdprhgtphhtthhopegujhgsfi\n    eskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepnhhitgholhhinhgtsehnvhhiughirgdr\n    tghomhdprhgtphhtthhopeifihhllheskhgvrhhnvghlrdhorhhgpdhrtghpthhtoheprh\n    hosghinhdrmhhurhhphhihsegrrhhmrdgtohhmpdhrtghpthhtohepsghhvghlghgrrghs\n    sehgohhoghhlvgdrtghomhdprhgtphhtthhopehjohhroheskegshihtvghsrdhorhhgpd\n    hrtghpthhtohepphhrrggrnhesghhoohhglhgvrdgtohhmpdhrtghpthhtohepsggrohhl\n    uhdrlhhusehlihhnuhigrdhinhhtvghlrdgtohhm","X-ME-Proxy":"<xmx:_EL1af1ZcO5-YpE38i02isp_4d3w_hFixKhXCSrW96L-ciuBrGBDrw>\n    <xmx:_EL1afZPvW9E4Amn80J9eH2GpDZzyt8By6wclunVRO8D0olRXeMtDg>\n    <xmx:_EL1aUgUaU-zz0xg4mi6T_A2g8cgIF2nO-JMwfoAIj99ioRfK0Pi2A>\n    <xmx:_EL1aXj6EQX90dPENstW4VruevvnCZqNYkgo_1rcL1SHGY71Q0ZM1w>\n    <xmx:_EL1aZASdYzR3rwLJK-YLv5dzahm4FdEOnUJs64EcSQObA-3BwprAE-8>","Feedback-ID":"i67ae4b3e:Fastmail","Date":"Fri, 01 May 2026 17:19:05 -0700","From":"\"Dan Williams (nvidia)\" <djbw@kernel.org>","To":"Jason Gunthorpe <jgg@nvidia.com>,\n \"Dan Williams (nvidia)\" <djbw@kernel.org>","Cc":"Nicolin Chen <nicolinc@nvidia.com>,\n will@kernel.org,\n robin.murphy@arm.com,\n bhelgaas@google.com,\n joro@8bytes.org,\n praan@google.com,\n baolu.lu@linux.intel.com,\n kevin.tian@intel.com,\n miko.lenczewski@arm.com,\n linux-arm-kernel@lists.infradead.org,\n iommu@lists.linux.dev,\n linux-kernel@vger.kernel.org,\n linux-pci@vger.kernel.org,\n dan.j.williams@intel.com,\n jonathan.cameron@huawei.com,\n vsethi@nvidia.com,\n linux-cxl@vger.kernel.org,\n nirmoyd@nvidia.com","Message-ID":"<69f542f92e36e_3291a910052@djbw-dev.notmuch>","In-Reply-To":"<20260501234641.GB1381708@nvidia.com>","References":"<cover.1777269009.git.nicolinc@nvidia.com>\n <f6734b9dad0050138676f11ecd14e9db1cf6b697.1777269009.git.nicolinc@nvidia.com>\n <69f3cc82926_3291a910039@djbw-dev.notmuch>\n <afPlkW5zlTSHwQCT@Asurada-Nvidia>\n <69f536ed263dd_3291a910017@djbw-dev.notmuch>\n <20260501234641.GB1381708@nvidia.com>","Subject":"Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache\n capable devices","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","Mime-Version":"1.0","Content-Type":"text/plain;\n charset=utf-8","Content-Transfer-Encoding":"7bit"}}]