From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A3D1D3368AC; Wed, 29 Jul 2026 00:35:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785285310; cv=none; b=DHKDhebb/xX2+4BCavZQEJSlsJP6EoV89vYxx/gxPM4nj+Wfa6hcSmjTcaP6KvZhszTTI5GrZ+k+0n3LHnVNHXcPzohz7f+4Vus4R86fRuZPNt05V6fnnQxrX9y0MYNxKBCgn+uZUqe53H89mhn/LLWuv0f416nmaEadzW6pvbo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785285310; c=relaxed/simple; bh=t0GU2FqFKCuOib2d6Ruhhddol6SB7vDEVb8Qsk6L8f4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Qz+vEQFvLi78j35i/CkFBqbhz3WlSkZuZwP8Hj+AHnd0liPkA2H3EPxqp8e74k5WjMd/e1C95TjXSN5dukjHfbK6wMt1L+VJusUrQTNLPzSMBcrSylUcV2n2QStlw2Zsr6OuGP4z62ZLq35PyJmZxZfCsOso2/J6IgvTc9ESyuY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jomT2LBT; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jomT2LBT" Received: by smtp.kernel.org (Postfix) with ESMTPS id 4879CC4DDEB; Wed, 29 Jul 2026 00:35:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785285310; bh=t0GU2FqFKCuOib2d6Ruhhddol6SB7vDEVb8Qsk6L8f4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jomT2LBT1idArPrZoQUXg9UsL6VhjivlD1AlivwOypFrRboXIbZk7G+j9iI1FyKOW LhteUBKmd9CLTVAuOHnXWjFqfTCuJarYAfFX6s948wiEGhD7LEoQ5FVa2OYF30C85/ SZIc8sebFyeeZK3i0x+z8LRySJPcQKgeaLfepE2DySyXk/NeWDwhCJyOg6wowh2h1K FPLl4Lq62Uu2rMtS1xM2dGdL5chWFvxtqmqmZ7pn6Ccum0zGHnviEfXR6w2c0WFFY9 5vfxzQ9LpW5jwEvNqcLJ2XxYdOfDzigCsj3coRAPzyyBu585v5tRFM5kDQFPHHRELx ZdUZPXzcy4+TQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2E2E7C54F5C; Wed, 29 Jul 2026 00:35:10 +0000 (UTC) From: Ackerley Tng via B4 Relay Date: Tue, 28 Jul 2026 17:35:29 -0700 Subject: [PATCH v9 30/41] KVM: selftests: Test conversion before allocation Precedence: bulk X-Mailing-List: linux-trace-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260728-gmem-inplace-conversion-v9-30-35f9aec2aed2@google.com> References: <20260728-gmem-inplace-conversion-v9-0-35f9aec2aed2@google.com> In-Reply-To: <20260728-gmem-inplace-conversion-v9-0-35f9aec2aed2@google.com> To: aik@amd.com, andrew.jones@linux.dev, binbin.wu@linux.intel.com, brauner@kernel.org, chao.p.peng@linux.intel.com, david@kernel.org, jmattson@google.com, jthoughton@google.com, michael.roth@amd.com, oupton@kernel.org, pankaj.gupta@amd.com, qperret@google.com, rick.p.edgecombe@intel.com, rientjes@google.com, shivankg@amd.com, steven.price@arm.com, tabba@google.com, willy@infradead.org, wyihan@google.com, yan.y.zhao@intel.com, forkloop@google.com, pratyush@kernel.org, suzuki.poulose@arm.com, aneesh.kumar@kernel.org, liam@infradead.org, Paolo Bonzini , Sean Christopherson , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Jonathan Corbet , Shuah Khan , Shuah Khan , Vishal Annapurve , Andrew Morton , Chris Li , Kairui Song , Kemeng Shi , Nhat Pham , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Youngjun Park , Qi Zheng , Shakeel Butt , Kiryl Shutsemau , Baoquan He , Jason Gunthorpe , John Hubbard , Peter Xu , Jason Gunthorpe , Vlastimil Babka , Baoquan He Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org, linux-coco@lists.linux.dev, Ackerley Tng X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785285305; l=1811; i=ackerleytng@google.com; s=20260225; h=from:subject:message-id; bh=v57ryBr6oGCJe5TYqs1IH2knV8ELwerTsyk3LnOgbLI=; b=gb8EUCRkrJJZH9HkkV49i3gxNXf/AJDTq+z4Z9mytNPAiDk4M9c4F7yZ4c4FQmhSN5+iQK6wN ecwqOUSu0wUC3xeLENFyHwv/QmckwTLkUQHa/ApCaEzazqfAeZ/XasS X-Developer-Key: i=ackerleytng@google.com; a=ed25519; pk=sAZDYXdm6Iz8FHitpHeFlCMXwabodTm7p8/3/8xUxuU= X-Endpoint-Received: by B4 Relay for ackerleytng@google.com/20260225 with auth_id=649 X-Original-From: Ackerley Tng Reply-To: ackerleytng@google.com From: Ackerley Tng Add two test cases to the guest_memfd conversions selftest to cover the scenario where a conversion is requested before any memory has been allocated in the guest_memfd region. The KVM_SET_MEMORY_ATTRIBUTES2 ioctl can be called on a memory region at any time. If the guest had not yet faulted in any pages for that region, the kernel must record the conversion request and apply the requested state when the pages are eventually allocated. The new tests cover both conversion directions. Co-developed-by: Sean Christopherson Signed-off-by: Sean Christopherson Reviewed-by: Fuad Tabba Tested-by: Shivank Garg Signed-off-by: Ackerley Tng --- .../selftests/kvm/x86/guest_memfd_conversions_test.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/testing/selftests/kvm/x86/guest_memfd_conversions_test.c b/tools/testing/selftests/kvm/x86/guest_memfd_conversions_test.c index 8e17d5c08aeb8..b43ac196330f1 100644 --- a/tools/testing/selftests/kvm/x86/guest_memfd_conversions_test.c +++ b/tools/testing/selftests/kvm/x86/guest_memfd_conversions_test.c @@ -265,6 +265,20 @@ GMEM_CONVERSION_MULTIPAGE_TEST_INIT_SHARED(indexing, 4) #undef combine } +/* + * Test that even if there are no folios yet, conversion requests are recorded + * in guest_memfd. + */ +GMEM_CONVERSION_TEST_INIT_SHARED(before_allocation_shared) +{ + test_convert_to_private(t, 0, 0, 'A'); +} + +GMEM_CONVERSION_TEST_INIT_PRIVATE(before_allocation_private) +{ + test_convert_to_shared(t, 0, 0, 'A', 'B'); +} + int main(int argc, char *argv[]) { TEST_REQUIRE(kvm_check_cap(KVM_CAP_VM_TYPES) & BIT(KVM_X86_SW_PROTECTED_VM)); -- 2.55.0.508.g3f0d502094-goog