From patchwork Fri Feb 21 16:07:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Roy X-Patchwork-Id: 13985871 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 25E27C021B3 for ; Fri, 21 Feb 2025 16:09:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B0DBA28000D; Fri, 21 Feb 2025 11:09:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id ABDB9280001; Fri, 21 Feb 2025 11:09:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 95D3028000D; Fri, 21 Feb 2025 11:09:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 784A3280001 for ; Fri, 21 Feb 2025 11:09:47 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 003FB1A1652 for ; Fri, 21 Feb 2025 16:09:46 +0000 (UTC) X-FDA: 83144437572.04.98D1ECB Received: from smtp-fw-52002.amazon.com (smtp-fw-52002.amazon.com [52.119.213.150]) by imf29.hostedemail.com (Postfix) with ESMTP id 0518E12000C for ; Fri, 21 Feb 2025 16:09:44 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=amazon.co.uk header.s=amazon201209 header.b=KpUc7lgn; spf=pass (imf29.hostedemail.com: domain of "prvs=140b82bcc=roypat@amazon.co.uk" designates 52.119.213.150 as permitted sender) smtp.mailfrom="prvs=140b82bcc=roypat@amazon.co.uk"; dmarc=pass (policy=quarantine) header.from=amazon.co.uk ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740154185; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=5Lxw3QwOdwCmgolpoFT5r+0SQOlcE3s27pqIYNolM4s=; b=o4ZglXravAARmimqLen/oAaEWTvDM7fXj/dgOk+9cxFOxtzMwJXjGW4D3RTJCV8atAUCgY CQ6TVyzppMx1d0ZAUDwocbXwB4prbTza90XTno17JtfzOQ0CQhI8CR/RSq2sPHg3QFbZSP B/PfLMKPkA5Tk1dYBLPz+1lEqmZeiXw= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=amazon.co.uk header.s=amazon201209 header.b=KpUc7lgn; spf=pass (imf29.hostedemail.com: domain of "prvs=140b82bcc=roypat@amazon.co.uk" designates 52.119.213.150 as permitted sender) smtp.mailfrom="prvs=140b82bcc=roypat@amazon.co.uk"; dmarc=pass (policy=quarantine) header.from=amazon.co.uk ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740154185; a=rsa-sha256; cv=none; b=5HaYr+9P5/4D7rN+yDk1PJHPWmHDv8inTOIa3EcrEQk6r2I3X+JbLiHa+X58K+C7YomqRS yIGnfMwlhi3ovrIjut05QX0sJXnWz90eUL2/6FsGLXrsdfw5dnDijhI4CpvX1ky2jZS5b/ 06HAaI1xYy8wPHiADQPmMytggFKLZDk= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazon201209; t=1740154186; x=1771690186; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5Lxw3QwOdwCmgolpoFT5r+0SQOlcE3s27pqIYNolM4s=; b=KpUc7lgn5EU+kEA3+MN6vlvrGeXAdK99t15rfJuzLJfILJtzgelMQYcN MUAw4E6dMxS8dhZ9cO0fan1r8ADmdIeSM7AWlrlYcp+SUsMz5W3TuEHEo /ieEooqLNFCEOVvrUlE/DbvH5pOgMjlKURtW6PKztHDhLTkMYSYDxcyvl Q=; X-IronPort-AV: E=Sophos;i="6.13,305,1732579200"; d="scan'208";a="699167429" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev) ([10.43.8.6]) by smtp-border-fw-52002.iad7.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Feb 2025 16:09:41 +0000 Received: from EX19MTAUWC001.ant.amazon.com [10.0.38.20:58310] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.55.141:2525] with esmtp (Farcaster) id 0c629e67-bcab-4233-b9fa-68409832e265; Fri, 21 Feb 2025 16:09:39 +0000 (UTC) X-Farcaster-Flow-ID: 0c629e67-bcab-4233-b9fa-68409832e265 Received: from EX19D020UWC002.ant.amazon.com (10.13.138.147) by EX19MTAUWC001.ant.amazon.com (10.250.64.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39; Fri, 21 Feb 2025 16:09:37 +0000 Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by EX19D020UWC002.ant.amazon.com (10.13.138.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14; Fri, 21 Feb 2025 16:09:36 +0000 Received: from email-imr-corp-prod-pdx-all-2b-c1559d0e.us-west-2.amazon.com (10.43.8.2) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39 via Frontend Transport; Fri, 21 Feb 2025 16:09:36 +0000 Received: from ua2d7e1a6107c5b.ant.amazon.com (dev-dsk-roypat-1c-dbe2a224.eu-west-1.amazon.com [172.19.88.180]) by email-imr-corp-prod-pdx-all-2b-c1559d0e.us-west-2.amazon.com (Postfix) with ESMTPS id A7DCF404C9; Fri, 21 Feb 2025 16:09:28 +0000 (UTC) From: Patrick Roy To: , , CC: Patrick Roy , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v4 04/12] KVM: Add capability to discover KVM_GMEM_NO_DIRECT_MAP support Date: Fri, 21 Feb 2025 16:07:17 +0000 Message-ID: <20250221160728.1584559-5-roypat@amazon.co.uk> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221160728.1584559-1-roypat@amazon.co.uk> References: <20250221160728.1584559-1-roypat@amazon.co.uk> MIME-Version: 1.0 X-Rspamd-Queue-Id: 0518E12000C X-Stat-Signature: onn4ypfz8r74sdager9phcoz67soqm38 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1740154184-546108 X-HE-Meta: U2FsdGVkX1/MZzDBzCQKlX8HNVTi8I2AaMjZWIJaXeaUolpiq3WhKj5mo6fN4mD3pw+HSLoKJyxIC1oXpCLOvX3EGYZYx03+rOHxo5vaR9ZG5ald2VQXyhBX/Ych+GlM0KewWHZluEemajCya+CgX5zjE4rPAPBTdlcu1BY0BHDQTqAcazmS3jhKw6CR1ggfghIg8qx4IteOBEeEIIKFFKA7ZQ5DcX8vf0VZfRUFb8VDwSYecSrwqt+Yi0zKUMciytE+g2BYJaO+hnpYk/NxkwFkd5YIJieug7Im5dxvoBLZ6U6oWgpAcf6d4N5obFddUPuQKJR4IGpRE6wdl7b04NBUg75W6dKOr/6k7EJokfcYht/FRVs4q2Lq2V0X/dPcnuCEp0FEMzcwlTFIsjF65QFV5NIwfZiCfIrOrg5ixbu2058XiAbxSmfwdNiZC3fh5lCfA885PZmxdDkoH+hpnR2gLIUCupsRoEBFcxp1Iro7pL82GJsXpNznfsy9nnv9koRvlzwtFOrJ76CVeFAGKwpsjXlh1shlmP2J6GutFLR58+den/x/vt0CZN0EZqjWYf4ECLa3TXP8qA6iBO5cc5VueVqRTNtp1Iz6rHJfSVMYIss/nVrXWgbiXOduxGDxoHB8KLL8OnInZYs/fiUzDVP0rOTWBmtX3ka7PxCu4iI8UROyIbp+V6s6EFGH6BDHD6ZAuICgPIE74vl0wwNfK4gqYl/LV3+wgzgJebY0/wEVaIC5NQjx6ctqEMUQLCGMRn+fIkAnG0Zj3LKn6K8xD8xFcO+EP5kvCoTUAC8d/paXnlgUfN5NuPBwvdsFYo5iBE2qpfGv5Na08xDdWKm7p3qj/67Vphsgo369fbH3VJ2CiX86GDO4GqgKjI5ha9EDE7O3J7YRNTHgC3pih5C+20vKzMpyMDC19ls4X6ovAiwvPDtK5gsRR62fejqs5Dy5LhaA1hUkCRdTqzhFMiJ FFeZ8h76 BkFmnAkSKbZkolNcmGbTOLTrEkVdJscfG9rH0knxjJVGyEVwurqyR4rHBVxCkviuXdVSCpSdige3MWL946yE1RvPxX4lPXvInpgBvwoPx8n3l/NDa7REJ7wLO3IbXswiSvZX0y+VNV2gUmKd4xE8LJCWlBvjH+PcYqujwlWojEzdL4Uon1PiyBH2AXBuym+2kh99o2KpMpgC4Sdd2VpI7mT7uMN2cVOUfUschsm232+/Az7EpfV1Zj0v81YLEclkejjeeLIjlIw/RaTpLEWDR9/miSQo50A//VjMm7JF+6h+s5ai84YR5GIbr0nqzdSNYbACt1b87IHGYACVFrrGeFr8xu00qTSx/YlH0iqDx0pXIzArSqXcT3wb+G7l22N7XUCUFntCkJ/IxiDbYWhjukfVNbOI4//8Zn+6wh+LNdlgGcYznwxkcFHUhO2K7vSARBV9SzGSeHwtrC4I80Z0yoTmRCCPdYphZD56mnS05rlaIFG8oR6tsrwtR6+RANQ2GsDFS 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: Add a capability to let userspace discover whether guest_memfd supports removing its folios from the direct map. Support depends on guest_memfd itself being supported, but also on whether KVM can manipulate the direct map at page granularity at all (possible most of the time, just arm64 is a notable outlier where its impossible if the direct map has been setup using hugepages, as arm64 cannot break these apart due to break-before-make semantics). Signed-off-by: Patrick Roy --- include/uapi/linux/kvm.h | 1 + virt/kvm/kvm_main.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index 4654c01a0a01..fb02a93546d8 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h @@ -930,6 +930,7 @@ struct kvm_enable_cap { #define KVM_CAP_X86_APIC_BUS_CYCLES_NS 237 #define KVM_CAP_X86_GUEST_MODE 238 #define KVM_CAP_GMEM_SHARED_MEM 239 +#define KVM_CAP_GMEM_NO_DIRECT_MAP 240 struct kvm_irq_routing_irqchip { __u32 irqchip; diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 3e40acb9f5c0..32ca1c921ab0 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -65,6 +65,7 @@ #include #include +#include /* Worst case buffer size needed for holding an integer. */ @@ -4823,6 +4824,10 @@ static int kvm_vm_ioctl_check_extension_generic(struct kvm *kvm, long arg) return kvm_supported_mem_attributes(kvm); #endif #ifdef CONFIG_KVM_PRIVATE_MEM + case KVM_CAP_GMEM_NO_DIRECT_MAP: + if (!can_set_direct_map()) + return false; + fallthrough; case KVM_CAP_GUEST_MEMFD: return !kvm || kvm_arch_has_private_mem(kvm); #endif