From patchwork Sat Feb 24 15:05:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ankit Agrawal X-Patchwork-Id: 13570515 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A0D6BC54E49 for ; Sat, 24 Feb 2024 15:06:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1F9BD6B0089; Sat, 24 Feb 2024 10:06:50 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1CF036B008A; Sat, 24 Feb 2024 10:06:50 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EEF5A6B008C; Sat, 24 Feb 2024 10:06:49 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id DBF456B0089 for ; Sat, 24 Feb 2024 10:06:49 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 977B5A036E for ; Sat, 24 Feb 2024 15:06:49 +0000 (UTC) X-FDA: 81827024538.07.4C0783A Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2041.outbound.protection.outlook.com [40.107.96.41]) by imf01.hostedemail.com (Postfix) with ESMTP id D5F494001E for ; Sat, 24 Feb 2024 15:06:46 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=KWIgJFKA; spf=pass (imf01.hostedemail.com: domain of ankita@nvidia.com designates 40.107.96.41 as permitted sender) smtp.mailfrom=ankita@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708787206; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=TRcaF52CMEO0QVAE1H8FtXam0Yy4RMg+DZcetOMVhQ8=; b=ovbK1AA0ab3BxlULihSvsYWXBQ0CoMsF9twNAa1oLNHBxhXcrnfHV/a2dg/J5TjzcewRsP 4O3pGBYQLPqXHz7AQXIWfA5drxtlfJPt4o0g2m/ALSayK7UqjPvBK7zahd2+Q0cVVmI7F8 vA+zswUID9zjlWgHbMFUQypk3a/wjBI= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1708787206; a=rsa-sha256; cv=pass; b=l4xjkZ843f/PhOLiORZrT0h+wudms145AkImyoAR68z/eV87Yjt6QM0XBg5RRMSI5/2van hm9pJWI3ku0DMx7taeXgSQiFKPOOKCbRHRsf1amok8DMvD8HPfNtGgoSiYuSh7UbW/BTl+ DQ514CaOK85dPGydI5h6qXj0OmBny9M= ARC-Authentication-Results: i=2; imf01.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=KWIgJFKA; spf=pass (imf01.hostedemail.com: domain of ankita@nvidia.com designates 40.107.96.41 as permitted sender) smtp.mailfrom=ankita@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NDf4fv7T1lBTifRrEkxcE9lFwwsVWk/VxSSJoTn/CSyRPJiGM9bCfSc+8oPkaI8ADDwG4gphbqX1L45LAF1z6tWjxAuf3a5DkREnMdTnDMondMdPwogj2WTEipeC9X6XuVPl0gqUrL60D2wQ0LDwlk+HeOrLw/UQD4Jez5CuSb/v7BKDuZAspZewFUAmJDM38vp7F/jD04aBQ9LdeopAXej2DsgH5afoJsxQ7h9xQr6YnEf1BPO+k98qmMHNWIVvY5PAJXXr5QiGzRpJyp5hhSQ3fCxzRB+TeBf1YHfTAJlmunF6mCseH1zRHF944fBhv3erBFpyJXeaPiOkyDkSGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=TRcaF52CMEO0QVAE1H8FtXam0Yy4RMg+DZcetOMVhQ8=; b=AcEN9N4YgN9T5qBSJ+XHE76bfjdsteSDNwPWHMPb4KaB/Eez2pXCbFG7+F7lFr5AZgLyN58hZL7NFSUWHa4alnam6KQ3RfxzZPQ+6nR4ba0qDNF5gt5BvW/DdNrrSXm6oIqZPj56q5nHgXFm1JcVE1UZTTdSD1g3Rv7Sg/7vMSspK2jFe6OV0azxbyBv7LY6sCxYj/Qd5YskVwOkgIYh2UMxnlHlgqsQxKz9I4WEUul8DW5gPRUY+RR717+N/JH47LAAplReQ4utOvXyMFKvPkNY2FXqB5i8u23hrx2KRHckfv0IOocLTNxO1JequSf7Pev1BEBT8f0TnbG+KJV3yg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) 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=TRcaF52CMEO0QVAE1H8FtXam0Yy4RMg+DZcetOMVhQ8=; b=KWIgJFKAjq4YPghbcHaSgnZJJjRCDw7gJ8zeBl/xNF+mXimwTgqlMeRl4LR9VfhFI3GiEswvn+FMOwPzgxiyzTi9KSeHAuytOU+SH7M6BhpRDpFv/gqXhWE82Qlo+fGUpZkiRVRr+6PQovoSkGR1hC+pEajdk0J+dwA4xy7DTYfrht68BhvCXHHTLye29174P0UHdFF0IGZNJG9+0LxE5RxaJZFAJ417EjPj1pkn4QyCTyqVm+Nh78CyDEBVcZ+QYrotoLIyv9kbaYWzk5OjUjdAabD9F+yPd6rsRS4WvFc9ihZJZ5ass3j+jXTWrWEhcX1xIUoFIFbGXNw4wL1eOw== Received: from CH2PR19CA0003.namprd19.prod.outlook.com (2603:10b6:610:4d::13) by DM6PR12MB4894.namprd12.prod.outlook.com (2603:10b6:5:209::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.24; Sat, 24 Feb 2024 15:06:43 +0000 Received: from DS3PEPF000099D7.namprd04.prod.outlook.com (2603:10b6:610:4d:cafe::99) by CH2PR19CA0003.outlook.office365.com (2603:10b6:610:4d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.48 via Frontend Transport; Sat, 24 Feb 2024 15:06:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by DS3PEPF000099D7.mail.protection.outlook.com (10.167.17.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Sat, 24 Feb 2024 15:06:43 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Sat, 24 Feb 2024 07:06:26 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12; Sat, 24 Feb 2024 07:06:25 -0800 Received: from sgarnayak-dt.nvidia.com (10.127.8.9) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12 via Frontend Transport; Sat, 24 Feb 2024 07:06:14 -0800 From: To: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , CC: , , , , , , , , , , , , , , Subject: [PATCH v9 2/4] mm: Introduce new flag to indicate wc safe Date: Sat, 24 Feb 2024 20:35:44 +0530 Message-ID: <20240224150546.368-3-ankita@nvidia.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240224150546.368-1-ankita@nvidia.com> References: <20240224150546.368-1-ankita@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS3PEPF000099D7:EE_|DM6PR12MB4894:EE_ X-MS-Office365-Filtering-Correlation-Id: 1a6cb5b3-b8d0-4c8f-13d7-08dc354a3645 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nVrX1apBYdo/a+4PsEVLutRl/RKwgEa/DqzhLB8gwRjIFSeGeZSqMWG+l5LBjyCv5uCMM5Yrf5jJrikHd4W1iiT5gOWFwsOaNS64rlBLoLxKJBdIlrYflrqZ5O5t0THqvWjl79ehf6buiQvYONplBdhwg0gUBe9GqmnAzKsORGO2VEhIt4M4ARz2Dmp8JHB9BMUqNAmnJ1cXoql0Rj7fhiQgbgKnlD5BtTWe8f3f5+oI5rLXRk9d0PrV8STWr1paRjaWGrdKHi6UTwwZYH3Q+6I8Nd7Jorr6wpcqcbNM5MpGB0UnI4IRgu5Tkrcmd2RPzfwxaZFqi6YD+NVCZ/S3Z0s3ZwtVBSbOkagnxAffo8DefNuEbraKPqOFQpSOJxDXKcEjh77GcDMAzEBeKMtGI3F+igtd0D6qv3/yQjjl289mlZM0Bo47hVRLjfdfymE/rr7oQT5s/09MN1hJiGQDyaCEKLp1Pys/TWnAHE/0XUaRPHxi9ymCwuNL3MCbLaKCifiBfIDojuFEoDvpU7fIdoaz/VsWkR4eBec/i1xtPXzOKFT7rGiWIelYG91am0eCwVPx9ScbFKYsYLZuMqAPfAqheBFfjYIMBPrxFt8zICReux2eHC9GnlVhMJ6Qro3/y2fVXShUFHPH05qcXo+jGrPyzCAGrVKu6Ju6YH5UVgw= X-Forefront-Antispam-Report: CIP: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:(13230031)(36860700004)(40470700004)(46966006)(921011);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2024 15:06:43.0054 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1a6cb5b3-b8d0-4c8f-13d7-08dc354a3645 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DS3PEPF000099D7.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4894 X-Rspamd-Queue-Id: D5F494001E X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: miganhr5uhgujh7j58mpk5x67d6fpeih X-HE-Tag: 1708787206-28433 X-HE-Meta: U2FsdGVkX19JOi4+OXdN43iia4XjWkWEuiSHLUY7cTY9o1PxpKStXN4YIH5jEnUJYxv3I/vH387tZLqIs8CVmcampeDYbzM0i1dFByUVdaIZ4VibxG3KH/Mo8nmdXCom61/AFutSb+IZvLhJUJeiV9PX6NcviCL4eLiETLCz7a0H3dFoaFs+sdbW1Qg6DJ+5meEWwRlwPx6Ccc1reaBu8AmgAzItNJe+pFyF1TNteNvgRdMKMrnVshIEYSCrwR4dTQsu+HXRTJiCc3G6VruUcUkF3xOR6HhZhuK3aojLhpXZpc1u0p7+jf6QhCarkqsRzJonN5tJltwAKWG/PPkMnB5sSKHCmODRPGQun2K0/igd+v5jfk0h0TJ3H2cNkEMEFcwFjVRZPqzPnPNTQIWESrB/RY7+a/zSrwdiNdLKCCbM5qrp97/DXKXaVr3mOtoFmKMHx8AFQqs3cgmyQycqLLj4TDyBIxlfRgd998W/I7Pf0b3+5sR2s5ku/cEz7+3wpwTvrqavC0Ir83qv8AlQ6HHJwNp07ZUIdTeYAbxMvogeVaAbXyNmxStUToYoRFmCHSzQAKOZvHhGYUaxfO8B7qhs+KXXWU2n+3QI7RM8J0WoZhAlJ9iW60Q16wwKghN5a2vTWjeUXlQ7E6LfTzm6XnOeyRLjdtg9TF5//2ftZYTgpPypu/l9KhQ8mxTweAFkfUG6XoZelTBdKuGg8tE1QzNLiBYhYEl56+BilCUfDrDi1XyAOalE4fVDLOsvvPwOIRIkubOwqTM6DX/clPWa83Lb7/OXWv5e7hrSKJpSs69gitOcB5IbKM9R0a9e8TiVGps6TE8PH+t5TcckeAOQUbToMLc1fDoGLZDwzoblCjC6OJdkQYxfbI28OQz1QkXGWxGjAWJEvU/QuXXxrxyrSg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Ankit Agrawal The VM_ALLOW_ANY_UNCACHED flag is implemented for ARM64, allowing KVM stage 2 device mapping attributes to use NormalNC rather than DEVICE_nGnRE, which allows guest mappings supporting write-combining attributes (WC). ARM does not architecturally guarantee this is safe, and indeed some MMIO regions like the GICv2 VCPU interface can trigger uncontained faults if NormalNC is used. Even worse, the expectation is that there are platforms where even DEVICE_nGnRE can allow uncontained faults in corner cases. Unfortunately existing ARM IP requires platform integration to take responsibility to prevent this. To safely use VFIO in KVM the platform must guarantee full safety in the guest where no action taken against a MMIO mapping can trigger an uncontained failure. The assumption is that most VFIO PCI platforms support this for both mapping types, at least in common flows, based on some expectations of how PCI IP is integrated. This can be enabled more broadly, for instance into vfio-platform drivers, but only after the platform vendor completes auditing for safety. The VMA flag VM_ALLOW_ANY_UNCACHED was found to be the simplest and cleanest way to communicate the information from VFIO to KVM that mapping the region in S2 as NormalNC is safe. KVM consumes it to activate the code that does the S2 mapping as NormalNC. Suggested-by: Catalin Marinas Reviewed-by: Jason Gunthorpe Reviewed-by: Marc Zyngier Acked-by: David Hildenbrand Signed-off-by: Ankit Agrawal --- include/linux/mm.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index f5a97dec5169..59576e56c58b 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -391,6 +391,20 @@ extern unsigned int kobjsize(const void *objp); # define VM_UFFD_MINOR VM_NONE #endif /* CONFIG_HAVE_ARCH_USERFAULTFD_MINOR */ +/* + * This flag is used to connect VFIO to arch specific KVM code. It + * indicates that the memory under this VMA is safe for use with any + * non-cachable memory type inside KVM. Some VFIO devices, on some + * platforms, are thought to be unsafe and can cause machine crashes + * if KVM does not lock down the memory type. + */ +#ifdef CONFIG_64BIT +#define VM_ALLOW_ANY_UNCACHED_BIT 39 +#define VM_ALLOW_ANY_UNCACHED BIT(VM_ALLOW_ANY_UNCACHED_BIT) +#else +#define VM_ALLOW_ANY_UNCACHED VM_NONE +#endif + /* Bits set in the VMA until the stack is in its final location */ #define VM_STACK_INCOMPLETE_SETUP (VM_RAND_READ | VM_SEQ_READ | VM_STACK_EARLY)