From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 315B04AA1C2 for ; Wed, 2 Sep 2026 16:41:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367289; cv=none; b=WS5ayKUaL7caUKO34XuJu9aeep6wlvZQK4KC0/Uc2rGB4S2C5QLWuVHta9CjeJsX+fdOQQX+qhxzV7PlrfanNq/by3u9iwVqyzLzUQYj1aSvwQL62XvWpazb4/0aVEwmAFQWZ9SvhXo4Qr60SnjjesjLWin12JI7JTca0P6tms0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367289; c=relaxed/simple; bh=HSDUOoQrDrmlHFwLRcHbs3L5ZjzaqYAkiuTkthsWXI0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=MY/2b8Z6BRFV6EwVDZCURaImkd8+9zk2SiS1KQgYMKVkhmtrp5Q2gQgdpw+OFVsKoIJr/05nBCgXqvnlJVDlDHjkGGlwNMOcDwBWdql7Cm9Ikjy/LIX7OsGGS9R9MgnSFdFUG8eYhTaHDng/RCOfbo3OnTu5grAA4v9CpcRj68Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=JGxOuW5W; arc=none smtp.client-ip=209.85.214.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="JGxOuW5W" Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2ce7dfd33ffso17985055ad.0 for ; Wed, 02 Sep 2026 09:41:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367286; x=1788972086; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=377f8tXnWvaciY/JLF+PS/DOVpUUGqN5+0rwp4hwx/U=; b=JGxOuW5WZ1m8AaDa+yi1k9fePu3TilVix2Uy9+kAFQaWJxbDCfaTccWAjs/Iqy2Pqn 4WDOTg9vq701lSvxWWGvB5GGleZn1CEq2JUG78EUG5srJbrf+P1a9jlI/Fa1PNMgpqzT hJWqt+Xf7zbMCBRulLk76vsowAfNUwKis6TtInQkHIvqMAR/aT6OdzS5o9Rbpwv9WKCN L2TJaZghBAuK866SVyxKrnVIl863K6SzHYilykU+Q1JwPEKXNHcopWjC51D0N/ptFcv9 xjxNcAm7iwmYaHKGlZdYDp+8ogbi/l4EpawEQt1DWFcX22uD6s4r1hnVy6JWj8vk0LV/ vqvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367286; x=1788972086; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=377f8tXnWvaciY/JLF+PS/DOVpUUGqN5+0rwp4hwx/U=; b=EaPNjIET2+SGDx1zcrO/iT3tpw7ymL9NCip7sF53h+Hl6Zr7J48dPE1mEw99m3SCj0 NJenE80snEOTbMKE7IRDG9ZqSSeQpy8BIip8IP5awV5ln/0ZAqMkECv+qwpTVbDyL3+W EPHkliD6+HC+X3fomFNQm8HRo9T/zaf2SiiY7u/GtfpF6hwm2vSupOZxWzr+5+TPVqeB F21uE69Mu7kQ39s2oOHRvL5UCC6rXcDkyablR2Tcx4jhZXzAi5aDbOJRSIuoZmbodwrf ZGwf1C+IA+pGE7Op8l9aay2bpuN4vq5vuKzQz683X6+QOQJvbd3Q03YfO/eLyT6hIRSu MLNA== X-Forwarded-Encrypted: i=1; AKwUvBwxtRz/DuzbUpbMng5Ahp77gddC975GBm69c3Vd4TBy/bvm2Edrld7Hk7HwO/G+CIY3uCDgL/i5KggcRKQ=@vger.kernel.org X-Gm-Message-State: AFuF++n4w2OLyYeOTZUX/Mu0wntncs5kFWFEZHGnMQusi5wBeuaHNivz 77343XsVyDSoVt1g9VDhK6yeiH1vqlYX2LtqSjFD1LiEyt5VUfCYn+i4RHPtRZsANInuq6GQuYy fEacJTg== X-Received: from plru4.prod.google.com ([2002:a17:902:b284:b0:2cc:e407:8fef]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:cf0d:b0:2cf:4339:aaa with SMTP id d9443c01a7336-2daec6d8a20mr100626665ad.12.1788367285568; Wed, 02 Sep 2026 09:41:25 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:04 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-2-seanjc@google.com> Subject: [PATCH v2 01/20] KVM: selftests: Use MEM_REGION_PT memslot instead of '0' for s390 regions/segments From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use MEM_REGION_PT to indirectly specify memslot '0' instead of hardcoding the memslot in s390's virtual memory allocator, as a first step towards taking the allocation type instead of the exact, raw memslot in the physical memory allocator. Note, the only tests that set MEM_REGION_PT to a memslot other than '0' are arm64-only, i.e. s390 always uses memslot '0' for page tables. No functional change intended. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Acked-by: Claudio Imbrenda Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/lib/s390/processor.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/lib/s390/processor.c b/tools/testi= ng/selftests/kvm/lib/s390/processor.c index a9adb3782b35..fb9dab92d4d1 100644 --- a/tools/testing/selftests/kvm/lib/s390/processor.c +++ b/tools/testing/selftests/kvm/lib/s390/processor.c @@ -39,7 +39,8 @@ static u64 virt_alloc_region(struct kvm_vm *vm, int ri) u64 taddr; =20 taddr =3D vm_phy_pages_alloc(vm, ri < 4 ? PAGES_PER_REGION : 1, - KVM_GUEST_PAGE_TABLE_MIN_PADDR, 0); + KVM_GUEST_PAGE_TABLE_MIN_PADDR, + vm->memslots[MEM_REGION_PT]); memset(addr_gpa2hva(vm, taddr), 0xff, PAGES_PER_REGION * vm->page_size); =20 return (taddr & REGION_ENTRY_ORIGIN) --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CFF84AC164 for ; Wed, 2 Sep 2026 16:41:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.198 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367292; cv=none; b=R/yczeyL3Sd236V9cT7Ubahhb/gulAcoAhysg6nkil4yNvsBAQZBo6rfB8LJXbl384qglKUWnRIMQBZc1ziejzm8Fqp1zRcp/jTGUIoxJseoLv8ojcLl5uMbkYiGlr1+HfHvJmo3U2L73ZSsdx9ZT+EVSmlUTbrMj+eqai0dfJs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367292; c=relaxed/simple; bh=6OUAEUlWmcz77q9dlKCMKeUAOSbdrXQdyWwvAi7CqFQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=n7cBLmr7W+qJYK4PeIk46sUYlyOZw15heZp12nXnDLb0EJr/MMzXHEnlSpGNbvhGukc8dYbo6WPRHSWZlQj9vUKxuV8PY9Prpb1ZP7sfHgGuYLUcQgjivJYlHpCA7UyGGjyNo6QlJAXLA0tIkMXY0g26UNGrXJbjJyKq+kCYQfw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=GPskbJUM; arc=none smtp.client-ip=209.85.210.198 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="GPskbJUM" Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-84865f326efso631392b3a.0 for ; Wed, 02 Sep 2026 09:41:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367287; x=1788972087; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=d/SeKhrpZbiLYnD0BJegQFxELS2UQb8EJmQMNb/zwWY=; b=GPskbJUM5sGvTsI3OgDFvp4eFPx4StNGgvweuBfXEeLf87gvsj6IckkBt3FGYzmCjG 4eDhkueUwfwERLN0kktf2cPH71+o4biJxszXS0GrOOophwWvnssQLiK8E4yV4h3Il8C/ RITcOyxAZtLFvBNbSRNR0KqTF1hFfUaSp8hPZbJbdodj/cPEYoeWbsmJFiiklS/PiU/a BQCuFDTIRPpPoj2pAbv8rGcygFDVNTi6wtqAjwhsESrciKCm8FmYfByD2Jj+JxlUV1S0 fTIFdkZIQb0NxeLmdSPFlA6FB570DuoToLXwaF778d/eVrpB7sJRCISy3fIL2Ewj1kq0 F0CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367287; x=1788972087; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=d/SeKhrpZbiLYnD0BJegQFxELS2UQb8EJmQMNb/zwWY=; b=k70yEaVMa9fiFczSD5IcUmixaBs+fruQ40/6nViUIc16y+vfCMzvRzYUJl/F0rxVli /Y71LWew43m169iKW/uYFkyqBOffNVdeyT5pzFxqz7g0yrnpYCEJxOsn3p4btebM6yZ+ mVI6SjgLoQps5+DCUU5/W6kn/HJ7u0wxRJFCrc7mTPDpjMhU6UEUJPXVdMoQa0PVmDQe gCQnDTGgYIsMsaPRpD5ycOp/2comuDpGN+m/mhBOlEw8V9JdU1sUO1A/jLDv49ywClKx P5CO5dio8gEfnYOSP3MVnbD2aeopBrNKGtJh7YIUro8/kclJbJlUunyaVda0FosSF8js EJ2A== X-Forwarded-Encrypted: i=1; AKwUvBw9Ma4BXaghvbaWJNsxD3UcCNt9Q0PhhuAziECJrRDgkGLj5X+ZmgZJlWR8Y8HF2BUEvyjHH4vncmjqxHA=@vger.kernel.org X-Gm-Message-State: AFuF++mIH+f482R/s+sximUibwWYf+lVaCCCn/BffcqF0msW1hH2KXNa o0+vdJMDDI/rpSoFW7b5UVYr8GyfuUvtmprhsOCsORBLWllQUS6/S60TXASu7kCF+pj/ocRMS0q Gx2aOzA== X-Received: from pffj5-n2.prod.google.com ([2002:a05:6a00:c2c5:20b0:853:9828:ce3b]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:ad0d:b0:82f:38df:681c with SMTP id d2e1a72fcca58-85ed7744a8emr9789737b3a.6.1788367286625; Wed, 02 Sep 2026 09:41:26 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:05 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-3-seanjc@google.com> Subject: [PATCH v2 02/20] KVM: selftests: Use the common minimum GPA for page tables on LoongArch From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use the common minimum GPA for page tables (0x180000) on LoongArch instead of LoongArch's custom minimum of 0x200000, so that LoongArch can use vm_alloc_page_table() instead of open coding a rough equivalent. There are no known reasons why LoongArch can't use a lower, less-aligned minimum. The more-aligned value was originally selected to support huge pages for the guest, but that only requires the address of the final allocation to be aligned, the addresses of page table pages is irrelevant on that front. Signed-off-by: Sean Christopherson Reviewed-by: Bibo Mao Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/lib/loongarch/processor.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/loongarch/processor.c b/tools/= testing/selftests/kvm/lib/loongarch/processor.c index 47bbde3e205a..057a77713542 100644 --- a/tools/testing/selftests/kvm/lib/loongarch/processor.c +++ b/tools/testing/selftests/kvm/lib/loongarch/processor.c @@ -9,7 +9,6 @@ #include "processor.h" #include "ucall_common.h" =20 -#define LOONGARCH_PAGE_TABLE_PHYS_MIN 0x200000 #define LOONGARCH_GUEST_STACK_VADDR_MIN 0x200000 =20 static gpa_t invalid_pgtable[4]; @@ -57,7 +56,7 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) child =3D table =3D 0; for (i =3D 0; i < vm->mmu.pgtable_levels; i++) { invalid_pgtable[i] =3D child; - table =3D vm_phy_page_alloc(vm, LOONGARCH_PAGE_TABLE_PHYS_MIN, + table =3D vm_phy_page_alloc(vm, KVM_GUEST_PAGE_TABLE_MIN_PADDR, vm->memslots[MEM_REGION_PT]); TEST_ASSERT(table, "Fail to allocate page tale at level %d\n", i); virt_set_pgtable(vm, table, child); --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3C03F4AC16C for ; Wed, 2 Sep 2026 16:41:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367292; cv=none; b=rZgkC7nhaSv8jLYVhy3rztmKaaf/rYiSaDfqE87KprEnec6kW/6Cg9xo8O/XsN6ArpeA3q9OyuMnPoO370AB27j61daooyY+PlqB1bhTcvFA/fGAe3gUWcpDQ8EQhsuZ7bPxBmEVPoNjN/DUsP5hEal/OLUbV516LQ7FAoUPIrI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367292; c=relaxed/simple; bh=PqikAw/eC5X3KNqAbORwNmmWfNDuPm6CNtLB+01JjLA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=usDLqFTCOIJFvkOfUVQgoqDR8iALJhbbMU8JN7GWGsndRPEczsH54Nq1qrWJSHj6cpiAOxgnjcto0PdAFc3/yzpIXrRmvNtNhJr5cxBSBWZpNqZ7OBOHnvmfUi8BUym0tK2KZHON01mOJmtI1vzqCU/8qr1+eYxt0VYgyGQ0WIs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=rNlJHfS5; arc=none smtp.client-ip=209.85.215.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="rNlJHfS5" Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cc132709c76so2102605a12.3 for ; Wed, 02 Sep 2026 09:41:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367288; x=1788972088; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=0zhVxUyRpRhnHXbQLMxjoc4Ys+BN3Anj09sDDnw94v8=; b=rNlJHfS5GCdRMQyc4MGrPkI5zixFEmgMHNZH9VCGuzekhMv1wTmnfCUfwou23xfemO MYDDxw4RWNeft27/ZEMROjAogUQnJCQGwrzxI1AoUOX69yF9rYV6oaA2ywp2uwqDhgOP yvwp7gcig9wTX+ZFwXYSzMm/LVUToovPgj64iqf16pGrqrnJKsQxtqEI9iVBml6jr7n6 iorcqJfOVbpcILVQbtt731kjlXrn5l1aEYExX87NDIL+qZZB6PS8wmDESwlOlFXjs48V d+pepxEsa5cGlGGYKU/mIIaUZNaxGYeXpTLfyzfA5zMo+b43SQBeHBF6C7+u67OlGSO4 l77Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367288; x=1788972088; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=0zhVxUyRpRhnHXbQLMxjoc4Ys+BN3Anj09sDDnw94v8=; b=EbV58YOBnWCIhRxuuoI8KTMIu7Fr9F1nl87gYT8KayswMn5No+CZHHbjQZwr/iHchH QpqkyK4G2582XAq5Ih7PG+tLupodAstLJQmPav2It+60KpwXrSJ3qmTOyMfdY2l+GHnx 7aw99uDQsRPsboSUaCfOWpIfQOKtta90Qb1ciATSGxyBfb8X5qShEPJ/6svXKLfJWLXA dGvjm4PVvIWQ9mpBJvRybuAethBSdpUOVxpLjxBK0snAOpSVrYF5R6h5NjL2hpM3+VEQ OSmBEPwzLwacIicjs59r7CmuTdZAzcKj9EN8YqmmdYNXo9SBQ2xW5F0L7KvQ7H9Dm962 fdXQ== X-Forwarded-Encrypted: i=1; AKwUvBwlkJHgM6HVeV8JYVGyLYbuTpWQR5bjeQox1jeNtx2zhq+O6qfcrxadkdWN1JAT0Dpt99SGG84hCZRc5OU=@vger.kernel.org X-Gm-Message-State: AFuF++mCgTzW2sgizR5N71zyUvQC1PP0aXolIC6AxjK3p/b9X7OtKz7+ oEcodS13dPQQBt61UaL8yfS6aAY5qFvQURJXBsA9FJg2y9Yt12BLgpi/1ce5LXc2QI0o6w9mck3 13OpoGQ== X-Received: from pgbd10-n1.prod.google.com ([2002:a05:6a02:64ca:10b0:cc4:2728:8938]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:7f82:b0:3cc:2552:ddd7 with SMTP id adf61e73a8af0-3d9adaba731mr8793167637.5.1788367287815; Wed, 02 Sep 2026 09:41:27 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:06 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-4-seanjc@google.com> Subject: [PATCH v2 03/20] KVM: selftests: Use vm_alloc_page_table() to allocate LoongArch page tables From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now that LoongArch uses KVM_GUEST_PAGE_TABLE_MIN_PADDR for its page table page allocations, use the common vm_alloc_page_table() instead of open coding the same. Opportunistically drop the assert that the allocation succeeded, as the allocator itself guarantees success. No functional change intended. Reviewed-by: Bibo Mao Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/lib/loongarch/processor.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/loongarch/processor.c b/tools/= testing/selftests/kvm/lib/loongarch/processor.c index 057a77713542..fcd41bc6fbda 100644 --- a/tools/testing/selftests/kvm/lib/loongarch/processor.c +++ b/tools/testing/selftests/kvm/lib/loongarch/processor.c @@ -56,9 +56,7 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) child =3D table =3D 0; for (i =3D 0; i < vm->mmu.pgtable_levels; i++) { invalid_pgtable[i] =3D child; - table =3D vm_phy_page_alloc(vm, KVM_GUEST_PAGE_TABLE_MIN_PADDR, - vm->memslots[MEM_REGION_PT]); - TEST_ASSERT(table, "Fail to allocate page tale at level %d\n", i); + table =3D vm_alloc_page_table(vm); virt_set_pgtable(vm, table, child); child =3D table; } --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ED0894AA1DB for ; Wed, 2 Sep 2026 16:41:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367295; cv=none; b=Z1CHc0B2BW3GPxEnu7Ns77HHfVUc2rOO7IHZJDT63dqRrZAmDzhHjpGjZdFQIJKoriLE070bTjgQMerrDF8u8fHayQm0kDg1rZKWj46SPisXP4fuBaAML0qnWFQ1aczN52aRVUtwm5ttUm4tfeIvyGGGIdcRgwx8G2ACS8Oizc8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367295; c=relaxed/simple; bh=qiAUnwXNRHcCnTp6pB3essIjKUFlHq7w5jyTIpSCYHc=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=YsJVfkNmIttpjLZhvhXUaGURPjHFcMQwqmV3L9X8iR1wh7+NiBIy5o39baUuEz7SEpr378UjFyI7y09pvrNiY7giGCcOJczBtuJeRGBvSW7aMHfNrfpoZ3n7+giOh2gd+umA99xj3D4ETQVUjYSMc+qgb3rA7cLoW7bQv+Qmf/s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=WbvbZJWz; arc=none smtp.client-ip=209.85.210.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="WbvbZJWz" Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-848568a6f62so1518578b3a.0 for ; Wed, 02 Sep 2026 09:41:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367290; x=1788972090; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=FhHpGJsy4eqTyD8gJTN9GI3bxNYhY9zj5ahy9gYJIhU=; b=WbvbZJWzQOllpmwfx3uMTXlZL+nTLK1a8oIW/Fb5vGb+zZOHAXOT3WskyDwhyeyWbd aNgdyxQ8/Zhov0cWVe26v2G2s1cbrQiPhwMhB6IZxKbIiCsFXqdobvTq9cTymPeKA4z4 ekqNC+OXbVbJF65Q7QqYOfSyc0DkWtAzrJUL7p5a1+4UcG1v8O+9QDn5MxkHn92yqIB5 /t6RGsMIRJg+FMOd1zhhVkBrQ2iHXsr8TwJ10Cw5nSOTIXGzId+x/EJATmnlNJVZ1fjL +AWE6Brkx0I8W2gUMe+yrTkKxXnTQDiwC2m3A1HDn8DVl+HX4pZiiEetg3NtS3hhAqCQ QVng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367290; x=1788972090; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=FhHpGJsy4eqTyD8gJTN9GI3bxNYhY9zj5ahy9gYJIhU=; b=RSYIl4DZrNlNd7JgmGhQuc3ANJHiBistiKe+gNj5z0NuodvUCDMFg01bUgngdFdP33 74u1glzeVGiXgiZjGf0K6cOLVtRuzpYjNtTY2mm6p6E6FxwLSuGnRFx2MN4JV8Tgsc7u ZBFKiZArH0Oyv1j3G5aNNLZLtGuu/fI0AYHcKIBI7+FKMjmprNssf3mOq1ffk59e6zfL KqgnPs0JBD/8tMKaGD7Hc0OreqzghSd3WJqmPKnFJ5hJj9tp/4f9HIpxxjejJaqmTzq0 MK/tIKMv+l7QrNGR+mSXB4yiIKl3qs8keRmf0wsZeSt3U2hC+7RvUkFJPODNYxhoYinz c/QA== X-Forwarded-Encrypted: i=1; AKwUvBztjZ0UIj5P3RhMZgMvPXqZZALrXQgMFOdFTOTeM5CI2YAgRh3QKxBxawKpQ9R5MDh+v5JUtucLudzgq0E=@vger.kernel.org X-Gm-Message-State: AFuF++mz7f62RtleI47+7UoYAW7nxglay/KLdhpOeoVv8rYKv49fPM06 zbhAj1woULpFFwgpJMzTUt3H085P1F+M5B686aW0VN6IypX2Cdpyw07SoxP9+tlleGY5Fwae7hx KRWEztg== X-Received: from pfxa26.prod.google.com ([2002:a05:6a00:1d1a:b0:848:4f56:7671]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:2305:b0:857:7384:b5fd with SMTP id d2e1a72fcca58-85ed5015dfemr6019071b3a.25.1788367289034; Wed, 02 Sep 2026 09:41:29 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:07 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-5-seanjc@google.com> Subject: [PATCH v2 04/20] KVM: selftests: Rename "num" param to "nr_pages" for physical page allocators From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rename the "num" param in the physical page allocator APIs to "nr_pages" to make the unit and role of the param more obvious. Opportunistically rework the function comment to drop the superfluous kerneldoc style, and to very explicitly call out that success is guaranteed. No functional change intended. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Reviewed-by: Ritesh Harjani (IBM) Tested-by: Itaru Kitayam --- .../testing/selftests/kvm/include/kvm_util.h | 6 ++-- tools/testing/selftests/kvm/lib/kvm_util.c | 35 ++++++------------- 2 files changed, 14 insertions(+), 27 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index 5a7a455b5387..95bc0a78d2bc 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -991,11 +991,11 @@ void kvm_gsi_routing_write(struct kvm_vm *vm, struct = kvm_irq_routing *routing); const char *exit_reason_str(unsigned int exit_reason); =20 gpa_t vm_phy_page_alloc(struct kvm_vm *vm, gpa_t min_gpa, u32 memslot); -gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t num, gpa_t min_gpa, +gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_g= pa, u32 memslot, bool protected); gpa_t vm_alloc_page_table(struct kvm_vm *vm); =20 -static inline gpa_t vm_phy_pages_alloc(struct kvm_vm *vm, size_t num, +static inline gpa_t vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_gpa, u32 memslot) { /* @@ -1003,7 +1003,7 @@ static inline gpa_t vm_phy_pages_alloc(struct kvm_vm = *vm, size_t num, * protected memory, as the majority of memory for such VMs is * protected, i.e. using shared memory is effectively opt-in. */ - return __vm_phy_pages_alloc(vm, num, min_gpa, memslot, + return __vm_phy_pages_alloc(vm, nr_pages, min_gpa, memslot, vm_arch_has_protected_memory(vm)); } =20 diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 9ddc047d5c27..b071d77dd301 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -2025,33 +2025,20 @@ const char *exit_reason_str(unsigned int exit_reaso= n) } =20 /* - * Physical Contiguous Page Allocator + * Allocate contiguous (guest) physical pages in a given memory region, at= or + * the minimum specific GPA. If the memory is protected/private, also add= the + * allocate pages to the region's set of protected pages, e.g. so that arch + * code knows which pages need to be encrypted when launching the VM. * - * Input Args: - * vm - Virtual Machine - * num - number of pages - * min_gpa - Physical address minimum - * memslot - Memory region to allocate page from - * protected - True if the pages will be used as protected/private memory - * - * Output Args: None - * - * Return: - * Starting physical address - * - * Within the VM specified by vm, locates a range of available physical - * pages at or above min_gpa. If found, the pages are marked as in use - * and their base address is returned. A TEST_ASSERT failure occurs if - * not enough pages are available at or above min_gpa. + * Note, success is guaranteed! */ -gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t num, - gpa_t min_gpa, u32 memslot, - bool protected) +gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_g= pa, + u32 memslot, bool protected) { struct userspace_mem_region *region; sparsebit_idx_t pg, base; =20 - TEST_ASSERT(num > 0, "Must allocate at least one page"); + TEST_ASSERT(nr_pages, "Must allocate at least one page"); =20 TEST_ASSERT((min_gpa % vm->page_size) =3D=3D 0, "Min physical address " "not divisible by page size.\n" @@ -2064,13 +2051,13 @@ gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_= t num, =20 base =3D pg =3D min_gpa >> vm->page_shift; do { - for (; pg < base + num; ++pg) { + for (; pg < base + nr_pages; ++pg) { if (!sparsebit_is_set(region->unused_phy_pages, pg)) { base =3D pg =3D sparsebit_next_set(region->unused_phy_pages, pg); break; } } - } while (pg && pg !=3D base + num); + } while (pg && pg !=3D base + nr_pages); =20 if (pg =3D=3D 0) { fprintf(stderr, "No guest physical page available, " @@ -2081,7 +2068,7 @@ gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t = num, abort(); } =20 - for (pg =3D base; pg < base + num; ++pg) { + for (pg =3D base; pg < base + nr_pages; ++pg) { sparsebit_clear(region->unused_phy_pages, pg); if (protected) sparsebit_set(region->protected_phy_pages, pg); --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ADD4B4AA1F4 for ; Wed, 2 Sep 2026 16:41:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.71 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367297; cv=none; b=BmHNU40ZUcD3DqKZSWHWWwdf4AtFP3DaMi4Yk4/2klW2bFBEtLbAdrFgaoJMvQnC9p76CD+gn4EgCjuP0c8z3SrRU8BS8/ptUDK58hV4t9mzR/Jeh0l1UCA23hDdpRSLYUda5twFQwo+WsdfBBuGOBxGQ3XgWhL0qqb675DaRY0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367297; c=relaxed/simple; bh=sdY9q2BfDSeykJcP8/5Cy+uZ5jMK/dC9tNYwEHAyn2Q=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=ky41M/aN0iZvBm31ch2tG25umAtSJTB2hsY20kaW9vTXGW8wJAe5yM8PyEgYjIYv2SOT2A5Iuyw2yicrj57vXc9FYVOxrQqDyUiyIpwHj9GRPgUJL5QMRWem6MS0RnlfZNft8z8S1PQ5sZFG8K59eZneagMTSR0gHE39yba+noI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=gKcQlH/i; arc=none smtp.client-ip=209.85.216.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="gKcQlH/i" Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38e475f83a2so2160021a91.1 for ; Wed, 02 Sep 2026 09:41:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367291; x=1788972091; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=wh/M14gjNPKIhJHces0NPAZ6Z3gj1daHrmdTKDJlvdI=; b=gKcQlH/i62JexEHGAzzwd42Mq4jVmmAytuGa+nOYxn4SLKi0/6Zmx7r8B7bUJ80fiX eRlPgyfuohsqYu6Hh1aLcvv6fSamXA02ghXJJ4DrEE+Cg7rqW+LKh2bHq7612cXeYyas uazWh9vayuQVtGciu5SXsuXrxYPnMsQ0sCe96yu4IrZew+1jmtqJkANlKgCN/6XqXRmd F/+YBuy9jRWvkZy5oX9Hpu5VIr9C4MM7yCyh/EDoBX+yl3H1/CnRQ48HR16i4HrQq8mY Vd6WqCD7TfvEQkQM9/Tu7zfZV6DlUDmQLTNbZ9ifXwszCRCTO/FWWiKpoShwX+MYZLAB hSUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367291; x=1788972091; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=wh/M14gjNPKIhJHces0NPAZ6Z3gj1daHrmdTKDJlvdI=; b=VCPi5zbtGbEJ0SNJMx2S8GHVbhXHa49BUxNN5i3rL4KHR5aKXdJxjaSGLNF0FT9Vo+ MKy+M4jnuVnJm6Bpf1I1UutqTA0iPvi+jrN2EiB4WkMNZjd1tyhgzC0xSoxXXb+623M1 diXksjyIFQ8Rbr9mccs0GrYw2wkSwddjTqVK6AyGpogL9SJ7gZM0krXYgOFNsTSavoFa N/1Ij6Yjv6XDCU7ml7vOIjmI0uZ7eN/gQ81tJH6ddfKbaWfpUePl/UMpEAcYdsq9Pc9Q 50nrHGirePSbue8/BYDKHRHT7IUkBIpGy7RiirDLh1h8Mq4GVho/TC+OLdRdVPbhpSez rtYg== X-Forwarded-Encrypted: i=1; AKwUvBwtgNh375rHkR7VBp0Gi0EAa8NvPNt/66H46CmSHe6JrowcXhRpd0AH7/RHQpvdkv4w3Q8TbuKcdkrB0ks=@vger.kernel.org X-Gm-Message-State: AFuF++nSCrfEBoHPASnZll2smt3SB7OMrSd9h9yMg9AKkVeHCacwV/Uw v4nKSouOIOLCEJlNiA6h5jFpu25NVdB8uwYZxm3RhZX1QADHDOer15lP5ECKD5M3UnV5xtcs+3y vo+t0sw== X-Received: from pjbbt18.prod.google.com ([2002:a17:90a:f012:b0:396:5f0e:9c23]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:4c52:b0:38e:6aa7:68ad with SMTP id 98e67ed59e1d1-39aedf7c6aemr8714453a91.5.1788367291013; Wed, 02 Sep 2026 09:41:31 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:08 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-6-seanjc@google.com> Subject: [PATCH v2 05/20] KVM: selftests: Use goto instead of do-while to retry finding unused physical pages From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Nicholas Piggin Rework the core loop of the physical page allocator to use a goto instead of do-while loop when retrying with a new base address. The do-while loop obviously works, but it obfuscates the success vs. failure paths, and in general is convoluted. For all intents and purposes, no functional change intended. Signed-off-by: Nicholas Piggin [Rebased to latest mainline tree] Signed-off-by: Ritesh Harjani (IBM) [sean: separate from alignment change, use enomem label, write changelog] Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Acked-by: Gautam Menghani Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/lib/kvm_util.c | 32 +++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index b071d77dd301..bbf6d7684c0c 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -2049,23 +2049,15 @@ gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_= t nr_pages, gpa_t min_gpa, TEST_ASSERT(!protected || region->protected_phy_pages, "Region doesn't support protected memory"); =20 - base =3D pg =3D min_gpa >> vm->page_shift; - do { - for (; pg < base + nr_pages; ++pg) { - if (!sparsebit_is_set(region->unused_phy_pages, pg)) { - base =3D pg =3D sparsebit_next_set(region->unused_phy_pages, pg); - break; - } + base =3D min_gpa >> vm->page_shift; +again: + for (pg =3D base; pg < base + nr_pages; ++pg) { + if (!sparsebit_is_set(region->unused_phy_pages, pg)) { + base =3D sparsebit_next_set(region->unused_phy_pages, pg); + if (!base) + goto enomem; + goto again; } - } while (pg && pg !=3D base + nr_pages); - - if (pg =3D=3D 0) { - fprintf(stderr, "No guest physical page available, " - "min_gpa: 0x%lx page_size: 0x%x memslot: %u\n", - min_gpa, vm->page_size, memslot); - fputs("---- vm dump ----\n", stderr); - vm_dump(stderr, vm, 2); - abort(); } =20 for (pg =3D base; pg < base + nr_pages; ++pg) { @@ -2075,6 +2067,14 @@ gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t= nr_pages, gpa_t min_gpa, } =20 return base * vm->page_size; + +enomem: + fprintf(stderr, "No guest physical page available, min_gpa: 0x%lx page_si= ze: 0x%x memslot: %u\n", + min_gpa, vm->page_size, memslot); + fputs("---- vm dump ----\n", stderr); + vm_dump(stderr, vm, 2); + abort(); + __builtin_unreachable(); } =20 gpa_t vm_phy_page_alloc(struct kvm_vm *vm, gpa_t min_gpa, u32 memslot) --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E8FDE4ACC94 for ; Wed, 2 Sep 2026 16:41:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.70 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367299; cv=none; b=FZDdQQurO2XWwfr3vCpZUMtw7MKgCsPP/mpY2YZUOFrMUFRwq2rMoJ2AuWYW7wk5AK05xi/SDtzvDPft6ik6ULhxd3MvVCkOTmlGWW8UH43trhaQZnF0Pa1GtboYFMgjATUEmHfmdEa8/KVnorYe+zeuW9BCtfmunZBMTCvZJKU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367299; c=relaxed/simple; bh=wsoBQD4qq6Et3vmrWdvEDcU5mPTJSW7kE60nWbUUw1M=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=QZZZ2kOGcN6dNAOJ++K4mnXTOJ1TphRtYwijYaAgSqfbyBR9DBD65tFRNNjpTCpA6UI6Xf/nYaYB6zRtoERN13NgBaQ9WhNQEQGxIuZxCHFbXcWwQXj/qvIDl8FjZuDcjCV5alVEB1iBsmoaSAdEmMt7n/HcqvccbKSv6+Lnz3k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=CoDV/rMi; arc=none smtp.client-ip=209.85.216.70 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="CoDV/rMi" Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38f97b3f853so2235826a91.3 for ; Wed, 02 Sep 2026 09:41:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367292; x=1788972092; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=PFS8FckNWR5Ypo1TjtxFOP+XgfwND0gTpHBze+LVvng=; b=CoDV/rMi3wXQcIFfpDJEJwOSFcAe8AwHgQYhqSKnx37lPTzLE8BwcctmfTf7fTmuxa cbrbaE36fua4gM4G50OaPdDtl9TOGfqqRo8IuqTjDFCRxGdKCbaR0UaeKDn5rJzT4sYA nW83hlnQrYoDvedAsnVxrYX2nIcoUeuQd7upTg9XHgN0YY91iL75AH2BuHvSuDXO30nW Y5RM0VG32hhMkh+WIlcXNdwXfjHx+Ywj8fea+bp6CDQF+AJkKoGNOVFaHshdct7sLksq w1A7vN42/NzUcYMsfHYUO2/UtrPmJI4sWxxcr0fJ6gmBRGlLaQ5uQfFLxCnQvuecRxpU 1+0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367292; x=1788972092; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=PFS8FckNWR5Ypo1TjtxFOP+XgfwND0gTpHBze+LVvng=; b=BUH/5phrh1n7Tlw7b4JoFUOrkvbIpZQf1xeQnXdpkSuZj+Pxainfa5/ooz1Ne4CFr4 1y4uPaymy3F6Xuf3Ng+QY1l2oJYpfx+c+naw+FT8JfVD3XN+QphL5muhLid6z1/noeMY HiqieoZZeDcgMMlNnp9z6uLCW2+8fDGLuTElYU30pfAk4YWC4A41RVfClx3G3T18d0Qt OddeBcFaUMD2RkRRVMuxRsnNWIqHcK8En5xelOqakq6rFk/OoOX7NkEqDpTXoSTzWXEf zY/5wJthvrtLFNtTYjBIb0yGP8iqQI6tScyAnmvQkejcSrUBM/Lr5S/NCa9n2jl4BfOD NHgA== X-Forwarded-Encrypted: i=1; AKwUvByTWKEspOp1cH4snwXnTeLgNztgJlS45XpABeR6AoUjg847AWdVeEPIn/CsLwgxuxB6QoFiISsW+JmEHD0=@vger.kernel.org X-Gm-Message-State: AFuF++lr/lSZn48kNKHMfY495VX23Wej3HgOyMdyO+fd++DyrMM6XXtU QQTQ59tdLwJX1tpknrUjYRcdNRSlj19DCBZykKxVPrt3x4MO0wueevBF3hSRgursZxBo7Pna5qC 3tMdpxg== X-Received: from pjmm16.prod.google.com ([2002:a17:90b:5810:b0:383:7b51:b1cd]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90a:e7cb:b0:396:65dd:4093 with SMTP id 98e67ed59e1d1-39aee153a7amr7412902a91.14.1788367292151; Wed, 02 Sep 2026 09:41:32 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:09 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-7-seanjc@google.com> Subject: [PATCH v2 06/20] KVM: selftests: Extend page allocator to support naturally aligned allocations From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Extend the page allocator to support naturally aligned allocations, as some flavors of PowerPC page tables require multiple guest pages per table, and those tables need to be naturally aligned. Take care to align the potential base address *inside* the retry loop, i.e. the base needs to be (re)aligned on every attempt. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Reviewed-by: Ritesh Harjani (IBM) Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/include/kvm_util.h | 2 ++ tools/testing/selftests/kvm/lib/kvm_util.c | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index 95bc0a78d2bc..4732b9528812 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -991,6 +991,8 @@ void kvm_gsi_routing_write(struct kvm_vm *vm, struct kv= m_irq_routing *routing); const char *exit_reason_str(unsigned int exit_reason); =20 gpa_t vm_phy_page_alloc(struct kvm_vm *vm, gpa_t min_gpa, u32 memslot); +gpa_t ____vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min= _gpa, + u32 memslot, bool protected, bool naturally_aligned); gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_g= pa, u32 memslot, bool protected); gpa_t vm_alloc_page_table(struct kvm_vm *vm); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index bbf6d7684c0c..896da440659e 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -17,6 +17,7 @@ #include #include #include +#include #include =20 #define KVM_UTIL_MIN_PFN 2 @@ -2032,9 +2033,10 @@ const char *exit_reason_str(unsigned int exit_reason) * * Note, success is guaranteed! */ -gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_g= pa, - u32 memslot, bool protected) +gpa_t ____vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min= _gpa, + u32 memslot, bool protected, bool naturally_aligned) { + size_t alignment =3D naturally_aligned ? nr_pages : 1; struct userspace_mem_region *region; sparsebit_idx_t pg, base; =20 @@ -2051,6 +2053,7 @@ gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t = nr_pages, gpa_t min_gpa, =20 base =3D min_gpa >> vm->page_shift; again: + base =3D ALIGN(base, alignment); for (pg =3D base; pg < base + nr_pages; ++pg) { if (!sparsebit_is_set(region->unused_phy_pages, pg)) { base =3D sparsebit_next_set(region->unused_phy_pages, pg); @@ -2077,6 +2080,12 @@ gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t= nr_pages, gpa_t min_gpa, __builtin_unreachable(); } =20 +gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_g= pa, + u32 memslot, bool protected) +{ + return ____vm_phy_pages_alloc(vm, nr_pages, min_gpa, memslot, protected, = false); +} + gpa_t vm_phy_page_alloc(struct kvm_vm *vm, gpa_t min_gpa, u32 memslot) { return vm_phy_pages_alloc(vm, 1, min_gpa, memslot); --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 662154AA3FB for ; Wed, 2 Sep 2026 16:41:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.200 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367299; cv=none; b=nsZrVYUd/0ZnsEgsgqLVzXyjNk4bvg2VuH3Kes/BwWhxzn/+cIRTDNT7BX9jUrL2cGIKrV+hWNRAto15W6chwUQfxbK7vXHbmB74YxIvopkCerffZr360AegJHzdiTAyTLEcLsd14TimpQ2jkXV+gEiwaTMKQcW+VSNnGxG8KRI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367299; c=relaxed/simple; bh=1FneJM9N+iD2yZ+x4/1fexUijXDgNuTpisnHzVWEp+8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=pAjuezUv7F2DQ3+TU0gplEYCXW2eWoAYBTzDGa7+ntkLqcQYWFv7CWwTB6PkEYDa/lTpnv87fBD1qJMMe36E+86h5yLPwdtKZIQOcY1vToIB4UIUuZzL2C6BtO9c5pGOqcFu30LVdTCY+6+C+NkXklZr3aAYwFf+9qBBqptgdcM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=GatGxHCF; arc=none smtp.client-ip=209.85.210.200 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="GatGxHCF" Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-84a67b16217so2213102b3a.3 for ; Wed, 02 Sep 2026 09:41:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367294; x=1788972094; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=xxl3R2RxR/fdY+CE5Gsyx1FXrQJglfzt8OPnA5rO56k=; b=GatGxHCFoh9C6FLxC39Jkic2Fy5vrFcHN1t9eS9vQgo4T02M7smHGOdcc5k2p+7eQW yjcR1rytA2lwGEI+Ht2KuEOSNVZviuunCoyHbjn5rFIYa/lpnht30UY1P87W8ya0ksYL 9Ziw1eOMsmd72w0moY8eCBvYpBUzYXzKJML2euxy5CPZKI5wgJLf0vl5MkOjJ8mmojr/ IvSp/7othvVfCqF1VvYrcxwEy+Dpww2WwtmQHS5HpCXQNIKGRLtiRBtwOjQM5etEvtex SuZ3AzGe1UvtpK1NE3bKqy3ejnx+CMyzyx/Vky56b+QdxpgGCSr7b183JrQb+agABpRV Gyhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367294; x=1788972094; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=xxl3R2RxR/fdY+CE5Gsyx1FXrQJglfzt8OPnA5rO56k=; b=ZO+a5rNWl2B2kzwWCtPBqMrxlDWfwSrMQ/41bPpWvN0QxvLNSxq0m6a2wraWFT3f+E 5urKGGvJp4kUS+O4/uWqNC2+wKPvty4J5IP3iFY6ltMfteZjWaiFFRkgbXei1KcnsmJL OJ75sE/r1t+cXwqbf7eM0Hs4ki4Wlt3HSV/s3oraNw6zelGhf6k+Hged3F4GNdMuk6Ty ExoQtfoEZdiZtfL5GroPoEao0LY3FBfNI/tURvWUgOhu7mnG4eqeQ3dhiO0D8aGQdO7D p9I0N7+dEOLfd2w3FOGFcifTAGJUqFFfe3t8zx+ECD/0y9iWWLQuuYEXINIMJsDfT0Ij ylIw== X-Forwarded-Encrypted: i=1; AKwUvBwt10b+I0sbZ99+RnAXCok9Ovy1HosXlowFay6Or9sYCMQufk5HWzVsdKBlDTJ5iBKpKQZrtlr2uueGj9U=@vger.kernel.org X-Gm-Message-State: AFuF++mTYstJmELJSyCfaNOIfVYsx5TTliMWicnIYWARCxCSz+DC0NoM pgO07jHrlVBOYUNddc+X9KbrJajYjIXhK32ZwEADY3tSr5F1e9/eSbM2jSXiJqZYASCbQzqCJf0 2aMnpgA== X-Received: from pfmy23.prod.google.com ([2002:aa7:8057:0:b0:847:7f5d:6b90]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:4fce:b0:845:e9e8:645c with SMTP id d2e1a72fcca58-85ed7d1ddf1mr9648289b3a.6.1788367293421; Wed, 02 Sep 2026 09:41:33 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:10 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-8-seanjc@google.com> Subject: [PATCH v2 07/20] KVM: selftests: Make the single-page allocator APIs static inline From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move the single-page allocator APIs to kvm_util.h as inline functions, as the are trivial wrappers, and unlike __vm_phy_pages_alloc(), are expected to remain that way for the foreseeable future. No functional change intended. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Reviewed-by: Ritesh Harjani (IBM) Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/include/kvm_util.h | 14 ++++++++++++-- tools/testing/selftests/kvm/lib/kvm_util.c | 11 ----------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index 4732b9528812..d9d39a8894e2 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -990,12 +990,10 @@ void kvm_gsi_routing_write(struct kvm_vm *vm, struct = kvm_irq_routing *routing); =20 const char *exit_reason_str(unsigned int exit_reason); =20 -gpa_t vm_phy_page_alloc(struct kvm_vm *vm, gpa_t min_gpa, u32 memslot); gpa_t ____vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min= _gpa, u32 memslot, bool protected, bool naturally_aligned); gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_g= pa, u32 memslot, bool protected); -gpa_t vm_alloc_page_table(struct kvm_vm *vm); =20 static inline gpa_t vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_gpa, u32 memslot) @@ -1009,6 +1007,18 @@ static inline gpa_t vm_phy_pages_alloc(struct kvm_vm= *vm, size_t nr_pages, vm_arch_has_protected_memory(vm)); } =20 +static inline gpa_t vm_phy_page_alloc(struct kvm_vm *vm, gpa_t min_gpa, + u32 memslot) +{ + return vm_phy_pages_alloc(vm, 1, min_gpa, memslot); +} + +static inline gpa_t vm_alloc_page_table(struct kvm_vm *vm) +{ + return vm_phy_page_alloc(vm, KVM_GUEST_PAGE_TABLE_MIN_PADDR, + vm->memslots[MEM_REGION_PT]); +} + /* * ____vm_create() does KVM_CREATE_VM and little else. __vm_create() also * loads the test binary into guest memory and creates an IRQ chip (x86 on= ly). diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 896da440659e..ce0d8fba4624 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -2086,17 +2086,6 @@ gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t= nr_pages, gpa_t min_gpa, return ____vm_phy_pages_alloc(vm, nr_pages, min_gpa, memslot, protected, = false); } =20 -gpa_t vm_phy_page_alloc(struct kvm_vm *vm, gpa_t min_gpa, u32 memslot) -{ - return vm_phy_pages_alloc(vm, 1, min_gpa, memslot); -} - -gpa_t vm_alloc_page_table(struct kvm_vm *vm) -{ - return vm_phy_page_alloc(vm, KVM_GUEST_PAGE_TABLE_MIN_PADDR, - vm->memslots[MEM_REGION_PT]); -} - /* * Address Guest Virtual to Host Virtual * --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 293334AC15C for ; Wed, 2 Sep 2026 16:41:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367301; cv=none; b=pa82a2zKbe6o7Err0ceWUTg5Tqwz76jfoMAYXOKZN038MaWuKk2GuJ4cdkIi/s3x6NyE1/bMl5gdj+0ZqLMpk+20QHIXvLKDJRFfBkB7wwGfoLVag3TtPkoMjgRhfk2Q0m/i/RU2vEkrfO4t9znC9lMTqnocGIRd3js2rdWu9lU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367301; c=relaxed/simple; bh=WDeJfGuz/+J1eB10aOiEcQza2SsiAbDgMT/21OjsgZQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=nNIWAis0UtxMZlbIx8Sl32XniP4Q0vle8vddI3GGNSLmnzGOoq0/IRykb04iEq/EDqLu8hh/NCJzKvL5O9Pb7hW0UnWf/H8u88G+zAdO9V9dTKP969+8jaDuB0s0wcJhKzjGkxucnxIxiQBgXINY1lhIqar2iOE0KF2iOK03Teo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=LfUbK5Q8; arc=none smtp.client-ip=209.85.214.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="LfUbK5Q8" Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2cf1c86963bso542805ad.0 for ; Wed, 02 Sep 2026 09:41:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367295; x=1788972095; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=gLFvTuC7gXbjk/rOLKK/p7bC02ttHAq/6LyCTsnQIyk=; b=LfUbK5Q8vMNCyel+W5GCb23Ed/cCPLc5B0oEX24NzaBMG0/LHWBEbcrTDEL3hZMazf ca6bfkfZC2l506F8e1DcuupelkRTu0dz23wNucbhaPJqEIyNmN2TgiP7y/ADT/aBL4QZ FCiFTlfznuO2gGIDPWiNFHEeMs3cHrU+kCuDA9Bn1GEaYAY83OfqjOSiIoiwiUZDs7Lc 1dKl7DhIpwE9vs8lTIUoPxTp2w/zkFcNw7kH+PxLzUXzlmxDc1kt4NCJi+3MoedFv7ik 3YqivnY+nrPgJDlNZdjZvS0ocJSv0VCa+Z9BenQ5xWKpKj8AG7T++oBs1h7ATpMzkdS4 Fpxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367295; x=1788972095; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=gLFvTuC7gXbjk/rOLKK/p7bC02ttHAq/6LyCTsnQIyk=; b=QBGSe6w72p2vBX6vtCt+0PeeKTaJ/9wKJcMdqq5jyC49MtittJwBdidsthsOTidemh rlhLH2DuJEyoObp0Ie0kk4n9+he7REieRczDC/fZM9mOKmYKnbEnpDvvb+HcV9umGrtJ P6kisyuTB3j/PWDuUFenCcRhphyWQ9sm2r+7qYW2O0C1eONrnEI/hU6xcCW5yAiS+c1Z nre91oPmgGxvBYvqmNk1ZbWVY/sXTF709Jq9lxF1rW0pjRmt9WMUoHUxusR3csquNZpG abcgHm++RiKMPCzQS8SLs2V7pB3J93CUFwkph1DIlICYRmKT84gYdjKGSmzWt6VoyS3n tM1w== X-Forwarded-Encrypted: i=1; AKwUvBwxf+8sXXtG/OQMlIBQdKlLe46It0Qr3wXux5oYefChiUi09O0maVnK7LNPLAkq/cEBMNGp5tuBrYnbGm4=@vger.kernel.org X-Gm-Message-State: AFuF++mw8X5cRAIgs9Es2/PpXDfffMvC1mSF2+/sh5g8HLTTXEA8drKd JGNSohrzQ7rXAzLRL+O9iR3OIOTUpzOWwxr/bm32ERgZhcYtNsR/nY+mV8fk+4I3OHY/T9ZIZtj SkqjUQg== X-Received: from plpf12.prod.google.com ([2002:a17:903:3c4c:b0:2ce:9b49:d497]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:946:b0:2da:fa62:4aee with SMTP id d9443c01a7336-2dafaef6574mr4292355ad.1.1788367294564; Wed, 02 Sep 2026 09:41:34 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:11 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-9-seanjc@google.com> Subject: [PATCH v2 08/20] KVM: selftests: Use the innermost page allocator API in the memslot perf test From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use the quad-underscores physical page allocator API in the memslot perf test in anticipation of converting the outer versions to take the memory region type instead of the raw memslot. Stating the obvious, the memslot perf test creates and allocates from multiple memslots, and so can't use MEM_REGION_TEST_DATA to communicate which region/slot to allocate from. No functional change intended. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Reviewed-by: Ritesh Harjani (IBM) Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/memslot_perf_test.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/memslot_perf_test.c b/tools/testin= g/selftests/kvm/memslot_perf_test.c index e1299611be32..844ea9b7bb41 100644 --- a/tools/testing/selftests/kvm/memslot_perf_test.c +++ b/tools/testing/selftests/kvm/memslot_perf_test.c @@ -339,7 +339,8 @@ static bool prepare_vm(struct vm_data *data, int nslots= , u64 *maxslots, if (slot =3D=3D data->nslots) npages +=3D rempages; =20 - gpa =3D vm_phy_pages_alloc(data->vm, npages, guest_addr, slot); + gpa =3D ____vm_phy_pages_alloc(data->vm, npages, guest_addr, slot, + false, false); TEST_ASSERT(gpa =3D=3D guest_addr, "vm_phy_pages_alloc() failed"); =20 --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C2A74ACC93 for ; Wed, 2 Sep 2026 16:41:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.198 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367304; cv=none; b=n+zY6oC1exmDZDId5YiG6xOXy6i6fkFI0Nsc5H7JzPogKFEL6k9YVRvGapy8Okr03HdyAtO/l0CAQYeM3VE3Gi7zgOPf1Pz4bYTDUN6g4QZ8PhAXGOvTCzvKXRwWi0JQeYZz7DQjV4xZGd5+W1hTXXKr91bvfBCjA5hKA4dpcWk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367304; c=relaxed/simple; bh=UVGy0HhxZ+yDIeNG6eDI6eU+6NSVSRJ/g4F95JRGveA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=iDgv8OlPjFBqurgdgGcSTfMnP0gWTJ5v/xV2PMA9UvcNCxSiNSUUgC1KrprrkfoYy5Y4QQbo+KErtvu1p8bAOGHSs0GpVCo7H2KcjBKdBONwLWdTVb0mnt6Rvi3k0hXVRnD0DaP1EfgzL6iPSI7YpNsIZX5A2uNDeFvaRXjNgLk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=pFopY9dw; arc=none smtp.client-ip=209.85.215.198 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="pFopY9dw" Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cc1a439db36so1379912a12.2 for ; Wed, 02 Sep 2026 09:41:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367296; x=1788972096; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=wcKMUlmJ0lq2oBOCUrCto8mVZjPEk4eBpEgiK6nEFRg=; b=pFopY9dwt3xSCt9Y5ua9ISiGOTBWCuZGAAOtCNEaNpOB6hJ9uOkqiJjQupd5LT9OEK PpTm595a//ta9ZSpWaKORr9bTKStFzH2ky4pWMYKEBI3cGt6SJDLZGc9WqABiIQdQUI6 2AdSeR7sQeX9s30zeZ+mhNLrKLujdQoWag9kxsZd1c5Xf47JmNf7wuiqP52r0J1+J+3s KZ9afw+lM+ehSAflSJFjArwxiNbKPIzjTXQM7Wx6aJKoF3uwv7xFqfAW52G9GnMra7tC vIMiTzhuuXptfjJHVlmJfaMwKZs44OtSmrOvE8S5baQgNrs9fMR1XGEz2LGklymYsE4k DOnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367296; x=1788972096; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=wcKMUlmJ0lq2oBOCUrCto8mVZjPEk4eBpEgiK6nEFRg=; b=I8eGOVuaHo3ajMCEK6fmYb9Weh01HaRdCBHAUiVx1n+Wd57bj5DFXy1Qa/ImiZORLg fwukMG6sLUGFC+UUXCtw/ZkbZ7SJ8oDofiIQ1MPvlkjBPWGP+b56k6ruA2y9FGy3RuBZ 2FHtcgp4DklKZVHfxJaj0xD10tYFQsMkoqu6p5Nfhoh63Es+J1vbSn6VelrBonsNwJTa ntiZ2uUD9LilYCXiyrLnFYafvp6GIz9qhyIv5uyw7ZZEH/BPRQcXRBeaito7nMra4PwF VSNv7eVKfaqGNysVlODP5lo7zjJJxspHL7+rJYChzQYZ2CzyePp13uiOksx1M07wdjfq t/7Q== X-Forwarded-Encrypted: i=1; AKwUvBwmi4a1f4JNcAcDEU6JUsY3AgyKzBpnIQyViwLHNy5V8twLEGT7GO65Ufenqv0Z/NGlLho8R7bo/k1qXt4=@vger.kernel.org X-Gm-Message-State: AFuF++mQV3V5ywDVVISKE5XdZSvz99XeJdljQmudHZGccnD2VY1pt2Ih BfUdKKLZfoMjXrMXL6jk85qUKapc80L+A8dUq/kRSWy960r3wO+xFwxPbkjcXMZHxVQkz5SylIg YupL+Kw== X-Received: from pfbeb17.prod.google.com ([2002:a05:6a00:4c91:b0:847:87ec:2a9f]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:997:b0:84e:f90e:492f with SMTP id d2e1a72fcca58-85ed25e06efmr8429625b3a.7.1788367295680; Wed, 02 Sep 2026 09:41:35 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:12 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-10-seanjc@google.com> Subject: [PATCH v2 09/20] KVM: selftests: Use the innermost page allocator API in s390's IRQ routing test From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use the quad-underscores page allocator in s390's IRQ routing test in anticipation of dropping the @min_gpa param from the primary APIs. Note, it's not entirely clear that the test *needs* to use a very magical @min_gpa, i.e. it's possible a more elegant solution exists. But that's a problem for a different day. No functional change intended. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Acked-by: Claudio Imbrenda Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/s390/irq_routing.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/s390/irq_routing.c b/tools/testing= /selftests/kvm/s390/irq_routing.c index f3839284ac08..cd26cc1aed80 100644 --- a/tools/testing/selftests/kvm/s390/irq_routing.c +++ b/tools/testing/selftests/kvm/s390/irq_routing.c @@ -36,7 +36,7 @@ static void test(void) }; =20 vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); - mem =3D vm_phy_pages_alloc(vm, 2, 4096 * 42, 0); + mem =3D ____vm_phy_pages_alloc(vm, 2, 4096 * 42, 0, false, false); =20 routing =3D kvm_gsi_routing_create(); routing->nr =3D 1; --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8819E4AD4D7 for ; Wed, 2 Sep 2026 16:41:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.199 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367306; cv=none; b=JACixfhERy1u9baDGL7LHEOMitc6BgoUXRfGSOPQd3k9uOVTCxhpxMPIZTEI8cJN5sG9DV425wmS8DFXZOb4/FAWmEhyufMSJkagACqa8EqGv9QuFdrab6mBwH5DaUCX4xCloQw7+PiqIcFqnbNXWX+XG7EoY2BKbQUiIeGBtx8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367306; c=relaxed/simple; bh=fpdNJ79zoAmUsOtk7XW36TEbPPOshE53uv70BhTJk1g=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=EiySf3+ohPotChLDYkun0jqqJ2W3VtZfqUg+WmhzhGdx6IPDBOlAD/wCc5VqsWuj/TluQ0TWIDSE4Z6BmLDYCw50xXDPtRm++dhWy+Exgd8EDiljSySTAOYQMsseyDP8VAQqgGYWgUh5a6l4Wah9ns2uJjbT3NpdPZz5ueH9EiM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=s2g9pMzF; arc=none smtp.client-ip=209.85.215.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="s2g9pMzF" Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cc2229450b4so1293595a12.1 for ; Wed, 02 Sep 2026 09:41:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367297; x=1788972097; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=nUBJYSRlpoGNr9NmdwArWEE9moAAM62vGLNGWV3DD18=; b=s2g9pMzFhWT15glA531unyTL8+rCMrr02qv1abBbDJIMFw/0VyE2HPhCohmwQoxfNF JnJqXMQa8PYNHjOzP+ApCYImiBb9OyQvD4VTsZW38KmZavENp3cWpMY/tM2sYBjTf0m4 e5gWArRQxd7625cYKjuehFT81CfUX5kchJH2NT0rRO7y88VEcftGvseXgEQR1yY08tTg XRC0JAeEgXiQp0lkG9jsHHVB9PD/DhatZBaqMtviO7ae/OefzBwk0InFQTTnfRjBmNwc +Ev3E3MhlP7w8twNu2xoRffs3sMfXpns1XaLFIhrNVAuUFaM7GEp8+3KMetUc4ZK85K0 cKHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367297; x=1788972097; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=nUBJYSRlpoGNr9NmdwArWEE9moAAM62vGLNGWV3DD18=; b=Y0Kx8eVodGSPsdBK6R56VnPVT5CYDKPmb1zjw0ZHLEyuUfQ7/noyAVgtEx1OQIwhTp lQGWAVw52vgoDfkS/F+MlntAL9mJ7OUKgFrUD+SbF+VGqfsMMA1XT1XDBcuPwp6GBcPK t67E5JDCpemI7U1R2z9buYye8iJQ4B17mnCGG2uxQQ6Uxfbivekh3FFilrUeW+fIIaWH Sty0e8KSHwwVvc26s8CIFT8z0ZSdNVIcNaCRBt5KobB/Pny19MOyAZmgBK1V6Ejh2l6V HVR2iYy2BuJvo0WIwm/BY1JkGTXUXsi4o5EDn5Ga0O0xl7E8UkXWqHKCmIguXMlSlSze EUsQ== X-Forwarded-Encrypted: i=1; AKwUvBxImZVWW2QQr/0cqiz9YDrGeHcRmzERFRJDgXWhXROJ2oNmiEE5NnKM+QpSuwAV3oTuiQgcUAvZGG5sO+Q=@vger.kernel.org X-Gm-Message-State: AFuF++mXvVs0bj2gjbXMYNa4M4I3ZVK0/5zSpoZAC6Yo2sw492B7EVUj lAeI0F3ZFfUS6kp8YSIr/SDllbrWvIkV4ob3sues7rxywqQIyNKwzC7t4UgRQGVKuIG71EB9j/j UsKsXwg== X-Received: from pgnd15.prod.google.com ([2002:a63:734f:0:b0:cc4:3a7b:365b]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:3944:b0:3d3:af85:eb98 with SMTP id adf61e73a8af0-3d9af3efa11mr10754332637.26.1788367296882; Wed, 02 Sep 2026 09:41:36 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:13 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-11-seanjc@google.com> Subject: [PATCH v2 10/20] KVM: selftests: Add a wrapper API to allocate multiple page table pages From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add vm_alloc_page_table_pages() and use it throughout arch code to replace open coded equivalents. No functional change intended. Reviewed-by: Itaru Kitayama Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Acked-by: Anup Patel Acked-by: Claudio Imbrenda Acked-by: Gautam Menghani Reviewed-by: Ritesh Harjani (IBM) Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/include/kvm_util.h | 9 +++++++-- tools/testing/selftests/kvm/lib/arm64/processor.c | 4 +--- tools/testing/selftests/kvm/lib/riscv/processor.c | 4 +--- tools/testing/selftests/kvm/lib/s390/processor.c | 8 ++------ 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index d9d39a8894e2..c56f342b16fd 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -1013,10 +1013,15 @@ static inline gpa_t vm_phy_page_alloc(struct kvm_vm= *vm, gpa_t min_gpa, return vm_phy_pages_alloc(vm, 1, min_gpa, memslot); } =20 +static inline gpa_t vm_alloc_page_table_pages(struct kvm_vm *vm, size_t nr= _pages) +{ + return vm_phy_pages_alloc(vm, nr_pages, KVM_GUEST_PAGE_TABLE_MIN_PADDR, + vm->memslots[MEM_REGION_PT]); +} + static inline gpa_t vm_alloc_page_table(struct kvm_vm *vm) { - return vm_phy_page_alloc(vm, KVM_GUEST_PAGE_TABLE_MIN_PADDR, - vm->memslots[MEM_REGION_PT]); + return vm_alloc_page_table_pages(vm, 1); } =20 /* diff --git a/tools/testing/selftests/kvm/lib/arm64/processor.c b/tools/test= ing/selftests/kvm/lib/arm64/processor.c index 01325bf4d36f..2dcaa2c4a038 100644 --- a/tools/testing/selftests/kvm/lib/arm64/processor.c +++ b/tools/testing/selftests/kvm/lib/arm64/processor.c @@ -115,9 +115,7 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) if (vm->mmu.pgd_created) return; =20 - vm->mmu.pgd =3D vm_phy_pages_alloc(vm, nr_pages, - KVM_GUEST_PAGE_TABLE_MIN_PADDR, - vm->memslots[MEM_REGION_PT]); + vm->mmu.pgd =3D vm_alloc_page_table_pages(vm, nr_pages); vm->mmu.pgd_created =3D true; } =20 diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/test= ing/selftests/kvm/lib/riscv/processor.c index ded5429f3448..c175dcd14114 100644 --- a/tools/testing/selftests/kvm/lib/riscv/processor.c +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c @@ -69,9 +69,7 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) if (vm->mmu.pgd_created) return; =20 - vm->mmu.pgd =3D vm_phy_pages_alloc(vm, nr_pages, - KVM_GUEST_PAGE_TABLE_MIN_PADDR, - vm->memslots[MEM_REGION_PT]); + vm->mmu.pgd =3D vm_alloc_page_table_pages(vm, nr_pages); vm->mmu.pgd_created =3D true; } =20 diff --git a/tools/testing/selftests/kvm/lib/s390/processor.c b/tools/testi= ng/selftests/kvm/lib/s390/processor.c index fb9dab92d4d1..33f49d743b5f 100644 --- a/tools/testing/selftests/kvm/lib/s390/processor.c +++ b/tools/testing/selftests/kvm/lib/s390/processor.c @@ -20,9 +20,7 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) if (vm->mmu.pgd_created) return; =20 - gpa =3D vm_phy_pages_alloc(vm, PAGES_PER_REGION, - KVM_GUEST_PAGE_TABLE_MIN_PADDR, - vm->memslots[MEM_REGION_PT]); + gpa =3D vm_alloc_page_table_pages(vm, PAGES_PER_REGION); memset(addr_gpa2hva(vm, gpa), 0xff, PAGES_PER_REGION * vm->page_size); =20 vm->mmu.pgd =3D gpa; @@ -38,9 +36,7 @@ static u64 virt_alloc_region(struct kvm_vm *vm, int ri) { u64 taddr; =20 - taddr =3D vm_phy_pages_alloc(vm, ri < 4 ? PAGES_PER_REGION : 1, - KVM_GUEST_PAGE_TABLE_MIN_PADDR, - vm->memslots[MEM_REGION_PT]); + taddr =3D vm_alloc_page_table_pages(vm, ri < 4 ? PAGES_PER_REGION : 1); memset(addr_gpa2hva(vm, taddr), 0xff, PAGES_PER_REGION * vm->page_size); =20 return (taddr & REGION_ENTRY_ORIGIN) --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E99AC4AC16E for ; Wed, 2 Sep 2026 16:41:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367310; cv=none; b=Gu1tdvKYE+az5iZfflu1UDWY75OGkW6hNKl+Z4l9YtJDRYoOkVZ8iZVvO6lmZUXaml5c48OEv4gT1Akpk/4n9558MKOr9hzEaFIzvIFKy2iWKPLC+56IqlN90/CMniJzkEWFNSwbqBaqnnNWIO1XrcBEzepzo4I2pkzoe+UF48M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367310; c=relaxed/simple; bh=IooTrDugbi730db2Qdv2j1/bfHJilOastYDRCxIfQLA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=nHP4XFlDcuesjY6endiCoXZ7hW443riK9aFSMyd3q3l4dncmcMcryBsZTve38GIwBNyFj3Txg/Grvx24X8QhsGl1xByz7u3+jdjguxPalLqKyalqMYp6LeyuW3i4NKj04upbjjdpVWLbDKyu0CbWAFlnWazMGX9tqwYsx/ARMDg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=diK/u/Zs; arc=none smtp.client-ip=209.85.210.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="diK/u/Zs" Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-85f1f3620bcso52206b3a.0 for ; Wed, 02 Sep 2026 09:41:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367299; x=1788972099; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=OWxwiZu3iI1BKMOXY9Ac60kPARcqOSTNs6vsc+7jhyU=; b=diK/u/Zs3uyVrLlcRq6ZjQRp/Qc+PJn9diy3VY0ZaFx2xroiiDWbkUEE4XVkcvg8sg BaqabkreKsHnYE291lDtUtoMLfMoiUPSSli/1Mq/olGer/sdBM5z39b3Ga/BFknnyHH/ 6UMj1tNgqrPB79CwjlvKxZKrSwQPz9BzoK4kTyTrzuxcX+w9Kfe6NhnfvtWzFFANVMzN 0FvZLW3FE/q7roMKIWMT2xgof8famJO1AXaQbnaZdPACpHxcYgY5eieAu8lE+BVFn4Xu fkrLrpttQ7YErWMABcor0sgUvwu2eQB8GvzcX5D71yATpwSjJDukIwUi+7aGz7NL8M0F dCrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367299; x=1788972099; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=OWxwiZu3iI1BKMOXY9Ac60kPARcqOSTNs6vsc+7jhyU=; b=djYpJRQEUQSxot85mLpZYZpHxGS0efiM6l+Y0e6A1iuUZsCRrC/FaG1ks/APsH3P2w bVfHHZiG9j+r+VMz4vHm4F3GBg7r/SNTL7RvbqwgAId++AsmMXlokO3dlpDOOfdUEuAr v2uEqgdHbOwkmNsENp7LVXmbOuHNbaIOfN8onIw2p9oHa0twy3Vf8WabpOukIldsu1bd UUf9/cq54l9mQjMGwO10lZgMjoC6Qqq1J8dItquxPdsnog3z2W3+FQnyELo8FpruOR2P zMUlK5ZU7tpz8pFNL7qJ1+DkTNNNlYK9WECGpjrn4iZAqTcO++k5u60BGnOBI7VjGdeZ 3i4Q== X-Forwarded-Encrypted: i=1; AKwUvBwgZ5ZfInNBVilAIlylNJW4fQ92z5IEFKIf9GrY7lS77xKHGd3kUvUkpHi2BxjtKWdJHpuycU+1Hemj0mk=@vger.kernel.org X-Gm-Message-State: AFuF++lke6I9HFLiXZYrf+XSoF6nKppOZHoWRpNfap6V7nC8t4h4dnwP 7QnFRZ3dQ2KYvYYnJALiozT6qd6emvDAjpkubu4jMwz+w3XZVlxmmsPR9AzEB3GxPynvzdmjkry K1cqnAA== X-Received: from pfbbm14.prod.google.com ([2002:a05:6a00:320e:b0:84c:2e88:693d]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:3d55:b0:84e:cd14:aeba with SMTP id d2e1a72fcca58-85ffbe960f2mr374778b3a.6.1788367298091; Wed, 02 Sep 2026 09:41:38 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:14 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-12-seanjc@google.com> Subject: [PATCH v2 11/20] KVM: selftests: Initialize vm->memslots[] with invalid memslots during creation From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Initialize vm->memslots[] with an invalid memslots value during very initial VM creation so that failure to configure the core memory regions generates an immediate assert instead of potential weirdness, e.g. if slot0 is coincidentally valid. This will also allow hardening the region APIs to guard overriding a region's memslot multiple times. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Acked-by: Gautam Menghani Reviewed-by: Ritesh Harjani (IBM) Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/include/kvm_util.h | 2 ++ tools/testing/selftests/kvm/lib/kvm_util.c | 5 +++++ tools/testing/selftests/kvm/lib/x86/processor.c | 5 ++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index c56f342b16fd..304ef6af3268 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -33,6 +33,8 @@ =20 #define NSEC_PER_SEC 1000000000L =20 +#define KVM_INVALID_MEMSLOT UINT_MAX + struct userspace_mem_region { struct kvm_userspace_memory_region2 region; struct sparsebit *unused_phy_pages; diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index ce0d8fba4624..56df5b1d9c79 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -288,6 +288,7 @@ __weak void vm_populate_gva_bitmap(struct kvm_vm *vm) struct kvm_vm *____vm_create(struct vm_shape shape) { struct kvm_vm *vm; + int i; =20 vm =3D calloc(1, sizeof(*vm)); TEST_ASSERT(vm !=3D NULL, "Insufficient Memory"); @@ -296,6 +297,8 @@ struct kvm_vm *____vm_create(struct vm_shape shape) vm->regions.gpa_tree =3D RB_ROOT; vm->regions.hva_tree =3D RB_ROOT; hash_init(vm->regions.slot_hash); + for (i =3D 0; i < NR_MEM_REGIONS; i++) + vm->memslots[i] =3D KVM_INVALID_MEMSLOT; =20 vm->mode =3D shape.mode; vm->type =3D shape.type; @@ -1190,6 +1193,8 @@ memslot2region(struct kvm_vm *vm, u32 memslot) { struct userspace_mem_region *region; =20 + TEST_ASSERT(memslot !=3D KVM_INVALID_MEMSLOT, "vm->memslots[] unpopulated= ?"); + hash_for_each_possible(vm->regions.slot_hash, region, slot_node, memslot) if (region->region.slot =3D=3D memslot) diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c b/tools/testin= g/selftests/kvm/lib/x86/processor.c index d31fa81ea075..ea5fa59888af 100644 --- a/tools/testing/selftests/kvm/lib/x86/processor.c +++ b/tools/testing/selftests/kvm/lib/x86/processor.c @@ -529,7 +529,10 @@ void tdp_identity_map_default_memslots(struct kvm_vm *= vm) =20 /* Only memslot 0 is mapped here, ensure it's the only one being used */ for (s =3D 0; s < NR_MEM_REGIONS; s++) - TEST_ASSERT_EQ(vm->memslots[s], 0); + TEST_ASSERT(!vm->memslots[s] || + vm->memslots[s] =3D=3D KVM_INVALID_MEMSLOT, + "Unhandled memslot '%u' for type '%u'", + vm->memslots[s], s); =20 i =3D (region->region.guest_phys_addr >> vm->page_shift) - 1; last =3D i + (region->region.memory_size >> vm->page_shift); --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2A6A34AD4AF for ; Wed, 2 Sep 2026 16:41:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367309; cv=none; b=Nk7fJzpirIqY9oZcK2Q9gm+UmW+JCPz6H+ime4tUtPMVAIU3HOa1V6PTFlkTDRUtRU3BF3bCCZSutWyfmHfSnw31Cf8H+kpakSNgN59t64gsLkhIid5A606QypNGaSx0RbG2sT40LmrhwNAvJhyM8WUsUSVQajDaQEWDAD9KFDA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367309; c=relaxed/simple; bh=agqcQGpkoOi6P1jQwddX1AvqLJis+COWMzi0MFnoTIE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=PZn+gR7WRIflYf9wKf29r5vjuXLHLenLkFfXVmrynDjIBRJ13S2bmBKf0ZyaVfwuLpVt9by5JSIvibfdGUFWkCtIauyQT6lkupOWel+9mgMyrcNIMx34D8FeLCNAw/H1yQQ+fpKWmbp9HHWTWG2Rb9GKe+bluIq29dFO9ZdCd6M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=odiEUQnQ; arc=none smtp.client-ip=209.85.215.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="odiEUQnQ" Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c85798977dcso1990013a12.0 for ; Wed, 02 Sep 2026 09:41:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367300; x=1788972100; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=WnzaMKfYFzpdBR00mBxUkRbzuomQsYg60ItfNS+IF/Y=; b=odiEUQnQMJpMT48ZovWiPtIuRMZOMtcso74vla7tK9gay9+sZW6Lel7S7ExG9IhHP6 SGrpqW6RTjdjjGlB8kjHXIu6nGGHErymf1+42Lui5e5ZJCAU22gxMf0+yqLQLxJ/p3Zk firU56NZoLo2HRyK43CklhZse0A7HwrqY2vReZ9KXLMZQBzQrp2alJn23u/Sv9un6j1D rgblu9n7dJVL6WojmJGQHT98yiDplLtoW4NFAcQEt7EelxOh7unJdoi5PFoJnoFJQkaP rIyhUgk/bfrSOHDNwUm1adyjAfqSsZ1Spm2o6ENy4sBs1uV8fBPxyuql3Fov+uvhuF6b 6WIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367300; x=1788972100; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=WnzaMKfYFzpdBR00mBxUkRbzuomQsYg60ItfNS+IF/Y=; b=KJgw67Qlq9IyjQ8G3utXd1ZK4bGWKsR3KBVEAJM0sU3Ht7rtDwNK7M98cYf3qEGLU+ 3RmZBO55LIlvllgwx259kp7S4LihQ0B6zifnKYtA/crosITJM7ikenICbzOXRODWWHMX wN3g+8gai8CHNQbzBbCnnXHuRzKQRvazpbKRgJPrIqUz0RuWPC59jf/ZcAovwH6lrNUD GM9qLrhilMzET446A4pYbVWlY+pv9gPliV1PvUqzF18vURV5MXwgEcPjQAv2SB5hLWGh Iyqu1mJO5uYCO488AobE7I/qiV+tHtd6FTtAzz6yXpgAzZZtXUTukPrviHVeHAS9sTx0 dDBQ== X-Forwarded-Encrypted: i=1; AKwUvBytLpxFPd29PSslyZp7XZkgQ9bv/Bydagc07BNu8SgGo6ZIneXAvB/aT0mn5amrqtar0t+pygpAoU6kZ0M=@vger.kernel.org X-Gm-Message-State: AFuF++kFm6WeBY1D4xwkhpwMAI2FZQw3hJEwGg5mBVqPqad1zDMQ2MWQ d5ffie3y9HetbzRM6Rohjl8orJqROFrsmbQTrSDc2tNYGeZqXR98uUl697U8Ljw1EzS3/XU6kpe m7DffCQ== X-Received: from pgwa1.prod.google.com ([2002:a65:6541:0:b0:cc1:c7d5:9661]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:134b:b0:3c4:4272:b400 with SMTP id adf61e73a8af0-3d9ae8e1ee9mr11072673637.18.1788367299354; Wed, 02 Sep 2026 09:41:39 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:15 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-13-seanjc@google.com> Subject: [PATCH v2 12/20] KVM: selftests: Add APIs to override memory region types with custom memslots From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add and use APIs to override memory region types instead of open coding the logic in tests, partly to dedup test code, but mostly to add some amount of protection against conflicting overrides. This will allow converting more tests to override memory regions without taking on too much risk of bugs in the long term, e.g. due to silently overriding a region multiple times. Deliberately "unroll" the loops in __vm_create() and the CMMA test's create_main_memslot() to avoid filling all memslots in anticipation of adding an "extra" memslot that is for test use and *only* test use, i.e. shouldn't be configured by core library code. Converting tests to overriding memory regions will allow taking the region type instead of the raw memslot in the physical page allocator APIs. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Acked-by: Claudio Imbrenda Reviewed-by: Ritesh Harjani (IBM) Tested-by: Itaru Kitayam --- .../selftests/kvm/arm64/page_fault_test.c | 18 +++++------ .../testing/selftests/kvm/include/kvm_util.h | 30 +++++++++++++++++++ tools/testing/selftests/kvm/lib/kvm_util.c | 8 +++-- tools/testing/selftests/kvm/s390/cmma_test.c | 19 ++++-------- 4 files changed, 49 insertions(+), 26 deletions(-) diff --git a/tools/testing/selftests/kvm/arm64/page_fault_test.c b/tools/te= sting/selftests/kvm/arm64/page_fault_test.c index 6bb3d82906b2..b0e3fc8cd76a 100644 --- a/tools/testing/selftests/kvm/arm64/page_fault_test.c +++ b/tools/testing/selftests/kvm/arm64/page_fault_test.c @@ -597,18 +597,16 @@ static void setup_memslots(struct kvm_vm *vm, struct = test_params *p) =20 vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, 0, CODE_AND_DATA_MEMSLOT, code_npages, 0); - vm->memslots[MEM_REGION_CODE] =3D CODE_AND_DATA_MEMSLOT; - vm->memslots[MEM_REGION_DATA] =3D CODE_AND_DATA_MEMSLOT; + ____vm_override_mem_region(vm, MEM_REGION_CODE, CODE_AND_DATA_MEMSLOT); + ____vm_override_mem_region(vm, MEM_REGION_DATA, CODE_AND_DATA_MEMSLOT); =20 - vm_userspace_mem_region_add(vm, p->src_type, data_gpa - pt_size, - PAGE_TABLE_MEMSLOT, pt_size / guest_page_size, - p->test_desc->pt_memslot_flags); - vm->memslots[MEM_REGION_PT] =3D PAGE_TABLE_MEMSLOT; + __vm_override_mem_region(vm, MEM_REGION_PT, p->src_type, data_gpa - pt_si= ze, + PAGE_TABLE_MEMSLOT, pt_size / guest_page_size, + p->test_desc->pt_memslot_flags); =20 - vm_userspace_mem_region_add(vm, p->src_type, data_gpa, TEST_DATA_MEMSLOT, - data_size / guest_page_size, - p->test_desc->data_memslot_flags); - vm->memslots[MEM_REGION_TEST_DATA] =3D TEST_DATA_MEMSLOT; + __vm_override_mem_region(vm, MEM_REGION_TEST_DATA, p->src_type, data_gpa, + TEST_DATA_MEMSLOT, data_size / guest_page_size, + p->test_desc->data_memslot_flags); } =20 static void setup_ucall(struct kvm_vm *vm) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index 304ef6af3268..c8faa8a02b93 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -704,6 +704,36 @@ void vm_mem_add(struct kvm_vm *vm, enum vm_mem_backing= _src_type src_type, gpa_t gpa, u32 slot, u64 npages, u32 flags, int guest_memfd_fd, u64 guest_memfd_offset); =20 + +static inline void ____vm_override_mem_region(struct kvm_vm *vm, + enum kvm_mem_region_type type, + u32 slot) +{ + TEST_ASSERT(vm->memslots[type] =3D=3D KVM_INVALID_MEMSLOT, + "Memory region type '%u' was already overridden with slot=3D%u", + type, vm->memslots[type]); + + vm->memslots[type] =3D slot; +} + +static inline void __vm_override_mem_region(struct kvm_vm *vm, + enum kvm_mem_region_type type, + enum vm_mem_backing_src_type src_type, + gpa_t gpa, u32 slot, u64 npages, + u32 flags) +{ + ____vm_override_mem_region(vm, type, slot); + vm_userspace_mem_region_add(vm, src_type, gpa, slot, npages, flags); +} + +static inline void vm_override_mem_region(struct kvm_vm *vm, + enum kvm_mem_region_type type, + enum vm_mem_backing_src_type src_type, + gpa_t gpa, u32 slot, u64 npages) +{ + __vm_override_mem_region(vm, type, src_type, gpa, slot, npages, 0); +} + #ifndef vm_arch_has_protected_memory static inline bool vm_arch_has_protected_memory(struct kvm_vm *vm) { diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 56df5b1d9c79..781af2928d04 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -495,7 +495,7 @@ struct kvm_vm *__vm_create(struct vm_shape shape, u32 n= r_runnable_vcpus, nr_extra_pages); struct userspace_mem_region *slot0; struct kvm_vm *vm; - int i, flags; + int flags; =20 kvm_set_files_rlimit(nr_runnable_vcpus); =20 @@ -513,8 +513,10 @@ struct kvm_vm *__vm_create(struct vm_shape shape, u32 = nr_runnable_vcpus, flags |=3D KVM_MEM_GUEST_MEMFD; =20 vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, 0, 0, nr_pages, fla= gs); - for (i =3D 0; i < NR_MEM_REGIONS; i++) - vm->memslots[i] =3D 0; + ____vm_override_mem_region(vm, MEM_REGION_CODE, 0); + ____vm_override_mem_region(vm, MEM_REGION_PT, 0); + ____vm_override_mem_region(vm, MEM_REGION_DATA, 0); + ____vm_override_mem_region(vm, MEM_REGION_TEST_DATA, 0); =20 kvm_vm_elf_load(vm, program_invocation_name); =20 diff --git a/tools/testing/selftests/kvm/s390/cmma_test.c b/tools/testing/s= elftests/kvm/s390/cmma_test.c index 15d81b2ed7ad..73387cc3bca7 100644 --- a/tools/testing/selftests/kvm/s390/cmma_test.c +++ b/tools/testing/selftests/kvm/s390/cmma_test.c @@ -102,24 +102,17 @@ static void guest_dirty_test_data(void) =20 static void create_main_memslot(struct kvm_vm *vm) { - int i; - vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, 0, 0, MAIN_PAGE_COU= NT, 0); - /* set the array of memslots to zero like __vm_create does */ - for (i =3D 0; i < NR_MEM_REGIONS; i++) - vm->memslots[i] =3D 0; + ____vm_override_mem_region(vm, MEM_REGION_CODE, 0); + ____vm_override_mem_region(vm, MEM_REGION_PT, 0); + ____vm_override_mem_region(vm, MEM_REGION_DATA, 0); } =20 static void create_test_memslot(struct kvm_vm *vm) { - vm_userspace_mem_region_add(vm, - VM_MEM_SRC_ANONYMOUS, - TEST_DATA_START_GFN << vm->page_shift, - TEST_DATA_MEMSLOT, - TEST_DATA_PAGE_COUNT, - 0 - ); - vm->memslots[MEM_REGION_TEST_DATA] =3D TEST_DATA_MEMSLOT; + vm_override_mem_region(vm, MEM_REGION_TEST_DATA, VM_MEM_SRC_ANONYMOUS, + TEST_DATA_START_GFN << vm->page_shift, + TEST_DATA_MEMSLOT, TEST_DATA_PAGE_COUNT); } =20 static void create_memslots(struct kvm_vm *vm) --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 947314AD7F9 for ; Wed, 2 Sep 2026 16:41:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.72 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367309; cv=none; b=c2aFQwUCTU74ObppoXvYQECp8KYgGLc1c9ydyBPX9tuq3OZp5M6R2dYMOF2g/5ZCRqLK3jSsi2TrgWn/SIu7FCOnkoOsyvTD/gnJPMff3xVPazPa3LepDLEHov3hpgAlK9IDYvfMHzGnzlPp9+z3fmWmJcV31rwmkKTrF5IHUZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367309; c=relaxed/simple; bh=wQtFJanLpI1WY9EHCIE3kdyq790UPQV+51nbUuKlkgo=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=E013feVxFRLg2ygALR/uWyIjtaX96vDlwKegrgrHL0mV0C9ZHS6v5s4udO97BTm7p6nugOyBplwTDYHcTLp7wFU8c8cdOCoO6RDH7wRWUZwSQmSVHLL/0cr5jN6PAxK9TsMzkVjNPAhRxLs+lDTsKc0oAYACWNzItSTi1uOMzak= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=t1U8Dc/G; arc=none smtp.client-ip=209.85.216.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="t1U8Dc/G" Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38ea32e57e2so2605413a91.1 for ; Wed, 02 Sep 2026 09:41:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367301; x=1788972101; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=SeJnYNm/30DDrGtlzlyhX4F8Ff+qodk8muwORsydLHQ=; b=t1U8Dc/G+a6bcBEWuu9tJabeORMoUJlsSNVJ6epE85jFvSTQmTo46TtZKTYPkz55hd FuqEvqhHGLT8d6V6KQmcpOr0XuKaqMIRp0vjtf0yToWhqvGRhaF+y0kenquEvN6/6omg eXmue+8MqRexG2MaFWPDw3CIyzV/X8w05hawzZa54XwZNNt0ItVG8pRD+n415qUZXurY pVlo3GM5z08F5ze2znQooiFBhjgwlsYDsEWDrsYUd7bXiL+iq63xs7nitJAgmN/KJgXZ pn/SrTQ8Ipko8iqgaAijIPT+NMcK/mH3LwGDrMmr1UX7X/zMf3xLXI7nZf4Av18FV36Y 689A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367301; x=1788972101; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=SeJnYNm/30DDrGtlzlyhX4F8Ff+qodk8muwORsydLHQ=; b=VWQBP+pdXMpPaoCjECeJCy2mYSX5gXRYJU7ym30MW5sD5Un4s4+1ugtiBqhrdOiuxz 10fCJm9CZhNo2XQfhtI30RgfPCrvw2KEoWe0eMVlFbsNqSUrknASEVfpv4/78eyaY9px yWf0qmeDOviLh7HwDygMEoI8tlCHdh354H1dDO2Sa74vK5XFmRLOr9qvRSno19t1Aptp r009LDFpdcUdqid0IJW472GJRjY325zzOfsBlbJELPdxbEYfSn7J6SkI+BkrdR9VuQ9N PiFbjamsqvIlktAL0gRgTYUHd+/xdpSYUkrZv1TDwkCeNmNSQudy3K/xQh5vfYk76UDA oTSg== X-Forwarded-Encrypted: i=1; AKwUvBzxt7k+qkc8hk0k9FTig/ooQ6gwdO7DBTFRowbidlqKL8G544+HKv+l/aULHXZPGM8wGFmUAi76abKn/pQ=@vger.kernel.org X-Gm-Message-State: AFuF++kz84ms2xgxC0NMo2lxMRh3Xzvta9VlaLwJc0DN4Zi0vIGfBLM1 Gf5urcF0eONdZmtDyGp0vuzjhc+lYmwaECkU2A72wwALErsI8M+3jPap5FCu3gf+fSeq78XBW+O zx0uSNQ== X-Received: from pjan2.prod.google.com ([2002:a17:90a:1602:b0:398:9c5e:d8f2]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:4ac9:b0:398:9bd5:490c with SMTP id 98e67ed59e1d1-39aee0b498dmr7421235a91.19.1788367300525; Wed, 02 Sep 2026 09:41:40 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:16 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-14-seanjc@google.com> Subject: [PATCH v2 13/20] KVM: selftests: Add TEST_EXTRA memory region type for "special" memslots From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" And another memory region type to deal with extra, one-off memory regions, and use the new type to manage x86's SMRAM memslot, as another step towards taking the region type instead of the raw memslot in the physical page allocator APIs. Alternatively, SMRAM setup could simply use the quad-underscore API to continue passing in the memslot, but a surprising number of tests use an "extra" memslot for a variety of reasons. I.e. allocating memory from one (and exactly one) extra memslot isn't all that rare, and so should be treated as normal behavior, not as something extraordinary, as quad-underscore functions typically suggest. Opportunistically add comments to document the intended usage of the types, as the difference between DATA, TEST_DATA, and TEST_EXTRA in particular isn't exactly obvious. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayam --- .../testing/selftests/kvm/include/kvm_util.h | 39 ++++++++++++++++--- tools/testing/selftests/kvm/include/x86/smm.h | 2 +- .../testing/selftests/kvm/lib/x86/processor.c | 7 ++-- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index c8faa8a02b93..b6b96d6978b2 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -82,11 +82,45 @@ struct userspace_mem_regions { DECLARE_HASHTABLE(slot_hash, 9); }; =20 +/* + * Memory region types are passed to various page allocators to communicate + * various properties and metadata related to the allocation. Note, the + * descriptions below described the primary usage of each type. Individual + * tests may allocate memory for other purposes. + * + * By default, all regions except TEST_EXTRA are mapped to memslot '0'. T= he + * TEXT_EXTRA region is left unmapped as it's intended to be used only for= test + * specific allocations, i.e. should never be used by core/infrastructure = code. + * Tests can override the memslot for any or all types, e.g. so that all t= est + * data is allocated from a curated memslot. + */ enum kvm_mem_region_type { + /* + * The CODE region is used by lib/elf when loading the test's code into + * guest memory. + */ MEM_REGION_CODE, + /* + * The DATA region is used to allocate core data structures, e.g. vCPU + * stacks, VM exception tables, x86's TSS, etc. + */ MEM_REGION_DATA, + /* + * The PT region, a.k.a. Page Table region, is used to allocate page + * table pages. + */ MEM_REGION_PT, + /* + * The TEST_DATA region is used for allocating test data that is either + * test specific, and/or isn't considered a "core" data structure. + */ MEM_REGION_TEST_DATA, + /* + * The TEST_EXTRA region is for special snowflakes, where a test wants + * to create and use a one-off memslot, without impacting "normal" test + * data allocations. + */ + MEM_REGION_TEST_EXTRA, NR_MEM_REGIONS, }; =20 @@ -129,11 +163,6 @@ struct kvm_vm { =20 struct kvm_binary_stats stats; =20 - /* - * KVM region slots. These are the default memslots used by page - * allocators, e.g., lib/elf uses the memslots[MEM_REGION_CODE] - * memslot. - */ u32 memslots[NR_MEM_REGIONS]; }; =20 diff --git a/tools/testing/selftests/kvm/include/x86/smm.h b/tools/testing/= selftests/kvm/include/x86/smm.h index 2d1afa09819b..15faaa060126 100644 --- a/tools/testing/selftests/kvm/include/x86/smm.h +++ b/tools/testing/selftests/kvm/include/x86/smm.h @@ -8,7 +8,7 @@ #define SMRAM_MEMSLOT ((1 << 16) | 1) #define SMRAM_PAGES (SMRAM_SIZE / PAGE_SIZE) =20 -void setup_smram(struct kvm_vm *vm, struct kvm_vcpu *vcpu, u64 smram_gpa, +void setup_smram(struct kvm_vm *vm, struct kvm_vcpu *vcpu, gpa_t smram_gpa, const void *smi_handler, size_t handler_size); =20 void inject_smi(struct kvm_vcpu *vcpu); diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c b/tools/testin= g/selftests/kvm/lib/x86/processor.c index ea5fa59888af..b988eea373ad 100644 --- a/tools/testing/selftests/kvm/lib/x86/processor.c +++ b/tools/testing/selftests/kvm/lib/x86/processor.c @@ -1468,11 +1468,12 @@ bool kvm_arch_has_default_irqchip(void) return true; } =20 -void setup_smram(struct kvm_vm *vm, struct kvm_vcpu *vcpu, u64 smram_gpa, +void setup_smram(struct kvm_vm *vm, struct kvm_vcpu *vcpu, gpa_t smram_gpa, const void *smi_handler, size_t handler_size) { - vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, smram_gpa, - SMRAM_MEMSLOT, SMRAM_PAGES, 0); + vm_override_mem_region(vm, MEM_REGION_TEST_EXTRA, VM_MEM_SRC_ANONYMOUS, + smram_gpa, SMRAM_MEMSLOT, SMRAM_PAGES); + TEST_ASSERT(vm_phy_pages_alloc(vm, SMRAM_PAGES, smram_gpa, SMRAM_MEMSLOT) =3D=3D smram_gpa, "Could not allocate guest physical addresses for SMRAM"); --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9BBC14AD7FA for ; Wed, 2 Sep 2026 16:41:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.199 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367309; cv=none; b=IDTYSjUg7GYGYXB5TLa1K5c29QOQer81292nP/EHTp8kiC+INKubBYaengr+adFw7YMQYybgI4ssw01rk721eF81QYuo6plMEk06C4M7aw2Er3bmQ41F19F5S5rg6Ki6MXVD+9wP4gnEQIzEpcdZJDkLZEWidD1+9yrnObtvo6k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367309; c=relaxed/simple; bh=c6Dq51OifpuOLQwcC4ZiEV4FEdSDUXT41cx47drisuI=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=A2nE5neGFjlzJmPBMxw+VriMhnXs+vfR3ilLvvpMDizSTGzMIkG/IvuEZAvhJ4e3byJVX7zDtlKQ+7xfdrQKd6NjDMf/9w2tjvSTtsiyH3R0oPt+FgazdBpiXPCPbq3yEORhzV2sgsfuYhJhJ9D/fhFNLTwMX6DEnDbxEq7NoqY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=wivVQve8; arc=none smtp.client-ip=209.85.215.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="wivVQve8" Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cc1b8088203so1665378a12.3 for ; Wed, 02 Sep 2026 09:41:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367302; x=1788972102; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=o5u+D2Eye+Inmljua0Pt8umFr/3SFEmDrz+aVxfwQfA=; b=wivVQve8F7sa3q55aoJDM3BP36qbPIIPO4c0RWAGysBNiLqFOYkfZD2MJ3Akjekk8K QUoE0lO5MegcTYZK/cqRK3eGUJMcG45YjAYbGq0hf2VRLqlyrHgozewFyMaA21r/Mne0 jypeFN1H+XVIqa333kZ0VFXkj3x/EonhE/qCeNCsSmP6SpgO5ER6NriYdoXrO8ofChiV ghdWjPvMC24NuUaIIOk5qlFvI/P19aywLmF/TW1To26kb8qQAKR/S0fAYRdgYa7l+n1a YU+bc2EF8qA1nGR1Cma9qdLff2czYJheqx4/baM+D1/V8NwnQs2lgTUC/+D42a6+QZpc 9UWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367302; x=1788972102; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=o5u+D2Eye+Inmljua0Pt8umFr/3SFEmDrz+aVxfwQfA=; b=j/Vh18DBKV8bDop3qjWyISMAWinYtbwGdOG+7TJlQEGiFXTFp6TzfKX5nac+MlgdLR zVv0rWPOQA6LAj3t/kKKstu73YJCKbqSMhKtb+RDYnvIWny8xgiAm1ZndfVGkhAKvcN7 T8mChZHmeflfa1VBUOIwNcXPY5sCl8k2Lis2eE9sGUqNGmXKWfwXAnTC+P7u2DRgh3jf DSicNudIX/3Qep1MX8UvnSb+83qxobIs2uND/iEqBKLF2+GB9aeoL4S11xOtlzMnKZdq MYSfUjd2ZBJ3FIEN87PcovF3zUT937JeZUw1qrdOMG92E9apVz2XxSOsrnAL3RQEySPJ X3dQ== X-Forwarded-Encrypted: i=1; AKwUvBzV3YOTEKocMHBcFteRGeiTC5yOR0fjgQNbiM3xCyIZhnvrcBobMrAwZznsWdGDC+AOzWI7iOYb5Zv0BS4=@vger.kernel.org X-Gm-Message-State: AFuF++k882xYujtS/nnPAIn6+SOgApLNWfTCvIKHLv4WqqyDB7S32sta v3ZzqoHhE0jBy36JUNLYADddM26zpyKdKogjtmTCjf3BA1J6MuSD1qmp/glSlOQlMt0yiXWD+rt 6VofIpA== X-Received: from pfbhm12.prod.google.com ([2002:a05:6a00:670c:b0:84a:30be:791f]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:35c4:b0:857:73e2:9107 with SMTP id d2e1a72fcca58-85ed99b48fcmr9375483b3a.23.1788367301626; Wed, 02 Sep 2026 09:41:41 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:17 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-15-seanjc@google.com> Subject: [PATCH v2 14/20] KVM: selftests: Use TEST_EXTRA region in arm64's vGIC LPI stress test From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use the TEST_EXTRA region/memslot for arm64's vGIC LPI stress test instead of a custom memslot, so that the primary vm_phy_pages_alloc() APIs can be reworked to take a region type instead of a raw memslot. For all intents and purposes, no functional change intended, as vm_override_mem_region() is barely more than a wrapper for vm_userspace_mem_region_add(). Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c b/tools/te= sting/selftests/kvm/arm64/vgic_lpi_stress.c index 9a69c439a0f8..9865b204fdeb 100644 --- a/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c +++ b/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c @@ -164,8 +164,8 @@ static void setup_memslot(void) =20 pages =3D sz / vm->page_size; gpa_base =3D ((vm_compute_max_gfn(vm) + 1) * vm->page_size) - sz; - vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, gpa_base, - TEST_MEMSLOT_INDEX, pages, 0); + vm_override_mem_region(vm, MEM_REGION_TEST_EXTRA, VM_MEM_SRC_ANONYMOUS, + gpa_base, TEST_MEMSLOT_INDEX, pages); } =20 #define LPI_PROP_DEFAULT_PRIO 0xa0 --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DA9F34AA1FB for ; Wed, 2 Sep 2026 16:41:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.198 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367311; cv=none; b=J/+0ejcQreSOXtMwXd4Ar/uetR2xa21FPPD8kVD60jYWIZi7gkQ89i8Ld3hYhUWnTLoFd3oBgK92yN1z2yOLXq9lJgfekUhG9QSjjvwth16Agh6NpTbVlfDVa+/PAeQE0J59VEVtMAGfZdoRdErJRiFCzBLmOWkaN0FA7g8ZSno= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367311; c=relaxed/simple; bh=a+smfS4HY4kg5A4IC4+lGdAxAV+Nzj8xt7z5c+G89xo=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=tztX+1pmFlJctFhWd4Rh86EazRFD1ag55TluqfrMzaoWO5Lf7Hrt0jlSLF8+HTNBGmwNzAweN3NGwp1UomMVye44Rr9v3Txd28i54x/nSlZAmL+RbtrYo4MaTgB0ZnytvdzDbMEXgmJFN2I3M8GrIMRsHXDmjYmpSVCPBZ16/A4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=OiwmPS21; arc=none smtp.client-ip=209.85.210.198 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="OiwmPS21" Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-8535db07af9so675242b3a.2 for ; Wed, 02 Sep 2026 09:41:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367303; x=1788972103; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=F6KFth+wmNcPY6G4yAkPxQ/KQlcOGwTTAk9RODAHfTs=; b=OiwmPS21i5FPtKIuozuGY+sdrPc+D+esfQOyzux/OVQ339/UvKRXfxV+x52jGiXJtQ +tsuRXSwrC1Rb9jYWJslL0+40NXH+/BYde19yTs1FHaLDjD64wT32D6j1m/oxM/kwMXn 7/OGgExebZqCo7+z3yh7HNe9oGbFZuGnzVROu5jAnRr/rivkxVA/sItL2x0Bcuc5TtqA qkGo10mrEBWhamY41U+7PEmX/nrwrUTIttYf8mKlK0oNfaO9HClGX+XFaTW+3oft/E+x VqTW+D1asf8iXUADFXc9K1VNqM2mvudUPl6434KGOs2uD+PXPUajFs1dNcdr0UAUXnSa k5ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367303; x=1788972103; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=F6KFth+wmNcPY6G4yAkPxQ/KQlcOGwTTAk9RODAHfTs=; b=RfT/SuoxwvGxA5V5GPef3VMRd3FBF7SRAzj69ldkjzrAnvfAzETFc5lbhpAZIEnnk8 xdzlS6v9rN9NiWc/OzfP5Em87MB2hxLrF7cBpd+hLtDXx49F6DNFM6T3DNn/kplUBwny uUxZkskn2rF+bmlovps6lmKDmrYZyGhcJob44mI/xfzAgrblZ5Ob5k3B5JrIF8iFUIhB uXtKoF+Q3X1vW7EQ/byDD7hUcoJP/mjOEQWkBZ6ceIVEYUQY3NnYFG3n4UMGX359Ajaq w6DSwJSmUCaWMOxrHdHN5fFcwtyFM4yQC8y2mSr2LCZLhPgwB58aQnMljMBxiL/M9pqn 9z/A== X-Forwarded-Encrypted: i=1; AKwUvBymMvfrnUHUYJE8zQxpGZYDUBhPMsq6ezsp5CAbMoj9ak0TDhw3XIXV3+Liqs28jLAvz4d0DDSPgN6hQFg=@vger.kernel.org X-Gm-Message-State: AFuF++nsM9H+XKVcwCY3fr2TMesV+Bci1qgGkw15PoyM5NfKfYJ9uhM+ sT6O18SKoVkqZTRBRRfBsx3hnfgGMWnDBT83Kz46yB9OKqFhs9FPtts0iw8Hn1HB9qQ03xLL77V vBHR13Q== X-Received: from pfux9.prod.google.com ([2002:a05:6a00:bc9:b0:847:82b3:aca]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:9295:b0:837:e9cc:d474 with SMTP id d2e1a72fcca58-85ed1d07a02mr8719333b3a.2.1788367302673; Wed, 02 Sep 2026 09:41:42 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:18 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-16-seanjc@google.com> Subject: [PATCH v2 15/20] KVM: selftests: Use TEST_EXTRA region in x86's smaller MAXPHYADDR test From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use the TEST_EXTRA region/memslot for x86's smaller MAXPHYADDR test instead of a custom memslot, so that the primary vm_phy_pages_alloc() APIs can be reworked to take a region type instead of a raw memslot. For all intents and purposes, no functional change intended, as vm_add_extra_mem_region() is barely more than a wrapper for vm_userspace_mem_region_add(). Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayam --- .../selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_t= est.c b/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c index 3dca85e95478..b21798a385ca 100644 --- a/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c +++ b/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c @@ -62,9 +62,10 @@ int main(int argc, char *argv[]) TEST_ASSERT(rc, "KVM_CAP_EXIT_ON_EMULATION_FAILURE is unavailable"); vm_enable_cap(vm, KVM_CAP_EXIT_ON_EMULATION_FAILURE, 1); =20 - vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, - MEM_REGION_GPA, MEM_REGION_SLOT, - MEM_REGION_SIZE / PAGE_SIZE, 0); + vm_override_mem_region(vm, MEM_REGION_TEST_EXTRA, VM_MEM_SRC_ANONYMOUS, + MEM_REGION_GPA, MEM_REGION_SLOT, + MEM_REGION_SIZE / PAGE_SIZE); + gpa =3D vm_phy_pages_alloc(vm, MEM_REGION_SIZE / PAGE_SIZE, MEM_REGION_GPA, MEM_REGION_SLOT); TEST_ASSERT(gpa =3D=3D MEM_REGION_GPA, "Failed vm_phy_pages_alloc"); --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 909594AE8A5 for ; Wed, 2 Sep 2026 16:41:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.199 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367319; cv=none; b=aKHmqlwlKzo8fBOOTAguXrrzEPhVzQ9LQEFJTYiSX6N3hfoD4C32FcheFrmOvmietlSB/PYg673LWTF5J+VCaqA6TDmjRs5pFtWsJ9JZccbDOKRVbJm/P112hibpObjplkEj19ll6/NbzheIxUK4uUq51jIQHEP6wP0EiQFt53Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367319; c=relaxed/simple; bh=OA10wlnKKQ7EEM6YlvfJ4xQQrgVCfQ10w2yj5EgWY/0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=bfxypJ5/qOOW9Sgzs5kOk8Z9i1HH67K45LSMMBrtxo2T3qGHwc76d2Rv09XOmSUMFRby8FWue17V/OKzY6C8JeDO6y6kWxKIh/R03+UvoQrtsDznnDXNzS9ybTI2wIY4p38yqfboy9ypJ2WZKDWagl00DOGyLIZKWvkiru3Dud4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=ZRdPfYeD; arc=none smtp.client-ip=209.85.210.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ZRdPfYeD" Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-84e01a62d99so1756492b3a.0 for ; Wed, 02 Sep 2026 09:41:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367304; x=1788972104; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=NSZqPcNxcDapPNldInB7JTSEZaOXSqhsga2ZRaSmlrM=; b=ZRdPfYeDuF2PI96J3h2s0LwwuVEN1RcPfvmFxt8gjmmgjFkddvmlQeugIuTJ/aSjg7 eawo4QBP1/CzVzhLK8z8aGPHeDiy0WO0X0LXp3J/mTzBQqAPyReJP0RpLI+cXOybh9xp yb11PUUSlNb+XO/ILXqlDZzokMarBzqG/59PNIt1i/0xXp9ukBQNqhyl0X/aLNLFoqjQ 9jwdeXumWNiFEzvYA19G6a3veIDAV8Y/+tuu5yTzxJeHGXDPgJjqIh+kJkaUbAeMnUFv 8mFCcp+uRC9eM/6TJgdRmvCgWQoyZGm6TjSpKKg9PXivCKCQD2/MhGhWnpPd1WMyM0zz QTGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367304; x=1788972104; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=NSZqPcNxcDapPNldInB7JTSEZaOXSqhsga2ZRaSmlrM=; b=ov6jjYZpMVBW+6gZC9GcZ0RcrMWdhvKz8/iIpK3ki0HJG5j04/DjzlWTc8AbPA7y3t mIbBQE6WKthD/+nspR9lHIFQM/sOduDQ/x0Q3aeFauo5d12r2i8CFOaHJwlxyMjfb/hp AldmtC9BdTyc37klVvP+6RK+z71XiBmd8E12vBs01AGLdVWBfkaQbvNjXdtRl2Iw5ac6 uRDuRBf06DTN3mD2RyH/tQO13CrI92wUV+QA8BPAafkMcL0zAXkw2Vz+txAGJ/QQXF5n LqeVRxIzjqiL3XFZsa4EPe4NOPdHRIjAstV0RN1ETLlPZW7/sXmSBRQx2GIMqudrt/ZY dBeQ== X-Forwarded-Encrypted: i=1; AKwUvBxZcvlPN+8oq9Sy0WROwgS5R6u+ek+xRgYQevOyRLmGRU3EbPcMjMwz7AOXrRfZ/HGdLL1km9tgSBnOKco=@vger.kernel.org X-Gm-Message-State: AFuF++mtaDzZXQmG43xW9Vl/UwvHdCJfFeblfzcfLtwZ0ImcT8dr4zqe sIpHqO5/NajiHz4UIWmRDLrNpZotY3vifkJt7WYN80EymGk1g6nT/TFY9EusOGtdWEAhbJtvfPt kLLJO7A== X-Received: from pfbgv8.prod.google.com ([2002:a05:6a00:4e88:b0:853:9149:8801]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:238b:b0:85c:c8db:8e4b with SMTP id d2e1a72fcca58-85ed23dea9emr8785308b3a.6.1788367303872; Wed, 02 Sep 2026 09:41:43 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:19 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-17-seanjc@google.com> Subject: [PATCH v2 16/20] KVM: selftests: Use TEST_EXTRA region in set memory region test From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use the TEST_EXTRA region/memslot in the "set memory region" test instead of a custom memslot, so that the primary vm_phy_pages_alloc() APIs can be reworked to take a region type instead of a raw memslot. For all intents and purposes, no functional change intended, as vm_override_mem_region() is barely more than a wrapper for vm_userspace_mem_region_add(). Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/set_memory_region_test.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/t= esting/selftests/kvm/set_memory_region_test.c index dffe9654f45b..9d21594e2f81 100644 --- a/tools/testing/selftests/kvm/set_memory_region_test.c +++ b/tools/testing/selftests/kvm/set_memory_region_test.c @@ -116,9 +116,9 @@ static struct kvm_vm *spawn_vm(struct kvm_vcpu **vcpu, = pthread_t *vcpu_thread, =20 vm =3D vm_create_with_one_vcpu(vcpu, guest_code); =20 - vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS_THP, - MEM_REGION_GPA, MEM_REGION_SLOT, - MEM_REGION_SIZE / getpagesize(), 0); + vm_override_mem_region(vm, MEM_REGION_TEST_EXTRA, VM_MEM_SRC_ANONYMOUS_TH= P, + MEM_REGION_GPA, MEM_REGION_SLOT, + MEM_REGION_SIZE / getpagesize()); =20 /* * Allocate and map two pages so that the GPA accessed by guest_code() --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 569824AE12A for ; Wed, 2 Sep 2026 16:41:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.199 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367317; cv=none; b=rnFThl9ceHd8IjJVtyO/d2zhafddiVJIHmrCJamDvoN1PRO3tYhjd0eSYWNRWIRmKP4U6yEK1DUj7j9pmD122BR3pyKCFJN93uJKk4MyD5tVVGp1MvID7+h9DihqmNtGPI6Wq9n0Tse2fH5aRGRwxpgCx54jfeUX410QZYODwMc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367317; c=relaxed/simple; bh=zsxyoMerLTjQ5PzGod6wWmwZQE8tpuINRNRjbl35PRE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=NWKemMYUJV/JbW5pYHojuSisDk+o8efBKZHGsiYJ9nssyfN6Nck8C7EHmblKN2e5iu7hQlI1o7ExFyMWy0EIs1wUMUyNaF2LhTSH5kXw5Vclba6u2d5yGQJjzbBQ9OSTGUQ1cv2tolHw1CWsUs+FkVFgjqPFWOlLaDPdwm9jOGk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=PetavpbO; arc=none smtp.client-ip=209.85.210.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="PetavpbO" Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-84e1da97175so1682734b3a.0 for ; Wed, 02 Sep 2026 09:41:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367305; x=1788972105; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=2wwnp0HaL4EQWcEbnSioUJOqeXrPcc9FtcOjhkiuYOI=; b=PetavpbO3x4T/Ypb5XMo43Db1fRcjMdimoyOnF8j14w3PVD9AKT43TrNAScEbEiVz/ U/KRymNxw1Dlrpi0HZRIIoiaxj4NfPS3+ue8YmlDTgB1zUgFdEWOMrR2o6glah5uARhi H2ohMb9HhWxN0HD2+Rf6rfXPPQ+rWpBZOHRSJhWc10cfhacq1d4rDjY+cvuforq1Xzsh pk16KXITMfSIUaJYwnQ83tel03VM+UFFjlIe168Li6lY0ah7LUXzqC4b3XM0HCf/QEu1 2BStYRLQp3JEs+Hy5g0BfT0tRgEV2xQ7iW3npxU3Z6dOGTuH5i8d9+m9h1Q5PJ8/H3ay JBpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367305; x=1788972105; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=2wwnp0HaL4EQWcEbnSioUJOqeXrPcc9FtcOjhkiuYOI=; b=cg06LlF45aGtBJw3/yFnCB4yRI85C7CgXcaFNTaESqjd4VSoGxi9OwM+W5HwP0XdZe 9MrcISt3kNyepAw3gmTtjizY/dtEIIoi8m2Rt9+CViMs1cY/Q6G6N+3yYeqFoYtCS+Oc 2ytSPIcmvgYyoIdoxg3Q9nalvejccDNE78R1PvtiKULSfsKyWTXX4yj4qBsUUYepHUmP ccx0yDAFtOAfapdLvqD6V73V5NaNsBF45fvxGVH2J+7enCG2+LECqiLI4fwFGfVQLdCj 13DA7Wk4Bs/lDnezPlrHQKbY43MUXSuWlGVHKVPMYAk+nWvm6OD3nHGyvSQ12zGMhfsd p1jA== X-Forwarded-Encrypted: i=1; AKwUvBzZANeisQ0hiYhcXP8efImVPpw1jDl2VivmWE1jNL/WBamENLI3OcoSDP3aV8IeCsPwzT+Ls3iIF6cXaVw=@vger.kernel.org X-Gm-Message-State: AFuF++n6XQmenhcy1gc7uPVwkL9gUIWoab8TtA3ERIyuT4dVmSlYgLq4 2oFyr/TnTeVST6jBdpVQGi1srVWU1WKUQFNUTAAR7MjVT4JZ/TIonoytjY+wPBy1ohFjvV8S8RP B6mWVcA== X-Received: from pfbgp14.prod.google.com ([2002:a05:6a00:3b8e:b0:847:95a8:728e]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:4b0f:b0:857:72f8:dc97 with SMTP id d2e1a72fcca58-85ed8bea229mr8160272b3a.24.1788367305074; Wed, 02 Sep 2026 09:41:45 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:20 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-18-seanjc@google.com> Subject: [PATCH v2 17/20] KVM: selftests: Take the memory region type, not memslot, in page allocators From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Take the memory region type instead of the memslot in all page allocator APIs, except for the innermost quad-underscores function. This will allow automatically selecting the minimum GPA based on the allocation type, which can't be done using the memslot due to all regions sharing a single memslot by default. PowerPC support will also leverage the type to ensure that page table allocations are naturally aligned. No functional change intended. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Reviewed-by: Ritesh Harjani (IBM) Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c | 12 ++++++------ tools/testing/selftests/kvm/include/kvm_util.h | 13 +++++++------ tools/testing/selftests/kvm/lib/kvm_util.c | 10 +++++++--- tools/testing/selftests/kvm/lib/x86/processor.c | 2 +- .../testing/selftests/kvm/set_memory_region_test.c | 2 +- .../kvm/x86/smaller_maxphyaddr_emulation_test.c | 2 +- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c b/tools/te= sting/selftests/kvm/arm64/vgic_lpi_stress.c index 9865b204fdeb..a45c0849a47a 100644 --- a/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c +++ b/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c @@ -192,27 +192,27 @@ static void setup_test_data(void) =20 test_data.device_table =3D vm_phy_pages_alloc(vm, pages_per_64k, gpa_base, - TEST_MEMSLOT_INDEX); + MEM_REGION_TEST_EXTRA); =20 test_data.collection_table =3D vm_phy_pages_alloc(vm, pages_per_64k, gpa_base, - TEST_MEMSLOT_INDEX); + MEM_REGION_TEST_EXTRA); =20 cmdq_base =3D vm_phy_pages_alloc(vm, pages_per_64k, gpa_base, - TEST_MEMSLOT_INDEX); + MEM_REGION_TEST_EXTRA); virt_map(vm, cmdq_base, cmdq_base, pages_per_64k); test_data.cmdq_base =3D cmdq_base; test_data.cmdq_base_va =3D (void *)cmdq_base; =20 test_data.itt_tables =3D vm_phy_pages_alloc(vm, pages_per_64k * nr_device= s, - gpa_base, TEST_MEMSLOT_INDEX); + gpa_base, MEM_REGION_TEST_EXTRA); =20 test_data.lpi_prop_table =3D vm_phy_pages_alloc(vm, pages_per_64k, - gpa_base, TEST_MEMSLOT_INDEX); + gpa_base, MEM_REGION_TEST_EXTRA); configure_lpis(); =20 test_data.lpi_pend_tables =3D vm_phy_pages_alloc(vm, pages_per_64k * nr_c= pus, - gpa_base, TEST_MEMSLOT_INDEX); + gpa_base, MEM_REGION_TEST_EXTRA); =20 sync_global_to_guest(vm, test_data); } diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index b6b96d6978b2..c9ef2e5c9971 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -1054,30 +1054,31 @@ const char *exit_reason_str(unsigned int exit_reaso= n); gpa_t ____vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min= _gpa, u32 memslot, bool protected, bool naturally_aligned); gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_g= pa, - u32 memslot, bool protected); + enum kvm_mem_region_type type, bool protected); =20 static inline gpa_t vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, - gpa_t min_gpa, u32 memslot) + gpa_t min_gpa, + enum kvm_mem_region_type type) { /* * By default, allocate memory as protected for VMs that support * protected memory, as the majority of memory for such VMs is * protected, i.e. using shared memory is effectively opt-in. */ - return __vm_phy_pages_alloc(vm, nr_pages, min_gpa, memslot, + return __vm_phy_pages_alloc(vm, nr_pages, min_gpa, type, vm_arch_has_protected_memory(vm)); } =20 static inline gpa_t vm_phy_page_alloc(struct kvm_vm *vm, gpa_t min_gpa, - u32 memslot) + enum kvm_mem_region_type type) { - return vm_phy_pages_alloc(vm, 1, min_gpa, memslot); + return vm_phy_pages_alloc(vm, 1, min_gpa, type); } =20 static inline gpa_t vm_alloc_page_table_pages(struct kvm_vm *vm, size_t nr= _pages) { return vm_phy_pages_alloc(vm, nr_pages, KVM_GUEST_PAGE_TABLE_MIN_PADDR, - vm->memslots[MEM_REGION_PT]); + MEM_REGION_PT); } =20 static inline gpa_t vm_alloc_page_table(struct kvm_vm *vm) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 781af2928d04..e500d1799151 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1475,7 +1475,7 @@ static gva_t ____vm_alloc(struct kvm_vm *vm, size_t s= z, gva_t min_gva, virt_pgd_alloc(vm); gpa_t gpa =3D __vm_phy_pages_alloc(vm, pages, KVM_UTIL_MIN_PFN * vm->page_size, - vm->memslots[type], protected); + type, protected); =20 /* * Find an unused range of virtual page addresses of at least @@ -2088,9 +2088,13 @@ gpa_t ____vm_phy_pages_alloc(struct kvm_vm *vm, size= _t nr_pages, gpa_t min_gpa, } =20 gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_g= pa, - u32 memslot, bool protected) + enum kvm_mem_region_type type, bool protected) { - return ____vm_phy_pages_alloc(vm, nr_pages, min_gpa, memslot, protected, = false); + TEST_ASSERT(type < NR_MEM_REGIONS, + "Invalid memory region type '%u'", type); + + return ____vm_phy_pages_alloc(vm, nr_pages, min_gpa, vm->memslots[type], + protected, false); } =20 /* diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c b/tools/testin= g/selftests/kvm/lib/x86/processor.c index b988eea373ad..39d9ca6ceb1d 100644 --- a/tools/testing/selftests/kvm/lib/x86/processor.c +++ b/tools/testing/selftests/kvm/lib/x86/processor.c @@ -1475,7 +1475,7 @@ void setup_smram(struct kvm_vm *vm, struct kvm_vcpu *= vcpu, gpa_t smram_gpa, smram_gpa, SMRAM_MEMSLOT, SMRAM_PAGES); =20 TEST_ASSERT(vm_phy_pages_alloc(vm, SMRAM_PAGES, smram_gpa, - SMRAM_MEMSLOT) =3D=3D smram_gpa, + MEM_REGION_TEST_EXTRA) =3D=3D smram_gpa, "Could not allocate guest physical addresses for SMRAM"); =20 memset(addr_gpa2hva(vm, smram_gpa), 0x0, SMRAM_SIZE); diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/t= esting/selftests/kvm/set_memory_region_test.c index 9d21594e2f81..160bbe3d7203 100644 --- a/tools/testing/selftests/kvm/set_memory_region_test.c +++ b/tools/testing/selftests/kvm/set_memory_region_test.c @@ -124,7 +124,7 @@ static struct kvm_vm *spawn_vm(struct kvm_vcpu **vcpu, = pthread_t *vcpu_thread, * Allocate and map two pages so that the GPA accessed by guest_code() * stays valid across the memslot move. */ - gpa =3D vm_phy_pages_alloc(vm, 2, MEM_REGION_GPA, MEM_REGION_SLOT); + gpa =3D vm_phy_pages_alloc(vm, 2, MEM_REGION_GPA, MEM_REGION_TEST_EXTRA); TEST_ASSERT(gpa =3D=3D MEM_REGION_GPA, "Failed vm_phy_pages_alloc\n"); =20 virt_map(vm, MEM_REGION_GPA, MEM_REGION_GPA, 2); diff --git a/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_t= est.c b/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c index b21798a385ca..4e125eb5e0cf 100644 --- a/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c +++ b/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c @@ -67,7 +67,7 @@ int main(int argc, char *argv[]) MEM_REGION_SIZE / PAGE_SIZE); =20 gpa =3D vm_phy_pages_alloc(vm, MEM_REGION_SIZE / PAGE_SIZE, - MEM_REGION_GPA, MEM_REGION_SLOT); + MEM_REGION_GPA, MEM_REGION_TEST_EXTRA); TEST_ASSERT(gpa =3D=3D MEM_REGION_GPA, "Failed vm_phy_pages_alloc"); virt_map(vm, MEM_REGION_GVA, MEM_REGION_GPA, 1); hva =3D addr_gpa2hva(vm, MEM_REGION_GPA); --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8DAD24AE139 for ; Wed, 2 Sep 2026 16:41:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367320; cv=none; b=RnnEVPgWvTyHJC5oUz8W00SmAeoWPleQZ3GA+zj31W4YgLmd7ezWw/LyD3FoDehZGlhiGzONNxnUepKQFCeMiQ1SpTbBMIJ+NA3oIN2D55XNhW3T/ayTGm03Tj2cqvEvhWfB1uwkmjiUd41j2QBna+7U73/o4SOlbExXbghPrfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367320; c=relaxed/simple; bh=x3gHoQm6151eyOz2sxvBb0hZCS6dwBM8KBP69Q1Eww0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=EIIOHzbpaRcNwYEIUq7iOaA2QDqNBWFfEqkEwd+TdYle/T/eJaTtSjSqq9chcYLRX8F5bh/0vs5vV8+Wdp73ceNIMn+Z9fNjFeGPAWYXKBTIh+s7oyhYz1Prey0kkVUxR6tVBmXy58HY7fwfraJcXbeCOeZC3bcYxc+IQu7nIJs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=ZvgkATqb; arc=none smtp.client-ip=209.85.215.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ZvgkATqb" Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cb48f41343aso50261a12.1 for ; Wed, 02 Sep 2026 09:41:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367306; x=1788972106; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=ff1nydjVZ5E7b5LVcCvqITlv5jcgKgSL4KOLnEEEgvQ=; b=ZvgkATqbgOXz1Jz7uj00M0H04UqIybAwIXkHoGFlFJYvoMKdsB3xbFnol3RxFNmFpR wX0hQZbJeAfy9qrEq08y6gB0XMJo5+y68AhLFbaclMeQMPRjppVjT5+We6oAV93zW/+J mDEKJxehqVc+rDJc+gC6Vol8088a+yJLSn3xnzClq87iL1oD4M/X7MWjFM83OeRgexst Mg6f0jfWm/BvBglHdjDrzFEA3XZKskYTtbwnqhER0hjNL7zOOunSYYbLF+50pgwiuSzr cN+XfqfBwSATksn/6NV8ZLc/Z1OemD2BJE4X1QCeCJloISOw7QaYZDYUIo+V38qbZnMQ ++7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367306; x=1788972106; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=ff1nydjVZ5E7b5LVcCvqITlv5jcgKgSL4KOLnEEEgvQ=; b=U+wZvfJLuZEKEbC/Eeehh7QcG7VeOLMlUmHfFGi3OpXDNvCkk2PVT36yIFXQywII4a TbrVCx4tZ99J4bEjCyLpHh6KATdqiPETUOImRP+Lj/i9ADza19tNwxycgg/ZVQfitgJc THEZ0CMRumlPMSA4Uu/y+SJOq1GawWGQW/HBPTJEVfaGxgg6epGMyYTt89vciweGSyhv epQlsNU+RbFbljoyNHDGUkTY0DPRWeCp62UvnM6xJM9UO1o2KbklAffttLlj8MQJLl/X JT/8VwdUehRrN51y7+Pg+puQ/b8evu5iA1L4kms+sECO8WWarhUJ7LdRLrOV96+vc/sq z9gA== X-Forwarded-Encrypted: i=1; AKwUvBzj2bciM8B7beEYCGFQx+LGDOhLPe9FuyLUafijdM+QJ96/CHEYoSBSgvwbN9wSjD3EU+HnGzxs4MxDtPU=@vger.kernel.org X-Gm-Message-State: AFuF++n/+G2CsxS3V+xTgFzfiKsDtMaW49qVCQWFPSo3omi3IdQE4QH+ cipVZC689IDmi1oxBKSdhCod7HEoCYsNCUGEV+FGAwJv+k0H59ABWvO3GEJuY41rczho+FHipON 4/gduTQ== X-Received: from pjc15.prod.google.com ([2002:a17:90b:2f4f:b0:380:cd24:3a7d]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:1dcd:b0:398:9bd3:d6d1 with SMTP id 98e67ed59e1d1-39b083af6fdmr384502a91.11.1788367306328; Wed, 02 Sep 2026 09:41:46 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:21 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-19-seanjc@google.com> Subject: [PATCH v2 18/20] KVM: selftests: Use TEST_ASSERT(), not assert(), in vm_get_mem_region() From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use a proper selftests TEST_ASSERT() in vm_get_mem_region() so that bad input is guaranteed to fail the test, and with the standard error message format. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Reviewed-by: Ritesh Harjani (IBM) Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/include/kvm_util.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index c9ef2e5c9971..c166fce4599c 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -200,7 +200,8 @@ memslot2region(struct kvm_vm *vm, u32 memslot); static inline struct userspace_mem_region *vm_get_mem_region(struct kvm_vm= *vm, enum kvm_mem_region_type type) { - assert(type < NR_MEM_REGIONS); + TEST_ASSERT(type < NR_MEM_REGIONS, + "Invalid memory region type '%u'", type); return memslot2region(vm, vm->memslots[type]); } =20 --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8DE774AE13D for ; Wed, 2 Sep 2026 16:41:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.72 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367317; cv=none; b=XNHuT814EwZIEyD2bVTFp2Tum5VUY9DM7IhFHNrftYUUPzOZhn3iDPqw6qZm+2H5ybBVBkD9/LYV+4YOXvnjP4bunR/u+dU97KYxafaaQ3AO0U6r4tsVk2rEdavGgkHSyD9FGNCjUNUcwx7b7LRUghNHW393bSsyLS3pOrJige8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367317; c=relaxed/simple; bh=BYNjpqJdDEiFH15FqFu/4Cv42zLdUdvinzoK67AQzOc=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=qUwoYlYPO0Pxp4M8gtrCTmIBAblkRjjPLTpWg+c0HhwK2pmMQkmfafHllU121Eqh6U0RvhMYP8TY55Sh16hjk+VkQpjYwOXxAJ3KxQAKMVkqtA8O3A0UUcwLa3RAC4GK7wBjpTwU4kHvdKMfMrWUz193B9+xxxsPckCug6u4tDA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=ePnk0/6O; arc=none smtp.client-ip=209.85.216.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ePnk0/6O" Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-398d7e0f3b4so1792491a91.3 for ; Wed, 02 Sep 2026 09:41:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367308; x=1788972108; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=+EtjgHzhg5y+gaNAA1nW+ZiKB252Rwdo4nHhOvgia1M=; b=ePnk0/6O9HKD03FwG8Bie+m9PCz3tUmVvQ/oiOKBon5ym+B277R2VRUWYpoQd1fTZM CZxbpzSkCcHq4dcd8cn5Hx2ncvq1ycZ4eIBrDk3TRpnmFU6m5hdh/EuumL3PNycEy/Sx awvdzek2ChX74WT8UixL1H20HwckBPea5nZdPmAJjjeY9//4NOpKj2eYbCIqAcub39I7 EAr1/smmzYmYOUsN8bLino98whOPTur5JZ/+Il/8aGB9xGpDliZEN75eB+Erd1PAN5dW xVhh2SgLBDow9lfcuQRrp0ft2AhAltGL91TQGm2uO4K++Ni/DWI/YtTPbJK1NZ1DlAfA SrAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367308; x=1788972108; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=+EtjgHzhg5y+gaNAA1nW+ZiKB252Rwdo4nHhOvgia1M=; b=rKjbO4r3Z2STZBa67ZJAkFEbjIhY0SbpFBXDeLAVXmQrdKTjnXr2olrFSrQgxTdBxT bRHk3fmi30Mayl641VQrY0b7qtwqjgFHtUFJ2Zx6INrw6MAWLLH6oEiu3hpf1aJnt4Co krHbBpUNBca7jZgWsk7WW6ae3BuUhjA25qwFG0tATRL2nW26DJlc790h80eZQjybj9ec Kl5HQCU1b2Ooi8YzpMAK80m8VgP5BNsBkv3SDifL4Mqd18ZlFUCD+JnUQP3YTR7++Stj 2xqC2d87pcymHfDl++JkaI99wyT5SzOdisT3Lg5NFAAOatUKqzPaG5EXyVWiKgp+8dsw UWbQ== X-Forwarded-Encrypted: i=1; AKwUvBzioZu5tNSd1FEic0ARHx9o3Uyx5cVBJIp6jdfgp2KcydPfZBevYw8Z9Uikd88RPcCECRitq0hB8pbrymM=@vger.kernel.org X-Gm-Message-State: AFuF++nKkyl2aJyPIGA3n7XCrmwUi1Apco6S8lptk8+dRj2myqbH4xzV e4Ch+6kyGuomL/PVlSVqr3IRINunZkFOYotknoVu9hUZHuTboOTl1GB1V8p7jJmK1LB1xM9/wzO VI4E2qA== X-Received: from pjqz14.prod.google.com ([2002:a17:90a:b10e:b0:390:9239:a6dc]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:4c4e:b0:398:ba56:b926 with SMTP id 98e67ed59e1d1-39aee16f658mr8856203a91.25.1788367307392; Wed, 02 Sep 2026 09:41:47 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:22 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-20-seanjc@google.com> Subject: [PATCH v2 19/20] KVM: selftests: Automatically pick min_gpa for allocations based on region type From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Automatically choose the minimum GPA for physical page allocations based on the region type instead of sprinkling the logic over various wrappers and tests. All usage falls into three categories: (a) don't care, just use the bare minimum GPA, (b) page tables, use a slightly higher min to keep low memory available, (c) custom memslot, use the base of the memslot. I.e. there isn't a strong need to allow completely custom minimums. Opportunistically move the vGIC LPI stress test's "gpa_base" variable into setup_memslot() as the only reason it was a global variable was so that it could be passed as the minimum GPA for allocations from the extra memslot. Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayam --- .../selftests/kvm/arm64/vgic_lpi_stress.c | 13 +++---- .../testing/selftests/kvm/include/kvm_util.h | 12 +++--- tools/testing/selftests/kvm/lib/kvm_util.c | 38 ++++++++++++++++--- .../testing/selftests/kvm/lib/x86/processor.c | 3 +- .../selftests/kvm/set_memory_region_test.c | 2 +- .../x86/smaller_maxphyaddr_emulation_test.c | 2 +- 6 files changed, 45 insertions(+), 25 deletions(-) diff --git a/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c b/tools/te= sting/selftests/kvm/arm64/vgic_lpi_stress.c index a45c0849a47a..45a87ba5a737 100644 --- a/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c +++ b/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c @@ -23,7 +23,6 @@ #define GIC_LPI_OFFSET 8192 =20 static size_t nr_iterations =3D 1000; -static gpa_t gpa_base; =20 static struct kvm_vm *vm; static struct kvm_vcpu **vcpus; @@ -143,6 +142,7 @@ static void guest_code(size_t nr_lpis) =20 static void setup_memslot(void) { + gpa_t gpa_base; size_t pages; size_t sz; =20 @@ -191,28 +191,25 @@ static void setup_test_data(void) gpa_t cmdq_base; =20 test_data.device_table =3D vm_phy_pages_alloc(vm, pages_per_64k, - gpa_base, MEM_REGION_TEST_EXTRA); =20 test_data.collection_table =3D vm_phy_pages_alloc(vm, pages_per_64k, - gpa_base, MEM_REGION_TEST_EXTRA); =20 - cmdq_base =3D vm_phy_pages_alloc(vm, pages_per_64k, gpa_base, - MEM_REGION_TEST_EXTRA); + cmdq_base =3D vm_phy_pages_alloc(vm, pages_per_64k, MEM_REGION_TEST_EXTRA= ); virt_map(vm, cmdq_base, cmdq_base, pages_per_64k); test_data.cmdq_base =3D cmdq_base; test_data.cmdq_base_va =3D (void *)cmdq_base; =20 test_data.itt_tables =3D vm_phy_pages_alloc(vm, pages_per_64k * nr_device= s, - gpa_base, MEM_REGION_TEST_EXTRA); + MEM_REGION_TEST_EXTRA); =20 test_data.lpi_prop_table =3D vm_phy_pages_alloc(vm, pages_per_64k, - gpa_base, MEM_REGION_TEST_EXTRA); + MEM_REGION_TEST_EXTRA); configure_lpis(); =20 test_data.lpi_pend_tables =3D vm_phy_pages_alloc(vm, pages_per_64k * nr_c= pus, - gpa_base, MEM_REGION_TEST_EXTRA); + MEM_REGION_TEST_EXTRA); =20 sync_global_to_guest(vm, test_data); } diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index c166fce4599c..43b49d0ad4eb 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -1054,11 +1054,10 @@ const char *exit_reason_str(unsigned int exit_reaso= n); =20 gpa_t ____vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min= _gpa, u32 memslot, bool protected, bool naturally_aligned); -gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_g= pa, +gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, enum kvm_mem_region_type type, bool protected); =20 static inline gpa_t vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, - gpa_t min_gpa, enum kvm_mem_region_type type) { /* @@ -1066,20 +1065,19 @@ static inline gpa_t vm_phy_pages_alloc(struct kvm_v= m *vm, size_t nr_pages, * protected memory, as the majority of memory for such VMs is * protected, i.e. using shared memory is effectively opt-in. */ - return __vm_phy_pages_alloc(vm, nr_pages, min_gpa, type, + return __vm_phy_pages_alloc(vm, nr_pages, type, vm_arch_has_protected_memory(vm)); } =20 -static inline gpa_t vm_phy_page_alloc(struct kvm_vm *vm, gpa_t min_gpa, +static inline gpa_t vm_phy_page_alloc(struct kvm_vm *vm, enum kvm_mem_region_type type) { - return vm_phy_pages_alloc(vm, 1, min_gpa, type); + return vm_phy_pages_alloc(vm, 1, type); } =20 static inline gpa_t vm_alloc_page_table_pages(struct kvm_vm *vm, size_t nr= _pages) { - return vm_phy_pages_alloc(vm, nr_pages, KVM_GUEST_PAGE_TABLE_MIN_PADDR, - MEM_REGION_PT); + return vm_phy_pages_alloc(vm, nr_pages, MEM_REGION_PT); } =20 static inline gpa_t vm_alloc_page_table(struct kvm_vm *vm) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index e500d1799151..8b5b330a5889 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1473,9 +1473,7 @@ static gva_t ____vm_alloc(struct kvm_vm *vm, size_t s= z, gva_t min_gva, u64 pages =3D (sz >> vm->page_shift) + ((sz % vm->page_size) !=3D 0); =20 virt_pgd_alloc(vm); - gpa_t gpa =3D __vm_phy_pages_alloc(vm, pages, - KVM_UTIL_MIN_PFN * vm->page_size, - type, protected); + gpa_t gpa =3D __vm_phy_pages_alloc(vm, pages, type, protected); =20 /* * Find an unused range of virtual page addresses of at least @@ -2087,11 +2085,39 @@ gpa_t ____vm_phy_pages_alloc(struct kvm_vm *vm, siz= e_t nr_pages, gpa_t min_gpa, __builtin_unreachable(); } =20 -gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min_g= pa, +gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, enum kvm_mem_region_type type, bool protected) { - TEST_ASSERT(type < NR_MEM_REGIONS, - "Invalid memory region type '%u'", type); + struct userspace_mem_region *region =3D vm_get_mem_region(vm, type); + gpa_t min_gpa; + + TEST_ASSERT(region, "No region for type '%u', memslot '%u'", + type, vm->memslots[type]); + + switch (type) { + case MEM_REGION_CODE: + case MEM_REGION_DATA: + case MEM_REGION_TEST_DATA: + /* + * If the region is backed by the default memslot (id=3D0), use + * selftests' hardcoded minimum PFN, otherwise use the base of + * the custom memory slot that backs the region. + */ + if (!vm->memslots[type]) + min_gpa =3D KVM_UTIL_MIN_PFN * vm->page_size; + else + min_gpa =3D region->region.guest_phys_addr; + break; + case MEM_REGION_PT: + min_gpa =3D KVM_GUEST_PAGE_TABLE_MIN_PADDR; + break; + case MEM_REGION_TEST_EXTRA: + min_gpa =3D region->region.guest_phys_addr; + break; + default: + TEST_FAIL("Invalid memory region type '%u'", type); + break; + } =20 return ____vm_phy_pages_alloc(vm, nr_pages, min_gpa, vm->memslots[type], protected, false); diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c b/tools/testin= g/selftests/kvm/lib/x86/processor.c index 39d9ca6ceb1d..479e9a481687 100644 --- a/tools/testing/selftests/kvm/lib/x86/processor.c +++ b/tools/testing/selftests/kvm/lib/x86/processor.c @@ -1474,8 +1474,7 @@ void setup_smram(struct kvm_vm *vm, struct kvm_vcpu *= vcpu, gpa_t smram_gpa, vm_override_mem_region(vm, MEM_REGION_TEST_EXTRA, VM_MEM_SRC_ANONYMOUS, smram_gpa, SMRAM_MEMSLOT, SMRAM_PAGES); =20 - TEST_ASSERT(vm_phy_pages_alloc(vm, SMRAM_PAGES, smram_gpa, - MEM_REGION_TEST_EXTRA) =3D=3D smram_gpa, + TEST_ASSERT(vm_phy_pages_alloc(vm, SMRAM_PAGES, MEM_REGION_TEST_EXTRA) = =3D=3D smram_gpa, "Could not allocate guest physical addresses for SMRAM"); =20 memset(addr_gpa2hva(vm, smram_gpa), 0x0, SMRAM_SIZE); diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/t= esting/selftests/kvm/set_memory_region_test.c index 160bbe3d7203..bfa5ac8ce029 100644 --- a/tools/testing/selftests/kvm/set_memory_region_test.c +++ b/tools/testing/selftests/kvm/set_memory_region_test.c @@ -124,7 +124,7 @@ static struct kvm_vm *spawn_vm(struct kvm_vcpu **vcpu, = pthread_t *vcpu_thread, * Allocate and map two pages so that the GPA accessed by guest_code() * stays valid across the memslot move. */ - gpa =3D vm_phy_pages_alloc(vm, 2, MEM_REGION_GPA, MEM_REGION_TEST_EXTRA); + gpa =3D vm_phy_pages_alloc(vm, 2, MEM_REGION_TEST_EXTRA); TEST_ASSERT(gpa =3D=3D MEM_REGION_GPA, "Failed vm_phy_pages_alloc\n"); =20 virt_map(vm, MEM_REGION_GPA, MEM_REGION_GPA, 2); diff --git a/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_t= est.c b/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c index 4e125eb5e0cf..8d1822717abd 100644 --- a/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c +++ b/tools/testing/selftests/kvm/x86/smaller_maxphyaddr_emulation_test.c @@ -67,7 +67,7 @@ int main(int argc, char *argv[]) MEM_REGION_SIZE / PAGE_SIZE); =20 gpa =3D vm_phy_pages_alloc(vm, MEM_REGION_SIZE / PAGE_SIZE, - MEM_REGION_GPA, MEM_REGION_TEST_EXTRA); + MEM_REGION_TEST_EXTRA); TEST_ASSERT(gpa =3D=3D MEM_REGION_GPA, "Failed vm_phy_pages_alloc"); virt_map(vm, MEM_REGION_GVA, MEM_REGION_GPA, 1); hva =3D addr_gpa2hva(vm, MEM_REGION_GPA); --=20 2.55.0.966.g6673acef38-goog From nobody Sat Sep 26 09:19:20 2026 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 85F214AA598 for ; Wed, 2 Sep 2026 16:41:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.200 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367317; cv=none; b=gPRt+DYFd8FNhX3GiDlNkbYJtx1hbVbmT0mOugNUiPoyo1Yz9/JcbQhfhHST1Xo3xsl8JmP55FTqHs6y0u8DSYWxT39lNOAFRYwy/m8vMgb5TIKmiJENqC8jbhZ/04nX/KPD+E4LMnrvxMLAaV/IIA21GRDX6zuLS0enO/pc2BA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788367317; c=relaxed/simple; bh=lnkr8N7+2rACdUGX5u+8RqWUkOW9mDRi0UYpxqwxQt8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=qhIx/rXCrlVpeBz47z989ldiXO6D6g/NaHVnciHD2sr7H2WYSeDc+9wkm6gzxQjy8lvrujXCl/6SecWaF8CV687X9nodYEqfQ/4O7YygyjacQ2/xn/R1iP/e3RtlACIoODG6DofxofVNEycD6UQMknEk8L2sMA5Ac7mHf+xMQRE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=EJ+Rdi1f; arc=none smtp.client-ip=209.85.210.200 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="EJ+Rdi1f" Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-85722fc5a21so1858124b3a.2 for ; Wed, 02 Sep 2026 09:41:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1788367309; x=1788972109; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=BHZG1y8vqLRAbs9gwwYCsROxfX8BN1ebrpFia3yeMLQ=; b=EJ+Rdi1fGH/KVQJuuCVmrykoOr99QFMcAzAWYxH89kp0dX5G+fWGmK1+8+0wC3UI3+ LZLwezh3MiDmwS0+c/Rp/3exDSMN4zSTWOB/4y505m8CXN2qXhgoWBwKRy/MAZSOLQwO EoPaia7oIb3BtvAzwSyKJJOdzeUk+k4jeQ/WnXlm0lYxGQvCWMQ1XulqS6u9HXlT4Bb/ G1cCzSFm6sE5/GAwYpI6RDvYgWJ49GMvbhhKQp5yJLm8O/cl1IPjJLmqwDg0UpyLIoPS P2dZ8DQadpQPlbMOh9xYp1UYaeKjKBKRUbYF0S0OxN6mg2nBT2acC1TE8e3HAV7RkdQ+ MH3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788367309; x=1788972109; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=BHZG1y8vqLRAbs9gwwYCsROxfX8BN1ebrpFia3yeMLQ=; b=nxKw5I7NSCEFYWrZa6l1tSfdAhI2bI6f2MbU142wV3WJBveH+Inka3OPb0/jhVifLr nyaDoWfIrMaoZ1KYcsbcek1YhRHQsX2t1z9ox/PlOxxd4Zc6OfEE+bz1MxXU5czVR9nE OvJW3QrAoCQqMC0Ddtt02P6iJ234WliyVdmE4bFyJYBV4ROZVwxcQhaCtBLx5MTOT6Mk fNXdU3Jc+Uh+xLnFA+QpP5oQ77MsF8Ea4vEpSr0D1313fxFCDlKqt2ZlNdGbG6QqHTkW IZsbjk/9dmpGTZTpRUEaqpGuRp5rEkgpeCy777KWLJ5UmbFSmKo9pJH7R7eEewq1t6i4 dgWg== X-Forwarded-Encrypted: i=1; AKwUvBwJ2VDbBSWpMhD9OMvO8tm0zU1PhEtT1e+qF71320jCkaM8T0IXvEYdWDg4K1QWAnhgOMmK1qeaAq5vyiE=@vger.kernel.org X-Gm-Message-State: AFuF++lsEZBDgZknpnJ/w7uT3h8QXeDC52U0RjjHDhdwrj+sWmMmOeTP wcXCdowoSf5ewL0l2m2b6qYU+M5aXaLH838SpMKTNovrBa98l2P1GMnZ2Mnm4N8yHHEeEAOox/9 zwNw6Yg== X-Received: from pfaz23.prod.google.com ([2002:aa7:91d7:0:b0:847:9472:cf8e]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:e8f:b0:857:72f8:dc91 with SMTP id d2e1a72fcca58-85ed850a6d7mr9743799b3a.18.1788367308520; Wed, 02 Sep 2026 09:41:48 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 2 Sep 2026 09:41:23 -0700 In-Reply-To: <20260902164123.2546762-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260902164123.2546762-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.966.g6673acef38-goog Message-ID: <20260902164123.2546762-21-seanjc@google.com> Subject: [PATCH v2 20/20] KVM: selftests: Add arch hook to force page tables to be naturally aligned From: Sean Christopherson To: Marc Zyngier , Oliver Upton , Sean Christopherson , Paolo Bonzini , Tianrui Zhao , Bibo Mao , Huacai Chen , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda Cc: Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Atish Patra , Alexandre Ghiti , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, loongarch@lists.linux.dev, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Itaru Kitayama , Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add an arch hook to communicate to the core physical page allocator that page table allocations need to be naturally aligned. The hook will be used for upcoming PowerPC support, which has MMU tables that are larger than the guest base page size and need to be naturally aligned. Bury the hook in the physical page allocator to avoid having to plumb a rarely used param into the main APIs. Cc: Ritesh Harjani (IBM) Tested-by: Itaru Kitayama Signed-off-by: Sean Christopherson Reviewed-by: Ritesh Harjani (IBM) Tested-by: Itaru Kitayam --- tools/testing/selftests/kvm/include/kvm_util.h | 2 ++ tools/testing/selftests/kvm/lib/kvm_util.c | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index 43b49d0ad4eb..89b4fc2af751 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -1052,6 +1052,8 @@ void kvm_gsi_routing_write(struct kvm_vm *vm, struct = kvm_irq_routing *routing); =20 const char *exit_reason_str(unsigned int exit_reason); =20 +bool kvm_arch_needs_naturally_aligned_page_tables(void); + gpa_t ____vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, gpa_t min= _gpa, u32 memslot, bool protected, bool naturally_aligned); gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 8b5b330a5889..57b653fbd0b1 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -2085,10 +2085,16 @@ gpa_t ____vm_phy_pages_alloc(struct kvm_vm *vm, siz= e_t nr_pages, gpa_t min_gpa, __builtin_unreachable(); } =20 +__weak bool kvm_arch_needs_naturally_aligned_page_tables(void) +{ + return false; +} + gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t nr_pages, enum kvm_mem_region_type type, bool protected) { struct userspace_mem_region *region =3D vm_get_mem_region(vm, type); + bool naturally_aligned =3D false; gpa_t min_gpa; =20 TEST_ASSERT(region, "No region for type '%u', memslot '%u'", @@ -2110,6 +2116,7 @@ gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t = nr_pages, break; case MEM_REGION_PT: min_gpa =3D KVM_GUEST_PAGE_TABLE_MIN_PADDR; + naturally_aligned =3D kvm_arch_needs_naturally_aligned_page_tables(); break; case MEM_REGION_TEST_EXTRA: min_gpa =3D region->region.guest_phys_addr; @@ -2120,7 +2127,7 @@ gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t = nr_pages, } =20 return ____vm_phy_pages_alloc(vm, nr_pages, min_gpa, vm->memslots[type], - protected, false); + protected, naturally_aligned); } =20 /* --=20 2.55.0.966.g6673acef38-goog