From patchwork Tue Feb 11 12:11:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fuad Tabba X-Patchwork-Id: 13969542 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 B9DD7C0219B for ; Tue, 11 Feb 2025 12:12:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 483F66B0085; Tue, 11 Feb 2025 07:12:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 40D2D6B008A; Tue, 11 Feb 2025 07:12:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2ADCE6B0089; Tue, 11 Feb 2025 07:12:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 0B8B828000C for ; Tue, 11 Feb 2025 07:12:29 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 61F90141636 for ; Tue, 11 Feb 2025 12:11:33 +0000 (UTC) X-FDA: 83107549266.15.F9C9EC4 Received: from mail-wm1-f73.google.com (mail-wm1-f73.google.com [209.85.128.73]) by imf08.hostedemail.com (Postfix) with ESMTP id 93F55160006 for ; Tue, 11 Feb 2025 12:11:31 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=k7wkHrjY; spf=pass (imf08.hostedemail.com: domain of 3cj6rZwUKCN8UBCCBHPPHMF.DPNMJOVY-NNLWBDL.PSH@flex--tabba.bounces.google.com designates 209.85.128.73 as permitted sender) smtp.mailfrom=3cj6rZwUKCN8UBCCBHPPHMF.DPNMJOVY-NNLWBDL.PSH@flex--tabba.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739275891; 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: references:dkim-signature; bh=mSGC99esy4K1gjCxU9uriveObd85avu291zHKaN+p7Y=; b=t6A0MAjpElI2D504uGByP3l0894OUilLRCKoBBbiDTPTNjKhDPArk8LVuV581B89OAAdYM rtL8EypvwvtnOnc1RFUmMrExFk8I4PerFXrEJVmsyzw112hVENZWK/8jwg89jxisGc+OUD y39Dn8ibiNLxLDf98/oUeX0hxGaH+80= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=k7wkHrjY; spf=pass (imf08.hostedemail.com: domain of 3cj6rZwUKCN8UBCCBHPPHMF.DPNMJOVY-NNLWBDL.PSH@flex--tabba.bounces.google.com designates 209.85.128.73 as permitted sender) smtp.mailfrom=3cj6rZwUKCN8UBCCBHPPHMF.DPNMJOVY-NNLWBDL.PSH@flex--tabba.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739275891; a=rsa-sha256; cv=none; b=U9ZgFRc2y24pnYpmKMNeRpgKOWMPKJlct/t4VHpG3XUVgEJ7eXttHvcoQGNnQc/W3Foy7l Qjf3+zE3x5eB68R4FtC7vkTQT+Xjpih87GO1y1t/nmWPgPmz/j+70LTESDTEbPGlH79gvo 1lrsWK14VDxdJ7DfX7BfcYDHwh9qMNA= Received: by mail-wm1-f73.google.com with SMTP id 5b1f17b1804b1-4392fc6bd21so13238125e9.1 for ; Tue, 11 Feb 2025 04:11:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1739275890; x=1739880690; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=mSGC99esy4K1gjCxU9uriveObd85avu291zHKaN+p7Y=; b=k7wkHrjYCyJU3GyJEflUOs3CI8fMSWuRy9Dqh4qdlTF5oS3zz/2EQAkLYwU6tHuxqf 3gd8u77+oZ8WC+uaDVYBQ2qJMFwmtjpWZjZgEykS4X9Mzm8jCsjLFyvga6l6tJHNBpTR 5yggudxNACpVBC086rURXX1W6OR0qQJEfjIcaS2aKKlDs+U2rVNMUAPwUyGHclKfy3tn B7xa0/UuG2NyLleQT/1lLRtgOGzEePqPznNwMWcc42vgrwQMjVzjkelXUKkOxzSfv67D G8qt4wQIbuHCzhOdY0eThMgD04lDYkq28k1EsF4kgL+fS4qAzwuzHK6PyRuDIsR6MthX 1kjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275890; x=1739880690; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=mSGC99esy4K1gjCxU9uriveObd85avu291zHKaN+p7Y=; b=T8vqF61aOenWqhl8jXC4U/dOfHwmpWXIMTD0kgutFGD+Fjj9M9I915zKmsOcHf2Erh O9q+usnq1Pro0YDcqoKbh+CyKQ/2e982vfrdAU3mKrv2UFLm95W8WIVVUL8JFFQ2+imO ZEfXKZn+CuJ38TzKy8QNGyoV+JdhA87rn3ant+4SVDTEOQDldTAOtlpwnJqxMigOUDk8 +p/5ylKCEdicEg4W3+s1YecCUIKpniRHVFnwcf5i2FkOvSmbNIidA7i+Lpqy8LAYKbaC qb3a+3Og3DDiZqrBjrLbWnRPvwaO9dmNM1XmnpItzaFy9ngqN5qNZ8EPocqM59BdlR7z h76g== X-Forwarded-Encrypted: i=1; AJvYcCXdDSzt7JnrB12GIVw8HtjhylzAWuDrf4JmFkIrqe9CwUNAO2hkKZoWfSgTfY5bioknpTM721rXxw==@kvack.org X-Gm-Message-State: AOJu0YxXfT7/OQv9/SvUSRZd8OxVS/KpdcokMZeH66j+pVwdNPfgs3kg 9ZwWRrGsU2u8rL/P6vwPhi7LfaLXooMU5U5vuXRLjTZh4UBPwdZzmk9HytJnXV7pYS3ZjHbGPA= = X-Google-Smtp-Source: AGHT+IHGdelySS321A7XGIZkPN+94Y1egduUALJqfYnuOURIB5+SNjscxlIvh3DTSN8Ige7cFiCeTK5+5w== X-Received: from wmbbe15.prod.google.com ([2002:a05:600c:1e8f:b0:439:4525:5eb8]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:3d97:b0:439:34f0:cf86 with SMTP id 5b1f17b1804b1-43934f0d067mr96833635e9.20.1739275890091; Tue, 11 Feb 2025 04:11:30 -0800 (PST) Date: Tue, 11 Feb 2025 12:11:16 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.48.1.502.g6dc24dfdaf-goog Message-ID: <20250211121128.703390-1-tabba@google.com> Subject: [PATCH v3 00/11] KVM: Mapping guest_memfd backed memory at the host for software protected VMs From: Fuad Tabba To: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org Cc: pbonzini@redhat.com, chenhuacai@kernel.org, mpe@ellerman.id.au, anup@brainfault.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, seanjc@google.com, viro@zeniv.linux.org.uk, brauner@kernel.org, willy@infradead.org, akpm@linux-foundation.org, xiaoyao.li@intel.com, yilun.xu@intel.com, chao.p.peng@linux.intel.com, jarkko@kernel.org, amoorthy@google.com, dmatlack@google.com, yu.c.zhang@linux.intel.com, isaku.yamahata@intel.com, mic@digikod.net, vbabka@suse.cz, vannapurve@google.com, ackerleytng@google.com, mail@maciej.szmigiero.name, david@redhat.com, michael.roth@amd.com, wei.w.wang@intel.com, liam.merwick@oracle.com, isaku.yamahata@gmail.com, kirill.shutemov@linux.intel.com, suzuki.poulose@arm.com, steven.price@arm.com, quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, quic_tsoni@quicinc.com, quic_svaddagi@quicinc.com, quic_cvanscha@quicinc.com, quic_pderrin@quicinc.com, quic_pheragu@quicinc.com, catalin.marinas@arm.com, james.morse@arm.com, yuzenghui@huawei.com, oliver.upton@linux.dev, maz@kernel.org, will@kernel.org, qperret@google.com, keirf@google.com, roypat@amazon.co.uk, shuah@kernel.org, hch@infradead.org, jgg@nvidia.com, rientjes@google.com, jhubbard@nvidia.com, fvdl@google.com, hughd@google.com, jthoughton@google.com, tabba@google.com X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 93F55160006 X-Stat-Signature: 1ynqod1frfby56szn5hpn1geir48b16q X-Rspam-User: X-HE-Tag: 1739275891-195484 X-HE-Meta: U2FsdGVkX1+j4SP7rgznSYQbBfe7id52L3FAYVncQMFBFJkUkiuHo1vqOeXWVuD16RNC1dXDLpXESk3ZHZVvqBtj0xUaoTxN3/F6yq+gx0zWgXnwW+Xe0Tc/hs+M59+5OZ2aNu8W97DygRyLQ5MvoUDhGz4nchAtRzIW6ptBpMz/TQiHEoyBwKUhiZXBS/bqSPjctGYUMDZGiyqUIWpO2ACSaiJLXGGALqNKr9B/OMl8X23XoFKxy/vmjvLk6zE+9P1TXw3/keaiDwFtKfzUyi5OcXfq6F9q641wVJoniI5SI13Erttv6JwMnxefEyILOI0b7U2Qhk6sZuYWuGf1KeGypkbQEFvc3sNpUdZwuUkBg0oqqz+84SMLZyy9nVie4s1Bl+6PAL/y6u2/qaqH3bgY5PgY6xFGr4bgGiL+0bwHj4HPS4qoNa/Vyo5g8clANfKyP2m5hfGS3GVLFLHaKVWPekEgcm0Xd/9qm1PfGJW4O1pmJEHprUwaIGa17MBwyI2ToFc6D0KumObj3f376F7OsD5gKPiHIWJ+A/yijk8En3d2rOKQFMI+b8WmdCs8AQdHJbJBbWL+PVeLya1HR2Ew3TO2qHUxdFHBObwLvaAa48NLMLKNLgQRMwFXzQtQeZ5vt9gxe7qWfn0X0dTXqdYnqwKlZKIbxBAu/nF9fvKZYHaKaYyjNcWpVlrAyynv5Etwq7Dt4JF76gLb8DeTTipha3S9M8/vItIdyfbjaJkOa05CZsaRSMeIpPqRMqdFnMkaPxmLdAI7rvd4aXNEkuTSw/ejUNRSFeB1zxdijO7N3blcG4amiTu/i0vFulrmAJIFA0Apq4sF0T0+N9j/CIns439ZrKc9zSleFhUEZ2Yo8+HhJ4KQ61OblBPpwbEO8SVUcMEFjuY600cKMYclByfu0pxlJb2GEQuYPYby49l6PAU6skcTSuPocXpA1YM62JqH7350lJwjFUZ3lNy 4IZu4KuF 4iVO8xegEmdGf3qy0QTF+TemZOoNHNt3wWVxrtBvbo7DvmbQ3VXuq05Po8gR+pIIy+WyFCSVHVUa/nztnFgYBEkLl48GOiOsUmBMtW9wSA39NvRrPde7Oa3BkUsvTPjRL53AB64+kgJyYOZ8NFBMfdOv58fgMf2N1PyXYY7vIsLTqXtz22vUDDJUh8y/O8Gy0viAzOuIN0VGY3lqkI79StdYKy0wxowZAmIyKSBQDp/UbJDXJGJ1dmOFFzGllwTem279CU/ItiYmE1Aoh2gyDATkBPf3cpK9+/wi4N/RLyTAbVNkG6aG1Opk+Xg/Su/UjPPmVQRTdTY8wuhoRGPvhN4ZP2CRbWyyQQuZWLHfe7i4p+hIWBpSa7XeAL4YM5b7S6cdddKcQilQeSMg2Cg+lnol++uSJqFOmewoBRrcKVO1xE0DWeySU65MD7tqFRwxVr5Ijy1D3OkCtFDbWAjY3hVF/5c2XNvmhAtgqBg3lqtqUQLsLt76pnHzmEQIp2Tp6oOUGYE5waIJ8LdJBFWZQysM7gYFUO0vcfB4tXkGU4QXJHB3ZeVw+U5r5mrtHzxs+ESLLUlZKeL2hh8M0ZGaeQl0oEXyuCs8tJFlphc4Apas4VliEnPAUf77sUzidN2VT/4AIIKCocksbGeifZ6Y2Dz2YKVQHarYpHtR5wz+4HQ5I+Kg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000009, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Changes since v2 [1]: - Added more documentation - Hook the folio_put callback as a stub with a warning - Tidying up and refactoring - Rebased on Linux 6.14-rc2 The purpose of this series is to serve as a base for _restricted_ mmap() support for guest_memfd backed memory at the host [2]. It would allow experimentation with what that support would be like in the safe environment of the software VM types, which are meant for testing and experimentation. For more background and how to test this series, please refer to v2 [1]. Cheers, /fuad [1] https://lore.kernel.org/all/20250129172320.950523-1-tabba@google.com/ [2] https://lore.kernel.org/all/20250117163001.2326672-1-tabba@google.com/ Fuad Tabba (11): mm: Consolidate freeing of typed folios on final folio_put() KVM: guest_memfd: Handle final folio_put() of guest_memfd pages KVM: guest_memfd: Allow host to map guest_memfd() pages KVM: guest_memfd: Add KVM capability to check if guest_memfd is shared KVM: guest_memfd: Handle in-place shared memory as guest_memfd backed memory KVM: x86: Mark KVM_X86_SW_PROTECTED_VM as supporting guest_memfd shared memory KVM: arm64: Refactor user_mem_abort() calculation of force_pte KVM: arm64: Handle guest_memfd()-backed guest page faults KVM: arm64: Introduce KVM_VM_TYPE_ARM_SW_PROTECTED machine type KVM: arm64: Enable mapping guest_memfd in arm64 KVM: guest_memfd: selftests: guest_memfd mmap() test when mapping is allowed Documentation/virt/kvm/api.rst | 5 + arch/arm64/include/asm/kvm_host.h | 10 ++ arch/arm64/kvm/Kconfig | 1 + arch/arm64/kvm/arm.c | 5 + arch/arm64/kvm/mmu.c | 91 ++++++++++------ arch/x86/include/asm/kvm_host.h | 5 + arch/x86/kvm/Kconfig | 3 +- include/linux/kvm_host.h | 28 ++++- include/linux/page-flags.h | 32 ++++++ include/uapi/linux/kvm.h | 7 ++ mm/debug.c | 1 + mm/swap.c | 32 +++++- tools/testing/selftests/kvm/Makefile.kvm | 1 + .../testing/selftests/kvm/guest_memfd_test.c | 75 +++++++++++-- tools/testing/selftests/kvm/lib/kvm_util.c | 3 +- virt/kvm/Kconfig | 4 + virt/kvm/guest_memfd.c | 100 ++++++++++++++++++ virt/kvm/kvm_main.c | 9 +- 18 files changed, 360 insertions(+), 52 deletions(-) base-commit: a64dcfb451e254085a7daee5fe51bf22959d52d3