From nobody Mon Sep 28 04:08:09 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 2EFB539E16C for ; Wed, 26 Aug 2026 23:05:16 +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=1787785517; cv=none; b=PGl6XdZS61Y/vrN0IwZtTFHUWmx9pyIq3Isz0kRZrAvKYnEBazT1yzcHU9n5gs06anNHCcmYKXVgDe4U4YzksbOlkEiAIzSERRusbgcUg0UQn4E277zV2IA4CZ5ZeMiX1NIfSNqRfD+9Lq00SFXxf6MGPRUJO28dhoIIH1nv880= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785517; c=relaxed/simple; bh=bbwkNrWPELDGGOA1Zgqc6lm5Iyi+SZhGGDW/VfTBloA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=gYDF8nZElafgLnIeQ8EoMUI8uYo5W+1V6F0FObb5PuhKpnMKalk1C0r4qYxVtX3WbYzZOHNR0Hj06ar3er29GCquxLQ3ZZ2E3uzqp09pzxJHPNVSAHy3CikTK0wXuiKoG03AEp69wtxLtpPc9wLR/L454tBfr4oJ+XHgaRe2LeI= 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=JX4yCNKj; 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="JX4yCNKj" Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-84e375d9736so61997b3a.2 for ; Wed, 26 Aug 2026 16:05:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785515; x=1788390315; 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=Q4+F4DrSTt+i0FxJ84+DMWU3o/oO2URpTpZf4B4dXhQ=; b=JX4yCNKjLmChmqga7y3mrfCXe7VWt3QRCQIrDlVL+CCeukLUyu7inLGVY4dVeIMmMp 6c4JPSKxdRSLSjkmgV/h1kgTQaoKiQAGdxmzIyz0miPTmBPKfTNdoPzAO4M/vCfWGNZQ y2AuvAz3E0cpgM0NgGfMtAVDHg2vYnFdMouiqEDdEBrUz/lyDKOJrE1K1JRsfywUr+e+ wfnZ83f8MwtdhAJxl2wvjq9X+Xz9OJocXIGMBaK13XZzFecduBho8tlul+ydSWeVOFd1 dr8cK+od+YX1CdxsExzhOXxdEuruEj++9aAR+IVpMlbkpx2yQM3RN4CCPVDf8rZPUWbw wMwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785515; x=1788390315; 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=Q4+F4DrSTt+i0FxJ84+DMWU3o/oO2URpTpZf4B4dXhQ=; b=Ye9wXfDntQcwKfXWvsX5S/tUSbStM3251Po2Ld2tlQJCyDVk10DpDMwWRlHCBsJSTk Xu/n6wqRG+KZHMK2ooIfVnYBP5JXh0iQilH2Kh8EiVl+aunFrPdzFJbxCanMHTdhfuSU zGKG8CELm8nTQ5MM+p+CrUWePY+yyLuI4gRs53+cGixmljOImePMMgyJ6EEWhKUPvT1x HW5iTfMmzy/IzsTzhgzUW3dz4Z0wjxs0tiOrR9H5kOruhVDN4/ec9bzBcqOuhXT7P7Uj 5XnTCY8mevRVHFU8xzSMao0mqYOqkucjpaoEIrDlXNzuUkhmpKC4yLHwhazh5Zczm0Gz G7Kw== X-Forwarded-Encrypted: i=1; AHgh+RpiPalptW+gHgIQhszeappNjtcKB7UZWa/MOk36iWh1yLqRvu9rneR+nRc5Bx76CyybOoIjlrT+4Ohssww=@vger.kernel.org X-Gm-Message-State: AFuF++mjju9D4xUl8xMvbhLEXG3gHSnFiDiZ4JFH30/GSyT9UXbC0rYX cdf4n0aEq+F8xYPlbgUQKnPTc0iBi+lsiUL4ADTso3GTjbEuvyxF2aD/450sUNFmg2qyBX2G9AZ Wadj88A== X-Received: from pfpk15.prod.google.com ([2002:aa7:9d0f:0:b0:848:2e0e:62e]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:c96:b0:845:ce5f:c926 with SMTP id d2e1a72fcca58-85372ea6666mr19057054b3a.1.1787785515178; Wed, 26 Aug 2026 16:05:15 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:04:52 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-2-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 70E6C3BB9FD for ; Wed, 26 Aug 2026 23:05:17 +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=1787785521; cv=none; b=pbupCyQ4vL4XLRYr29lKwLKC9B+NZTOAyVB1VpvgdxNfoDQd9fklVJmD/HbjGlhzwAgycvraNgyRkfU5zbX0ixlI7XLpu58WPaNZr0ocePOdl+OggVae33di430A90H/1EwIJlAGfWwsKTWq9WFVAPBsmLF9iq1bJ28cNmKLPDs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785521; c=relaxed/simple; bh=RtpwpC4+8FlGBnxPYsA9ZpkBEAbkRAXGvd07qy2rIzg=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=qDT2bKWkocGDHdM4NsVvzGt2B9LWIwGX4jZwB6+V7LbKB2Laghd4OMXsLngw+l11wCSSjhB7APwb5OB1cvMyh0v+DAK5lPTpFSYD8APbHQtEq7vdSJA7Orx5eNS5Xjrt3WhdbhvAqoH/lvo2243i3MmAwvhlv31Yrl7C+PPJwrE= 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=O480vD8C; 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="O480vD8C" Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cc1c1cc5206so1580321a12.3 for ; Wed, 26 Aug 2026 16:05:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785517; x=1788390317; 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=94pyTmilRwp00Qy5PlO0fIgUZFKJ9TnrjxcqGpSFO84=; b=O480vD8CMgbDR3U5E0BbN0bxf/zWZpCiQaawUs7iZTSW4ULb+TGxwdrwfGX9K0PcBB fu/FXWphF1jcWL9NraSFvA8kCNuCjfIZ0GVAcc/7pzAxE7EPh/eq5JfxGFQ0tkokqTQe PnvPAoWyPL9fSJwCLarTZjcJXNL7o5dd/DbLF0ujGd+0pngB264MjEBvb4IDL8hiC369 Va1Avs4vQSa0wIF3O6t85JbcTfNlFUZRjfOO1sBtn3Ker1UUTO3DmjRtWCcI8orM5FLA N5QxrCZ9YtWw1cU6842dWZZgyvQYyRrIR6jBdVnoejpUuZ+q5SuJK32w6sBgcO9FZPfy faew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785517; x=1788390317; 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=94pyTmilRwp00Qy5PlO0fIgUZFKJ9TnrjxcqGpSFO84=; b=CCHzkmqWKEPRJDKbIrYIOjy3QOCJwotx1JRFcju/HEDf9FNRdVlks8uZGGT7RgBVKj pRfjpr1/Mqg4tlZKFwjazfumfThwPlg3NwvKJZbdGj0N0Y+IolALp2oP1dEKFqpmq3Ft BuELlrfUsonUNHV5FVmNUnh2HvYZPuJ09EecynI93yjrEmbT2QWQcJ7e3cIrnW+n0jH7 qWBdLw3FMPDSnHmta53gJc+CtYHTVBCZJ3arLeAQgbW8KzAV+lxIfVU6uK3dCuteh8Kz LyjKs7y1cdTg6M4+zbPeIwpdt8jvLQz3lVQCFz6B2DWOEz6s3yepAXOXgHnaayJOBk66 o/0A== X-Forwarded-Encrypted: i=1; AHgh+Rr2ByMsdGJaVRYikCdWCPNC+7JXNU/QPkSflXvsJf/W27K8rtIqtaRXJPbMDBo6vqAZZ0PsvcsBTt0LJyw=@vger.kernel.org X-Gm-Message-State: AFuF++kpJHDhN4OwYvuvAa+rI++NM0231+4EaSLS3pgb87uyT2T+6rZc JcszLyE6JZf6Bxhg1wNxt+8smnGILA9XCUJ9j+T5l9xQRGAvHh925W3GY9c3/C+R7wrB5rLS4KI fyKoKog== X-Received: from pgct13.prod.google.com ([2002:a05:6a02:528d:b0:c99:5634:7551]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:7008:b0:3bf:7bf7:7913 with SMTP id adf61e73a8af0-3cf8445170emr21857267637.14.1787785516420; Wed, 26 Aug 2026 16:05:16 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:04:53 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-3-seanjc@google.com> Subject: [PATCH 02/20] KVM: selftests: Bump the minimum GPA for page tables to 0x200000 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, Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Bump selftests completely arbitrary minimum GPA for page tables from 0x180000 to 0x200000 (LoongArch's minimum), so that LoongArch can use vm_alloc_page_table() instead of open coding a rough equivalent. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- tools/testing/selftests/kvm/include/kvm_util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index 5a7a455b5387..70906a0d1003 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -175,7 +175,7 @@ static inline struct userspace_mem_region *vm_get_mem_r= egion(struct kvm_vm *vm, =20 /* Minimum allocated guest virtual and physical addresses */ #define KVM_UTIL_MIN_VADDR 0x2000 -#define KVM_GUEST_PAGE_TABLE_MIN_PADDR 0x180000 +#define KVM_GUEST_PAGE_TABLE_MIN_PADDR 0x200000 =20 #define DEFAULT_GUEST_STACK_VADDR_MIN 0xab6000 #define DEFAULT_STACK_PGS 5 --=20 2.55.0.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 2026 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.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 564C73B1022 for ; Wed, 26 Aug 2026 23:05:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.200 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785523; cv=none; b=AjwN55i9jETESsCc8ogkcu2KWJttKvpT0wH331pudcJ8BElaSj3ylxPHdz8pdlj5tJy70sNUcL2vrY+E5EJs5MKBtLXDCBNfS3q3AP8v0gAQsjs2a1iBKoDHzfy8r665AZ/olY7EFaREyRpZjqvFu3Z+p2u/sJTO6bG8zNlmr2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785523; c=relaxed/simple; bh=ihEFNvdsKZLFllAnEFHRtIRIdEUMLnHYDqRmMESDYIE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=VbFmOUyJX8Cb8py/p7bJJ0zdzXoUTkTOOP4WZEh7nXFv6/9WU9/MIpq1DmJPXzJJz14nVa+GLgRzZh5+Unns0iZQupGAlVTIgultbBPOoUb6CNUmSp6JIJANEm9A/x6enuiHPkjZT0Y4YT6Q8qJg045lwtTlTGlgz148rlOM0pg= 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=BCZYcBcf; arc=none smtp.client-ip=209.85.215.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="BCZYcBcf" Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-cb6cf425e86so1899312a12.1 for ; Wed, 26 Aug 2026 16:05:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785519; x=1788390319; 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=7O76V/eNZATQNVf7YqKvmEoyxMF4aKASfVXbmkJmYVA=; b=BCZYcBcfZ/tL5mCWjkNVJOsNYsGkaN82JkaXgNnpZ7U8dCRxt6rMFz0nd+U3i86aaa zP+kbPW7W9tqIHuigHHnOowwb5hf3fioZZAQvmFMgBl9t95n/ISrdoG2LFHdf2Rr4Big YIyza3+8QA6zv9cB9g2DCu+QK66MhYeJDV7pFjLyuwpaCII2Ncsf/7Evx+TVQDrNruc+ PHMJSsExaua9JIx9FUgnWyStpNudKdt0A5mpqZK+wcczX2lb+bD1oe5triFur0GFs/PN d/Fi8E1ZMzH+Qtjai7fD7rXP9KMCMjouVR8tasiZKcQF2NrD74vGTCkqPN43GfYnfHWh SEGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785519; x=1788390319; 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=7O76V/eNZATQNVf7YqKvmEoyxMF4aKASfVXbmkJmYVA=; b=dpg3uRYextoTI9lEJOgEWtcmkaN/puXm+czttwZ+eeewhlHcCyp/3d9JhAZVIgZLwx t1aFx9mEDvKr17iZpAtrJdgwHhuCfwQYPDYJ5yu7xlXZEiBye1yyTR7f0KmPS7Lz5mAI cVcYFWG1vstAliffXJ2pZbkv2/XYU8UYwG2MWo+rsygsdBqOw6EVyGzdC1b4vVIjdbZh mqhcXc10soSgkU8Zw93fAfaiV997twvtRaZc+ByuyRqE0DYWIFylQUis29J6dFTJb491 0DRbSzmvyqgCFTJzCnMakzxTOg2xPl80LizPaX3jfWtuOa2Bh0P9T4hxNweJAlQ0QCqI AHbg== X-Forwarded-Encrypted: i=1; AHgh+RoUWFgqdcOilZqmKefVB9oFGkn8pjd1hGTEcR0YpBLR3w/7+Tl3aBLSqR0/ymdXJQWP3kBdkcyc0h6SenA=@vger.kernel.org X-Gm-Message-State: AFuF++nygRr/VewRH09w4cRdQaOIw5l75XfObgj5UCxXddDqm1WQMFuW EsK6kL+9SXHUHgJxX8oBthIPqtRpjZlUk3fJNY1VOlbfaswWg2g/3ibgvdvBTCKD5cCd+sh85hC RkfC2gg== X-Received: from pgby7-n2.prod.google.com ([2002:a05:6a02:6507:20b0:cbe:9dc7:9ee8]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:6f03:b0:3cd:9f0b:f788 with SMTP id adf61e73a8af0-3cf83d1ef40mr22810769637.12.1787785518656; Wed, 26 Aug 2026 16:05:18 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:04:54 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-4-seanjc@google.com> Subject: [PATCH 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, Nicholas Piggin , Ritesh Harjani Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now that KVM_GUEST_PAGE_TABLE_MIN_PADDR =3D=3D LOONGARCH_PAGE_TABLE_PHYS_MI= N, 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. For all intents and purposes, no functional change intended. Signed-off-by: Sean Christopherson Reviewed-by: Bibo Mao Tested-by: Itaru Kitayama --- tools/testing/selftests/kvm/lib/loongarch/processor.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/loongarch/processor.c b/tools/= testing/selftests/kvm/lib/loongarch/processor.c index 47bbde3e205a..fcd41bc6fbda 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,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, LOONGARCH_PAGE_TABLE_PHYS_MIN, - 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 2026 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.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 C9BFD64A8D for ; Wed, 26 Aug 2026 23:05:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.199 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785527; cv=none; b=QusjM1JQ5+GS1FFEalXB2YGF9nk3jqHaTWoWCRnxhIKVxYhcxw4PneC1PjLh/qi4VD+lF7VHHlHwm8+9+g1ocSgtiDUeCp1e5AHkK0euPtgd+UrNHSLGIPIYSg5om+oE4Tpj5SG8+EKFgERSCFnEJ8QIBOThC4qjUJKrd+hzuzY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785527; c=relaxed/simple; bh=qL5Msc494NJuKcmWE24vsAAjb+vMIGOu61VoiZ5Vfps=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=fnjmSr4e0ql9MmODBu0XTxfLsxlGSM6zn665qA+P005lahzFIhqJtBqBwLA5/l2QpEuOzOv0PgxVtQuJScfb0uUfwwUy4mJk+PSjhB02kTvPXbH0gu8Tiokb+hy8E3VtjCB0Up9ziqM1PvLLFZCHTjFVuV8k0ORRSNH1Vy4rAfQ= 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=LeJLFcIG; arc=none smtp.client-ip=209.85.214.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="LeJLFcIG" Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2cc6dd43737so21489405ad.2 for ; Wed, 26 Aug 2026 16:05:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785521; x=1788390321; 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=WTM/WcY6qCCrKYMU/D/LJJQp2BSUWxg1SxXMol0XzNo=; b=LeJLFcIG6SWg7rWGc3zC2ZZcIAXJ3Bepq7l0111sJ9JoGDHD/TtAo0qgEXMvYeasEL lfKqYjR3AOck0RicgN/9ltF3w5zKWUhDIZ595CI1op+VyJUK6SCjBooxpv8STnf6AzHo mI/k/NG6CvXm4120ba9CVaH/YaoSCiYlnOo2GCQXcDlzJA3hxDn4+UvSUPAe/CGkS/EY EEx2gy9qyB7lZCXkORw6gBsixkHT4DVRil/1ZP0e9cbF4Vu4GB9vxJfTW3D/r9F50QoK hdB6nEsls7hfdHxmzUq20RNvuX/jz5mgDuIZS89RhzdMe0VkEf1/5h669B/msZdTrzfY CFWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785521; x=1788390321; 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=WTM/WcY6qCCrKYMU/D/LJJQp2BSUWxg1SxXMol0XzNo=; b=CR7o4dFvznNk9h1uLJQK3HyCaGn7uE00KUHLpguoGi+pzY6Bs7CTzAPBNGuL2Pcm/T /6JZyWUmj4lMKxazXheckeRPzAu9MzSoljeQih2G3c5Wc+tHIgZYHEOC2m5QPZIZPsB3 p00zje4EHX8zSyS96vcD5YouM5mw3L7tZhWrg2rbqdgQq068Y2dVSDa8Vp2czD1ybLHN aoy3dflCPEGizj8mdd6nONOWh0N/qv//1vkyaxBH4RUuPZLUrdKdfYHUFDXEwXr5aKXl CrYQjEcpLu8aimo2uIra8/WBWdHh9Y7LvXsJ0MeVQV/kgnQNttpSM1fC9+Cc5Ak2eHh3 3RKg== X-Forwarded-Encrypted: i=1; AHgh+Rq3GYy9B2r4ARprZc2BvvxdDijUqlORHp05Ytksr6x/6E6DWs2PwcVNMwCQjGrdqvME1zMyuXoYTL5zqTI=@vger.kernel.org X-Gm-Message-State: AFuF++mAs6IR9eghXLYppy6KeSTeUudMitpBn5ree0ArIVt2BI195QZ6 YhPVFwgBFVmgXFrCsAoBGk+RsocVQ81Ns4pnSKNnbcwUvtjTGoNxnTcyCMk+bdJ4bahws3fuI9t lVEXZeA== X-Received: from plbkh8.prod.google.com ([2002:a17:903:648:b0:2cc:ed0e:f302]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:f64f:b0:2c9:fb11:1bf4 with SMTP id d9443c01a7336-2d707aca8dcmr198971375ad.7.1787785520801; Wed, 26 Aug 2026 16:05:20 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:04:55 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-5-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- .../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 70906a0d1003..b1c5597b1def 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 B96DA3B1EEE for ; Wed, 26 Aug 2026 23:05:22 +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=1787785529; cv=none; b=Rmd+ZkHTN6RK+sWDJEhqq2prw4ba25yxwnj4jvdCzdNesnJxdwvYAceX0gp2fbjhyPWSkbjOl/j3z9PY5Ta50yaxuIsRI+UrJ6wXWBqhJzTCqATFYfhQ9ZkFwuKk50v1kf4tmQlwP0oCknVyyk0YgSuGmA9RNHu/Xc+3nL0eJAU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785529; c=relaxed/simple; bh=y4hPkYfBvuqhrsyV+0h1s9zlONbWKUfklZ+Vnp9FsNw=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=pjz7N+5XJXUY6d3ugmGY04ksi53qHkRUzLKnHmKr3wVRW0r5S8BLDi9Rc2oOGH39gtN9N1IxaVQk96bWQNOUGPqNkYKgONaLmBKLE4FiMpPILy6eLnsrhOhF69AzoJh2AfU8Z+Tat+OyXUt75B4LaOTIKhlPiGAgjTcxLdJJR+8= 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=rnqJxyth; 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="rnqJxyth" Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-855315ccb64so26758b3a.3 for ; Wed, 26 Aug 2026 16:05:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785522; x=1788390322; 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=YWeAmxR3HdkD+eL/iYkERMpi9Iin+GwZMkGAjZk8hSk=; b=rnqJxythff8+njTVWJdgihTMlFezsbkno2LevcVKVVfiERWIADro9Ml8Gqvtfvd8ps RBsZILSfru+iJ99WcrE518OuN41MBd1QA7B0zqdHcdwLyEd4tsFl+0BL9h8mCnET7881 TyNhrpZx8XPrT9e7uM5MemoErJlXkKuGUgU8j6rSu45d5lJE+p8wc4kF7c2cy8MLgMHG Tyja5w2elAmohBB6v9rNSg2ThhkUQTJV36R1R6lrmSLXaDKJAmRGgvnVBQJ2l/2EMHt5 kZAoV5SZGKrB5ET06WTRRFL3udvfR49SMUXGKTO29XMotwys6HWE14QW33RNKjxKjxwn 3A3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785522; x=1788390322; 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=YWeAmxR3HdkD+eL/iYkERMpi9Iin+GwZMkGAjZk8hSk=; b=OQasBxCaHsmEUQhDUYKEeUonXFT9DlV13ZBiUQK4bIpW8jp9rIMQQcIhhHB+XbBiCG 1zscF0uMPT9lAgqciqKKH1IwC8EQ6LVvuGsM/U7Y7fR6OarHVBrT26IyVz6pJq/EkbHG EmfFNEBti6XyPxV2efBpsslIj4AYFgUDzn4sGpZ8fQmPMWlmv/eJGbQ60rwqnRclhsWa 4mJ301eYLJuwACNV/XCo9n0lIX3VDvXlA/P1gSXj0GR+XqG2D5whNOUnzb2TctqmGS/+ WJEyTj8/jEXeoRruWjaYeAlWhDQOTje/rItfbWddvlyK3ld+5JrM5RzWfnlXJu9XRMXT 7+Ew== X-Forwarded-Encrypted: i=1; AHgh+RrxiZJBnvACfT6KUkVWQ22WFB/MSpqoVbnUg8x6NR2lKJdhMfzDcth1uRbL/mVkyPnItuuqymTXsXp2uJ8=@vger.kernel.org X-Gm-Message-State: AFuF++kQ5PRvZWDKmSnQt6c2ejBAY1RrBOY6+HXIdiVIEoa8ahltNbhT Szj7m6H1kUutlCvVHgj4DvVrjcuMvtpYPg8yESTGr8YBqLQLjpLq3Dvq/LfSsVRNs3Ov/rtqXes frfVdkg== X-Received: from pgbaz9.prod.google.com ([2002:a05:6a02:49:b0:c85:a528:228f]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:c916:b0:3c8:d3a4:7b40 with SMTP id adf61e73a8af0-3cf7576da18mr22519138637.2.1787785521893; Wed, 26 Aug 2026 16:05:21 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:04:56 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-6-seanjc@google.com> Subject: [PATCH 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, 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] Signed-off-by: Sean Christopherson Acked-by: Gautam Menghani Tested-by: Itaru Kitayama --- 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 E6AE73BF672 for ; Wed, 26 Aug 2026 23:05:23 +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=1787785528; cv=none; b=EWkZBOrigUykn7VL7G78T2xSYy9SPg8x9AY0Ocme9chVPNSHiwvZjNlY9Yh9yCWd6Tpdz4s9fqxSIqDK5eN/MuaSEJ786ENxPuU1LrO9Cn1UQR4atRLihWbh4em4uM5OONJp7WxN8TZRapXjXkzN5/BIlTQECayTGUw1e0kRolQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785528; c=relaxed/simple; bh=m3Lp8WMJLB/tampmgFN8ph5luv5ZjkhRNjnxAVae4ys=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=G9IbCIkcmTXa0MXJdAOe3f6BW5jI187diicbDBTtdSXujOYL2dDzachzw3elRHrPai1ipac+R237sjSS/t/4/yWt36OANNSQlQFtccTBhUPt4HoZcQ0t8CeGWikl2ZNlUpZdu6BZKGcQtUWqIEV+CGm12pw+GnQDABIwl3ApMeY= 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=VCsNvrFm; 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="VCsNvrFm" Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-84e048a801dso2173199b3a.3 for ; Wed, 26 Aug 2026 16:05:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785523; x=1788390323; 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=ypnv5ADnidmiHmk4i8NjwAmXQS3vAgk870JArYSva+A=; b=VCsNvrFmzwwOjwaZW6yMNLBk6X7MZvMd1W7hC74fgkPqVrRjfzh3EOeAKaILDgaYdN gg+EUnewdGXsrNw2zIzIP8v7drp4nJZnWdKQF1aNOdZw5Z5sxYA7AbKFQZiAwUDGuFWX tEaEzi5pS6OiWjUZjh6eqrDXCUsgxhKZKqIL6VYlN2ZSRIdUPIJs+7YGVWG9QjSKT4OA RedTabCTtaZjqyV7HK71vKy229CTPbXtrdhXm/j2og3t/WJTil3G12B+S1YNEMyS4B8B +baf6a33VHoeWgD/PbEJK/QoR1wO8sGmNQGGRhvtN816zyA1M+Zi5vvqIukZHJ+OTQvn R5SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785523; x=1788390323; 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=ypnv5ADnidmiHmk4i8NjwAmXQS3vAgk870JArYSva+A=; b=YL+KHKsUJXTthGh3a6U3p1BPvw6nfSlfPiZQRpvMdHUBI19gtjB57nThNN1RREVT+h IGgrzUmuKpFgSBYJCBZdzlL+GOcqNvSmZi9FG8REpQPgCHo+z8mPeckeRM6Rhw3mnMVe y6SGRZzxtInzlvIwh3VMyiS8G8ktgfxw03ZdMIUMOjS5uzrh5EMycJ1WKDRveIIMmGgG BRLbgwJzaEZdTfjR3FMq+aTaxrU3hke+c1/N7/YPTvAzR4tSKp6VUkJ+sFEli0+CtisM gr61IPYovuuQx/QNSPdyREatdiDYY1baHL4lQ4HHuMM/wJIjD2CxeAH+9JcYeirAnXs/ nEBg== X-Forwarded-Encrypted: i=1; AHgh+Ron5cmjxaApuz0WZG1ljC0YBOuVqqPjmUz2/B0zVzBjzXFrrQpjeR0KHdnoFniU5eWI/K9nnaC3KVh0yVQ=@vger.kernel.org X-Gm-Message-State: AFuF++lBZjxPhItuEITSQle65LY8W7vSXRRdEvTR0J5pLrP/budm8O4Y hm60r6+ow7161YYP9m6Rwfhncx3dDtIL7Y8vRsC9u9/u+0jMtLhxrh74O2cUB2hLzz4hMKSuEKE jGQV9WQ== X-Received: from pghz21.prod.google.com ([2002:a63:e115:0:b0:cbe:ddc9:c670]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:a110:b0:3c3:33df:4d9a with SMTP id adf61e73a8af0-3cf7596a65cmr18790428637.1.1787785522980; Wed, 26 Aug 2026 16:05:22 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:04:57 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-7-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- 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 b1c5597b1def..96c8251c224a 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 2424B3C4575 for ; Wed, 26 Aug 2026 23:05:25 +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=1787785529; cv=none; b=Hz1gGAcquBdFMSvckMbS7F34sN+4G+KM828vQ6A/9MPaVt4fLetWkIS+0emWQWRm0gPSfz0fVivjtcqKYx1/Msz20+VBKuFVR7XQTb10detxV2E2wlqhJ2xxHDjI9mF5PKmI1jRU1qHL2w1FAiG9FaKt5mb9CwpR3HMBaOu7A6I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785529; c=relaxed/simple; bh=Og3X8RzZZC7bGK7N/Qk1HYx+tidEH32/xLJy5bYOdgg=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=pvIQaDMRtTN0GH6pxV8eK2zNEjLhXuMr4f1CkCHJj1XYLNa47MnBMLqvEv9QjTfUQIqrQKy2SBwG4dOnFGriR9FUaCMtIhmHv87hxtWJ8b3rM1h0K3dtxUCeTQmLTtHdvsJp0cmHK7Hfz8+yIyqLULme1s0cbCOLY3lNdzNfzYU= 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=kavUWIoD; 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="kavUWIoD" Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cbedb8673ceso1457786a12.0 for ; Wed, 26 Aug 2026 16:05:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785524; x=1788390324; 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=IKkZ5WMHTp+y0tIK6W989B7G/56Zjcmbkdc6Bf2mTQA=; b=kavUWIoDTGWqr9c/YVkaH+uI+hcMPgtPQUMpJ8AsEM73hHrb824uusFiJl2rwuF9a9 mkjFby/x4LqsnRINXJtD6nbzmc3HR3NQvJc/l17hH/4QZj6MlLy9IWktccoeXlLOeSsP DXMqioiXogZa0g6ucpUNFyNBISygmRkJs/DkwYehtNiaO5eYXtLw8Eyytlt2yuSC7v2y BrobfuC3THbYBfJMcCnOmOiBRAgZQipGa6tx570adb+GvwzR9+9rq7tyTbDOUQMNMcWG iIWQBoQoTH0p4xB9OFq4//LWh4eFd9FVSx5VY+uBUPf20PQmWN9zbgPUUmncgoKDSYuN uRaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785524; x=1788390324; 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=IKkZ5WMHTp+y0tIK6W989B7G/56Zjcmbkdc6Bf2mTQA=; b=TkDrxuldVYfl7onwJWWouG/NEWl/YsG2C8E3v/gnxYyPU4n6m65KGXhThchihlrjwu gVAEKEGG8d2oUsDFOXVaSrVCD2xT2UHkKmwDgFeLH4/zB9wZNfQZMdmhNs4TZKpZuNJj OjPcGioYYPh6p5i6/rQs47kBURruXchQB2UnbPwzhECF/F7r0mmzzLE0+AWtYUC+OZvS 0DE1Gkm9ppLNryaEpWhGSFZ9fMAgcd0KForcVoq3GkwbAoax44xmww6yE3eIeM+uTT4j LwYS2Qvp9Vgf4h5yFPg/zoBmB66pwTODkxllfrOQSFqPBgW4LLlorjUEXAB+hjbAjM96 QRlw== X-Forwarded-Encrypted: i=1; AHgh+RpUGdI0ZM3JRJEnw8Q6LT4upxgacMLmBhX+i0NYsZC38PzWT9PSDri2gcTD5zV5U+M9alX99Lv9YY8pd7Y=@vger.kernel.org X-Gm-Message-State: AFuF++kHJ7gKu6lZanWzGlitZvg9eeijB/xnRoBbLsqkt1vG1nsiGweK O0ONJq1ZOl4zlp/7b2thAK//y/PUHs9jexf9AAHC26rFM4anFUQT5U5IUATHmuQh5FMOIEdeEBf svGoMHw== X-Received: from pfwy20.prod.google.com ([2002:a05:6a00:1c94:b0:845:a3d5:fed]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:4f92:b0:848:2e3c:9955 with SMTP id d2e1a72fcca58-85371fa599amr18012291b3a.4.1787785524196; Wed, 26 Aug 2026 16:05:24 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:04:58 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-8-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- 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 96c8251c224a..2525c2cacc22 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 2026 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.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 32F5C392C2A for ; Wed, 26 Aug 2026 23:05:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.198 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785529; cv=none; b=r/tOvVRC9jACv09ho5efKqnGbk2oVfe0XpFNEZyyRIAF2EFrQ9yn/7a6o7hbZUyK4310L7nLxsJjquQWoIEBDFRrxHoQcm2bYQDrlFQV42sU8oOdPgtnMASogJJGbRtQJPpEWQt+zcYdQaESvYhccRTPtgFEi6NHiklw/KlYcBk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785529; c=relaxed/simple; bh=lDyYEYe/N4mhHSMmROmNTfj8SUYUweA+PUQNctk1vn0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=sKKRn5hdvDtjRLpBgDDydVHsT3Ma1902b8AVUU2MKkLo5gbpq9enMbW//PLXaNpfUuKwsOKEeJZbzgXcH7Ikkn4UUS71z3N26RTCSLj6W6msIUa8yNHEOoeYKXEAKpdzsF3Gsc3TsfuH23h2vP1E/0mzuE3RYdIOaSyavz2wNo4= 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=BBtxNGxg; arc=none smtp.client-ip=209.85.214.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="BBtxNGxg" Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2d70d8839f0so1301365ad.0 for ; Wed, 26 Aug 2026 16:05:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785526; x=1788390326; 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=nkGDVNWv+E37i1qgZxGANcWGk8EcR4uX9VZBG0WIwSA=; b=BBtxNGxg3krk4mAvhxSgY8jlwiBzzaX9bWxm9jpVEjAh5jaN+7aCYp4XXze/RyfFTN yx25c6MC5q3R296HPJe5js/bj9Pz2x1q1ZN0Ie1k6vru+tLXhDMQyTrgwt0mySLTXZ/M D7k5fPS+cGu+C3j5jAmZFcbpkTfgqy1CqJpqom79b36GVcUkVbdTFhgCiJ6r1XCFaeYn rR+q52pzw+Zm149LaeMf0OUo80YBWgPmihvzG5975lK6PSA1awWeED1bxX7cW4POGNSU jbg7KvF/YgZcnT1sLa7Jq3/TR1pwOigdFQxJcc4CFaC/+cpRHFkc4Z3627vhLDs4DMmF /v6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785526; x=1788390326; 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=nkGDVNWv+E37i1qgZxGANcWGk8EcR4uX9VZBG0WIwSA=; b=RoxnYDRe9AAdj73SM1hG5Wf/momRv3SmPIxrMwz6aXgmW8YNHNfty4RGwk2UT4x037 2AWzKiRVwI+/0GOc7w5yqYREeAWRm3YAVtpeaNqZeneTTg/m2dG64FMEzHnW+6Sro5HI PH0GgpGbG9w0nPuAzx+GTqBdUDzLedvXryX52GwBbcQeYkN61Zt7uCF+QWnuz7U5AkUK yeBTTOoX06Tqpq1l4NUr6dpl6nhzXz5h+86oDbxwoIRLSfsi5/nSfuwi6NJzP4Y7BAh6 ++F5ilIAWpwRmyijIY3oimzEbFfU3deW6HhHyKOMbNNSetBBFhhERd3YBEUwY6a0wJnq fFog== X-Forwarded-Encrypted: i=1; AHgh+RqOjk0Ec2UJYZbDp6WyCwAE0li2ZHYSRwufQWe4DAfMBc7GYx8VIUgDn8c/EcPOyu9tTmIuYSp/fJVBWqQ=@vger.kernel.org X-Gm-Message-State: AFuF++kuN7B+Fa18GnWy5ZOJIZkh0cwC4pxvzRzXlRFrNBa+J4q1Qa+l d8D2l3Y4O6QACYKhk71JgBqFnWM0odLHXbcs9Qxaw4JqjW1JdYFuMI9YqFTXIdkXII2PolVLU4h shj0YSw== X-Received: from plblc14.prod.google.com ([2002:a17:902:fa8e:b0:2d5:62cd:db79]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:19ed:b0:2d7:107c:917b with SMTP id d9443c01a7336-2d7107c934fmr164734915ad.0.1787785525359; Wed, 26 Aug 2026 16:05:25 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:04:59 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-9-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 6C8413C0634 for ; Wed, 26 Aug 2026 23:05:28 +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=1787785530; cv=none; b=kIEL6XSfuMofoX4efl1URM2t+9UbDRSpQxuXAwOopL36ODVn7YL4jJ8RsM6lhDspS17B0bD7wHBS5G2upaEor77ordGxC/SfOSzqYD/ZCY2xTPWijy8cJ0OdqZ84hO0xJhQ+2jsdp2pUV3GNk7gCFqkgQU2Ul5j1pXrFSFJlOKM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785530; c=relaxed/simple; bh=3W6Dy3uU+CoTj5YuDL9UpW6yQwbWSR/ky+isWorLm6M=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=o5tE3Y4GE2RCl29OAsM4zC0Y0ND2Foptl3wQVJzbF4wIZ17vPlmal/rx49IZVARa9Kk2DLIhJuezPSmhY5H0gZwuAMwCpI5j3vQmUrTjSpAWYZLcqu0VVBaZYlVqe7EX2MuZmaWfkwYKIeCwDwzfH+OkbcCVvyk5mPr8G9m7bCY= 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=fAyDS2cI; 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="fAyDS2cI" Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-84e048a801dso2173287b3a.3 for ; Wed, 26 Aug 2026 16:05:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785527; x=1788390327; 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=O8gpVGaSftwEDfNK3yhe7P+6kzj8cM/DRvM4h41+9U8=; b=fAyDS2cIyN8Jch/7ZuCo+NVdMolAqxpysNMNhH3pH8rrbgRFvyJqDapDr5apTlsuDU ZZoM7sX4gEWO8FDis56W4mHSXaclI13zQLyqi/y9KBXhb18BNyrzpFTsF+L1kSJxRiep +pV680T8ImHVpUzhbFjdXnzEuasGkRExE0Z5jeQZMeiKVthpovyFltOpl2P+3w5G5DFU 9mKEBKPCnqvAaovV7js8rawL4h/RnMzOA1g/foCWA0WuM7vhqbEME4ljFgAGnCYmLOPx EFPA5XI7dZLrA1z4RN8LrTibj7oUzmYAXEBJSe2gJ99oKMlGayWO/M9eh/9pZD/oLZDD 42Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785527; x=1788390327; 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=O8gpVGaSftwEDfNK3yhe7P+6kzj8cM/DRvM4h41+9U8=; b=LZG7+5+/Oy379sYjfvY3VhMEVi1GHCIumvDGPQvKqVvjM3JQG9Pu+zZbgnoXtOJkAK lLbIAy8M9EG1aSKDHGkqG0kVKAymTaWvp8qLIRo+tLZ0FlPSiPO1cLmXj0SLSf8hue/L MM/Iyeq76UYojASbt3WwNeewtzVFRmBNya7yryDiLpWvLM+NOD/yRriPnaVi7s0i7OKk 6ILtVv2WNVMzdVKOp543aZLDQtkgTUoSL0gocFoxSjIg9UQ4OpgjGIm2dvp5p4FsKpol 8twg8bvpw2Y127AWk3aFIFsvegsaLLiuRe3nnc+BMmek3M5DxQdfl3WPbvbf50rPoFFr Fw4Q== X-Forwarded-Encrypted: i=1; AHgh+Rp5UXNm6AJer4WqiYgKugVV8SNBdQi/CadCbD1lmU+n+3b8/x3ofUPgHtnqhuv3JKhveyTQhYEbPDkOeEo=@vger.kernel.org X-Gm-Message-State: AFuF++kdiYjOR6DhVI1y0rNKhzSNxiLd82lSTtc0MNZP8qDPAdEwZwGU 1L9hsDlBirUKgPuYjizOTSJTvNVL74/330ay36OlyJDkI24r4la3m58UDNZOjLFWVzoWeOiAiOT ZnDatgg== X-Received: from pfpk15.prod.google.com ([2002:aa7:9d0f:0:b0:848:2e0e:62e]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:301e:b0:848:34ad:3d6c with SMTP id d2e1a72fcca58-853750ccf97mr20523023b3a.15.1787785527096; Wed, 26 Aug 2026 16:05:27 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:00 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-10-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 9686F3C1970 for ; Wed, 26 Aug 2026 23:05: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=1787785531; cv=none; b=o+hedULVr6Pvkza5Ks9dvNlPtlH31zFOTEAMZGKelUJ4leTR8NIc1ETlhpiyGZ/A4GSpje7lvHKs/FXBXxX+vwbSATUab7uOkHn8IjvX828dSNaQ/pjqXUfLMO6iPw+SJWNLOoSGI8QWwDzXZqAarxT1ytneewndAg27adnlieM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785531; c=relaxed/simple; bh=huIHcszqZLipHy5mZfQG8RPYZOue7MV8WgHvk308HPs=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=DI/Zq1OhMYf7nADU4nEOyUabx96AFqET0fu+i4U+rZ9awUA2IJUA4fW6wprcK8VHRNa4/KY+lPRAn/z4iLYgFaeoKwANLooOqO5vtmGkE1UtYq6en1uHkWfcrE07PrSuM/weNNyqzwxwQdcsjDKhoH4D9OQrGSFFVrdprprEhA4= 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=tVOe7SHP; 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="tVOe7SHP" Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cb48f41343aso302162a12.1 for ; Wed, 26 Aug 2026 16:05:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785529; x=1788390329; 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=GZ4MVTLP0goD2ecS0YI5oUFT+iv0vlU/KAAezn2Wgnw=; b=tVOe7SHP37etwWpHoYSQhknn14vXHJyY646AToTqEEgioVdJawL7xdGtzd0xxdlazA 9ENTXzU2a+CKDf3r8vja/Wi037mUl8YKEtEr/izpXqpHhPsiGvpNSOA/1MDupEpCgsWK hMA9kJ4C7mWgdKH5c0k0FnMlXhpbMNMA5aPf4dSLk5IcUDaZhwQle8Qkv2kckSxXfv0I 5mRe74JgLWWfpw/AeG1fvkeqlup/MVPxyMuMi8y8qAbX1PRVGG+8O3HqUF6us8p7WBwe BtK3y3AYYMfxCVZGxron0CrK3DTwRytIGj0rhz1re1Jodb3Wgl9Td4SSOsFop8lBdc00 6Xfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785529; x=1788390329; 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=GZ4MVTLP0goD2ecS0YI5oUFT+iv0vlU/KAAezn2Wgnw=; b=Vae55dMJ8hyOe63+gLZI/t8G0MNoFCmFEEkMfo+Y+o806yUEAWhi9thzRc9qpi9EE4 6OyHqTL2X0VU3CNl4NrB07yQ4Y+X6xrL8bbXmQq9s25UeE35BJoWyvFkDaA1W5hh8I3n ZK77Tl4d0joQrbgk77gJ7oa2TdWHv8+EeXk7j6508ke5CjM+OrZTPGDyX0Mzodqsnxt3 xgHQn2fXawQknIsV7mooS5i6c6CM58shxgUO6qW/O/5lw3Rfu+IIr5ZKgg4kcZEovz7x bkEGTGOkeFryvKBBG6VkRbawd1vkdpYfMhBx61cLG+hMre+KUcruWqVLyj84qsUJpFYE cckA== X-Forwarded-Encrypted: i=1; AHgh+RqWVQhyBArrTfxIzs92bJANq6YSpFJEdsQUO49Gx4qR6Hl1aLbnBiUf2kVlpVK2O+YAXbEBYy6pqIqvLzk=@vger.kernel.org X-Gm-Message-State: AFuF++nOOspcL/JGj8xms7Oal2UvRWKJvTM0oKM8dHRN6gmuM4kC2pfA LA8xdny5FeCMElrPuNNwiTbs3QxbXIkPCOjDeXr7r4uFZ6eB2SGE/OK0dU/aKal3/FbOQGwg35M V2Ui7LA== X-Received: from pgdt3.prod.google.com ([2002:a05:6a02:3003:b0:c9e:41e5:2eec]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:4388:b0:3b2:8674:9830 with SMTP id adf61e73a8af0-3d0f6d2abaemr2865016637.14.1787785528406; Wed, 26 Aug 2026 16:05:28 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:01 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-11-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Acked-by: Gautam Menghani Reviewed-by: Itaru Kitayama Tested-by: Itaru Kitayama --- 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 2525c2cacc22..21354434de0a 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 D267D3CCFA8 for ; Wed, 26 Aug 2026 23:05:30 +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=1787785533; cv=none; b=nGA5Ip+7E4BxRC/fiJQHgL2d53ZMg9MwFlRZYskkegmcmjH/+G0nEJfdW4djoj2EN2d41RCInVfXNEBbHNY95Fuj9eL/aQ9rY7qdLo8/OMQUHVJ4hR+WBLQmZDDyTIG4GmsImLbQnuD/SptbGXv05lG1hWQHlm6ssDcxj2+iLS0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785533; c=relaxed/simple; bh=2YaoAsq23eoCnu/IpgcXayUjh+EDns6Bt+cLNLec880=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=YR2EjsCy8jMmUERVd/rJ1jNa+qOOxFbfw7lFBcfaWvrnjG+0vjkvJOL9H4LfO7MAYHs6c1EsoYAny/25ov5rE/ox/yenDDHAdwK4c1WjzyiXZ+6weijFmFXmVFwLl4lii42chzUCi0FWUdEst3NAFT23nt6wPLTeMopUiu40baM= 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=iYDshrTe; 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="iYDshrTe" Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cc1c18c775eso410644a12.0 for ; Wed, 26 Aug 2026 16:05:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785530; x=1788390330; 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=N89bCfABJreQrIt289fAG+G+a6K8qwfLKTGSVLeSHrg=; b=iYDshrTeQjC3izRNpui2dNerADZezBH4/1z9fIeze4sRRi22aEaczemxWsw+SXmKyO SiQLGd8FAFPHG7wLyj3mLanHVAGWrDpswOUD9h9WlyVGk65ZMGQurqzK5vYNl88nBkl8 WqZRAWXec/NUudV+WEZ3o2jue2jRVZehaSOyVxjCta2Od1k0e2KGDK2DC62J3uOVp3hP Uae3SQK8QLPTMOBK2NgDWTAtA6P5cLzgmWCAidtL87Q7u+8okSo8z2L/Nyc/AiVAzzRe CFJ6KA1D8yQWmv6/Hm130V8dK94qshy1paw+67WEF53JwETmXC3xGh9QtoSUiSvo7hVe 5VZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785530; x=1788390330; 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=N89bCfABJreQrIt289fAG+G+a6K8qwfLKTGSVLeSHrg=; b=IGop32l7D60IK7EehqdNuteGeBZkqNw0Kjb+2PG6psHwGzhyqwZG3dm6kRy9jVJ57G fimPb89ckZ1QctkSeYGtxitI49e3MWDm72Hl3Jx/pdMVUVMqo0zjvn28S5c9OwYhSwAu 8OWxV4XA36z07lgTMhnhlVWk+oSkY79DP5TZUyKqKmx0UM//CMkKexKJ5S0RYUOr6Hrz oBck4/LLpVFJmuMwBlBs4OTFqyBCwSnuIO8fI0sl5vLd1z6JKMzmQxIsIxbgim/ueSee xkveV+buMC2u4G13zAKQnDKEXsnu6zBKTiE2JIwqVNBzD8Gq+2UsqE8FvPcHunG9JkxM /xfw== X-Forwarded-Encrypted: i=1; AHgh+RoYy7+KWRfGIt9vmmlkoOeH7lUEg+FG7XOxnYMaM6+dSIoUL2G9lvP8KGOAlMR0kTQTzDV/ixUXcPYyXuk=@vger.kernel.org X-Gm-Message-State: AFuF++kQ7RnlFOBzpBUB9r6aYVmBwDsR68LLQTxUkMFBKks27uhXmhHu tRYd0lFoHO+6XrsPKyJtHsT/JxahFpHDQnPOSikXyAhlcnLD5wgbFGS1I0jnrlEzbhSkNIn5S84 cFfVWzQ== X-Received: from pgkj19.prod.google.com ([2002:a63:e753:0:b0:cc1:517a:d29]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:4388:b0:3b2:8674:9830 with SMTP id adf61e73a8af0-3d0f6d2abaemr2865141637.14.1787785529701; Wed, 26 Aug 2026 16:05:29 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:02 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-12-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Acked-by: Gautam Menghani Tested-by: Itaru Kitayama --- 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 21354434de0a..70e77992dd2f 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 A37A53D6CCF for ; Wed, 26 Aug 2026 23:05:32 +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=1787785535; cv=none; b=XwYHGchzD2t8Jmct8u6DedPcZRY/r/n5XN/0/88WOJH36bJ3IWbo05hmHvDQBNyVWEOpO9plSXKqRPjb1QkG9uGm037nTnxMX87uw03dKccHJvBhD9EzphYSpFt6spH4PUIJtIyoAByCi9Tdh9nlkN6Eerq0Hdj4jM5rwaqp90A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785535; c=relaxed/simple; bh=av5yiCSKVQdtOhgHMWl7iQdf1C3zvreKT5M9Cp0nLIM=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=cnqjCTOeJZkoQ6ZwGsZl7HQatGJHd+aR2W0KNcrFsZIawkDJOQb8pdTgEOvYuLXlKwjSJiwAy/wnkFE73iO9pbpoUTor7h5xySCEW1auOaXpnNe9uAfHOria7tPkEC0dlSG/KFJLjSJXOdjywwIteH4VVO22bdGDpGP+eBxXJJA= 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=mmpUCcqe; 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="mmpUCcqe" Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-855315ccb64so26954b3a.3 for ; Wed, 26 Aug 2026 16:05:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785532; x=1788390332; 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=cv4l6DetpbfnxZzj2chSUH1uUtI9CMqirdy2q6HV2z0=; b=mmpUCcqeOXTBHIgqdhAZZgOJmF/QL7qKTnYw3TrLunxDFxFMT917mgLyh5ICyyhlsL 9YywEzw5yz3AAAlbgthvfpfh4tCzMSnSHPknLNJfKD7/xPVBrjRiPbKQoROEMLlx56kh oZkMzaY4cjY1W65prRIBdq1NBRA6V4iOZxy0XFpKaugFI570tNog2zZzg0BXpvXB2E3f HMp3nzhjSHQ8fCeISIEGICFMaWCsrU8IVhCpgjC5+Bnzi62dKL/O9c0+3jZGEq0Nbzga slzqBVQurhHIMAOMuQCDK+ictwO1uzr2V67PHuqctbMumzen3emDw83hNILkr011ghSj rY+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785532; x=1788390332; 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=cv4l6DetpbfnxZzj2chSUH1uUtI9CMqirdy2q6HV2z0=; b=Jeog8hbxFwHeZCQ0rpsZkCAUy5qQAC4veKc1XXwExO9cQpbB3F1RwKiTk8IxxCfQbf zlg/j2FzQV0bcWII5deNM+cBHnFsS2KCrh65e0iTA2TVpfY/2JDgw4ttXGU2ZtFOOFKs Q91ISwDf5DBnNGln3eixwrlJHpW1HnTW/IKdbRZSr9Z/ewQ5QHblI5+lG3OheLsTISTg aCEdQxCKnBSEpEVSw7RHk2ntj2++IBhZy1T2yELpt8MOdHINdgrA53dYU+VrzJr/4dIg 2NXNi6Nt+ulEBzpWhN4j0iG1aWRgRrRalVlM2B8Im+tCtAzn3gxnC2cAIXGE0YQVSB9y XDfQ== X-Forwarded-Encrypted: i=1; AHgh+RqC+F67YzaNVPYzvGShHAQNjZtKUMggTuJRkQTQ/EfsrW0GXBKOSH9pCDESpAMynb/QUJjfs0waizKKsiw=@vger.kernel.org X-Gm-Message-State: AFuF++m88cwUnVm57NbOgd68UzCdVJuiHssj4JUmYY1wBasPJkhsAkOo XEuS90M9UveiJynCQU5yKxiJgx1G3lBip6G7aZH4RW0LSw6BlBZN2M5A3wbCJvd6glNlmj1ihTX 9CBXOiw== X-Received: from pgcq30.prod.google.com ([2002:a63:751e:0:b0:cc1:c78b:a2fc]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:3086:b0:3c0:eeb7:28b with SMTP id adf61e73a8af0-3cf762865f1mr18455761637.8.1787785531152; Wed, 26 Aug 2026 16:05:31 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:03 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-13-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- .../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 70e77992dd2f..14f87c8a00ec 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 7714A3B8D5C for ; Wed, 26 Aug 2026 23:05:33 +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=1787785537; cv=none; b=GkTVZKhrf9heBwLeYYqhO2VD5O9KaTjkLPy8SNZ+XQYTfXpvAUQnNmDcRkNnRP4uQ30Kl1XdonPHV+4NLPxLkS0yjaJbUKNgpezvPW0H3sQ0+Ig3zTEDtATTOGnTslG9Os+l90ZldJpHalKj9wuB3+xd9T74eM61Xkn8gYRiLXM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785537; c=relaxed/simple; bh=vGtFww1PuxppHfkNm4nZY6ebSxcqiYn2V+uIZxWhPY4=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=WOnz1Satcw3XV1u1Ncu0yLIhTornq2CSs6nYTllasdSuy9mdjoVx73Up2gBdm7cy+4bWEKYkJySHLlHtCYH40cw/wzGTRUclQp/P/5//SGR3tO8vdryS5EA/uztnk9wzYIlRylmVzdANJxsXSjtJabCOGr73dmS3chNYm8XOmfU= 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=P2l9HRCI; 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="P2l9HRCI" Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2ccb687f82eso20151775ad.3 for ; Wed, 26 Aug 2026 16:05:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785533; x=1788390333; 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=Qrd3Eszpzuyl+ARXBwnNOR4mn5401Rmq7plszPl1Tnk=; b=P2l9HRCIZ49E5ouU/2RRSiJfPqozrJnMu7H7ShaVmQTq3r8ydTFeiD9+ed6AhlgVnT tSKBwUzBgVUgaAJ5jKw65PUL2ed/yuuj/XfgAbH/IspByC374bcCIdSO13QHSBV0Mv5e JNVxw6KKnNWcEjz2fNf0YHxEdAIPlie0xKkGAsPtBDbY2clTpjvUvunr2oe+q2ifNYw4 VMC42ifJxK6cNG9GBPJGPP//Kwu8oiA3bVJkQE/TU7P5kMH6kcMbYZ+v7ca2wWO1UjmB Kz/iEnSHwy2aTylsqFQD1D1CN4T7R59tx0btAJDTKDoz1w1MLjtIJbEeddlVB9AIB3L6 eRDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785533; x=1788390333; 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=Qrd3Eszpzuyl+ARXBwnNOR4mn5401Rmq7plszPl1Tnk=; b=D7nJtTECh4ojEosKHmzpYnsuXGVVRKLs0VJXeDFfwSMuobFu2+5y2RND5dkWKy1Icf 2Y/1YqBP0tWgJvtVvJM5qs46uzwU7W+dbID8i1FF4yUPb8vO4nvI3Wjh6mewneuYDrqQ 1R/pBmb3czsE20VeRw9Gmu4zeQwfPPb2KPGJif+v1A5WWiUWqsfdlTnhn+I/a2LTJQ4a YF0SbaNhbODvJ2+Sqsmc+CZLpegGWBxnYRS6helQIDDVz7GYcL3sfoaQbZhycEns7oGy fDD9ZnH03WOx1rfBo8mjpg1wDftcvI6uEuDU52efyZDklriu+BGB++fIm2JQqHvn21IV UfcQ== X-Forwarded-Encrypted: i=1; AHgh+RoGDu0gGtRPrtq7/ncYXf8tO/Q0JI/zU4eifeI40I+Zs3QfS7xgSY17R58eU9pyQySlk+pdhGO2Ljn6bHU=@vger.kernel.org X-Gm-Message-State: AFuF++lvMOfj8QjdYdy0Yx5QwXZQZPgma5fv5z9KYxndeefILNVMpVQZ rgBgUheEUFlSPJgJ23TZeKlb5s9pes90uob614oxBwSAYoZqtAeTueQtoBmPZ3g+L/cObClswKc cS8JY5g== X-Received: from plfn5.prod.google.com ([2002:a17:902:e545:b0:2cc:fd6e:8ff3]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:32c9:b0:2c9:df1b:e948 with SMTP id d9443c01a7336-2d7079eb7e9mr183803125ad.4.1787785532402; Wed, 26 Aug 2026 16:05:32 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:04 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-14-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- .../testing/selftests/kvm/include/kvm_util.h | 37 ++++++++++++++++--- tools/testing/selftests/kvm/include/x86/smm.h | 2 +- .../testing/selftests/kvm/lib/x86/processor.c | 7 ++-- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index 14f87c8a00ec..f4f4f360a10b 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -82,11 +82,43 @@ 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 are mapped to memslot '0'. Tests can override = the + * memslot for any or all types, e.g. so that all test data is allocated f= rom 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 +161,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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 2026 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.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 391973C872C for ; Wed, 26 Aug 2026 23:05:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.200 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785537; cv=none; b=VbKSJAFdm+hW8pg+iUAsdgmqatNEB9puRon9gFMtdVEIxtJKhls2VokrkQfiFUSWgFlSBrtrshYB8o5hMnW9xAVhjRSsD2AqFb29BmvIru1R7pQZAcEd73v9e3p5k2K/PRQNGgFmxtjyCcOL21U02ivGE50pVZAHmOM+PNVLpYw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785537; c=relaxed/simple; bh=3EDupCSd227h2crKQg33vyihGNO4uU9jZfUf3CJAc4M=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=qJqlVvCY59iy6fi9Egq/kGf+QUwPgPGJNZE0C0loSl0aMWKkMOrN1QiTnN7yMcT6NMAheHx8tIc8itSrD6y/lRV09Oi2WieHFfCVM6MTyIPkpeWbkDfr18lWnjcsinQGfdDhHMW0fmSBe2mnf040iSKcFbDZ7G5xH39Rokqa9Jk= 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=BIkOXX2j; arc=none smtp.client-ip=209.85.215.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="BIkOXX2j" Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-c89704da8c7so185098a12.0 for ; Wed, 26 Aug 2026 16:05:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785534; x=1788390334; 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=x6dP/JlGXbpMmzJiAs51wjG9zHvCLsaGeW9+h1tHon4=; b=BIkOXX2jAASkcjYVX8QhW1wuyS+btVimqn4kQtyTSc+5ku4fVoiyz12ad87RgiGsG0 wJb4hj1SOq8iMAH3QAnUPFjpLFgpQFxylBwBbq1ha58TRHasn+YSB5Dnxrq5Q7UDZh7U 4mmofcm72L3XjPD1LQukT48MwDIg9xFfDcm1bdZ9tSjg0sq6JlCI5dQ9TBZnj0tQoyGn NT7Fc5v7RD7NxSjz6awoF7o9ZYBfoAHc6+yFaw5s+luM6HszkqCvqelpnd+5v7VtK6wI /27gdobpSMAr3+94AHG/GFTpCX7v2TMrwnoUP1Qt8ujJQihXG8WAFO81Mw9di8FIIGMh ObIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785534; x=1788390334; 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=x6dP/JlGXbpMmzJiAs51wjG9zHvCLsaGeW9+h1tHon4=; b=H/gJTw5Jz4RX4qwVLmRpt21kcO/OqVONXSDYfnB1JKuYLOkZu9PhZfgwEAz/Wl5Px5 dkpOWe81afkP4/6MJIHdAscQzsUuWr8eyPiQi+Fj8MIO5vO4zqvuPoxK9N858vJ5ntXQ wx60xOsgzljq84xvpkNPwfcv6qO1jGfESgzYFMHy4InIqlU9Zh59rBeHoEQZIFkqnZmF HruKHdq28nHxM+dfzAwajn/9Z6ZXX/6g1BbUy0brVx3xqd9rLdd2/zT8h0vT81SqY7zu kjJZHYl68fv1o+zdZZg234OOdJxztU2aqcqP8cm3AnYdxFRoCVDR4yfX1Fkwg008C+aW 84xg== X-Forwarded-Encrypted: i=1; AHgh+RpZBjCT0KwIiTQ1oTzsUkW1lJ/P5NouLxHrJqRsSo19mDydTZpkGsiMDxhSpY3Zvr5+2CEcYOuQpvLgTT8=@vger.kernel.org X-Gm-Message-State: AFuF++ndmGZGyETxoDwkEuT5U4NSWKQ1R014g42Tl8KXccrstBpeTEI9 BMkHdYcRaTXIL8KuRHJIN1xnRV1jl5Fa8ByGW2Al84Z2esUX9j0xeQDKC40bReffFL2B9myFKzk vug2rAw== X-Received: from pgcv20.prod.google.com ([2002:a05:6a02:5314:b0:cc1:c423:3804]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:cfa8:b0:3cc:8f53:26c0 with SMTP id adf61e73a8af0-3cf86dd6053mr21955403637.17.1787785533546; Wed, 26 Aug 2026 16:05:33 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:05 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-15-seanjc@google.com> Subject: [PATCH 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, 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(). Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 2026 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.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 700833DAABF for ; Wed, 26 Aug 2026 23:05:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.200 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785539; cv=none; b=f4CavzbVLrFiifP4OklVLDb2/+wNe1npzVluk/v71I6u0aAe+Goxb3V/3KmAVTI+W/6tvQq+k52pqWnalM5qWM+/WJmNu/QhNc40pPXQYl85Y8AxivpZnKSncwPc9Ct8ukU64ftvnK0C0TGye80kMSNbQ2IxcnE+6y/t8J5YwrI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785539; c=relaxed/simple; bh=tI28fyZgaxj3QeLG5gsP33C411QZoueUpyjlmbF4icU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=SMnpeqhgcUMcAvqNmAoX7PUvhFHcA1UZ9nAmg16Em29HkdujhSp+gb8T3ZvGhegvSUMXSOohc+KGWrGagFuXEBZJdR1AVbvBg5G+40j5CLNig9OUvkQJtlJI3GN2+vV1+p70PUXftlpRU8+L9HlXnEX3zvKnqD9muvorxslRK6I= 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=q5I9kapq; arc=none smtp.client-ip=209.85.215.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="q5I9kapq" Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-cc12e8e22b7so3123456a12.0 for ; Wed, 26 Aug 2026 16:05:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785535; x=1788390335; 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=lK9hNNEVcV137VJifUj1j8FlSQZ8ZR6EJrURDAfa97I=; b=q5I9kapqb9yK8nj8zif78XTKNvR7cRMAEO63Q80D5+vLfYxgz50+WkSjui8LDHvZrK zxTQcfbJmt2lsL18Rs6Un9II7w8z42VR7AIWUJ0wmrYiYBjNTQ07RiKzHhI5MjPab50m NNl7d25azAXXXF43BCK6M0l2F+aXa3wFVD2XLHXUIEfEpSn0tbyBBe9bYtPMhTlfynfd rw1hLdKponHr4q8XGBARlAZbw94QYxnx0TuYFuol32hmCxZDoz7YNjj1BAY64TJXZ99q cTx7HgYndhopa127SteaBxNSkP3r/j8CImCc+A5WBnlnvcK5tqzBdXrzd+6Uc8DTRzBc eQpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785535; x=1788390335; 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=lK9hNNEVcV137VJifUj1j8FlSQZ8ZR6EJrURDAfa97I=; b=ffe7elcdQKQU4kVhpw4eLMc+/OInncV1QeImsMqTSyliwLbNX8w4w/ZFiB/RNHw0Pl RYB7AdfZz7XXSYf3D6f56LoOv/NMfaACGqyFe70Z9DZDPVnacynSyjbMXzJrmBWeXUk9 uGC1fas+2wHhYlbFiGf+JFWrYQv5QJJbBk5GxR80QwiQeE9SkSUdSzxOJ4+9vXWje1Ab ZqMypCg+q2LFBmDQRjkKyGYhrImfnVwMYN/7MFwEeib13HMvgr/YaKoa1W1t9JFRV27m WnTlIdgIkiV3KX0MphkUz6FAxp6R5C2Fof7wKFLcqllTMuGgalo1bkSZHPr4TLtq9+ro 5bag== X-Forwarded-Encrypted: i=1; AHgh+RqkbSDaW1grsFpj7sRPPG2tfhVRRk8H4IoZM3upoln8oAVa01ltMooVCLLfkSc2XsLNsZdrh2QWDmBxmtM=@vger.kernel.org X-Gm-Message-State: AFuF++kX8T2EWkXBQ6v1R/0BLujMawI81b7voqAGO/W+PRSOo4YF9i7K YJ+b8Vs2lJM56gxdOOR3zuyX4Qv92+T9jYPHanUVKY8tRnBM1qJQ8RbwPdlJ8U8ETySUIgNNOlY xfbM+Uw== X-Received: from plblc16.prod.google.com ([2002:a17:902:fa90:b0:2ce:9b92:ec60]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:d4c7:b0:2ca:6d87:cda0 with SMTP id d9443c01a7336-2d7079fa6d5mr157756405ad.6.1787785534676; Wed, 26 Aug 2026 16:05:34 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:06 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-16-seanjc@google.com> Subject: [PATCH 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, 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(). Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- .../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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 5085B3DCDBC for ; Wed, 26 Aug 2026 23:05:38 +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=1787785543; cv=none; b=Kv2yeax54UaKc+24Irp7c4PUC2gSNiK9XYX31rJ8lEuIxEjOIobaLgxKTZACjaI5O4k+v9cG/lFS6t1YDci15xIm8evdAPY83iSUTjq+rgkWHn8Pe3zZ1q+QcgbqfH631koWgj5lZ5SFrSYmlFbTLBvDlajhbL4CvPOkGZwHkRg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785543; c=relaxed/simple; bh=bJoLfA+0qEYrAo6wQU+rvnm+D1emBZbhqzRHzei4wo8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=ufhmeXG8aZ6M1wz5pc00Td9/TbUy5loyZkwmOaWdiMAb9+T7dHvXTbWlQdg17gZcIa6karelhU1kxHWn1m2ThaXiEiaHd19DM/t4KHtv/7XQB3/AVhjW4WrLSCojaJj1+SsDZJ6O//wezbo83mbi/+COrW5Gp70hGW/n8IzF6YA= 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=Hdt6TMzr; 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="Hdt6TMzr" Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cc1ca15334cso1492735a12.1 for ; Wed, 26 Aug 2026 16:05:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785536; x=1788390336; 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=GKwDIzPdhs+/PUMGOrKYMYY0J2+uedR4TSeAqB3q+w0=; b=Hdt6TMzro8YBvweVX7+w/z+fIKSQ7ElqVBim/Ehap0wuTPslK5oPeqcOYKVFr/IY7q 1ILaP9N/+CBBX6HO3OxuhG0LlXeJhre/r6Te4iVOtQTYNYz87pPvSBGUlxX208KhX3/E 57k/66CkxGG0levSLWUwUINnsW5ekUqyggaR/goOpkRmZxLGMFAtLX1JjPrLUjpL/Oir UjC6jmvjyUG5VwBSp9fICfsQKXLYbLS/+zSIk2e1xSvsLD7p27Z0nxl1njINbo2AnYoz hbovyaODYGir3m/PDEjd4881KR9Sz1joJqabMLc8eLeWlJsU4JBEl+JTA8c7Wg/wtHa4 FuRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785536; x=1788390336; 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=GKwDIzPdhs+/PUMGOrKYMYY0J2+uedR4TSeAqB3q+w0=; b=sGeFxvhyHotydlnBMQzRmmB1fpSnq+ET4h+HoaMKWXJqN/ZIi1fq3ZRR1GpwQQX5wS Xm7fQ+xGctiwNqW81nIZyYvgIXPytQKL+/ahAYL4MAdyGXopAQ8dO6R6pDxDvg/YeWSq DA0tiwF/UcSLhn2N7ZZ2ugT1wjEZFUeJ6yw7BnZh55mIixjJJzudSs5Ec6s4soYLecRc eMT2/ND5PIlMlwSGOYT5HyeNwTWScG8L7bBgnnQb1r3o/fxUM+FImO1sW0z9KDyPoIa0 CAdsaBHclRoZqC0Vjw3KAJaFNhkpHOuMWibSEtuw/wDedNyKBIjL7ZTI+OdpytNYvRDT 5hQg== X-Forwarded-Encrypted: i=1; AHgh+RqdweR6Fj0paIr/Z6kZazuXI/Jdi1RG1goaFm6WfYhW291uyw6PTmeiAP9k5gBF2xCEh3+acC1Xrw4aXAc=@vger.kernel.org X-Gm-Message-State: AFuF++mfYDMi3Y28DIlH30saweZGNZnJfyGMkCEJeQUG+q8LGQVtApNj dgNS+RRHQTiQuCpunmOjJ0YYHOZhsoaYONmQDAGrDJxLR2cMss2mdaZaVZuwtAh+sKPQx578G/y an79O/Q== X-Received: from pgcq30.prod.google.com ([2002:a63:751e:0:b0:cc1:c78b:a2fc]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:4a97:b0:3cc:f0c7:5999 with SMTP id adf61e73a8af0-3cf84348241mr20316754637.16.1787785535770; Wed, 26 Aug 2026 16:05:35 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:07 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-17-seanjc@google.com> Subject: [PATCH 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, 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(). Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- 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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 9B75D3C9454 for ; Wed, 26 Aug 2026 23:05: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=1787785545; cv=none; b=jTcYa6gHvlml18JlfsYVrlYSJo3kB9/PBJIWoJYG9SlAe5aQDwTAa9n+jD1e8lG5mUQBD/yYX4rRMovkWy4mjrIq3eo79pn9aFlpMzoOHuSVn2+iZT9CxuUxHWIDB1dWOnWJ1mk3v9w5hZtL5Rhws8AqD2XE9L0ehXL+34QbUOQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785545; c=relaxed/simple; bh=4+xGS+gQ8QGQJN0G+dANZ7pjBY5FQBwjcWjyiAvNeBE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=A3J/jC0dUHiDMx06KAjkufWOyzD7ME+uHhIHaOxpIyjUFTkzJOz9m5Wg0Pjw3U9cYQwvPJtX8XByyW/LrglSesxMJRkIA6DQfM0vBu+Jy8Jx421/gJ7VtohioExF3Yl7GzU8YTgPOT0mb8LNdJqtQnn+mdZbBV+eH5SUbHHaz0Y= 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=f1mwwhN8; 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="f1mwwhN8" Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cc12e8e22b7so3123545a12.0 for ; Wed, 26 Aug 2026 16:05:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785537; x=1788390337; 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=QW8eYqOPxy2zOGKaQa10ibF4yoX+KMS8dMg107sn6cY=; b=f1mwwhN8P9zoGutUaySrNs2cQ1XY1/nbJlojvuWf+/SqvpiHqJmANF4FE4KUmLjsts 5bYp+v0+WrBttO9C37VPeaPuKNLOIEQcJ+kYiBRvYVia3kIG0Neik57gHsYhok+ka49o AeEqlkZ8obwO/JIM5R+swYygDkBx+OeQo1JoukHOgsztocEt8QQZC3kxhz8MRhpMzKgA yrQ7PY4adIMvhc+qkgVz3zh5I9AkOFu0rOr4I/j1XPOnWq5Fy0ykI0b0/sFlcPNLfcOV Jwwat6je9Q8csb+DKBceAeCJax0NlL4I5bFCNvIh071VuOZEQTtm5KXAeaNN3NUzB8PI MzVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785537; x=1788390337; 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=QW8eYqOPxy2zOGKaQa10ibF4yoX+KMS8dMg107sn6cY=; b=CsIn7jUw+68iayHQG484v50CsZF/owKC6IdCqNWWDVWPQsRG9rmURz4NcIf+gWbucj CZgI5Z1mV4GQ40vwGX7sGfNMkAj7NVoT1pkxhfNmRaZxRiT21iKXkGPRi5gqSlsYD/QR mZQSJf4c4EYgGGL455qfqYv+eUG8abOCk2adtmohlredxuJn9/jHplOKkhRp0E2EjxDt AV7Nzmgs4awEEDd7S3O9SPIx66KdnfahNIeSPQ4nBOhoHgydbtnB4xNGbC+XhHS757Vv CglMHM1yDXIvUgZlpwDdZP9koyuAte1r27VtrakTc7595dVFgcuHUx/EKfw9pv8fkGVE jWcA== X-Forwarded-Encrypted: i=1; AHgh+Roq0g8jFfTEmoyLM+XjM9PgzbZ3XC2ZMTxaEITHov4pMx9BUNHxOp62ytGginjlCvOPpbkpMRAE+sqAaVg=@vger.kernel.org X-Gm-Message-State: AFuF++kv67axTVV83eqTjaD2eoxCoW/cYlM7HjbGC8DlY/cEUKRkD3ix MUt2DLU5/dADaKpQprXAPcd/yZ5Hv6mYy0YnMbxMRAry7Qht8BCpUi1wtU9CQAkhLVT4BJlpwf5 4iMTePQ== X-Received: from pgbs63.prod.google.com ([2002:a63:5e42:0:b0:cbe:947d:d145]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:680d:b0:3c4:396d:4a6c with SMTP id adf61e73a8af0-3cf75e8b237mr24763274637.5.1787785537082; Wed, 26 Aug 2026 16:05:37 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:08 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-18-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- 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 f4f4f360a10b..783f060faf9e 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -1052,30 +1052,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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 3F6B93BE645 for ; Wed, 26 Aug 2026 23:05:40 +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=1787785545; cv=none; b=Oj8+ug6Ar+TiVDBxmaAWAPVU+DTQJhDGCeK9i8wWbDUttxfFlknR96YtkOvdkoBvFLo0Vtf+hJ50S9oevY6dFmeUjfrR4BMeMmgbYyGkJ5CcmOxwbixDwf+EAdHQRJGeGktkUUg0zwKT1NvCtHxQOvCaGSVjD6MITdlkWzzZqlY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785545; c=relaxed/simple; bh=lKXQlA+oesJrtxD7c4frkF+V9E3fuZX9xGPyHMdrXvs=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=MU0mIanWmx5Zq/+7ZofECVfRKga1ypnzUmIwSF2YcVyy5HTuMHgtk4RMNNuIKzYA0msExgp//a8hF03qt/+C0aatINZH9hzFu8HAaa3z17S8s/qjZfbolKccjiz4lIXMXNUuslAulnESK+AzNPrhO0/oCtEYNyTT1NbgcmUI7pg= 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=u5fYD3EC; 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="u5fYD3EC" Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-84857446424so2690173b3a.1 for ; Wed, 26 Aug 2026 16:05:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785538; x=1788390338; 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=heZN2DuvfOxZirlVdynH6v1916EkfGJKRv4e6fIVLjM=; b=u5fYD3ECN63cZG6LVwmXOHdxe4K8N8vtjGMIsOqRPv8taiWDDmDOX6riooYkFHufnU ivSD6slgS30NwbpDwLsmtjBWEPSwvVe6IAXNCyG62V5u7P1Dun7Sg0RP8nbyAaSP0VLk qyjRo80oyO0pZfajhrZau16J7C76WseRjCoc/nGiR/pd5siLgH02YaJ1A+/Qjgjw2jlt eWFLTxHHBsIQoVAUanJZcWHcA6mv3tWEOIspxznJuUgnBIZM+O3+Wt8Ou0lYPYx3KAjT /84jo9FN+iqcHVEhU1p+wcBpCa/eU1Oh6E++qCV+PYIkDUeFeCzfoPtm+m3MJebzW3OM GWVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785538; x=1788390338; 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=heZN2DuvfOxZirlVdynH6v1916EkfGJKRv4e6fIVLjM=; b=lBopOwVWlKx8HKm+R9Id/aLo6VQgOag+qCe2lw/fhiYDoHlMM6PMsSgMGjHD1/C/W7 ha7x6zByrNeuvpn+kSfqqgD3vfXdPaIJqm+q6cH/hL4iBhJXbvpYLzh2TaZf4ELFVpEO zl/KkkZmtxcKZbmQ/2Cf3K+p03LAazK8QgyMxQ8T7/eTwuviCRpXCZRCT2VRVfoR7dML iZPFykicQ96tyMQ3wKwvMrgCIHitbq0PAPEHej4uxkZew7qtyC994rUf12TNq9vu59ER 6iFObXYKeYGHC1lrP96gSo4Y+NfeP2Z7W5dA9nR0xEJI+DNV0lPMQNeYJ4ebmNRElMds 295A== X-Forwarded-Encrypted: i=1; AHgh+RrjLEAtyiPctF+nhcdJD4cFoxjH2BvQ0h6A8fZieXT2hG4M80fXLBc7Lft+GM7DgfI63UFbt2pnqnHsOZ4=@vger.kernel.org X-Gm-Message-State: AFuF++kRmTcgw54zEYDhfUHD4enQlkX9nxQKiNKk5rTfKbadP15BdPes FmKTy2gEYkdMZSReFHeXiWUS091AV7xOSGv5/f4nyweawFT4KhwXTBZ27QEbAla0/dQ6QAmzmtL 06MfpHw== X-Received: from pgce14.prod.google.com ([2002:a05:6a02:1ce:b0:c9e:3c0b:5818]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:2013:b0:3d1:3c2:85b6 with SMTP id adf61e73a8af0-3d103c28dfdmr4039415637.5.1787785538103; Wed, 26 Aug 2026 16:05:38 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:09 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-19-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- 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 783f060faf9e..a0cd1b6598d4 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -198,7 +198,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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 2026 Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) (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 BBE8C3CC300 for ; Wed, 26 Aug 2026 23:05:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.69 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785547; cv=none; b=MjMn15tGh3hKFx482CUm49vhMU9CmVoclts7MiBC6UGIn/yM4c8rycWbN6LnyNtlLUoy3+F4+ouEo1Zp/xJF7OLR3NyoODRitBHoVVebhjFMepr8ACafqyWyJ82/VKP692x0WYtzS9ec4aqqmjnJHiHM087SenjoDugLOSVg8+I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785547; c=relaxed/simple; bh=WOxm4BnKroJLVHQEy0jUAuIZbI6CudiTCoeDUy54eEU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=EqUnbnXA1WHq2CnFB1wvkfm1FPb4pPsrFT77nJdWA8qngm26Iw9CBkeK11c73oH2LKSwyjzwRaxeIgZXkX8aQAbZqYZm4uBGGWR3PwevhFLcRpR6QvSQBj6IQIhAoxpRL4FojsF5P5nwTtssif3DTcTP9H38JEpxU2LcPjBF7uE= 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=LyC50cDv; arc=none smtp.client-ip=209.85.216.69 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="LyC50cDv" Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38f283baf1fso2283454a91.3 for ; Wed, 26 Aug 2026 16:05:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785539; x=1788390339; 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=yj/O7Wk77mjZvk8cJgP4GcT6ON8eMhR5OMU86FoPEAo=; b=LyC50cDvtuKuXisKbnG+LKNpg/bZJi4gZlXb+MPvqrY+/TpVCFB0ianflUvkydNOdw Dl7NCSpXGuekqEXpyGmfqA7lgJ2Jf16LJUTDgf7c54gYxIzRXl0cDUnoPhU/2Bqjryjx O1sNMDsoNrxm0h+rxT0n1cF5Jb93jNBNOdtErPf7ZVa3XxybXFO28/VKtXKCABeppXPb KMmDZqTiJlUhwrWIb6PhWZk3zSxNHMl/avoWYASx+JRdV60NN2UKYCF4XG2WA9PV3C+r SBdVrutmzk28nQJdv8QamlO3vi9C7MkxpbxeVlS+zntztOztFRrOFIwQ8Sy1slZTi+UV CJdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785539; x=1788390339; 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=yj/O7Wk77mjZvk8cJgP4GcT6ON8eMhR5OMU86FoPEAo=; b=Q0PbqxqBwGak0sjuPFRIWHFeDHdsdI5X9ug0Hp/JHWVrw7oNL04Y2WLHzSm6LlSjSZ +gpDFh9ntmSTRnNToQ+Fq1KDuoOsH0+fmvmL3Zz7P/M8m9cj8W9eCVHMwaI2v5CmBnlK Gljq1BdWSKVUKhWQaF8XV4F7zWnGhg47fDnBt1iqPPJdX+7cELy4UXrLc80ZubKT+uSG 40UjoNygmAv0O4fKqFQB21OPr1JF4T15oknFrjfh4Csh6Dhc6xklj2CVGggVLU5scPlr /yPm7mv2KU1twCyJcpfJKp0FSHtWeOm4iVfronzZJbi2cHqgCsgXIoPyMYw3cPL0AGj9 KD8Q== X-Forwarded-Encrypted: i=1; AHgh+RqsdVxNed95qRo3LOvlcPSuAFI27Z0XcM9QL7XkaW/oO/UdHg2tYwWAV81FYV73YgaL63YaIsY0fhZcPdo=@vger.kernel.org X-Gm-Message-State: AFuF++ms/gwM7gYX7J3kpMENhFZbJF2Gk9MUL7SnUKIK01lSdqEf00Ea hpcn728b8wttVfTnyHzbPJruTf14HdmunTmoQafhqpLHoBX1T6wTBvf3UzlZoBiQe9c+PBqcWVm i9bickA== X-Received: from pgak6.prod.google.com ([2002:a05:6a02:6746:b0:cbe:9e80:c394]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6300:6cce:20b0:3d1:39e9:b267 with SMTP id adf61e73a8af0-3d139e9b38amr1071680637.3.1787785539181; Wed, 26 Aug 2026 16:05:39 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:10 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-20-seanjc@google.com> Subject: [PATCH 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, 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. Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- .../selftests/kvm/arm64/vgic_lpi_stress.c | 11 ++---- .../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, 44 insertions(+), 24 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..b4c651ea385d 100644 --- a/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c +++ b/tools/testing/selftests/kvm/arm64/vgic_lpi_stress.c @@ -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 a0cd1b6598d4..1264cd1a343a 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -1052,11 +1052,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) { /* @@ -1064,20 +1063,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.887.g758fc8c411-goog From nobody Mon Sep 28 04:08:09 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 419C93E958F for ; Wed, 26 Aug 2026 23:05:44 +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=1787785550; cv=none; b=DTnEurQDRqU1KeCrKK+VzKQUj/o8bkNTocdxpTMmu+T8ho8/gLiYCmEGpZ9JkSSBVcMTH6JnvXXrWebVq4pYln24mj73QLHAPLVkI6aWMKs0S9rOJsKwwm6AhRXnzrY8QThNSjM4YAgSIcop/iaPbA8MzYliDUMRshePivukJno= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787785550; c=relaxed/simple; bh=X9xnhlePSqIAyLBCipdOU0BNauH8Bhdv8PSGmQMr+Ik=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=H4+ZmVRd9fblv/auTQ/cmxNSZa9MN3+l2Id7sM9z4YV7bmJ9ZAKVGWFtohgJ4ieq6Bo+OJlklRRP7cE0R0iItrnWKABlxaHygra4/ih57SDcnXYirN1qT9TKw6pXeZq7OxxUDRtZz0K049xMxNHqfRZkyXFEI9l0t3axtiA/0Hc= 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=dbXJ7U4S; 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="dbXJ7U4S" Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-8485d853b08so109327b3a.1 for ; Wed, 26 Aug 2026 16:05:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787785541; x=1788390341; 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=pHiSvQXl4tkWm+SikbwEM4QvcPfHzRPC0s7Gep7aVew=; b=dbXJ7U4SuYurP5RGbLRVn5K03bu7RlwS4LDu3MrrAk10gF/X1/DSk9UUa0xG7neyKE sl3K0a2tdRP/CPSX3D3hvUUfuMfGDYSAx3NQ70ax8FsyK5Vwkalfb3yRdD9BHk52UZeH EOTi4c5bT36Yy25iRSZvQUN6s8252nQc1WgN08TZEpnctvqMPAt06gfYYezK9CnMQ9Ow VZ0b/pHOogtGbvmFgtigsRhzXtZ0mJC9RyKQQOAP2HKe1P9ZnDbuRvbZcHoTiJsk79ss fJ9xvtSNnQ/hr21UlMvKwTZo51qzcnMeY+RzUTWnSypAoLNBqyxk8I6kEqK3CuFbZJnO D9pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787785541; x=1788390341; 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=pHiSvQXl4tkWm+SikbwEM4QvcPfHzRPC0s7Gep7aVew=; b=MHu08KWy7yGriE/71xC52RENx31+deRNDL/mC59A+L47nlQq7UsE2Y9yVupvRP3Fq+ h4IvzXrC9rU/eVT5+MQTwJ9GzwmZ3bLhtFiRDAzjDckRFpDnAsn5UREP5+JsHmVGc/V7 vYq1CFJNJA+NI9q/DrYsE74W5hh8+TZr8bNg4yst1ML6lsis422Mz4m2nssi33ZNxbvK wBttaRADpZA8MAd43lWI4odgHuQX+VohJ8mI3M9vPN1l55cV6lBkK5hyMeJc3ov9ULQk n+uZUwfP5AL/1P1R/af7fPSF5Jm7u7gGOuf2t80Hnl3jAnjEj91TwEPxRGvXSefVa3q6 dWIg== X-Forwarded-Encrypted: i=1; AHgh+RpGj5xh8Tn13Rh/LEQtGgWAcUD3Og+hqLiVieHNLhfLghNQ69JwM1uUCiBa7jltYSVyPxRY1rJpVuuOHIw=@vger.kernel.org X-Gm-Message-State: AFuF++k9HSlH1QtRdAtcd41TcYzdzJGz0kgn1QMlytNk1Qe+unzZpvuP cvfFKo81+2Q+UHbCqPoyL1RU6jtZlCTH1p9tnakNrR3KvQF2RVheYaBu9FVUCZ8HZyAEKy00tiP nSN24Rg== X-Received: from pfbcb3.prod.google.com ([2002:a05:6a00:4303:b0:847:aa6c:47fc]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:b53:b0:851:8baf:5b26 with SMTP id d2e1a72fcca58-853749a5e4emr17924734b3a.14.1787785540289; Wed, 26 Aug 2026 16:05:40 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 26 Aug 2026 16:05:11 -0700 In-Reply-To: <20260826230511.972824-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: <20260826230511.972824-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.887.g758fc8c411-goog Message-ID: <20260826230511.972824-21-seanjc@google.com> Subject: [PATCH 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, 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) Signed-off-by: Sean Christopherson Tested-by: Itaru Kitayama --- 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 1264cd1a343a..ffd4cf740d7f 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -1050,6 +1050,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.887.g758fc8c411-goog