From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CE556CD5BB0 for ; Fri, 22 May 2026 09:13:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version: Content-Transfer-Encoding:Content-Type:In-Reply-To:From:References:CC:To: Subject:Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=5fO9nX+NwQiVrJCIlMVMhTW7RmakqGJnLIBKlK5rRi0=; b=nvh2e0azOXS/hWxE4xXZeFpOMY LZGLFu6qclZdL/JnQ6cFwLgP2q6mU/m3Vu1ZSy99w582ElbhG0r3vIFPgUsumbfFk3GWlOc6U6XwX PqExky+Vv4R/2rYjZiIETemS43zdkPSlQJ6bgCROrCTk41s9TOd5yoKxRFq6G9I9yRAqKbamQFUD7 QKmOGGsNzV3UryqysMYcxqXe4q0FBIKVCTAMsFd6/4g7CogmPU4v9VRkpA9/L7fup+8HKTM5tzwiZ gSevz12apv5omk+zejCHmj5rvkArnhJVO2vp8YvsUEHK+9q0jmu7aZOqS9x8RmxDl8GjHEQ25e/o5 HS2F6Dkg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wQLuq-0000000AHmT-2nX1; Fri, 22 May 2026 09:11:36 +0000 Received: from mgamail.intel.com ([192.198.163.13]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wQLuo-0000000AHUV-21P2 for linux-arm-kernel@lists.infradead.org; Fri, 22 May 2026 09:11:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1779441094; x=1810977094; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=7Nrt4fIB5Xy6Ci1CHmUeGeruZ4aNm0SUN1BnOY5xc1k=; b=dLKb7LfS51LMtfn7SkNEXRABVV9e0qWkBFLCU9Vh9R+u/M2ykycZcxt9 Ulidh2uJ79QWGLNP7KF5lk1k12lPvj2f1e9mEmCurvypevZClCPhW4zvv nPGpu1xZgLv4UN8YRbD0DY1Ojjt/IW1txzUGSnF6cFn58me61IKJbsN/l UwfxNbE53eIgu/3f/pg3xNvhs9xuh/t1Jh2+vl9v5iIhPBPPQECgPIoZ6 aFTzzG34HrHvtKSq8IQb/ecjpYhYI0NhZ/caEy++rgZFo3pEdC0NgHHeS DPl0GS5EjFc7O8bWRf7yvxsBhW/8eh7poXa/SeDHNBTKryELki9gWhqOu A==; X-CSE-ConnectionGUID: X7uO1+qPRqqEKyia7rcC0Q== X-CSE-MsgGUID: PC5ha4+hSGSiFX/QNLpGwQ== X-IronPort-AV: E=McAfee;i="6800,10657,11793"; a="82947434" X-IronPort-AV: E=Sophos;i="6.24,162,1774335600"; d="scan'208";a="82947434" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2026 02:09:33 -0700 X-CSE-ConnectionGUID: qjBTUD38QTGnM4D3TE7/sg== X-CSE-MsgGUID: fmZ8p2oBTgalL19/6Q1SAA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.24,162,1774335600"; d="scan'208";a="244905812" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa003.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2026 02:09:33 -0700 Received: from FMSMSX901.amr.corp.intel.com (10.18.126.90) by fmsmsx901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Fri, 22 May 2026 02:09:32 -0700 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) by FMSMSX901.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Fri, 22 May 2026 02:09:32 -0700 Received: from CY7PR03CU001.outbound.protection.outlook.com (40.93.198.50) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Fri, 22 May 2026 02:09:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BOP+OGZBplJElftXJeennNba3HXgasDv0ealIJUWsJzWRFAONf43I+SIo2IkMgAIWbAIg8s+ZmnhA+e+lIw4zayj3RYZ/7tdteoaY5PRSWnmwAbVJxoTlS+lkTyyzPib4Gm2/8SDa6CrWSYAsLK330Uf3JPia+OUlH5gEcWhQThIwmBtsxN/lhzcARZZUHZ8ABg/UHVdXsCwekde7TIv1I8SWaMoMbFmyD0t6rZO1nRFwNQ8oc2ljkdOH+JxRZaqDe8uggsT6MFXovf8Y0fKTi1/UZUeshPaebrLGDJiPElwYuzLCIQBmZE4bN1m1/uVLVMd6odiiIKbxmyHeatQrw== 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=5fO9nX+NwQiVrJCIlMVMhTW7RmakqGJnLIBKlK5rRi0=; b=c1K2e5pKawhWcU5c5OQNafFt/DckL0lK/U7hgsJaSX9uTm059urRXsBZM22NcLDEP3vYrGd8JGXGFpUVDbrsmhK2mHl12xYLTy8yohMF1F+XA/5ksErVFymoKAoMo6AL52H1/FCMnT9obJx1N08U4D+QBubbefV25RSv1uiZ+bGm1J/suLbTnBPr5TnA2Bu0I44E2LCko6lHiiwiz8HWVLcEfkvYQhQEhx2RiZfqesZ+kzLEoMJWaaPhggc5A0xUmzB2jP8OV1RbjiDnfw7gjHHz7gC8BNwxJ6rFEsHAeVlXh3Ef/ll4R6FT1Z4zCHsbwO5x4NAxEzJc6F7C6SFZtw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from LV8PR11MB8509.namprd11.prod.outlook.com (2603:10b6:408:1e6::15) by DS0PR11MB7767.namprd11.prod.outlook.com (2603:10b6:8:138::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Fri, 22 May 2026 09:09:24 +0000 Received: from LV8PR11MB8509.namprd11.prod.outlook.com ([fe80::f5bd:4dde:4f2f:20b7]) by LV8PR11MB8509.namprd11.prod.outlook.com ([fe80::f5bd:4dde:4f2f:20b7%5]) with mapi id 15.21.0048.013; Fri, 22 May 2026 09:09:24 +0000 Message-ID: <7a264588-e9cc-4598-8797-fa9caf2e1b7d@intel.com> Date: Fri, 22 May 2026 17:17:28 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v6 2/3] PCI: Allow ATS to be always on for pre-CXL devices To: Nicolin Chen , , CC: , , , , , , , , , , , , , , , References: <0dd7e22f44bf35a33a590e0916983f9f7fe00de3.1779392420.git.nicolinc@nvidia.com> Content-Language: en-US From: Yi Liu In-Reply-To: <0dd7e22f44bf35a33a590e0916983f9f7fe00de3.1779392420.git.nicolinc@nvidia.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: KL1PR02CA0023.apcprd02.prod.outlook.com (2603:1096:820:d::10) To LV8PR11MB8509.namprd11.prod.outlook.com (2603:10b6:408:1e6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV8PR11MB8509:EE_|DS0PR11MB7767:EE_ X-MS-Office365-Filtering-Correlation-Id: 6dbd9d78-2945-468a-4d51-08deb7e1d12a X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|42112799006|1800799024|7416014|376014|366016|56012099003|11063799006|22082099003|18002099003|4143699003; X-Microsoft-Antispam-Message-Info: rq1cAytwJSbH7kd0inH6xu9tlTG617sDQX21QNRRr0X3jxN5IkxcKtq2jOAQk+qqX2us1fYdVep3hjJChwdPqZ8T2Bno57XrQV7RwQ4wGcsiqDU5K2YVgFuld2HYWbFTR1VYN/PVwR0HpM3Q06BEs4Kh97W1DRnmvoGVkYpcoGnaqAW34JrBjE4Ts2jMDTw+tyD+iQ6+jR9h5oi3bEB+qay+yzMha3rmCQ+5JlMIYj/qYa4siLwjRxSMxf0WeE8Mq82U0NVlQ+SBn5FXiYxbDUBr7+7XJkgxIjT6wOB8uyd3X8+JFwHwGIJZS7Xj/IFtribFxterTtKedt5LiTeOz38YNUgwbODOk4jzvUR3OT9KQVXHZn/dIMbreyV5t0mbRUc4gim5axKbKq9KoX865dUe+NAD4XIvyO8sfvNjmUTOFlVOE09upFEeFEXWYcE+jTDIJ6Q0lEPNKY5dmD4yku1jt7DM0Q6o5+KfxqUCJ+/LeXo7DHRwG9ti7le7bvIxjKj+ZxTghaxvcJO8226RgiaMIROUcdLy+D+wcsjO4t0LQM1IvhqdHicI6cubg0IBIskIfr0fv2CXNDF3vQVlassE+5mdNv6LzSJcVLpCNG3ZVXyFDHJMiALrgtB0ZtqISzcojR/vnULUpPx84RmSm2p2vjzgx/QM7NnLEaiVCvYX+1DaRaUryLJk9X4L2HKU X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR11MB8509.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(42112799006)(1800799024)(7416014)(376014)(366016)(56012099003)(11063799006)(22082099003)(18002099003)(4143699003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q1lNdG1CK2RiVTJ6NUhmbnp0MmpWdW1rRTFnd21tUWVZUjNiR0xBbklmck5Y?= =?utf-8?B?YnZtUE5kNmdPZEUrRVk1NXdGWU83akJyTUx3K0ZXM3duekV0emR2b3lXZFhi?= =?utf-8?B?YVJzYjZOd2ZFTEdmUm9YelV4a1lOVjJTbFY4NUpRdjNQQzh3NG1jNE03a2Q4?= =?utf-8?B?eXV3SEpobENDc0NkMGF1cjZGRytqMFBiRW5mZThyK09ZTk5Zb09OeGpKWk9w?= =?utf-8?B?Wm9uNU9HZGhrS0t0K1E3Zko4RVVNTks0dFNHWE1ZQVRxaEpIakhrbWsvVWl5?= =?utf-8?B?UUIwSFJjTlE3OEJMejRxcEJIOWN1ZUZIa1I2UFZGdzVOcGxvcFhXSXIwYnRZ?= =?utf-8?B?UWFNMERQenc2ZkZQY3haNThUTldXQVFYSk5NUWNmSStWTWgrL25Uc0JmOStJ?= =?utf-8?B?ck5OWVVSZW1pL05xOTFRdm9FclVZNHRkS0xPL3NiV0hBaGZYdXB6YVB5WWs4?= =?utf-8?B?NE9xaStTTzBtY000eFFmMFlTY2FQak96TDRiRit3UzlSL2RYckMveWFBM1pm?= =?utf-8?B?Zkw1T09TWGcrelhkd3BJdVZoVzgyVXNRSkJSNGsvK2dkZTJKaTJMTFZXMEZG?= =?utf-8?B?WmttQVZMb0dWSjlwWXVQTWxoZkdSeEJva2k0dUpzMWFxTXZzMkhRZVAxRm40?= =?utf-8?B?NlpCcE8rZ3VvK2FDaVdUZWlIL0NjWEVad0d5ajN2aE93dGhhM0l2aW1DdEhj?= =?utf-8?B?a0V5ZjRwb0FQZUJpNFQ3OERmUmVZZzJjZjI3YXdLR0tFd2dPWjhRK0RGVzlN?= =?utf-8?B?ZUQ2UmZXNjJrZ3dROFFwbmZDSGdJM3dockJkZXBxclBjdWhoZnZlTVJTc1ph?= =?utf-8?B?aGtrZ1oxNDkwZFllUGRrcWs5dEpWSVppNE5tYmpHOTh4MkhRSDNFT1ZRcEl6?= =?utf-8?B?VU5DZjRJTGRDQTdNY2prcFZ0YXdFNXRkWHdHenQrdHBXNEhNbmV4Q1BsOTI5?= =?utf-8?B?MDlGVDJUWkVhMVo1R3R4WnJUWnpETThSc3lNYnZOMHVtQSthN211aEpzOUVN?= =?utf-8?B?eFdwOVAxYllLa3JQNVQxeklxUTdKaWVremVwTFpnK3owNUtWbi9DOExwa2Q1?= =?utf-8?B?aWw0ZGtKR1VnQUdEcFBlajZCVWx0VlZqVDF0VXREZFNZNzUrdnNid1pLMnE3?= =?utf-8?B?QlVxTGZWRmU3SGlReGJWUnV0bW1tMVV4UFJQbGlJQ01yZm9WK3JHNTEzUzF6?= =?utf-8?B?UExucGNRWHkvNEVDUkQ2dHVaY3UvakFxV2VkOVFsL0M1U3ZHdUozNU1QeEhG?= =?utf-8?B?TVVsYXhIckRnbUdKZ2tuc0JQYzk5TW5WQzRCWEVHT1ArSHRrRHlkZ1NLVW5T?= =?utf-8?B?dWpGYmovT2o1RDlvZjV3ZEMrZm5IcWk4dnBLazVBYjJZeWRCcE5nckx3dVRO?= =?utf-8?B?ZHJjekYxQ0ZiZGlpWVd1NmFoNzMzUm1zTXlMRlpuVDFVRFMwWFFhZ1FiYmh4?= =?utf-8?B?OWJiMU05bWdXYXk3Mm5SZkhyeHNuMS8rMFdVcVo2TGN6amxhM1dPck1PeFlO?= =?utf-8?B?TlM0R3VtWXZvcHNadEhUSkNXNEY3MDMrOTNsTzE0UFpxMTdESHVTeUVBZHlx?= =?utf-8?B?Wmt0THh3VmFaZEJxd2hyTUxESk5rdk8yL2JtVTBEQThWaUkya3pZV3UyclEr?= =?utf-8?B?MldOaWdhdytUV2RxNW5nWkpQcklyYzMwNUc0VnRFWmF3Y2JLRVVWcmVxNk9X?= =?utf-8?B?RmtHblJRNCtZL1lkeSsyWGVoTjgwZUh6cG5UUGtYODBYdW54Ri93OFRZcGhP?= =?utf-8?B?K2tIb04rNHFINHU4cFROVlhzQWJWeXRKL3V6aXpmV3RaNnF5aGltT1U0bTJy?= =?utf-8?B?YjBrMGh4SFkvdElyUGNjV3FUbjZpSit4QTlPcWh0aEUzN09WTTR1SEJlV243?= =?utf-8?B?eFF3S0RxR0QwQnZIUXYxdWw5cndHRlJDdS9qTU9NZUNxeTdHdVBLOHJjYmhQ?= =?utf-8?B?Y1NvNkJhNzRCS2JtN1JlVnpOSUNHZVkyQVdKdUZrNys2ZVdHZU5SQkIrQlpk?= =?utf-8?B?bXJ3RWdwaGxNUWwzUVh5L2txRkh2Rlo1dDcyLzVIc1VWSWZORzY5eEloMGls?= =?utf-8?B?Rk9YNTNJeUhzako0bGRXSG9xYlYxN1pNZ1JZZkNRRldSaFRJTGlCL0pjVTlC?= =?utf-8?B?MERzMkZxMFVoVjh1OFZoeVRIdGp2RGNabkhhbm1BdHdSRUJFUE0rUlh0dFF0?= =?utf-8?B?SWVhWVozVzAzalZHY3N2RnJqbzFjNGo0dHNidTVxdlhLSmlRS01WV21LZnQ3?= =?utf-8?B?ZGR5TGhxRjRTY2hKRjRHTGhoMVRzSmswL21oTE05Z2lBWmM1U0Y0bFQ4aXYr?= =?utf-8?B?L3BodmJLYmFEa0daaEJ4akx3MVM5UEYydG13TVI3Vk93dVl5VEJUQT09?= X-Exchange-RoutingPolicyChecked: VT6zRfe8BFgz/UrJDEbAr5RKN5UdvF9Ww7+FcBnsQAsb5Nj2Wt1QX99BHVZUnRgtaY5/R6hMNjKdhqlXs47+j2gLzWqqIkWdU4TGMCjsyAGUJQDLdZFda6Jn/vTj9jlWTv3/W7icP+F9pZbsqK5lOJ8jLbBJeL9quuF3w67wTZ3oWuONLfCqB5bXofI9YRHiqfcwjDjnlW9cR2aRxS0b8uRoyBg7g1UFAV9B4z4O8ui5R8JZ3suEY/j8GlZNh3ony4fGoWMIwzisN5h76WpneNubxfN9BuWZ8z4JqzLE1EueW+if/1gfLgEC5KGlysLnBaqDYjYARkLEmMB2C7C1qg== X-MS-Exchange-CrossTenant-Network-Message-Id: 6dbd9d78-2945-468a-4d51-08deb7e1d12a X-MS-Exchange-CrossTenant-AuthSource: LV8PR11MB8509.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2026 09:09:24.1692 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PTouVRFKAPmJjCv+3dXG1ZJJbwNCuulVMxiqMtF7r5UiUfh8p854H52npNAyAeft9am/sSgNZUuTTQwa9zSbdw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7767 X-OriginatorOrg: intel.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260522_021134_543944_F61D7741 X-CRM114-Status: GOOD ( 23.35 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 5/22/26 04:34, Nicolin Chen wrote: > Some NVIDIA GPU/NIC devices, though they don't implement CXL config space, > have many CXL-like properties. Call this kind "pre-CXL". > > Similar to CXL.cache capability, these pre-CXL devices also require the ATS > function even when their RIDs are IOMMU bypassed, i.e. keep ATS "always on" > v.s. "on demand" when a non-zero PASID line gets enabled in SVA use cases. > > Introduce pci_dev_specific_ats_required() quirk function to scan a list of > IDs for these devices. Then, include it in pci_ats_required(). > > Suggested-by: Jason Gunthorpe > Reviewed-by: Nirmoy Das > Tested-by: Nirmoy Das > Reviewed-by: Jonathan Cameron > Reviewed-by: Jason Gunthorpe > Reviewed-by: Kevin Tian > Reviewed-by: Dave Jiang > Acked-by: Bjorn Helgaas > Signed-off-by: Nicolin Chen > --- Reviewed-by: Yi Liu > drivers/pci/pci.h | 9 +++++++++ > drivers/pci/ats.c | 3 ++- > drivers/pci/quirks.c | 42 ++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 53 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h > index 4a14f88e543a2..e8ad27abb1cfe 100644 > --- a/drivers/pci/pci.h > +++ b/drivers/pci/pci.h > @@ -1155,6 +1155,15 @@ static inline int pci_dev_specific_reset(struct pci_dev *dev, bool probe) > } > #endif > > +#if defined(CONFIG_PCI_QUIRKS) && defined(CONFIG_PCI_ATS) > +bool pci_dev_specific_ats_required(struct pci_dev *dev); > +#else > +static inline bool pci_dev_specific_ats_required(struct pci_dev *dev) > +{ > + return false; > +} > +#endif > + > #if defined(CONFIG_PCI_QUIRKS) && defined(CONFIG_ARM64) > int acpi_get_rc_resources(struct device *dev, const char *hid, u16 segment, > struct resource *res); > diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c > index 84cd06d74fc9c..96efa00d97433 100644 > --- a/drivers/pci/ats.c > +++ b/drivers/pci/ats.c > @@ -247,7 +247,8 @@ bool pci_ats_required(struct pci_dev *pdev) > if (pdev->is_virtfn) > pdev = pci_physfn(pdev); > > - return pci_cxl_ats_required(pdev); > + return pci_cxl_ats_required(pdev) || > + pci_dev_specific_ats_required(pdev); > } > EXPORT_SYMBOL_GPL(pci_ats_required); > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index caaed1a01dc02..c0242f3e9f063 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -5715,6 +5715,48 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1457, quirk_intel_e2000_no_ats); > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1459, quirk_intel_e2000_no_ats); > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x145a, quirk_intel_e2000_no_ats); > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x145c, quirk_intel_e2000_no_ats); > + > +static bool quirk_nvidia_gpu_ats_required(struct pci_dev *pdev) > +{ > + switch (pdev->device) { > + case 0x2e00 ... 0x2e3f: /* GB20B */ > + return true; > + } > + return false; > +} > + > +static const struct pci_dev_ats_required { > + u16 vendor; > + u16 device; > + bool (*ats_required)(struct pci_dev *dev); > +} pci_dev_ats_required[] = { > + /* NVIDIA GPUs */ > + { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, quirk_nvidia_gpu_ats_required }, > + /* NVIDIA CX10 Family NVlink-C2C */ > + { PCI_VENDOR_ID_MELLANOX, 0x2101, NULL }, > + { 0 } > +}; > + > +/* > + * Some NVIDIA devices do not implement CXL config space, but present as PCIe > + * devices that can issue CXL-like cache operations like CXL.cache. Thus, they > + * require ATS to obtain host physical addresses, like pci_cxl_ats_required(). > + */ > +bool pci_dev_specific_ats_required(struct pci_dev *pdev) > +{ > + const struct pci_dev_ats_required *i; > + > + for (i = pci_dev_ats_required; i->vendor; i++) { > + if (i->vendor != pdev->vendor) > + continue; > + if (i->ats_required && i->ats_required(pdev)) > + return true; > + if (!i->ats_required && i->device == pdev->device) > + return true; > + } > + > + return false; > +} > #endif /* CONFIG_PCI_ATS */ > > /* Freescale PCIe doesn't support MSI in RC mode */