From nobody Wed Jun 10 22:47:08 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 9150B11CAF for ; Wed, 10 Jun 2026 12:47:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095665; cv=none; b=D9dhBqxcZJRq2BEyiiJunQ2iafil1s/zvKckJOObdn4LTWwCgyxOgj9frmSi9EbdMYFUA8JUs1YYLhoJ/4d2rDiLw3dts3ZHGgvugndEPwp24jmiIC9IncvgJS5CYXSce2uoYJzsGPvT0qlF42EqSPDeHC3ymPb+pP6ot8iq4qc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095665; c=relaxed/simple; bh=Bk7J3mLs3N7bfIUBu+nSVFQaHOBl7tueImnj0PHHNt0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nRkSYq+VV0/RGXLMcex+8t3H2IjatBh1rMQmH4if2bSAZs1WrJco1bW0Yg5mka3EdJYaVYMXBB6LHX53/XVZZpf8p1Y3Evzy9Au1COpMJSWr9MwWvHQC3ngMm+WVeYqP9lQYsohGe4XBZC/RaS3qthAVLo5HhrXvzDH1WMlA8A8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BGCGa5Ub; arc=none smtp.client-ip=209.85.216.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BGCGa5Ub" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-36d630c0e35so7247945a91.3 for ; Wed, 10 Jun 2026 05:47:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781095664; x=1781700464; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=t1g5wHVLikCWLgdTTQWpgtkBPvcVl9HkkR1GjckPL4Q=; b=BGCGa5UbRlkMLk2ILiLpYR6JxRMHolkBQdH0NUlbFgnjDr/hmpoburpog5a6RgGOLy CVTe1XL7fudDafXfvtaNd2iHMVYcS7RHq+bed/SKPCHhdhpS9KvUm2FKOsKQQVb1LiY+ fLQfEQ9bWbKHpSMIf847ZAFrJ3Gg5/rTXWjP7YGYcXTJGr8qf4O7GaRpRxtjaGLPsXGQ 4hJOENYPsMRoMmrikkJ84OhChvnCRZP7vm23YHdHCNpbDJJGAuIks3VrSOZy5esxP+qE 7uQ44xwhEPe6d6e8xOucRMxfoS45I3KIECnRb9+C7RKKBbEq87af5C8lrljZ9aQ1hAYy C+aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781095664; x=1781700464; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=t1g5wHVLikCWLgdTTQWpgtkBPvcVl9HkkR1GjckPL4Q=; b=haanf5XopdXTQSWAurr8LxI/4V/ewPc4CL5mF6VS9VlK/Mb5Y78XN+y8wI3iPLDCOi NxJRLgkgVF71gl+7ydmGB3sZBQImbN8Qes5Q12hO1zikoq/d1Ky0W6JVdAIP1Pr/VSOa P+2+YY/s8rzS4vAwVk+H0g2jzOTVfficEI18vAgYX/4f5Or81qTr+L59lRmAMPR6XYoL zYaalHs5dHQsJYstXofYwE3f7M7bpCPM0srySWzzJJrckV6ouX0EdCUq73vuKIoJ3FGJ F91mkq0MyoBOUFQzs9DDWwbujzClNpbhi6a5e7lOi89zM1K4stislmY2SzVs+hKYO/JC hlqQ== X-Forwarded-Encrypted: i=1; AFNElJ9FvJq54xnAbeXggCwSL8dSq7uQoR2x1zuYPxgx3onX8ZOhMsf3e5UaGBzsbFUpQpRwA/GZdt6DEYGghCU=@vger.kernel.org X-Gm-Message-State: AOJu0Yyam5xbRxmPVvcXgD/17uQIoEflA9pdVbXQbBByAnG1BjBC38Sk uN+EmB0+EwsSzB2G2p30CFNBPHQPgYkgrHLJkIJPLZf3zEjA2VAbpJmT X-Gm-Gg: Acq92OE1oUQpnJ24al5YEGFjPMTQ/QBIvURAdtYbG7BAgEUpoUEl8oG7w1neoXGBS9z oIG75Osmd+7OtB9ndgsypMWdtw7WgWjCL3PvHsCCcO/AD0lHYenQr+RXQRhDeLnouASJpp4ASlb cqII8lrJQz36c3AkGbDM0TwB1l9bY4sw0wQvVfaX00MKFW2B/BSqKPT7ie+miNZsGMMbHvz5Wa+ F0gib9A8bIywHoximsSOSxYkk38h5yAEEzw68mTmQ3aSGBuot3PwE8SnICerK1CGRNDIDS/mtcE /E2sNubWJ8Lp5Xx4m/C6We+J6NMt+dQV/MzReYPIBERtPWtb6MlchCoOwfM3uf3/oJ/zNazgLeI B6C9oZzLD1FdqP4Q3bniEq17CWHB1GwPd+lqt05dDU5cJx6Px8oth7Zht7dE1hZ1Mj/zZ6H0CkQ agrc2aotRiwnCAV+jsTnzhueqUJrHPdtEC6gjkVpEN7nhNUamYhxHugE39Sjuzew== X-Received: by 2002:a17:90b:3d44:b0:368:7c0f:ebf7 with SMTP id 98e67ed59e1d1-370f0095b8amr26453338a91.16.1781095663927; Wed, 10 Jun 2026 05:47:43 -0700 (PDT) Received: from localhost.localdomain ([171.76.83.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37624b83589sm3783554a91.16.2026.06.10.05.47.38 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 10 Jun 2026 05:47:43 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org, Paolo Bonzini Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Christophe Leroy , Anushree Mathur , Venkat Rao Bagalkote , Harsh Prateek Bora , Sean Christopherson , Ackerley Tng , Christian Borntraeger , Claudio Imbrenda , Nicholas Piggin , "Ritesh Harjani (IBM)" Subject: [PATCH v3 RESEND 01/10] KVM: selftests: Move pgd_created check into virt_pgd_alloc Date: Wed, 10 Jun 2026 18:17:17 +0530 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Nicholas Piggin virt_arch_pgd_alloc all do the same test and set pgd_created. Move this into common code - except for x86's virt_arch_pgd_alloc() -> virt_mmu_init() - because this can also be called from it's tdp_mmu_init() call for setting up it's stage-2 mmu. Signed-off-by: Nicholas Piggin [Rebased to latest mainline tree and removed x86 case] Signed-off-by: Ritesh Harjani (IBM) --- tools/testing/selftests/kvm/include/kvm_util.h | 5 +++++ tools/testing/selftests/kvm/lib/arm64/processor.c | 4 ---- tools/testing/selftests/kvm/lib/loongarch/processor.c | 4 ---- tools/testing/selftests/kvm/lib/riscv/processor.c | 4 ---- tools/testing/selftests/kvm/lib/s390/processor.c | 4 ---- 5 files changed, 5 insertions(+), 16 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index 2ecaaa0e9965..3666a8530f31 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -1197,7 +1197,12 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm); =20 static inline void virt_pgd_alloc(struct kvm_vm *vm) { + if (vm->mmu.pgd_created) + return; + virt_arch_pgd_alloc(vm); + + vm->mmu.pgd_created =3D true; } =20 /* diff --git a/tools/testing/selftests/kvm/lib/arm64/processor.c b/tools/test= ing/selftests/kvm/lib/arm64/processor.c index 01325bf4d36f..498fbcb0ea16 100644 --- a/tools/testing/selftests/kvm/lib/arm64/processor.c +++ b/tools/testing/selftests/kvm/lib/arm64/processor.c @@ -112,13 +112,9 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) { size_t nr_pages =3D vm_page_align(vm, ptrs_per_pgd(vm) * 8) / vm->page_si= ze; =20 - if (vm->mmu.pgd_created) - return; - 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_created =3D true; } =20 static void _virt_pg_map(struct kvm_vm *vm, gva_t gva, gpa_t gpa, diff --git a/tools/testing/selftests/kvm/lib/loongarch/processor.c b/tools/= testing/selftests/kvm/lib/loongarch/processor.c index 64d91fb76522..207055db5f5d 100644 --- a/tools/testing/selftests/kvm/lib/loongarch/processor.c +++ b/tools/testing/selftests/kvm/lib/loongarch/processor.c @@ -51,9 +51,6 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) int i; gpa_t child, table; =20 - if (vm->mmu.pgd_created) - return; - child =3D table =3D 0; for (i =3D 0; i < vm->mmu.pgtable_levels; i++) { invalid_pgtable[i] =3D child; @@ -64,7 +61,6 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) child =3D table; } vm->mmu.pgd =3D table; - vm->mmu.pgd_created =3D true; } =20 static int virt_pte_none(u64 *ptep, int level) diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/test= ing/selftests/kvm/lib/riscv/processor.c index ded5429f3448..75a5d4c46001 100644 --- a/tools/testing/selftests/kvm/lib/riscv/processor.c +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c @@ -66,13 +66,9 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) { size_t nr_pages =3D vm_page_align(vm, ptrs_per_pte(vm) * 8) / vm->page_si= ze; =20 - if (vm->mmu.pgd_created) - return; - 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_created =3D true; } =20 void virt_arch_pg_map(struct kvm_vm *vm, gva_t gva, gpa_t gpa) diff --git a/tools/testing/selftests/kvm/lib/s390/processor.c b/tools/testi= ng/selftests/kvm/lib/s390/processor.c index a9adb3782b35..342b7c92463e 100644 --- a/tools/testing/selftests/kvm/lib/s390/processor.c +++ b/tools/testing/selftests/kvm/lib/s390/processor.c @@ -17,16 +17,12 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) TEST_ASSERT(vm->page_size =3D=3D PAGE_SIZE, "Unsupported page size: 0x%x", vm->page_size); =20 - if (vm->mmu.pgd_created) - return; - gpa =3D vm_phy_pages_alloc(vm, PAGES_PER_REGION, KVM_GUEST_PAGE_TABLE_MIN_PADDR, vm->memslots[MEM_REGION_PT]); memset(addr_gpa2hva(vm, gpa), 0xff, PAGES_PER_REGION * vm->page_size); =20 vm->mmu.pgd =3D gpa; - vm->mmu.pgd_created =3D true; } =20 /* --=20 2.50.1 (Apple Git-155) From nobody Wed Jun 10 22:47:08 2026 Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) (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 7221E40680B for ; Wed, 10 Jun 2026 12:47:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095672; cv=none; b=CxHZW/19BmWSiqH8epDd47tiUgiAao3SsD5hfCT7g7yjG5vQbLBQU+bKFlobRyJN5o5E2UNYj25GNEd83lvs+6+/hsc/B92EFjQwGfiEDocdpkaVGVZvUkrizcQZGv/zRBEmTDD/u0USMXGbE/oFnhk+deGwsjn7wCjGwKC5FAU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095672; c=relaxed/simple; bh=5W+tGp30D38VoHhXvVJ/TBcgn8TA0xRvKMpQjGDRMF0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Gx+P0zlofhfMy5Ljj3trnqTOIEX/7Vw3Eum1wCtmTpjkps4K5RtlEy/RrvtbZORaOKQUtYqfgm1j5qG754UhaAh7IMXOfwnPhMuojJjEw1l83biYELabBb9QQxbv8jxlo/UfveQ2S+v/ufJ0mDkW5oD8cUh5ipiImWPyW2dJ+t8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=oWLZhcKf; arc=none smtp.client-ip=209.85.216.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="oWLZhcKf" Received: by mail-pj1-f45.google.com with SMTP id 98e67ed59e1d1-36bdb11bf8bso3959334a91.0 for ; Wed, 10 Jun 2026 05:47:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781095670; x=1781700470; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=k0vOlqOnh5jkFuU9tmOA1F8NP87zeNaswUFOalPtmFY=; b=oWLZhcKfY+BsZl1ULQLS04XMh4Mw4EYgjM7ZJRcoMWrtBWg9Hs1xksTEq7Y7KgJDUc ujxWTZv28HiObzle2yXNTwRwHzHbumIuuXj6Sp9XCwqaLfX5pDzB3k6bUry7tdH3+qNW DpFqddaC2y1CApztHzQWV8Qmq90sY5Fm3NKNOyotSHZ2PFCm6aEFRJHvXQzpCrbluPb8 /E6NYiMw4Lp4cn3uyHOGSQIn+QXGZaSowBqma+hRFniayyk1VsQhJ/NucN5pIqVqQCUf XxvBOExjo4o0qizRIZzjzLxZ8+2vb7izS+WA737vEQ4N2AujW/BgZxLlhjM4tn5Eqe6d khCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781095670; x=1781700470; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=k0vOlqOnh5jkFuU9tmOA1F8NP87zeNaswUFOalPtmFY=; b=dCoriVhcTCedMVzuhxM2ifAW4MKCRHXmoNHUQO2zV5KBw+UMG3K/+0mZe35alCLgQB +2tlAoUcuQH9zN2rErchxApBonRhPjLWxssrKKCK7rCMC136f+F3jq0Rrlx/MYRhhy3F zcPtzWlbJbWARhC4TMlYZUhjCtFOZXZ1cixfrrz/BBqUbydfJ5PPx0RMPzvOZ0Cf9iTp S/nrrqKIAEc0/c6bJea5O1Cb2+xIPhu8SLtQ6gU5GzF4TmU1DPYC4kDNACrsIPhhCGI0 AaNv0NEWeRPiED75tjzMn+i9+vPb/uil8WzD3fM0vfW/3z/UP0XblgqeOMJwKHJ0iLLp 4Olw== X-Forwarded-Encrypted: i=1; AFNElJ8lsCLHIbjFMRpaFqe7O6QD+8yJXt0TISE+ESlmqOzBOZSlH6STg8R22judHsL2b+FDhOPPpF37zwRwass=@vger.kernel.org X-Gm-Message-State: AOJu0YzzZIv5LeI24ivn9d0SyARDm+GXRrYN1Qqu4E/64dsKZvq5nk5O 4D897xvZptBV5Iw7u4KLnilNcoQ8gYxn2DwFqWWqYTa5iNmfAPEablGP X-Gm-Gg: Acq92OEw3WNn/x55Qjh5q8tTP772/G23M1h6apGJwm5ZWwNSl8S4SkFbzx0XRnIjeL8 ZXXmHelBMPz7410etOdRaaNU8fdlpcm5ICOtHleoyE3e/WXSbIe/f8H0Z8CwjzcdQmVwrogwkyD XQuYXdXDPsqjhp3TNy1ZdyKBdVrL03CXyIkwmpg48Iczil67BMSHDFAEAdqp+CW4auFR3pIAR2p hD7b+y1DYz8/JF3mL7ngHVJVcP1Vzl5qLqCUnbLvIQ0VJ9akVza4DkG9ByBHRl77VIaCs/gvgmb YSCxLl1cUNV+Scv0O0D0n3xfcLjY6J3Z12JgPrMBGQssPj6W9Gm/iDmIz2F+rEDFhXJrCcoQzsB 7J36JTCPcbuNhs2vN1snEfV4mVetDyhP/0JMMSTIoQzZdwgUJx8zr1Ze9685oIXYlmlc9U413AB TKYMxB9PPJjyxoyE1GKgXDZPQLWCiyjF7kpgb2Pb5cghwtqFLY1fWlw22/zng5vA== X-Received: by 2002:a17:90b:2f85:b0:368:147f:bd2b with SMTP id 98e67ed59e1d1-370f0e488f3mr28109280a91.23.1781095669630; Wed, 10 Jun 2026 05:47:49 -0700 (PDT) Received: from localhost.localdomain ([171.76.83.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37624b83589sm3783554a91.16.2026.06.10.05.47.44 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 10 Jun 2026 05:47:48 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org, Paolo Bonzini Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Christophe Leroy , Anushree Mathur , Venkat Rao Bagalkote , Harsh Prateek Bora , Sean Christopherson , Ackerley Tng , Christian Borntraeger , Claudio Imbrenda , Nicholas Piggin , "Ritesh Harjani (IBM)" Subject: [PATCH v3 RESEND 02/10] KVM: selftests: Add aligned guest physical page allocator Date: Wed, 10 Jun 2026 18:17:18 +0530 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Nicholas Piggin powerpc will require this to allocate MMU tables in guest memory that are larger than guest base page size. Signed-off-by: Nicholas Piggin [Rebased to latest mainline tree] Signed-off-by: Ritesh Harjani (IBM) --- .../testing/selftests/kvm/include/kvm_util.h | 20 +++++++++-- tools/testing/selftests/kvm/lib/kvm_util.c | 33 +++++++++---------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index 3666a8530f31..c515c918c2c9 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -991,8 +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 num, gpa_t min_gpa, - u32 memslot, bool protected); +gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t num, size_t align, + gpa_t min_gpa, 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, @@ -1003,10 +1003,24 @@ static inline gpa_t vm_phy_pages_alloc(struct kvm_v= m *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, num, 1, min_gpa, memslot, vm_arch_has_protected_memory(vm)); } =20 +static inline gpa_t vm_phy_pages_alloc_align(struct kvm_vm *vm, size_t num, + size_t align, gpa_t min_gpa, + u32 memslot) +{ + /* + * 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, num, align, min_gpa, memslot, + vm_arch_has_protected_memory(vm)); +} + + /* * ____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 e08967ef7b7b..ac7215824203 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1442,7 +1442,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, + gpa_t gpa =3D __vm_phy_pages_alloc(vm, pages, 1, KVM_UTIL_MIN_PFN * vm->page_size, vm->memslots[type], protected); =20 @@ -2021,7 +2021,7 @@ const char *exit_reason_str(unsigned int exit_reason) * and their base address is returned. A TEST_ASSERT failure occurs if * not enough pages are available at or above min_gpa. */ -gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t num, +gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_t num, size_t align, gpa_t min_gpa, u32 memslot, bool protected) { @@ -2039,23 +2039,22 @@ gpa_t __vm_phy_pages_alloc(struct kvm_vm *vm, size_= t num, 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 + num; ++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: + base =3D (base + align - 1) & ~(align - 1); + for (pg =3D base; pg < base + num; ++pg) { + if (!sparsebit_is_set(region->unused_phy_pages, pg)) { + base =3D sparsebit_next_set(region->unused_phy_pages, pg); + if (!base) { + 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(); } + goto again; } - } while (pg && pg !=3D base + num); - - 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 + num; ++pg) { --=20 2.50.1 (Apple Git-155) From nobody Wed Jun 10 22:47:08 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 B90FF408009 for ; Wed, 10 Jun 2026 12:47:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095679; cv=none; b=fdrAFFa3FK07sdR6Lcnz5LDEUC+ojCKrHOtmEy4LTnI0wdiEThXbCMTSzLItFpmh7e711RO+J9fTcsebfoXvM99A/kvlzBy6UUUhPCOYsQUdb5MFqOy+nsett+US5MSisXB96mupAIuUcApQULqRbUPFo0mbiJzBiYeXgJcdttc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095679; c=relaxed/simple; bh=TwFhOHa3qCSpKj/OBBEPAiNWcoThS4dCR0eN8b5E0IU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MO3OYS0t/teRrWcJ6q9wOrr5bj0F0w06DUH+lSs6HljCW2IKa8O9Ll1ZKdSsRk3QWWDMSeyXS7O9OJx5F6/vyIUJ1rF0h6U7Ndhh3NxsxAOpDZ7DvyaT7HYkexZiE+0pVgw06o/IsenbRPSE6YUXktdTaXWRnVCbDBMTQp5sO4o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=O/Gbk+KI; arc=none smtp.client-ip=209.85.216.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="O/Gbk+KI" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-37474afe908so1472585a91.1 for ; Wed, 10 Jun 2026 05:47:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781095676; x=1781700476; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0HOmh8/TqX53kInZOvT6+JJKg38oaNPkoSuIN+cgTZA=; b=O/Gbk+KIf/V4qTESREFuaQO9ezSpqaugTjtQfEg8HCoijyFGxIbVn38sxWYTxwypba Li1bFI6GIheOrBMe7rfvxFhYJ8lEoIG/CRAjwNU5XoaQeLqOF/UFr1WIxb3vyRCfgOx/ bm2DIPVkmhXVxANe0TyTsaQlc3ZjQK/4KrlRADEkJ77ejon6rYk2Cy8s8SOF2ldpRgcE aJYLby6agAs1YM/tz/DkloGABu5FAJG8wpGBgdl+SwQ+W0qkmv9mnU+5jnk3RJwUR6ky Cs6eYGnwR6m9MMUKSpTfNZtNMk+dvdyUZ1SnWJX66sjJd8HuSw5TyJuyQKlVaX9Mko/g 7Qiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781095676; x=1781700476; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=0HOmh8/TqX53kInZOvT6+JJKg38oaNPkoSuIN+cgTZA=; b=SwXCajDEoSU9D5j4yc0705j7dDmlcr4hut3lwlrmtnrtIKNgDBwVQH3dWW494+530a uSCQWc0JCLWBTn91HClnTwgbfU1YQqjtVCMolsOD+ND91+0G4ZQpdTJi0rLtnQj8BLE/ tvvkW+rzYcl7hRU1tX8lo+e8d6zXsSiUXT+mfwK0mt4aJpsOYMJ11ysAPyceuIOMKeUY e6RdgicWPVyaNb8mmt9FpXUN1+ylZNOzLMxE21eNwk6WnLJ/ZqeESfEV+6kVvGAbqsfq W8V9G/vDWDpYJohb6eUbv6HFn0doj9vZU4wOo3uCipgehFvzTLyGyG7ZjJodJPaJzQkc 6IUA== X-Forwarded-Encrypted: i=1; AFNElJ+6OZoWrNUt/KXcTLk9/CVrB2/q5SiEB0oEupdJwx8/EqdAxDs+7wRD2r72HwqfABHy3D74vcyqMbnmj9o=@vger.kernel.org X-Gm-Message-State: AOJu0YwH7U6kTOGup81zMyi2YC9IXLIWmCrxrs4FwCYzQowCoP2QmlK/ mf72myT4y4RH2jhljSatFAG31yv00NYhdlpe9gal2ChM9owG/kYoKpxH X-Gm-Gg: Acq92OGEhhAg9+wz63VqXusd9wlkGBwoYzjJrjm8et/k66cuHXvaJxMLWfg5AGhfsZ3 BWnYepv9EnwbpRhtfFXo7v2UHqKI9JQ2FG83jVTsuKaEcKVY2X1z5Wmcy65SHAm8O2f8CGoKios 1+MQBs8R+x5kwrJrmqmNCjcfEj5yMUrT/AXl1mDc89E+tvRSwiFoiUanjDJNy9y/3x1qBq2CY7C l9XsvPEb53ilXDMGNDs1vZ9iDjGfucS1mcjOWma6TRFpvo36ngh60FZGxYfLd8Vh7E2+Qc2SFQd nIeXlAnLz9ZmRFY4uut8b0+fqELcd5589N7UTa3aHaJvZLp2th3zrLAu7FpdPpHJf0UWH/EsBzJ /J3Jwx2un6ofR8hZ+txC9dxkpV0vwz8vYkgcT9IoiFUi+BXEPQYm/vYnPor2YyPCYmN3mh7XiF1 jZxk7+svE1zCxZkEEFHJpfz7cS3q5dN3clM8il+ZyzOlUoX+5TvRZE+DRA2Y5I5g== X-Received: by 2002:a17:90b:584f:b0:36d:8e6f:8d94 with SMTP id 98e67ed59e1d1-370f0284ae5mr24715094a91.15.1781095675914; Wed, 10 Jun 2026 05:47:55 -0700 (PDT) Received: from localhost.localdomain ([171.76.83.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37624b83589sm3783554a91.16.2026.06.10.05.47.50 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 10 Jun 2026 05:47:54 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org, Paolo Bonzini Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Christophe Leroy , Anushree Mathur , Venkat Rao Bagalkote , Harsh Prateek Bora , Sean Christopherson , Ackerley Tng , Christian Borntraeger , Claudio Imbrenda , Nicholas Piggin , "Ritesh Harjani (IBM)" Subject: [PATCH v3 RESEND 03/10] KVM: PPC: selftests: add support for powerpc Date: Wed, 10 Jun 2026 18:17:19 +0530 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Nicholas Piggin Implement KVM selftests support for powerpc (Book3S-64). ucalls are implemented with an unsupported PAPR hcall number which will always cause KVM to exit to userspace. Virtual memory is implemented for the radix MMU, and only a base page size is supported (both 4K and 64K). Guest interrupts are taken in real-mode, so require a page allocated at gRA 0x0. Interrupt entry is complicated because gVA:gRA is not 1:1 mapped (like the kernel is), so the MMU can not just be switched on and off. [Rebased to latest mainline tree, "cc" to clobber list, fix the size calculation in kvm_arch_vm_post_create()] Signed-off-by: Nicholas Piggin Signed-off-by: Ritesh Harjani (IBM) --- MAINTAINERS | 2 + tools/testing/selftests/kvm/Makefile | 2 +- tools/testing/selftests/kvm/Makefile.kvm | 10 + .../testing/selftests/kvm/include/kvm_util.h | 9 + .../selftests/kvm/include/powerpc/hcall.h | 17 + .../kvm/include/powerpc/kvm_util_arch.h | 22 + .../selftests/kvm/include/powerpc/ppc_asm.h | 32 ++ .../selftests/kvm/include/powerpc/processor.h | 38 ++ .../selftests/kvm/include/powerpc/ucall.h | 21 + tools/testing/selftests/kvm/lib/guest_modes.c | 20 +- tools/testing/selftests/kvm/lib/kvm_util.c | 8 + .../selftests/kvm/lib/powerpc/handlers.S | 93 ++++ .../testing/selftests/kvm/lib/powerpc/hcall.c | 45 ++ .../selftests/kvm/lib/powerpc/processor.c | 483 ++++++++++++++++++ .../testing/selftests/kvm/lib/powerpc/ucall.c | 22 + 15 files changed, 821 insertions(+), 3 deletions(-) create mode 100644 tools/testing/selftests/kvm/include/powerpc/hcall.h create mode 100644 tools/testing/selftests/kvm/include/powerpc/kvm_util_ar= ch.h create mode 100644 tools/testing/selftests/kvm/include/powerpc/ppc_asm.h create mode 100644 tools/testing/selftests/kvm/include/powerpc/processor.h create mode 100644 tools/testing/selftests/kvm/include/powerpc/ucall.h create mode 100644 tools/testing/selftests/kvm/lib/powerpc/handlers.S create mode 100644 tools/testing/selftests/kvm/lib/powerpc/hcall.c create mode 100644 tools/testing/selftests/kvm/lib/powerpc/processor.c create mode 100644 tools/testing/selftests/kvm/lib/powerpc/ucall.c diff --git a/MAINTAINERS b/MAINTAINERS index 355e4ab2f9e5..9848e8d6ae04 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14119,6 +14119,8 @@ F: arch/powerpc/include/asm/kvm* F: arch/powerpc/include/uapi/asm/kvm* F: arch/powerpc/kernel/kvm* F: arch/powerpc/kvm/ +F: tools/testing/selftests/kvm/*/powerpc/ +F: tools/testing/selftests/kvm/powerpc/ =20 KERNEL VIRTUAL MACHINE FOR RISC-V (KVM/riscv) M: Anup Patel diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests= /kvm/Makefile index f2b223072b62..03d91f00092f 100644 --- a/tools/testing/selftests/kvm/Makefile +++ b/tools/testing/selftests/kvm/Makefile @@ -3,7 +3,7 @@ top_srcdir =3D ../../../.. include $(top_srcdir)/scripts/subarch.include ARCH ?=3D $(SUBARCH) =20 -ifeq ($(ARCH),$(filter $(ARCH),arm64 s390 riscv x86 x86_64 loongarch)) +ifeq ($(ARCH),$(filter $(ARCH),arm64 s390 riscv x86 x86_64 loongarch power= pc)) # Top-level selftests allows ARCH=3Dx86_64 :-( ifeq ($(ARCH),x86_64) override ARCH :=3D x86 diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selft= ests/kvm/Makefile.kvm index 9118a5a51b89..825bea7f851d 100644 --- a/tools/testing/selftests/kvm/Makefile.kvm +++ b/tools/testing/selftests/kvm/Makefile.kvm @@ -52,6 +52,11 @@ LIBKVM_loongarch +=3D lib/loongarch/processor.c LIBKVM_loongarch +=3D lib/loongarch/ucall.c LIBKVM_loongarch +=3D lib/loongarch/exception.S =20 +LIBKVM_powerpc +=3D lib/powerpc/handlers.S +LIBKVM_powerpc +=3D lib/powerpc/processor.c +LIBKVM_powerpc +=3D lib/powerpc/ucall.c +LIBKVM_powerpc +=3D lib/powerpc/hcall.c + # Non-compiled test targets TEST_PROGS_x86 +=3D x86/nx_huge_pages_test.sh =20 @@ -239,6 +244,11 @@ TEST_GEN_PROGS_loongarch +=3D memslot_perf_test TEST_GEN_PROGS_loongarch +=3D set_memory_region_test TEST_GEN_PROGS_loongarch +=3D steal_time =20 +TEST_GEN_PROGS_powerpc =3D $(TEST_GEN_PROGS_COMMON) +TEST_GEN_PROGS_powerpc +=3D access_tracking_perf_test +TEST_GEN_PROGS_powerpc +=3D dirty_log_perf_test +TEST_GEN_PROGS_powerpc +=3D hardware_disable_test + SPLIT_TESTS +=3D arch_timer SPLIT_TESTS +=3D get-reg-list =20 diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing= /selftests/kvm/include/kvm_util.h index c515c918c2c9..10f03a182c8b 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -209,6 +209,9 @@ enum vm_guest_mode { VM_MODE_P41V48_4K, VM_MODE_P41V39_4K, =20 + VM_MODE_P52V52_4K, /* For powerpc64 */ + VM_MODE_P52V52_64K, + NUM_VM_MODES, }; =20 @@ -268,6 +271,12 @@ extern enum vm_guest_mode vm_mode_default; #define MIN_PAGE_SHIFT 12U #define ptes_per_page(page_size) ((page_size) / 8) =20 +#elif defined(__powerpc64__) + +#define VM_MODE_DEFAULT vm_mode_default +#define MIN_PAGE_SHIFT 12U +#define ptes_per_page(page_size) ((page_size) / 8) + #endif =20 #define VM_SHAPE_DEFAULT VM_SHAPE(VM_MODE_DEFAULT) diff --git a/tools/testing/selftests/kvm/include/powerpc/hcall.h b/tools/te= sting/selftests/kvm/include/powerpc/hcall.h new file mode 100644 index 000000000000..4028baa6c5d8 --- /dev/null +++ b/tools/testing/selftests/kvm/include/powerpc/hcall.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * powerpc hcall defines + */ +#ifndef SELFTEST_KVM_HCALL_H +#define SELFTEST_KVM_HCALL_H + +#include + +/* Ucalls use unimplemented PAPR hcall 0 which exits KVM */ +#define H_UCALL 0 + +int64_t hcall0(uint64_t token); +int64_t hcall1(uint64_t token, uint64_t arg1); +int64_t hcall2(uint64_t token, uint64_t arg1, uint64_t arg2); + +#endif diff --git a/tools/testing/selftests/kvm/include/powerpc/kvm_util_arch.h b/= tools/testing/selftests/kvm/include/powerpc/kvm_util_arch.h new file mode 100644 index 000000000000..5d45c25cd299 --- /dev/null +++ b/tools/testing/selftests/kvm/include/powerpc/kvm_util_arch.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef SELFTEST_KVM_UTIL_ARCH_H +#define SELFTEST_KVM_UTIL_ARCH_H + +#include + +#include "kvm_util_types.h" + +struct kvm_mmu_arch {}; + +/* Page table fragment cache for guest page tables < page size */ +struct vm_pt_frag_cache { + gpa_t page; + size_t page_nr_used; +}; + +struct kvm_vm_arch { + gpa_t prtb; /* process table */ + struct vm_pt_frag_cache pt_frag_cache[2]; /* 256B and 4KB PT caches */ +}; + +#endif /* SELFTEST_KVM_UTIL_ARCH_H */ diff --git a/tools/testing/selftests/kvm/include/powerpc/ppc_asm.h b/tools/= testing/selftests/kvm/include/powerpc/ppc_asm.h new file mode 100644 index 000000000000..b9df64659792 --- /dev/null +++ b/tools/testing/selftests/kvm/include/powerpc/ppc_asm.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * powerpc asm specific defines + */ +#ifndef SELFTEST_KVM_PPC_ASM_H +#define SELFTEST_KVM_PPC_ASM_H + +#define STACK_FRAME_MIN_SIZE 112 /* Could be 32 on ELFv2 */ +#define STACK_REDZONE_SIZE 512 + +#define INT_FRAME_SIZE (STACK_FRAME_MIN_SIZE + STACK_REDZONE_SIZE) + +#define SPR_SRR0 0x01a +#define SPR_SRR1 0x01b +#define SPR_CFAR 0x01c + +#define MSR_SF 0x8000000000000000ULL +#define MSR_HV 0x1000000000000000ULL +#define MSR_VEC 0x0000000002000000ULL +#define MSR_VSX 0x0000000000800000ULL +#define MSR_EE 0x0000000000008000ULL +#define MSR_PR 0x0000000000004000ULL +#define MSR_FP 0x0000000000002000ULL +#define MSR_ME 0x0000000000001000ULL +#define MSR_IR 0x0000000000000020ULL +#define MSR_DR 0x0000000000000010ULL +#define MSR_RI 0x0000000000000002ULL +#define MSR_LE 0x0000000000000001ULL + +#define LPCR_ILE 0x0000000002000000ULL + +#endif diff --git a/tools/testing/selftests/kvm/include/powerpc/processor.h b/tool= s/testing/selftests/kvm/include/powerpc/processor.h new file mode 100644 index 000000000000..cb75b77c33bb --- /dev/null +++ b/tools/testing/selftests/kvm/include/powerpc/processor.h @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * powerpc processor specific defines + */ +#ifndef SELFTEST_KVM_PROCESSOR_H +#define SELFTEST_KVM_PROCESSOR_H + +#include +#include "ppc_asm.h" + +extern unsigned char __interrupts_start[]; +extern unsigned char __interrupts_end[]; + +struct kvm_vm; +struct kvm_vcpu; + +struct ex_regs { + uint64_t gprs[32]; + uint64_t nia; + uint64_t msr; + uint64_t cfar; + uint64_t lr; + uint64_t ctr; + uint64_t xer; + uint32_t cr; + uint32_t trap; + uint64_t vaddr; /* vaddr of this struct */ +}; + +void vm_install_exception_handler(struct kvm_vm *vm, int vector, + void (*handler)(struct ex_regs *)); + +static inline void cpu_relax(void) +{ + asm volatile("" ::: "memory"); +} + +#endif diff --git a/tools/testing/selftests/kvm/include/powerpc/ucall.h b/tools/te= sting/selftests/kvm/include/powerpc/ucall.h new file mode 100644 index 000000000000..e0dbe91e8848 --- /dev/null +++ b/tools/testing/selftests/kvm/include/powerpc/ucall.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef SELFTEST_KVM_UCALL_H +#define SELFTEST_KVM_UCALL_H + +#include "hcall.h" + +#define UCALL_EXIT_REASON KVM_EXIT_PAPR_HCALL + +#define UCALL_R4_UCALL 0x5715 /* regular ucall, r5 contains ucall pointer = */ +#define UCALL_R4_SIMPLE 0x0000 /* simple exit usable by asm with no ucall = data */ + +static inline void ucall_arch_init(struct kvm_vm *vm, gpa_t mmio_gpa) +{ +} + +static inline void ucall_arch_do_ucall(gva_t uc) +{ + hcall2(H_UCALL, UCALL_R4_UCALL, (uintptr_t)(uc)); +} + +#endif diff --git a/tools/testing/selftests/kvm/lib/guest_modes.c b/tools/testing/= selftests/kvm/lib/guest_modes.c index 7a96c43b5704..439766fad693 100644 --- a/tools/testing/selftests/kvm/lib/guest_modes.c +++ b/tools/testing/selftests/kvm/lib/guest_modes.c @@ -4,16 +4,20 @@ */ #include "guest_modes.h" =20 -#if defined(__aarch64__) || defined(__riscv) +#if defined(__aarch64__) || defined(__riscv) || defined(__powerpc64__) #include "processor.h" enum vm_guest_mode vm_mode_default; #endif =20 +#if defined(__powerpc64__) +#include +#endif + struct guest_mode guest_modes[NUM_VM_MODES]; =20 void guest_modes_append_default(void) { -#if !defined(__aarch64__) && !defined(__riscv) +#if !defined(__aarch64__) && !defined(__riscv) && !defined(__powerpc64__) guest_mode_append(VM_MODE_DEFAULT, true); #endif =20 @@ -108,6 +112,18 @@ void guest_modes_append_default(void) TEST_ASSERT(vm_mode_default !=3D NUM_VM_MODES, "No supported mode!"); } #endif +#ifdef __powerpc64__ + { + TEST_REQUIRE(kvm_has_cap(KVM_CAP_PPC_MMU_RADIX)); + /* Radix guest EA and RA are 52-bit on POWER9 and POWER10 */ + if (sysconf(_SC_PAGESIZE) =3D=3D 4096) + vm_mode_default =3D VM_MODE_P52V52_4K; + else + vm_mode_default =3D VM_MODE_P52V52_64K; + guest_mode_append(VM_MODE_P52V52_4K, true); + guest_mode_append(VM_MODE_P52V52_64K, true); + } +#endif } =20 void for_each_guest_mode(void (*func)(enum vm_guest_mode, void *), void *a= rg) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index ac7215824203..e00a25f59416 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -218,6 +218,8 @@ const char *vm_guest_mode_string(u32 i) [VM_MODE_P41V57_4K] =3D "PA-bits:41, VA-bits:57, 4K pages", [VM_MODE_P41V48_4K] =3D "PA-bits:41, VA-bits:48, 4K pages", [VM_MODE_P41V39_4K] =3D "PA-bits:41, VA-bits:39, 4K pages", + [VM_MODE_P52V52_4K] =3D "PA-bits:52, VA-bits:52, 4K pages", + [VM_MODE_P52V52_64K] =3D "PA-bits:52, VA-bits:52, 64K pages", }; _Static_assert(sizeof(strings)/sizeof(char *) =3D=3D NUM_VM_MODES, "Missing new mode strings?"); @@ -254,6 +256,8 @@ const struct vm_guest_mode_params vm_guest_mode_params[= ] =3D { [VM_MODE_P41V57_4K] =3D { 41, 57, 0x1000, 12 }, [VM_MODE_P41V48_4K] =3D { 41, 48, 0x1000, 12 }, [VM_MODE_P41V39_4K] =3D { 41, 39, 0x1000, 12 }, + [VM_MODE_P52V52_4K] =3D { 52, 52, 0x1000, 12 }, + [VM_MODE_P52V52_64K] =3D { 52, 52, 0x10000, 16 }, }; _Static_assert(sizeof(vm_guest_mode_params)/sizeof(struct vm_guest_mode_pa= rams) =3D=3D NUM_VM_MODES, "Missing new mode params?"); @@ -371,6 +375,10 @@ struct kvm_vm *____vm_create(struct vm_shape shape) case VM_MODE_P41V39_4K: vm->mmu.pgtable_levels =3D 3; break; + case VM_MODE_P52V52_4K: + case VM_MODE_P52V52_64K: + vm->mmu.pgtable_levels =3D 4; + break; default: TEST_FAIL("Unknown guest mode: 0x%x", vm->mode); } diff --git a/tools/testing/selftests/kvm/lib/powerpc/handlers.S b/tools/tes= ting/selftests/kvm/lib/powerpc/handlers.S new file mode 100644 index 000000000000..b860f6a520a1 --- /dev/null +++ b/tools/testing/selftests/kvm/lib/powerpc/handlers.S @@ -0,0 +1,93 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#include + +.macro INTERRUPT vec +. =3D __interrupts_start + \vec + std %r0,(0*8)(%r13) + std %r3,(3*8)(%r13) + mfspr %r0,SPR_CFAR + li %r3,\vec + b handle_interrupt +.endm + +.balign 0x1000 +.global __interrupts_start +__interrupts_start: +INTERRUPT 0x100 +INTERRUPT 0x200 +INTERRUPT 0x300 +INTERRUPT 0x380 +INTERRUPT 0x400 +INTERRUPT 0x480 +INTERRUPT 0x500 +INTERRUPT 0x600 +INTERRUPT 0x700 +INTERRUPT 0x800 +INTERRUPT 0x900 +INTERRUPT 0xa00 +INTERRUPT 0xc00 +INTERRUPT 0xd00 +INTERRUPT 0xf00 +INTERRUPT 0xf20 +INTERRUPT 0xf40 +INTERRUPT 0xf60 + +virt_handle_interrupt: + stdu %r1,-INT_FRAME_SIZE(%r1) + mr %r3,%r31 + bl route_interrupt + ld %r4,(32*8)(%r31) /* NIA */ + ld %r5,(33*8)(%r31) /* MSR */ + ld %r6,(35*8)(%r31) /* LR */ + ld %r7,(36*8)(%r31) /* CTR */ + ld %r8,(37*8)(%r31) /* XER */ + lwz %r9,(38*8)(%r31) /* CR */ + mtspr SPR_SRR0,%r4 + mtspr SPR_SRR1,%r5 + mtlr %r6 + mtctr %r7 + mtxer %r8 + mtcr %r9 +reg=3D4 + ld %r0,(0*8)(%r31) + ld %r3,(3*8)(%r31) +.rept 28 + ld reg,(reg*8)(%r31) + reg=3Dreg+1 +.endr + addi %r1,%r1,INT_FRAME_SIZE + rfid + +virt_handle_interrupt_p: + .llong virt_handle_interrupt + +handle_interrupt: +reg=3D4 +.rept 28 + std reg,(reg*8)(%r13) + reg=3Dreg+1 +.endr + mfspr %r4,SPR_SRR0 + mfspr %r5,SPR_SRR1 + mflr %r6 + mfctr %r7 + mfxer %r8 + mfcr %r9 + std %r4,(32*8)(%r13) /* NIA */ + std %r5,(33*8)(%r13) /* MSR */ + std %r0,(34*8)(%r13) /* CFAR */ + std %r6,(35*8)(%r13) /* LR */ + std %r7,(36*8)(%r13) /* CTR */ + std %r8,(37*8)(%r13) /* XER */ + stw %r9,(38*8 + 0)(%r13) /* CR */ + stw %r3,(38*8 + 4)(%r13) /* TRAP */ + + ld %r31,(39*8)(%r13) /* vaddr */ + ld %r4,virt_handle_interrupt_p - __interrupts_start(0) + mtspr SPR_SRR0,%r4 + /* Reuse SRR1 */ + + rfid +.global __interrupts_end +__interrupts_end: diff --git a/tools/testing/selftests/kvm/lib/powerpc/hcall.c b/tools/testin= g/selftests/kvm/lib/powerpc/hcall.c new file mode 100644 index 000000000000..efb4318252be --- /dev/null +++ b/tools/testing/selftests/kvm/lib/powerpc/hcall.c @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * PAPR (pseries) hcall support. + */ +#include "kvm_util.h" +#include "hcall.h" + +int64_t hcall0(uint64_t token) +{ + register uintptr_t r3 asm ("r3") =3D token; + + asm volatile("sc 1" : "+r"(r3) : + : "r0", "r4", "r5", "r6", "r7", "r8", "r9", + "r10", "r11", "r12", "ctr", "xer", + "cc", "memory"); + + return r3; +} + +int64_t hcall1(uint64_t token, uint64_t arg1) +{ + register uintptr_t r3 asm ("r3") =3D token; + register uintptr_t r4 asm ("r4") =3D arg1; + + asm volatile("sc 1" : "+r"(r3), "+r"(r4) : + : "r0", "r5", "r6", "r7", "r8", "r9", + "r10", "r11", "r12", "ctr", "xer", + "cc", "memory"); + + return r3; +} + +int64_t hcall2(uint64_t token, uint64_t arg1, uint64_t arg2) +{ + register uintptr_t r3 asm ("r3") =3D token; + register uintptr_t r4 asm ("r4") =3D arg1; + register uintptr_t r5 asm ("r5") =3D arg2; + + asm volatile("sc 1" : "+r"(r3), "+r"(r4), "+r"(r5) : + : "r0", "r6", "r7", "r8", "r9", + "r10", "r11", "r12", "ctr", "xer", + "cc", "memory"); + + return r3; +} diff --git a/tools/testing/selftests/kvm/lib/powerpc/processor.c b/tools/te= sting/selftests/kvm/lib/powerpc/processor.c new file mode 100644 index 000000000000..9846ec26a32a --- /dev/null +++ b/tools/testing/selftests/kvm/lib/powerpc/processor.c @@ -0,0 +1,483 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * KVM selftest powerpc library code - CPU-related functions (page tables.= ..) + */ + +#include + +#include "processor.h" +#include "kvm_util.h" +#include "ucall_common.h" +#include "guest_modes.h" +#include "hcall.h" + +#define RADIX_TREE_SIZE ((0x2UL << 61) | (0x5UL << 5)) /* 52-bits */ +#define RADIX_PGD_INDEX_SIZE 13 + +static void set_proc_table(struct kvm_vm *vm, int pid, uint64_t dw0, uint6= 4_t dw1) +{ + uint64_t *proc_table; + + proc_table =3D addr_gpa2hva(vm, vm->arch.prtb); + proc_table[pid * 2 + 0] =3D cpu_to_be64(dw0); + proc_table[pid * 2 + 1] =3D cpu_to_be64(dw1); +} + +static void set_radix_proc_table(struct kvm_vm *vm, int pid, gpa_t pgd) +{ + set_proc_table(vm, pid, pgd | RADIX_TREE_SIZE | RADIX_PGD_INDEX_SIZE, 0); +} + +void virt_arch_pgd_alloc(struct kvm_vm *vm) +{ + struct kvm_ppc_mmuv3_cfg mmu_cfg; + gpa_t prtb, pgtb; + size_t pgd_pages; + + TEST_ASSERT((vm->mode =3D=3D VM_MODE_P52V52_4K) || + (vm->mode =3D=3D VM_MODE_P52V52_64K), + "Unsupported guest mode, mode: 0x%x", vm->mode); + + prtb =3D vm_phy_page_alloc(vm, KVM_GUEST_PAGE_TABLE_MIN_PADDR, + vm->memslots[MEM_REGION_PT]); + vm->arch.prtb =3D prtb; + + pgd_pages =3D (1UL << (RADIX_PGD_INDEX_SIZE + 3)) >> vm->page_shift; + if (!pgd_pages) + pgd_pages =3D 1; + pgtb =3D vm_phy_pages_alloc_align(vm, pgd_pages, pgd_pages, + KVM_GUEST_PAGE_TABLE_MIN_PADDR, + vm->memslots[MEM_REGION_PT]); + vm->mmu.pgd =3D pgtb; + + /* Set the base page directory in the proc table */ + set_radix_proc_table(vm, 0, pgtb); + + if (vm->mode =3D=3D VM_MODE_P52V52_4K) + mmu_cfg.process_table =3D prtb | 0x8000000000000000UL | 0x0; /* 4K size = */ + else /* vm->mode =3D=3D VM_MODE_P52V52_64K */ + mmu_cfg.process_table =3D prtb | 0x8000000000000000UL | 0x4; /* 64K size= */ + mmu_cfg.flags =3D KVM_PPC_MMUV3_RADIX | KVM_PPC_MMUV3_GTSE; + + vm_ioctl(vm, KVM_PPC_CONFIGURE_V3_MMU, &mmu_cfg); +} + +static int pt_shift(struct kvm_vm *vm, int level) +{ + switch (level) { + case 1: + return 13; + case 2: + case 3: + return 9; + case 4: + if (vm->mode =3D=3D VM_MODE_P52V52_4K) + return 9; + else /* vm->mode =3D=3D VM_MODE_P52V52_64K */ + return 5; + default: + TEST_ASSERT(false, "Invalid page table level %d\n", level); + return 0; + } +} + +static uint64_t pt_entry_coverage(struct kvm_vm *vm, int level) +{ + uint64_t size =3D vm->page_size; + + if (level =3D=3D 4) + return size; + size <<=3D pt_shift(vm, 4); + if (level =3D=3D 3) + return size; + size <<=3D pt_shift(vm, 3); + if (level =3D=3D 2) + return size; + size <<=3D pt_shift(vm, 2); + return size; +} + +static int pt_idx(struct kvm_vm *vm, uint64_t vaddr, int level, uint64_t *= nls) +{ + switch (level) { + case 1: + if (nls) + *nls =3D 0x9; + return (vaddr >> 39) & 0x1fff; + case 2: + if (nls) + *nls =3D 0x9; + return (vaddr >> 30) & 0x1ff; + case 3: + if (vm->mode =3D=3D VM_MODE_P52V52_4K) { + if (nls) + *nls =3D 0x9; + } else { /* vm->mode =3D=3D VM_MODE_P52V52_64K */ + if (nls) + *nls =3D 0x5; + } + return (vaddr >> 21) & 0x1ff; + case 4: + if (vm->mode =3D=3D VM_MODE_P52V52_4K) + return (vaddr >> 12) & 0x1ff; + else /* vm->mode =3D=3D VM_MODE_P52V52_64K */ + return (vaddr >> 16) & 0x1f; + default: + TEST_ASSERT(false, "Invalid page table level %d\n", level); + return 0; + } +} + +static uint64_t *virt_get_pte(struct kvm_vm *vm, gpa_t pt, + uint64_t vaddr, int level, uint64_t *nls) +{ + int idx =3D pt_idx(vm, vaddr, level, nls); + uint64_t *ptep =3D addr_gpa2hva(vm, pt + idx * 8); + + return ptep; +} + +#define PTE_VALID 0x8000000000000000ull +#define PTE_LEAF 0x4000000000000000ull +#define PTE_REFERENCED 0x0000000000000100ull +#define PTE_CHANGED 0x0000000000000080ull +#define PTE_PRIV 0x0000000000000008ull +#define PTE_READ 0x0000000000000004ull +#define PTE_RW 0x0000000000000002ull +#define PTE_EXEC 0x0000000000000001ull +#define PTE_PAGE_MASK 0x01fffffffffff000ull + +#define PDE_VALID PTE_VALID +#define PDE_NLS 0x0000000000000011ull +#define PDE_PT_MASK 0x0fffffffffffff00ull + +static gpa_t __vm_alloc_pt(struct kvm_vm *vm, uint64_t pt_shift) +{ + gpa_t pt; + + if (pt_shift >=3D vm->page_shift) { + size_t pt_pages =3D 1ULL << (pt_shift - vm->page_shift); + + pt =3D vm_phy_pages_alloc_align(vm, pt_pages, pt_pages, + KVM_GUEST_PAGE_TABLE_MIN_PADDR, + vm->memslots[MEM_REGION_PT]); + } else { + struct vm_pt_frag_cache *pt_frag_cache; + + if (pt_shift =3D=3D 8) { + pt_frag_cache =3D &vm->arch.pt_frag_cache[0]; + } else if (pt_shift =3D=3D 12) { + pt_frag_cache =3D &vm->arch.pt_frag_cache[1]; + } else { + TEST_ASSERT(0, "Invalid pt_shift:%lu\n", pt_shift); + return 0; + } + + if (!pt_frag_cache->page) { + pt_frag_cache->page =3D vm_phy_pages_alloc_align(vm, 1, 1, + KVM_GUEST_PAGE_TABLE_MIN_PADDR, + vm->memslots[MEM_REGION_PT]); + } + pt =3D pt_frag_cache->page + pt_frag_cache->page_nr_used; + pt_frag_cache->page_nr_used +=3D (1 << pt_shift); + if (pt_frag_cache->page_nr_used =3D=3D vm->page_size) { + pt_frag_cache->page =3D 0; + pt_frag_cache->page_nr_used =3D 0; + } + } + + return pt; +} + +void virt_arch_pg_map(struct kvm_vm *vm, uint64_t gva, uint64_t gpa) +{ + gpa_t pt =3D vm->mmu.pgd; + uint64_t *ptep, pte; + int level; + + for (level =3D 1; level <=3D 3; level++) { + uint64_t nls; + uint64_t *pdep =3D virt_get_pte(vm, pt, gva, level, &nls); + uint64_t pde =3D be64_to_cpu(*pdep); + + if (pde) { + TEST_ASSERT((pde & PDE_VALID) && !(pde & PTE_LEAF), + "Invalid PDE at level: %u gva: 0x%lx pde:0x%lx\n", + level, gva, pde); + pt =3D pde & PDE_PT_MASK; + continue; + } + + pt =3D __vm_alloc_pt(vm, nls + 3); + pde =3D PDE_VALID | nls | pt; + *pdep =3D cpu_to_be64(pde); + } + + ptep =3D virt_get_pte(vm, pt, gva, level, NULL); + pte =3D be64_to_cpu(*ptep); + + TEST_ASSERT(!pte, "PTE already present at level: %u gva: 0x%lx pte:0x%lx\= n", + level, gva, pte); + + pte =3D PTE_VALID | PTE_LEAF | PTE_REFERENCED | PTE_CHANGED | PTE_PRIV | + PTE_READ | PTE_RW | PTE_EXEC | (gpa & PTE_PAGE_MASK); + *ptep =3D cpu_to_be64(pte); +} + +gpa_t addr_arch_gva2gpa(struct kvm_vm *vm, gva_t gva) +{ + gpa_t pt =3D vm->mmu.pgd; + uint64_t *ptep, pte; + int level; + + for (level =3D 1; level <=3D 3; level++) { + uint64_t nls; + uint64_t *pdep =3D virt_get_pte(vm, pt, gva, level, &nls); + uint64_t pde =3D be64_to_cpu(*pdep); + + TEST_ASSERT((pde & PDE_VALID) && !(pde & PTE_LEAF), + "PDE not present at level: %u gva: 0x%lx pde:0x%lx\n", + level, gva, pde); + pt =3D pde & PDE_PT_MASK; + } + + ptep =3D virt_get_pte(vm, pt, gva, level, NULL); + pte =3D be64_to_cpu(*ptep); + + TEST_ASSERT(pte, + "PTE not present at level: %u gva: 0x%lx pte:0x%lx\n", + level, gva, pte); + + TEST_ASSERT((pte & PTE_VALID) && (pte & PTE_LEAF), + "PTE not valid at level: %u gva: 0x%lx pte:0x%lx\n", + level, gva, pte); + + return (pte & PTE_PAGE_MASK) + (gva & (vm->page_size - 1)); +} + +static void virt_dump_pt(FILE *stream, struct kvm_vm *vm, gpa_t pt, + gva_t va, int level, uint8_t indent) +{ + int size, idx; + + size =3D 1U << (pt_shift(vm, level) + 3); + + for (idx =3D 0; idx < size; idx +=3D 8, va +=3D pt_entry_coverage(vm, lev= el)) { + uint64_t *page_table =3D addr_gpa2hva(vm, pt + idx); + uint64_t pte =3D be64_to_cpu(*page_table); + + if (!(pte & PTE_VALID)) + continue; + + if (pte & PTE_LEAF) { + fprintf(stream, + "%*s PTE[%d] gVA:0x%016lx -> gRA:0x%016llx\n", + indent, "", idx / 8, va, pte & PTE_PAGE_MASK); + } else { + fprintf(stream, "%*sPDE%d[%d] gVA:0x%016lx\n", + indent, "", level, idx / 8, va); + virt_dump_pt(stream, vm, pte & PDE_PT_MASK, va, + level + 1, indent + 2); + } + } + +} + +void virt_arch_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent) +{ + gpa_t pt =3D vm->mmu.pgd; + + if (!vm->mmu.pgd_created) + return; + + virt_dump_pt(stream, vm, pt, 0, 1, indent); +} + +static unsigned long get_r2(void) +{ + unsigned long r2; + + asm("mr %0,%%r2" : "=3Dr"(r2)); + + return r2; +} + +void vcpu_arch_set_entry_point(struct kvm_vcpu *vcpu, void *guest_code) +{ + struct kvm_regs regs; + + vcpu_regs_get(vcpu, ®s); + regs.pc =3D (uintptr_t)guest_code; + regs.gpr[12] =3D (uintptr_t)guest_code; + vcpu_regs_set(vcpu, ®s); +} + +struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id) +{ + const size_t stack_size =3D SZ_64K; + gva_t stack_vaddr, ex_regs_vaddr; + gpa_t ex_regs_paddr; + struct ex_regs *ex_regs; + struct kvm_regs regs; + struct kvm_vcpu *vcpu; + uint64_t lpcr; + + stack_vaddr =3D __vm_alloc(vm, stack_size, + DEFAULT_GUEST_STACK_VADDR_MIN, + MEM_REGION_DATA); + + ex_regs_vaddr =3D __vm_alloc(vm, stack_size, + DEFAULT_GUEST_STACK_VADDR_MIN, + MEM_REGION_DATA); + ex_regs_paddr =3D addr_gva2gpa(vm, ex_regs_vaddr); + ex_regs =3D addr_gpa2hva(vm, ex_regs_paddr); + ex_regs->vaddr =3D ex_regs_vaddr; + + vcpu =3D __vm_vcpu_add(vm, vcpu_id); + + vcpu_enable_cap(vcpu, KVM_CAP_PPC_PAPR, 1); + + /* Setup guest registers */ + vcpu_regs_get(vcpu, ®s); + lpcr =3D vcpu_get_reg(vcpu, KVM_REG_PPC_LPCR_64); + + regs.gpr[1] =3D stack_vaddr + stack_size - 256; + regs.gpr[2] =3D (uintptr_t)get_r2(); + regs.gpr[13] =3D (uintptr_t)ex_regs_paddr; + + regs.msr =3D MSR_SF | MSR_VEC | MSR_VSX | MSR_FP | + MSR_ME | MSR_IR | MSR_DR | MSR_RI; + + if (BYTE_ORDER =3D=3D LITTLE_ENDIAN) { + regs.msr |=3D MSR_LE; + lpcr |=3D LPCR_ILE; + } else { + lpcr &=3D ~LPCR_ILE; + } + + vcpu_regs_set(vcpu, ®s); + vcpu_set_reg(vcpu, KVM_REG_PPC_LPCR_64, lpcr); + + return vcpu; +} + +void vcpu_args_set(struct kvm_vcpu *vcpu, unsigned int num, ...) +{ + va_list ap; + struct kvm_regs regs; + int i; + + TEST_ASSERT(num >=3D 1 && num <=3D 5, "Unsupported number of args: %u\n", + num); + + va_start(ap, num); + vcpu_regs_get(vcpu, ®s); + + for (i =3D 0; i < num; i++) + regs.gpr[i + 3] =3D va_arg(ap, uint64_t); + + vcpu_regs_set(vcpu, ®s); + va_end(ap); +} + +void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent) +{ + struct kvm_regs regs; + + vcpu_regs_get(vcpu, ®s); + + fprintf(stream, "%*sNIA: 0x%016llx MSR: 0x%016llx\n", + indent, "", regs.pc, regs.msr); + fprintf(stream, "%*sLR: 0x%016llx CTR :0x%016llx\n", + indent, "", regs.lr, regs.ctr); + fprintf(stream, "%*sCR: 0x%08llx XER :0x%016llx\n", + indent, "", regs.cr, regs.xer); +} + +void kvm_arch_vm_post_create(struct kvm_vm *vm, unsigned int nr_vcpus) +{ + size_t excp_size =3D __interrupts_end - __interrupts_start; + size_t excp_pages =3D (excp_size + vm->page_size - 1) / vm->page_size; + gpa_t excp_paddr; + void *mem; + + excp_paddr =3D vm_phy_pages_alloc(vm, excp_pages, 0, + vm->memslots[MEM_REGION_DATA]); + + TEST_ASSERT(excp_paddr =3D=3D 0, + "Interrupt vectors not allocated at gPA address 0: (0x%lx)", + excp_paddr); + + mem =3D addr_gpa2hva(vm, excp_paddr); + memcpy(mem, __interrupts_start, excp_size); +} + +void assert_on_unhandled_exception(struct kvm_vcpu *vcpu) +{ + struct ucall uc; + + if (get_ucall(vcpu, &uc) =3D=3D UCALL_UNHANDLED) { + gpa_t ex_regs_paddr; + struct ex_regs *ex_regs; + struct kvm_regs regs; + + vcpu_regs_get(vcpu, ®s); + ex_regs_paddr =3D (gpa_t)regs.gpr[13]; + ex_regs =3D addr_gpa2hva(vcpu->vm, ex_regs_paddr); + + TEST_FAIL("Unexpected interrupt in guest NIA:0x%016lx MSR:0x%016lx TRAP:= 0x%04x", + ex_regs->nia, ex_regs->msr, ex_regs->trap); + } +} + +struct handler { + void (*fn)(struct ex_regs *regs); + int trap; +}; + +#define NR_HANDLERS 10 +static struct handler handlers[NR_HANDLERS]; + +void route_interrupt(struct ex_regs *regs) +{ + int i; + + for (i =3D 0; i < NR_HANDLERS; i++) { + if (handlers[i].trap =3D=3D regs->trap) { + handlers[i].fn(regs); + return; + } + } + + ucall(UCALL_UNHANDLED, 0); +} + +void vm_install_exception_handler(struct kvm_vm *vm, int trap, + void (*fn)(struct ex_regs *)) +{ + int i; + + for (i =3D 0; i < NR_HANDLERS; i++) { + if (!handlers[i].trap || handlers[i].trap =3D=3D trap) { + if (fn =3D=3D NULL) + trap =3D 0; /* Clear handler */ + handlers[i].trap =3D trap; + handlers[i].fn =3D fn; + sync_global_to_guest(vm, handlers[i]); + return; + } + } + + TEST_FAIL("Out of exception handlers"); +} + +void kvm_selftest_arch_init(void) +{ + TEST_REQUIRE(kvm_has_cap(KVM_CAP_PPC_MMU_RADIX)); + + /* + * powerpc default mode is set by host page size and not static, + * so start by computing that early. + */ + guest_modes_append_default(); +} diff --git a/tools/testing/selftests/kvm/lib/powerpc/ucall.c b/tools/testin= g/selftests/kvm/lib/powerpc/ucall.c new file mode 100644 index 000000000000..3481a7a0b850 --- /dev/null +++ b/tools/testing/selftests/kvm/lib/powerpc/ucall.c @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * ucall support. A ucall is a "hypercall to host userspace". + */ +#include "kvm_util.h" +#include "ucall_common.h" +#include "hcall.h" + +void *ucall_arch_get_ucall(struct kvm_vcpu *vcpu) +{ + struct kvm_run *run =3D vcpu->run; + + if (run->exit_reason =3D=3D UCALL_EXIT_REASON && + run->papr_hcall.nr =3D=3D H_UCALL) { + struct kvm_regs regs; + + vcpu_regs_get(vcpu, ®s); + if (regs.gpr[4] =3D=3D UCALL_R4_UCALL) + return (void *)regs.gpr[5]; + } + return NULL; +} --=20 2.50.1 (Apple Git-155) From nobody Wed Jun 10 22:47:08 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 5E2C1408006 for ; Wed, 10 Jun 2026 12:48:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095684; cv=none; b=On3BaVe3GdELDASPD4x1vgtbE9aOVMMae3oIQhok54dH2VZ1Su1ynd+ZyCj2LmaRwPNjTRJqbwOJTSr4FNzEmJUXGxA7eGsWDRudzI7zZRSMyFD/44ZqEbQI+UxPWu+xP1kNCu7JVo205pJzjUeTdzA2CIwQS93q3ZzwdZJh6mk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095684; c=relaxed/simple; bh=vb8J9WPTwzLVB6z1mh6FgX4LLdfqg9muViMT6Ci00oo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GSes3N+Epqj5/lPCsmPL5svnU9AnEnRyMJLzAA/+dLYHiDuED4gUvWf7hT8V0qg++Cp3onr1SWxYpEIleabPHhusMEsmeXSxKTNVvoIhAbYsuzwvh+DzlZ8pjqIT3CL+Z8O1V4IcObHfXiVa7B5l+M5Y68QFVMxvf2JdVXGbS+0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=m4ER7PYY; arc=none smtp.client-ip=209.85.216.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="m4ER7PYY" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-36bcf3d2565so4670285a91.3 for ; Wed, 10 Jun 2026 05:48:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781095682; x=1781700482; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YzUuGXzS98sIHXJvfaHc1K4ylZrcF6IomhXuLR53Dbo=; b=m4ER7PYYdMTkkntXNImgMkr1Qu7Wuxa0DWZhwwYrXU0BS8RXA0pf600gMgcSBelzWp 9/5fFpGZiK+mFEl024wIxvG8CbIdw9YMMdKbPnsBipRqmZzHRU/endYOQmSe2Bqq29lh Twd02glx6vHPgGF3XZ0CrDjqfUU5PqcwbvoTt/20bOYgn/BDU4dVafHAh9PSSo6ON49y nBnmS59qzOSYqgt0HZoecvctlj+01k1IllirbTkXUFzxFdH8hJrFDHjPChRpjtSmZc9h YyuyQxvmz44U8slx7JRawWHOjtH1hxvwt4l7WRULE4mgodNM/LjBJs7RTgCVqxRMmhz5 EJZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781095682; x=1781700482; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YzUuGXzS98sIHXJvfaHc1K4ylZrcF6IomhXuLR53Dbo=; b=C4vDxhH7ULFHkfI/fkx46iHwJbj9GoBgJ2W/0G8TC8kXf/U5j5FurHY+ZSZqCLyQQb WkCU93BIGK+h92NpbOakkKt7jugcwCjuEQTD8pfIJmVn0u6yNKysCBlFYYP4XtBzxMuR raebbY7Z4hT62sqHsTTfUacjkh6TaJHtCU6NhRrR9KwzvyEOL9nwO5ny1+6Cz1pcy/A6 gaQCtwdohALmn0pbt0FVBy1SMQ2V/zeTslY6pUGVnw2Oh1XwVzUVadTtcvsvYeupWgW4 VRFNqWh419BIdutx/EvELmUNEBPJOyiHfOqlpzxSMSWRVKvIqtz+0JQmAOwChXoj7jwd H9Ww== X-Forwarded-Encrypted: i=1; AFNElJ+lBz+dfjJJCV2NNZpGTLTMDZ7PlP+A1FZSpb27aP4YS9vWgLOB4gJgxc6VdWGIBTLM1gzb5nrwHDzVD00=@vger.kernel.org X-Gm-Message-State: AOJu0YxNGrd4yHsi3dnIliTqYTnlVrTMpTP7UOukcKEUAbIu0PlM1MxM eqSRLUtGBrH0Hwo3LuBPMr+Xw82CFQEGhGl6rUJmH0fQrc28YXpkF1S6 X-Gm-Gg: Acq92OEFxLyq+SLqUIUOA4SmK6c/wAyF5FWf3Ycwpsn9eSP65i4tCBVMjZGoOWG2F0B phVgUCfvmxrMk2WymYwXzJyIyd5WhjRZ150h0/gLFqiLGajKaSRyqzx6uggAtwiUBBn7P6iznrR B8nWyPjJFOC8//L73aCpAxJMEw3Jb+EsXC4OFupKsmBg/yrel6iUWVwT3YTpV9SjS2P0Q7VKztD XHJDjFb2DjtSYtwQFc90aNtmreqepwUEt55tQ3NcTiIrAerBLW3zSyhg8RPDyhUWqUOkB43UE8c Dm3Wjiylf6VjjMClUGSdzWhMVEji9+E/9IIH6xRKqiAgmhD/m6QgxLHHUwUbjt+cuyECmHvMEBj A1DEkR9fO2CNw/jVcmaAzr8bCh5xfS52d+BOHZ8ZUvTHEE3jWYZbN7ubT66/eia56WHLU9dko29 Mqv91uBWgz8xisueUVxhMsD8M1/wWuMbD7J9sj4fJR+HkucvhV1dVdHiH6g+VPTg== X-Received: by 2002:a17:90b:390e:b0:36d:7b62:4767 with SMTP id 98e67ed59e1d1-370ee447eebmr24964447a91.5.1781095681671; Wed, 10 Jun 2026 05:48:01 -0700 (PDT) Received: from localhost.localdomain ([171.76.83.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37624b83589sm3783554a91.16.2026.06.10.05.47.56 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 10 Jun 2026 05:48:01 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org, Paolo Bonzini Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Christophe Leroy , Anushree Mathur , Venkat Rao Bagalkote , Harsh Prateek Bora , Sean Christopherson , Ackerley Tng , Christian Borntraeger , Claudio Imbrenda , Nicholas Piggin , "Ritesh Harjani (IBM)" Subject: [PATCH v3 RESEND 04/10] KVM: PPC: selftests: powerpc enable kvm_create_max_vcpus test Date: Wed, 10 Jun 2026 18:17:20 +0530 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Nicholas Piggin powerpc's maximum permitted vCPU ID depends on the VM's SMT mode, and the maximum reported by KVM_CAP_MAX_VCPU_ID exceeds a simple non-SMT VM's limit. The powerpc KVM selftest port uses non-SMT VMs, so add a workaround to the kvm_create_max_vcpus test case to limit vCPU IDs to KVM_CAP_MAX_VCPUS on powerpc. Signed-off-by: Nicholas Piggin [Rebased to latest mainline tree] Signed-off-by: Ritesh Harjani (IBM) --- tools/testing/selftests/kvm/kvm_create_max_vcpus.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/testing/selftests/kvm/kvm_create_max_vcpus.c b/tools/tes= ting/selftests/kvm/kvm_create_max_vcpus.c index c5310736ed06..a82c13d6cdf5 100644 --- a/tools/testing/selftests/kvm/kvm_create_max_vcpus.c +++ b/tools/testing/selftests/kvm/kvm_create_max_vcpus.c @@ -56,6 +56,15 @@ int main(int argc, char *argv[]) "KVM_MAX_VCPU_IDS (%d) must be at least as large as KVM_MAX_VCPUS (%= d).", kvm_max_vcpu_id, kvm_max_vcpus); =20 +#ifdef __powerpc64__ + /* + * powerpc has a particular format for the vcpu ID that depends on + * the guest SMT mode, and the max ID cap is too large for non-SMT + * modes, where the maximum ID is the same as the maximum vCPUs. + */ + kvm_max_vcpu_id =3D kvm_max_vcpus; +#endif + test_vcpu_creation(0, kvm_max_vcpus); =20 if (kvm_max_vcpu_id > kvm_max_vcpus) --=20 2.50.1 (Apple Git-155) From nobody Wed Jun 10 22:47:08 2026 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (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 436043AE199 for ; Wed, 10 Jun 2026 12:48:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095689; cv=none; b=P/QzSoHqDM5utq2O1f+Fop42ZaKGslzrPnzWRdNKpTWvpUj+JMcFjcmwrKsFTRh4ha4pHLqDep83eZqtKIqPPQIZxJggWmmfcO7lT8aqBKFy3CVNq0PJN1RkO0hF75mbWma/92e/zwpzCP3tRbIh+qxrEY9eH4g9/gX/rI/M92Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095689; c=relaxed/simple; bh=2LroV12QDHXlJWFdk5Jo33toYJgSdnDGipf5x6qtCco=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CxJYkclUwJRgTVEHcnEKW+P7VhfOuN5/ddnyPwEng29Dq4S6jxv2mUiUa/kHSy4OyMWXIG5lscz1u4DuqL9uoJpCw3z6s/lNj9o3IvtTbrvts3h/xndA7MWcb6BMCuBv0sTgOfV/wiWF83SNigbvcdlReWv/U5a+X6MTzr7PTCo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UtUHPGAb; arc=none smtp.client-ip=209.85.216.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UtUHPGAb" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-36dd65b95f2so4805554a91.0 for ; Wed, 10 Jun 2026 05:48:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781095688; x=1781700488; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VrxTcenItW2gu16uj0ViHf2ekVBrXj9Zuq6BUQC9S+E=; b=UtUHPGAbWkkMw4Yml4p3Hlxna0oD8URX5rZdMxxcyJjMtu21cmRwngQbZCopP9V43A MVB0jrGfKDF2DqlgIIa14OHJvftIuwwDCdAt58uyaMhl5LZZcbpI20d8yHUVe7m8GInE RtTT1u+F2LdC67NXmkoj+s0abgDbMIqIXPN85ZBoblIqiY1nB03/3vSFU9adEcMmt8zU 9BMTsum6NdKU4FzBbSTIIDKeEwEqXRCRs8ZDDsZXMXLbkIAaHH1TDKHYyDdA5PNy5xMi hVBJ1okOtCUnqbcF7E6IgtRzdQ6YHZBfe7CtIuER4PUOYe2rvtHMY1QWHzLrF8yBtPcM pWDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781095688; x=1781700488; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=VrxTcenItW2gu16uj0ViHf2ekVBrXj9Zuq6BUQC9S+E=; b=XTw9he9U33czaGP8F0BAUSoUuuK+MaGP7MQ2Wkf/xKpm8zosyfKgWZ1AxKGJ5EdB09 py29yK/ldoycUoGFD5+aIeIGDXhgkR5VyBCuQ0p2Ge8MhrGbj2AnXGywYMLiTIb0SVXL IGH1URciU7eNgv3YpazlytyKt1lJleu3Q88t24rwhM1Xi4zQ7GhH0w4js8XzIWrr1ADE T2y2psYdrHEQjonVeU97v7AmW+SDLnvEW3O7cZTNRs17LEGHlHvwT8StpaiHBu+3YL2D VJsl5xHwv7DbBSVNYxvc1/llLzBedjx7QlhKxPk4JuaKVYadNa29lOO35FMpn7oFKp/u DiWw== X-Forwarded-Encrypted: i=1; AFNElJ98RyPrcpt2ENK3TuIfbjf1vd7xK1ZwI/V7CDj9IoRm8euZAqB2g/bYBJwrTsvdZJfovC2YjP/vmGiZClU=@vger.kernel.org X-Gm-Message-State: AOJu0Yyqel61L5XCCmzE55UWw/00Cha8lMK1eliiHrRU+Huihj49WQjJ FD/YP6mvcJQyG/0h8issv4ct4wHfhJhIWL+TVacDkABLt137vCeQber9 X-Gm-Gg: Acq92OFxXAme9ZX4FzjDrwR7FML25EgXliy/x7eFekt5ya9avydQaOHPD6Tar//6edK 6FCbjJCukIDkmnhO8sfp8hw0DZ8hsm5THKZy3aazENMTvSs7ZMLZ8vSeCnXbXKCgG23IYJh3lTt 3QmFFpM9Yic4r4w1/lVNzAE0W90nMGUFfpJv/IW2fyrHKf6n6wR/5GXGzfe5P8dC1W7EM9Z9e/u bM/Iaz2jAtkOVKWmOhWYXmiET3TD+nIoQT/cyLNoleQxhz7Tqbo2ePnZWNCyCPV6kttH0aKghjC Aj9IEyDn9VBV5BsEqI2k6YL1AAgX1mU95HZbiSaAAFORen45mDeH5aoXG6VNZQnccMdFQJ83hQu Oq/BCjdF1jb4AuKmr5lCXmT8HRePDCyxj8xO76Yht4zkGTYsdwTLKlt9sowsaqPN3tFU1q+iBmG iWK1/dkHY7g+B9ia8CWUwBcRg5x+ntUJ+PRZhz7Mextj9pSVtrd8RtJ33YfJwF/Q== X-Received: by 2002:a17:90b:560d:b0:36d:630a:c4e4 with SMTP id 98e67ed59e1d1-3712ffaa11fmr18804464a91.3.1781095687672; Wed, 10 Jun 2026 05:48:07 -0700 (PDT) Received: from localhost.localdomain ([171.76.83.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37624b83589sm3783554a91.16.2026.06.10.05.48.02 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 10 Jun 2026 05:48:06 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org, Paolo Bonzini Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Christophe Leroy , Anushree Mathur , Venkat Rao Bagalkote , Harsh Prateek Bora , Sean Christopherson , Ackerley Tng , Christian Borntraeger , Claudio Imbrenda , "Ritesh Harjani (IBM)" Subject: [PATCH v3 RESEND 05/10] KVM: selftests: Print the vcpu_id when KVM_CREATE_VCPU ioctl fails Date: Wed, 10 Jun 2026 18:17:21 +0530 Message-ID: <2d2c46be7f051c7f1c645afaec67f57067d37a81.1781093720.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Print the vcpu_id and errno when the KVM_CREATE_VCPU ioctl fails, for debug purposes. This helped in debugging an issue with KVM on PowerVM, where KVM_CREATE_VCPU only supports max 2048 vcpus, because the PAPR_HCALL H_GUEST_CREATE_VCPU ("Documentation/arch/powerpc/kvm-nested.rst") supports only up to 0-2047 vcpu_id. However KVM_CAP_MAX_VCPUS capability extension always reports max_= vcpus as NR_CPUS of the host. Signed-off-by: Ritesh Harjani (IBM) --- tools/testing/selftests/kvm/lib/kvm_util.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index e00a25f59416..6319e2037882 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1354,6 +1354,13 @@ struct kvm_vcpu *__vm_vcpu_add(struct kvm_vm *vm, u3= 2 vcpu_id) vcpu->vm =3D vm; vcpu->id =3D vcpu_id; vcpu->fd =3D __vm_ioctl(vm, KVM_CREATE_VCPU, (void *)(unsigned long)vcpu_= id); + if (vcpu->fd < 0) { + int saved_errno =3D errno; + + pr_info("Failed KVM_CREATE_VCPU for vcpu_id %u with errno %d\n", + vcpu_id, saved_errno); + errno =3D saved_errno; + } TEST_ASSERT_VM_VCPU_IOCTL(vcpu->fd >=3D 0, KVM_CREATE_VCPU, vcpu->fd, vm); =20 TEST_ASSERT(vcpu_mmap_sz() >=3D sizeof(*vcpu->run), "vcpu mmap size " --=20 2.50.1 (Apple Git-155) From nobody Wed Jun 10 22:47:08 2026 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) (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 3B6C13AE199 for ; Wed, 10 Jun 2026 12:48:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095695; cv=none; b=TDA4DOXu1WlXanq5tbJQwMwd9tTkAo3MnO81GiJ15S3NNK5gxQ1Wjea5bExBj6QgoU2fJEFoD+oeh3I0RTLToGN7EudWgSYNK4j0CuvVzxOYoHHpRYSF/dyqCtDYMtF20yMg/oRylm9FYpN90R6fFUhyCB1OLZdGrLxO6uBEmcc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095695; c=relaxed/simple; bh=iuKoNf2i+PHXWeiokIk7S1PGimD80LQSYGSvE6JQtqA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KHnPP/0LFdLYlA1gc0pTUlaDEiCY3/7ry5Xqr0by8DKHA812JyTzFNFMKkB0/lpwoz+puZMxq7+gxM/RMGtYkqzKpLt5wfty/JAHlx15Lt64y8TiJwTldRuotErOzSqBNjy8K+vWAd/w6FRkXhVR955WeEdH6dmDzfDZdChMeSk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QYiEpZrL; arc=none smtp.client-ip=209.85.216.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QYiEpZrL" Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-36b95eb4bb4so4150210a91.3 for ; Wed, 10 Jun 2026 05:48:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781095694; x=1781700494; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nqa48U7Zo36zEODVSIgL4W0ts+Mysp9P11byxscZfNU=; b=QYiEpZrLAGK0lsO502lzbILUEH8Sf/SQ6Q77HHhhY5H8r8h3iHz6XIJ6NsAl3woWdp Y9gJAwvvixAISeA+mEtj/3fqroSvNRK3CmBDSUqKhAC4eYYCxk4EbFN+idx6svllsyll WsZWpGFXciQfXQWoza3pQ8JKWcY4dThKmCrAGsQQclpjYnut3/U2xmqGQKek3Rk9haWW ThbVBwuh6joyw+q5R+xLx+o8MVm9vYPb7AxD2N0KQJyDwydqVQbkrGdkMs9nD550sv6j ghWTa/Hw6mL4aCl8+ZpfnnTA+F1SgSxCI6K3m3RPJ+Ud7sx7rqSJfOtmCcRitlbH4zRK ToRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781095694; x=1781700494; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=nqa48U7Zo36zEODVSIgL4W0ts+Mysp9P11byxscZfNU=; b=Hww7SGWmtiKgBdiqEOqzqVS1lLStsDgf4k9tb8WS1dELFAOewIV8+o1ux05MXcJ1xs neQ38O/EYy7cIhMROJgEVLHVia5Tb9/Y9tBfRrQs1fGsDjQHra4t3M+3hmzwsimKT+6I rs+4e8ZAeuBTli5gV251Op1+sTVeYpv8X7AKsN/R6UZdlKiiWCOehcOtW9bMu/apRyy7 sNe/BNIU/g7UVjlixJqBNapiHs+9DFRqmz9NI+4P9+/IK2WRHR5vL59nfhcHEpu92bow spQQP2tE2ELmyVhwgPObkTJzry4TPUdj6Q/vgptHFPh8SV4mHZH7DQ9R+FZ5JMwXceaS W1qw== X-Forwarded-Encrypted: i=1; AFNElJ/kRXGUeGSStdpMG1LU8VnQdOhxEHUu/dL6iVK1Olg5bcDVllsrNU2WfJ8blqrdbE2n501bdVA5dDhs3OY=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+YMLHCVxYnlhrYrN4gg6JAu0K3Kxy7ge/Xq2PNMOkEkj5Xs/C 7PFfnHMrd83Il2XJpGpzTEvO5EEpTB/ZnlE7wuQgWjqjoLpdDS7iNUAc X-Gm-Gg: Acq92OHhQWX5aEVsIMH6RKNTe5IU17dVTXmwePavxVw0XT801KG9FkJdOvrfsxAnjTY TO3Nj/QmmV0XsKrX2x7sm/HxXioeGJj2uxO1SZWCatj2wbWFj7ejvjnrIMTyUjh2JPtX1XhWrv2 ilvrvoYUsf7VzqcpY4cIhc0LSN4zruW5qup8UblkSmiZZ0FfYa+Gr62BvjMQPiFZ4p1GXkrq2Hu BnXXxJc1eSxPbJlJ0fiNhXncEs/wJgB9S20RxPicbsTN4J6rDCgn7/hreUEYhGhm/BaOqFxvGDE iA/Y96pTixcg5reyzHIEAa1GuHUf7phT7CWwUFckrYmrXVef7CzvJZ6JEYQc9btgeqpEkRajuWx 2rvOuJKeAhOTDyBoujM3pmGTBtnto0sUjgusDxtL4FmsclqHjesHFBytw690eHc9VzF8K1O0f4U rHNYi0oGtNFE3PtgSO9huglbE/6kNRZATVXJKZg5t4zqK9T94FSaC+sMn7v+tZ5Q== X-Received: by 2002:a17:90b:2706:b0:36b:ad81:c134 with SMTP id 98e67ed59e1d1-370ee928d34mr26496639a91.10.1781095693483; Wed, 10 Jun 2026 05:48:13 -0700 (PDT) Received: from localhost.localdomain ([171.76.83.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37624b83589sm3783554a91.16.2026.06.10.05.48.08 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 10 Jun 2026 05:48:12 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org, Paolo Bonzini Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Christophe Leroy , Anushree Mathur , Venkat Rao Bagalkote , Harsh Prateek Bora , Sean Christopherson , Ackerley Tng , Christian Borntraeger , Claudio Imbrenda , "Ritesh Harjani (IBM)" Subject: [PATCH v3 RESEND 06/10] KVM: PPC: selftests: Use u64 instead of uint64_t Date: Wed, 10 Jun 2026 18:17:22 +0530 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" commit 26f8453288d4c ("KVM: selftests: Use u64 instead of uint64_t") made this change from uint64_t -> u64 for all other kvm selftests. Do the same for powerpc as well. No functional changes expected. Signed-off-by: Ritesh Harjani (IBM) --- .../selftests/kvm/include/powerpc/hcall.h | 6 +-- .../selftests/kvm/include/powerpc/processor.h | 16 +++---- .../testing/selftests/kvm/lib/powerpc/hcall.c | 6 +-- .../selftests/kvm/lib/powerpc/processor.c | 44 +++++++++---------- 4 files changed, 36 insertions(+), 36 deletions(-) diff --git a/tools/testing/selftests/kvm/include/powerpc/hcall.h b/tools/te= sting/selftests/kvm/include/powerpc/hcall.h index 4028baa6c5d8..f923b3f5e233 100644 --- a/tools/testing/selftests/kvm/include/powerpc/hcall.h +++ b/tools/testing/selftests/kvm/include/powerpc/hcall.h @@ -10,8 +10,8 @@ /* Ucalls use unimplemented PAPR hcall 0 which exits KVM */ #define H_UCALL 0 =20 -int64_t hcall0(uint64_t token); -int64_t hcall1(uint64_t token, uint64_t arg1); -int64_t hcall2(uint64_t token, uint64_t arg1, uint64_t arg2); +int64_t hcall0(u64 token); +int64_t hcall1(u64 token, u64 arg1); +int64_t hcall2(u64 token, u64 arg1, u64 arg2); =20 #endif diff --git a/tools/testing/selftests/kvm/include/powerpc/processor.h b/tool= s/testing/selftests/kvm/include/powerpc/processor.h index cb75b77c33bb..cbbe390ae244 100644 --- a/tools/testing/selftests/kvm/include/powerpc/processor.h +++ b/tools/testing/selftests/kvm/include/powerpc/processor.h @@ -15,16 +15,16 @@ struct kvm_vm; struct kvm_vcpu; =20 struct ex_regs { - uint64_t gprs[32]; - uint64_t nia; - uint64_t msr; - uint64_t cfar; - uint64_t lr; - uint64_t ctr; - uint64_t xer; + u64 gprs[32]; + u64 nia; + u64 msr; + u64 cfar; + u64 lr; + u64 ctr; + u64 xer; uint32_t cr; uint32_t trap; - uint64_t vaddr; /* vaddr of this struct */ + u64 vaddr; /* vaddr of this struct */ }; =20 void vm_install_exception_handler(struct kvm_vm *vm, int vector, diff --git a/tools/testing/selftests/kvm/lib/powerpc/hcall.c b/tools/testin= g/selftests/kvm/lib/powerpc/hcall.c index efb4318252be..cd10022572a5 100644 --- a/tools/testing/selftests/kvm/lib/powerpc/hcall.c +++ b/tools/testing/selftests/kvm/lib/powerpc/hcall.c @@ -5,7 +5,7 @@ #include "kvm_util.h" #include "hcall.h" =20 -int64_t hcall0(uint64_t token) +int64_t hcall0(u64 token) { register uintptr_t r3 asm ("r3") =3D token; =20 @@ -17,7 +17,7 @@ int64_t hcall0(uint64_t token) return r3; } =20 -int64_t hcall1(uint64_t token, uint64_t arg1) +int64_t hcall1(u64 token, u64 arg1) { register uintptr_t r3 asm ("r3") =3D token; register uintptr_t r4 asm ("r4") =3D arg1; @@ -30,7 +30,7 @@ int64_t hcall1(uint64_t token, uint64_t arg1) return r3; } =20 -int64_t hcall2(uint64_t token, uint64_t arg1, uint64_t arg2) +int64_t hcall2(u64 token, u64 arg1, u64 arg2) { register uintptr_t r3 asm ("r3") =3D token; register uintptr_t r4 asm ("r4") =3D arg1; diff --git a/tools/testing/selftests/kvm/lib/powerpc/processor.c b/tools/te= sting/selftests/kvm/lib/powerpc/processor.c index 9846ec26a32a..ac5c3421ec81 100644 --- a/tools/testing/selftests/kvm/lib/powerpc/processor.c +++ b/tools/testing/selftests/kvm/lib/powerpc/processor.c @@ -14,9 +14,9 @@ #define RADIX_TREE_SIZE ((0x2UL << 61) | (0x5UL << 5)) /* 52-bits */ #define RADIX_PGD_INDEX_SIZE 13 =20 -static void set_proc_table(struct kvm_vm *vm, int pid, uint64_t dw0, uint6= 4_t dw1) +static void set_proc_table(struct kvm_vm *vm, int pid, u64 dw0, u64 dw1) { - uint64_t *proc_table; + u64 *proc_table; =20 proc_table =3D addr_gpa2hva(vm, vm->arch.prtb); proc_table[pid * 2 + 0] =3D cpu_to_be64(dw0); @@ -81,9 +81,9 @@ static int pt_shift(struct kvm_vm *vm, int level) } } =20 -static uint64_t pt_entry_coverage(struct kvm_vm *vm, int level) +static u64 pt_entry_coverage(struct kvm_vm *vm, int level) { - uint64_t size =3D vm->page_size; + u64 size =3D vm->page_size; =20 if (level =3D=3D 4) return size; @@ -97,7 +97,7 @@ static uint64_t pt_entry_coverage(struct kvm_vm *vm, int = level) return size; } =20 -static int pt_idx(struct kvm_vm *vm, uint64_t vaddr, int level, uint64_t *= nls) +static int pt_idx(struct kvm_vm *vm, u64 vaddr, int level, u64 *nls) { switch (level) { case 1: @@ -128,11 +128,11 @@ static int pt_idx(struct kvm_vm *vm, uint64_t vaddr, = int level, uint64_t *nls) } } =20 -static uint64_t *virt_get_pte(struct kvm_vm *vm, gpa_t pt, - uint64_t vaddr, int level, uint64_t *nls) +static u64 *virt_get_pte(struct kvm_vm *vm, gpa_t pt, + u64 vaddr, int level, u64 *nls) { int idx =3D pt_idx(vm, vaddr, level, nls); - uint64_t *ptep =3D addr_gpa2hva(vm, pt + idx * 8); + u64 *ptep =3D addr_gpa2hva(vm, pt + idx * 8); =20 return ptep; } @@ -151,7 +151,7 @@ static uint64_t *virt_get_pte(struct kvm_vm *vm, gpa_t = pt, #define PDE_NLS 0x0000000000000011ull #define PDE_PT_MASK 0x0fffffffffffff00ull =20 -static gpa_t __vm_alloc_pt(struct kvm_vm *vm, uint64_t pt_shift) +static gpa_t __vm_alloc_pt(struct kvm_vm *vm, u64 pt_shift) { gpa_t pt; =20 @@ -189,16 +189,16 @@ static gpa_t __vm_alloc_pt(struct kvm_vm *vm, uint64_= t pt_shift) return pt; } =20 -void virt_arch_pg_map(struct kvm_vm *vm, uint64_t gva, uint64_t gpa) +void virt_arch_pg_map(struct kvm_vm *vm, u64 gva, u64 gpa) { gpa_t pt =3D vm->mmu.pgd; - uint64_t *ptep, pte; + u64 *ptep, pte; int level; =20 for (level =3D 1; level <=3D 3; level++) { - uint64_t nls; - uint64_t *pdep =3D virt_get_pte(vm, pt, gva, level, &nls); - uint64_t pde =3D be64_to_cpu(*pdep); + u64 nls; + u64 *pdep =3D virt_get_pte(vm, pt, gva, level, &nls); + u64 pde =3D be64_to_cpu(*pdep); =20 if (pde) { TEST_ASSERT((pde & PDE_VALID) && !(pde & PTE_LEAF), @@ -227,13 +227,13 @@ void virt_arch_pg_map(struct kvm_vm *vm, uint64_t gva= , uint64_t gpa) gpa_t addr_arch_gva2gpa(struct kvm_vm *vm, gva_t gva) { gpa_t pt =3D vm->mmu.pgd; - uint64_t *ptep, pte; + u64 *ptep, pte; int level; =20 for (level =3D 1; level <=3D 3; level++) { - uint64_t nls; - uint64_t *pdep =3D virt_get_pte(vm, pt, gva, level, &nls); - uint64_t pde =3D be64_to_cpu(*pdep); + u64 nls; + u64 *pdep =3D virt_get_pte(vm, pt, gva, level, &nls); + u64 pde =3D be64_to_cpu(*pdep); =20 TEST_ASSERT((pde & PDE_VALID) && !(pde & PTE_LEAF), "PDE not present at level: %u gva: 0x%lx pde:0x%lx\n", @@ -263,8 +263,8 @@ static void virt_dump_pt(FILE *stream, struct kvm_vm *v= m, gpa_t pt, size =3D 1U << (pt_shift(vm, level) + 3); =20 for (idx =3D 0; idx < size; idx +=3D 8, va +=3D pt_entry_coverage(vm, lev= el)) { - uint64_t *page_table =3D addr_gpa2hva(vm, pt + idx); - uint64_t pte =3D be64_to_cpu(*page_table); + u64 *page_table =3D addr_gpa2hva(vm, pt + idx); + u64 pte =3D be64_to_cpu(*page_table); =20 if (!(pte & PTE_VALID)) continue; @@ -320,7 +320,7 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, ui= nt32_t vcpu_id) struct ex_regs *ex_regs; struct kvm_regs regs; struct kvm_vcpu *vcpu; - uint64_t lpcr; + u64 lpcr; =20 stack_vaddr =3D __vm_alloc(vm, stack_size, DEFAULT_GUEST_STACK_VADDR_MIN, @@ -374,7 +374,7 @@ void vcpu_args_set(struct kvm_vcpu *vcpu, unsigned int = num, ...) vcpu_regs_get(vcpu, ®s); =20 for (i =3D 0; i < num; i++) - regs.gpr[i + 3] =3D va_arg(ap, uint64_t); + regs.gpr[i + 3] =3D va_arg(ap, u64); =20 vcpu_regs_set(vcpu, ®s); va_end(ap); --=20 2.50.1 (Apple Git-155) From nobody Wed Jun 10 22:47:08 2026 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (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 D275A406800 for ; Wed, 10 Jun 2026 12:48:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095700; cv=none; b=t+Zmi8gXv1JSxhU7BE9wBYyG8fQfFwf7Qzn79WBBT7zrTJooMru0UlIGcspNSRRG1tNjqn/4VaigRw0OncTs3NP3Lk9YP5kgzPHYCEA8zcOv296ru9bGRon7CJMYppHc4BAv82gmEGFOOXNjYh+gRstKPwQvPFp0eS5Q170NLVo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095700; c=relaxed/simple; bh=cbadhVdGENuf2REpDYOzhf+HgyWklEFQdkhkdFB9nVE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=U9tQPNkaYiL2QrHigTLIStXWfHym0isMoCZkmrzRV2ejgT4kGhjizh+2HLByy73A4fNgmH7bfTQOCvdHk/TyBDAV7Sg6z7oeifGcWJJ2CzStUwUvOIpkfl3/YQD2IXLhDY3qgny3IH2rNDyxvHS5nCwvGA1oc72PYU9+AA7ftEY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nzddjn7f; arc=none smtp.client-ip=209.85.216.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nzddjn7f" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-36bba9a1089so4027036a91.3 for ; Wed, 10 Jun 2026 05:48:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781095699; x=1781700499; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=o8+a22vFLAJgAuwgI2KpSatIpPOW4GGFBsrZIpdJO1g=; b=nzddjn7fnzgAy2zMqv2xwOTbQHkmVv+jas0/xgOGmHQKBRJy86xcyzyuwxJb507yvf Y+SoNDT8z64eqW6KyPRKcEIN6XtFa9RwqcESWJqh+PbQDI6aXsOZTY/gA/8MNq4cM35j BmRNsNbP1zzOtVuhnYJcEpHf11AOn8WWYH9NIC4rIJvdWxAcf8ohneXEWRAJUZidDuiT 9RISX+Ce7ubvG7onr/6k3GDRuz0Et+yf/1UVPa7EemBmD6H6KaSoHbfwYZ+TCDTLI8Xd fw1OtJpWdjmKgrBn0L4ZEUFDNh752rCADqIUxly5b3d2Lpa0LgvgSR67ef5bVXMzgRMS HRFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781095699; x=1781700499; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=o8+a22vFLAJgAuwgI2KpSatIpPOW4GGFBsrZIpdJO1g=; b=hw1fUtErDdEPTeS+x1Hjnr7Rr8w8K+n39MGKSEFywW4OCe+TryqNixOeCu/lUG7C1n VxMPncuY0xsGv6if55JI5tuL5DCTNawJw+Y4q+dRjjNFqSDxRQxpS0HFpL6ddZuhsuWF Hle8Rr1KLanxJgXLDooFTBSr9R1w55BGNG2fy3zFDlTdcxHmTffwPKIY1rsVp0zEwJM3 znoTSDLuwletkEM0k1YNxVJEsKU8vY1XXIgHN5vzoIqzTYexO0k5RMCqlHbhK00dv+yP xnatjv/45OoLkKqsUolT2BhiyEPvktydqJr0BymbQTmj48L/2e5el3BN/ES9o6xILXui PvLg== X-Forwarded-Encrypted: i=1; AFNElJ/hXssoMLHxBkuly4i1yQEmnW7GeiSXcn50g/gmrHFS1tUNbm26cjQzNjnn0dNzAiJLJoni1BElK1xhFOo=@vger.kernel.org X-Gm-Message-State: AOJu0Yym4emgUxabnULkj7sWwqYtFyVDd+W6PFf9DFzm21PVmJSIjM7U ehel70gS/JXUEY5X0FerQ5Z5FH5Nzoa3lnVoccJ3zd3KnfH0UDRmM7z6 X-Gm-Gg: Acq92OEI8gf/1xe5piNeVWvpw41j/NLAyakRgmlOvDmcw6YFhmECxPqPZyUdNhrJI+E roOWrt+gHWiNWnuuCkYR+1HMByX2hqAKlV474mXr6+rwzvGQ4m204FE8iUFnKuxDrKcn3QjzbVK t5faHRYqxbwr6JS64XYpMhDHBd9EFi3G13148DZRgfA5dmbSGu/g92yTCmfdw+1t8bskhkqw70e i7NkUnkxGHpXgzdnUZ7FKjUWdkRp5oA58f5f1chiQ9IY29kf1DfYUtVIhrqnGjkwptDzpYx35mQ nowe5YtceT+iHTM3VpJDOLEEI7C5kBBeUMHgSb67Luam+/p8dUMq7z1no8MUZ9UHKQslDEJYHaC uFA61TpNI8dzHlg3UkCt79FFYU3zp6Iewm0iGsoQ/83Y+gn7KQADb6+MSBy0RvqWmOkXITBlRVP cpEJl9VRAc9+R/3klUM7Uof3on/K/NRlezIAu2DAUKtpzasWvjbVRERvYzcFiraa7etjp07hQ+ X-Received: by 2002:a17:90b:5747:b0:36b:9798:4f67 with SMTP id 98e67ed59e1d1-370eee03facmr24853662a91.8.1781095699281; Wed, 10 Jun 2026 05:48:19 -0700 (PDT) Received: from localhost.localdomain ([171.76.83.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37624b83589sm3783554a91.16.2026.06.10.05.48.13 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 10 Jun 2026 05:48:18 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org, Paolo Bonzini Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Christophe Leroy , Anushree Mathur , Venkat Rao Bagalkote , Harsh Prateek Bora , Sean Christopherson , Ackerley Tng , Christian Borntraeger , Claudio Imbrenda , "Ritesh Harjani (IBM)" Subject: [PATCH v3 RESEND 07/10] KVM: PPC: selftests: Use s64 instead of int64_t Date: Wed, 10 Jun 2026 18:17:23 +0530 Message-ID: <851c5eaf017e29795adc5681ea568a78182cc0ac.1781093720.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" commit 286e8903aed14 ("KVM: selftests: Use s64 instead of int64_t") made this change from int64_t -> s64 for all other kvm selftests. Do the same for powerpc as well. No functional changes expected. It uses the same method describes in above commit. git ls-files tools/testing/selftests/kvm | xargs sed -i 's/int64_t/s64/g' Signed-off-by: Ritesh Harjani (IBM) --- tools/testing/selftests/kvm/include/powerpc/hcall.h | 6 +++--- tools/testing/selftests/kvm/lib/powerpc/hcall.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/kvm/include/powerpc/hcall.h b/tools/te= sting/selftests/kvm/include/powerpc/hcall.h index f923b3f5e233..21b2bf9180f1 100644 --- a/tools/testing/selftests/kvm/include/powerpc/hcall.h +++ b/tools/testing/selftests/kvm/include/powerpc/hcall.h @@ -10,8 +10,8 @@ /* Ucalls use unimplemented PAPR hcall 0 which exits KVM */ #define H_UCALL 0 =20 -int64_t hcall0(u64 token); -int64_t hcall1(u64 token, u64 arg1); -int64_t hcall2(u64 token, u64 arg1, u64 arg2); +s64 hcall0(u64 token); +s64 hcall1(u64 token, u64 arg1); +s64 hcall2(u64 token, u64 arg1, u64 arg2); =20 #endif diff --git a/tools/testing/selftests/kvm/lib/powerpc/hcall.c b/tools/testin= g/selftests/kvm/lib/powerpc/hcall.c index cd10022572a5..d5f5282654ee 100644 --- a/tools/testing/selftests/kvm/lib/powerpc/hcall.c +++ b/tools/testing/selftests/kvm/lib/powerpc/hcall.c @@ -5,7 +5,7 @@ #include "kvm_util.h" #include "hcall.h" =20 -int64_t hcall0(u64 token) +s64 hcall0(u64 token) { register uintptr_t r3 asm ("r3") =3D token; =20 @@ -17,7 +17,7 @@ int64_t hcall0(u64 token) return r3; } =20 -int64_t hcall1(u64 token, u64 arg1) +s64 hcall1(u64 token, u64 arg1) { register uintptr_t r3 asm ("r3") =3D token; register uintptr_t r4 asm ("r4") =3D arg1; @@ -30,7 +30,7 @@ int64_t hcall1(u64 token, u64 arg1) return r3; } =20 -int64_t hcall2(u64 token, u64 arg1, u64 arg2) +s64 hcall2(u64 token, u64 arg1, u64 arg2) { register uintptr_t r3 asm ("r3") =3D token; register uintptr_t r4 asm ("r4") =3D arg1; --=20 2.50.1 (Apple Git-155) From nobody Wed Jun 10 22:47:08 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 82D57403E9A for ; Wed, 10 Jun 2026 12:48:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095706; cv=none; b=cow4vDpdIY0C3XiX/VBhrn+pTOFDMKouZQnGfy8E+7JM8P0fXqATYSs7x2MMn/yDz5lXFoJ8yJ70r6x5W50GcXcEvzPkXQaS3F3EcE7WkDIK0zNlTK8O0V3dW7ZWUM5CE1HIyr2CL3hRQf3eSgaBOq8hhXcHXwnYvoiTl6B2wwM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095706; c=relaxed/simple; bh=Y31XkwIuwQTJXeg8ZC5KVfyvvvcpOlYKgg3Rn+lQh7Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sjX5nyX15VtGu0EhXoArLsWYUObEcbwxCqPWk3n7vP0SBov3dewPt7hpKPWJIlvdzEwKc4ePOsIRLmE5th+ZFiKGE9k4hW4uW5nAoSybS2LlRSuh4CDReI9xjTv2ytKr7yHwtROw5dn4MXyt873Qj8KB4TOspHzfxh5xeKXQ9Ys= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=sxO+K1Ku; arc=none smtp.client-ip=209.85.216.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="sxO+K1Ku" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-36ba3ea5c46so4008617a91.1 for ; Wed, 10 Jun 2026 05:48:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781095705; x=1781700505; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5AEmDg81pB30v/Br0Irm0sFgmM4aAhJYvvee5RH7rUM=; b=sxO+K1KuGUJTy62fUhLp1Z7khRhxfzT5qa/uy4B4YIeWa5ukePrdhPh56uKkZhjSVc sQOOCCtIIW1ZAXjXS0uQ8HmmWzZb+rOVXY9szNe994123cRyU+W1PMhzNVtlP7kveHs9 3PG+CMq8iUP57HbPFYysArO/CcYuWMcGU6M7AqhRtCuGfEaoLRm394Ea44BQ+JCf4XUI ZB0GpjLpYDmKhILqWmoiz4sMbdiVRd/1dOTv3rlR/gr1TO77WS91bbcFlC54+A3v04UF b+Vbo963/2eaExkaIgxLKVRsYPXk4TzHvLNf136ro3omJr058p4Kr05UToGEJxMq88ls uVgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781095705; x=1781700505; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5AEmDg81pB30v/Br0Irm0sFgmM4aAhJYvvee5RH7rUM=; b=RiVl3vmeqPiZ0DaRJS4DxXpHkOmmOeOeQu9G6rxBYFg+Vm7lGLT2PlXZevLTQnL5bo 7JGvdF2vVKa0WZ97T6BnmK20gpws9ivK1QwYqC8r2MEF33EeEwZURT96bC9wRAZXwS7p 5+c5c7DrkSHhXNMsjcp+Qbpb2L+ZHvOdUnK+o8f1XNEU/asGWlEhbX4bUlwsswZECppK nAbtCU2b2g+NWTDBrpV17uVAwb1bWZDUfQUumypfaLhnw374m6HZ1RA4vFzLIihavW+s YZbs3Mv1dvLrlh9O9MP7iA7OTck3helrBLyGs7LWZBtVy9gTtioarOZoLQSKXFtHzYRH DzFg== X-Forwarded-Encrypted: i=1; AFNElJ+4jk285DRN8n+uQgOKHdbiuk8wH6WBfymzpHcoKPsQKgQuT5VX8pxgFtchu435htk9e/rC/HSUE9C1pJg=@vger.kernel.org X-Gm-Message-State: AOJu0YwqFFh5qxBYTcEb5eOacqENqctoy8vFrllwWCsj4bruvZwlaSjx vwFF6sDRL/aw9uOK6TDB83GzomeIJc8GbFfBLB3Iv/0eAgBOIO5srbGES5weAg== X-Gm-Gg: Acq92OGK7K2pqaDyH18biWikn8zjI1v/eAu436S6qKffZxMSRwe7fdeJBiTntqAdVe6 JIqGvJ1HJplwSVaIrAte+ZP9VYVukb/bOa9MqnR/mton0Cb225nyrXAXSnY7YQqKFaZXiVrPRLb HX3hU4qqmPmk+It1QgjfGkfNIZEW0xGwC+9ZwYQvv/iAXNeP1O5VjWcETcjIG8Ed8o0SUGEn2m0 P3MjgzFvyAVuFzsol6WhuU4K3Lpbaf1dTtFXwGg7E0P7R+ifGjHuz1XoAeypEK/kxaHhU/vEzj8 QXrFSHmFssRjZmoKc5jqwY9Yw66s5ggVcR0NpztftRCQLJ4cbrTShDXeCLhZH8qgRhBpWtDXvry E4f/YyFqdWpgSWvvB8TGrklnPzHMTQZbhJ2OoxFvWLbkA/0Ul+q2NW23DVSCWRCXIEgSG0L2zYO vn7MJOEu9vHQ+gEigXV/z8o9yWyicfPoRfc8Q7hS5rMIEHciqIZUdTHfMJ9DxTqw== X-Received: by 2002:a17:90b:57c4:b0:35f:b647:d98a with SMTP id 98e67ed59e1d1-370ee64373dmr26186012a91.5.1781095704856; Wed, 10 Jun 2026 05:48:24 -0700 (PDT) Received: from localhost.localdomain ([171.76.83.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37624b83589sm3783554a91.16.2026.06.10.05.48.19 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 10 Jun 2026 05:48:24 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org, Paolo Bonzini Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Christophe Leroy , Anushree Mathur , Venkat Rao Bagalkote , Harsh Prateek Bora , Sean Christopherson , Ackerley Tng , Christian Borntraeger , Claudio Imbrenda , "Ritesh Harjani (IBM)" Subject: [PATCH v3 RESEND 08/10] KVM: PPC: selftests: Use u32 instead of uint32_t Date: Wed, 10 Jun 2026 18:17:24 +0530 Message-ID: <5b6a7a730a8a35fcd661eadcb3dc6687a6c75b84.1781093720.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" commit 0c3a8774692aa ("KVM: selftests: Use u32 instead of uint32_t") made this change from uint32_t -> u32 for all other kvm selftests. Do the same for powerpc as well. No functional changes expected. It uses the same method described in above commit. git ls-files tools/testing/selftests/kvm | xargs sed -i 's/uint32_t/u32/g' Signed-off-by: Ritesh Harjani (IBM) --- tools/testing/selftests/kvm/include/powerpc/processor.h | 4 ++-- tools/testing/selftests/kvm/lib/powerpc/processor.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/kvm/include/powerpc/processor.h b/tool= s/testing/selftests/kvm/include/powerpc/processor.h index cbbe390ae244..95ec3debc83c 100644 --- a/tools/testing/selftests/kvm/include/powerpc/processor.h +++ b/tools/testing/selftests/kvm/include/powerpc/processor.h @@ -22,8 +22,8 @@ struct ex_regs { u64 lr; u64 ctr; u64 xer; - uint32_t cr; - uint32_t trap; + u32 cr; + u32 trap; u64 vaddr; /* vaddr of this struct */ }; =20 diff --git a/tools/testing/selftests/kvm/lib/powerpc/processor.c b/tools/te= sting/selftests/kvm/lib/powerpc/processor.c index ac5c3421ec81..0a65fc3a8d9a 100644 --- a/tools/testing/selftests/kvm/lib/powerpc/processor.c +++ b/tools/testing/selftests/kvm/lib/powerpc/processor.c @@ -312,7 +312,7 @@ void vcpu_arch_set_entry_point(struct kvm_vcpu *vcpu, v= oid *guest_code) vcpu_regs_set(vcpu, ®s); } =20 -struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id) +struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, u32 vcpu_id) { const size_t stack_size =3D SZ_64K; gva_t stack_vaddr, ex_regs_vaddr; --=20 2.50.1 (Apple Git-155) From nobody Wed Jun 10 22:47:08 2026 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (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 DD26640802C for ; Wed, 10 Jun 2026 12:48:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095711; cv=none; b=pJaLqtTHAzKN6kzSMv+64JbjZXUshL5nerh5AEfmX+JZNtMpQDHL2ZbyW4o2P8LquowZcBAG7Y4BBZWdLwm6IEKgwYTN4mOkFpJDXf2d9BkW6kU1Fp3A7Tao6dwLXWwCvqta1ffV8xo5wJ+4hECBu/o1CYqMGykryEPWhSdIwgk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095711; c=relaxed/simple; bh=riZ81IAqEmf6Hwmy1+ya0WYzgWuzgKxeYzPxWx62+KM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fRAQdhLDrzJXZBqIGEIVVkamNgEjpwctL303WIDttH1XmZKt6Kt5fgJoW4nMQ09aZBRvfn0QVPS4P+3vHe8AKkaXudKMeiApdztXpaQMLOi1BPj9M8Fzfuy0vfOTMp5aErnnsjdLSxP6xEeZVizNPJ/q8THPY9KKQ/AljbFbpWk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ctn1JOao; arc=none smtp.client-ip=209.85.216.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ctn1JOao" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-36b900f350fso5840197a91.0 for ; Wed, 10 Jun 2026 05:48:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781095710; x=1781700510; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1Wu2cAS+swkyn63SBvPObMrfOQMzmMC7OlLgl4oESrE=; b=Ctn1JOaoS4R7XHseBv0AT36nY9ApqcHUzhz8qB5s7cj2MTXjB67ueReRuBvdPARv6K J7jzl/J7GZUQrh4tSjBAqUDIjzjDlbMKzmyZk8noUaEdjJZB3fuEAyll/mBW8Od9BBRv axFr9OS9o7Znc0nqzfPwbVjYtbzBbxdt//DDIcE3X1c+/2BcD5KM7Q0KNpUnM8bJhFsR Ak89Yw1j936BZy/MGyEO/7sP8/rcPJMjlrF9Lppfstm42tM2DlyfqJIq5QW8dgPkh8MR 1tmsJAXDo7/bdN+S6kwGX9X9Y9lehdD/NmIbRZg/99UJSELsX6i+uGhuZeQRhqOV0aAC vMOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781095710; x=1781700510; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1Wu2cAS+swkyn63SBvPObMrfOQMzmMC7OlLgl4oESrE=; b=R9McakVvwro7HXQ8qaWVauNOV5QWXNKQuYGstUUoq7L7cXNKupsT0eh+LIZ5YiSqQh WbBsinQOwiCy0IPS5YfVDVYUDCEQo81vkY/hNoeVCeegvT3wWeNyNX1eayjUfqWAP8P9 MH+9kbz3deZ+kTGxr5b5IMTtRf60yqy7oc6xOkd+cbf6Dlkbd01PZlnQhVeWVG91ezzL jctwWgWaCetYeQh9+Ey5cwdWfeTIQqTOzM8b1UpF2/TDkqzC/mhQc/ErxJFjux34Ogdm L63720BpZ6Y1CmJaTpbQB5/4aR5uySykUdLm0ca5a23ZYbCe0js8Ru19lm1VMrKH6bkA +Mgw== X-Forwarded-Encrypted: i=1; AFNElJ9DGImviAeYV84re2wHizbvMc27KY3tdeUlc4vBJCZLNyajYYkS9h0D0wTOU6458hdc2i0hKtxzonTpkSc=@vger.kernel.org X-Gm-Message-State: AOJu0YytsyGjo0EbrnDsm8eUznvpb5wY86Fs8be9xubgSMuoEE2in13X WPglkF5xumhejeGmDTMggFzErHEMuZMHopHnc04lUGeBCAbevCw2HJNe X-Gm-Gg: Acq92OFclpIgNvtlzvfVtlMuX4j2e4VhbnBfkkyr3fLkmdH+8HoAj2OzcuWULoHWZxK edDIhUl0KdlH7ozXaoDDeopQEOGhGpRw2uNvoS6ArKZIzv11B96IQxya5ohqsyFLQunXTv+ORnu T3Ce+1c2fcGHtIq1nui5Y9CW1S8hwCd+vfGjGyYIYaZxKjCYsB5wttYTgQoudwa0HY0Y8LJ06wG SqPf10RRim957DGqS0ThKpWVu6pKM+yyPM0eQaflNYzfT93lZJbiGkR4Qlf3iRdFUgKuuHjICzx AHzNu98XjwRbE1wlpG/e0h8Ii3I8QaYrgtO+AnPmJwiYsJ0M+2++yVAS2HNNAJlyanvK55BW7mT YSi0SYWgUyeu3fDuPqaSXPgmDk3s5CR2EUWH6IkNV0dGkBwCAxp57PVqWYJxUvE26NTEKvVGztu xbwa9bPA0YH6qQT/6/chpivHv1KhaxoFIAiSCCaxIysIoDbwca6XyzyxQnwHH7mw== X-Received: by 2002:a17:90b:554c:b0:36b:9512:871b with SMTP id 98e67ed59e1d1-370eed0b682mr27885509a91.11.1781095710200; Wed, 10 Jun 2026 05:48:30 -0700 (PDT) Received: from localhost.localdomain ([171.76.83.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37624b83589sm3783554a91.16.2026.06.10.05.48.25 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 10 Jun 2026 05:48:29 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org, Paolo Bonzini Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Christophe Leroy , Anushree Mathur , Venkat Rao Bagalkote , Harsh Prateek Bora , Sean Christopherson , Ackerley Tng , Christian Borntraeger , Claudio Imbrenda , "Ritesh Harjani (IBM)" Subject: [PATCH v3 RESEND 09/10] KVM: PPC: selftests: Use u8 instead of uint8_t Date: Wed, 10 Jun 2026 18:17:25 +0530 Message-ID: <9bbb88d55320ca04608787e05222a865c141d713.1781093720.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" commit 6ec982b5a2c7c ("KVM: selftests: Use u8 instead of uint8_t") made this change from uint32_t -> u32 for all other kvm selftests. Do the same for powerpc as well. No functional changes expected. It uses the same method described in above commit. git ls-files tools/testing/selftests/kvm | xargs sed -i 's/uint8_t/u8= /g' Signed-off-by: Ritesh Harjani (IBM) --- tools/testing/selftests/kvm/lib/powerpc/processor.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/powerpc/processor.c b/tools/te= sting/selftests/kvm/lib/powerpc/processor.c index 0a65fc3a8d9a..2c1e95c8aa9c 100644 --- a/tools/testing/selftests/kvm/lib/powerpc/processor.c +++ b/tools/testing/selftests/kvm/lib/powerpc/processor.c @@ -256,7 +256,7 @@ gpa_t addr_arch_gva2gpa(struct kvm_vm *vm, gva_t gva) } =20 static void virt_dump_pt(FILE *stream, struct kvm_vm *vm, gpa_t pt, - gva_t va, int level, uint8_t indent) + gva_t va, int level, u8 indent) { int size, idx; =20 @@ -283,7 +283,7 @@ static void virt_dump_pt(FILE *stream, struct kvm_vm *v= m, gpa_t pt, =20 } =20 -void virt_arch_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent) +void virt_arch_dump(FILE *stream, struct kvm_vm *vm, u8 indent) { gpa_t pt =3D vm->mmu.pgd; =20 @@ -380,7 +380,7 @@ void vcpu_args_set(struct kvm_vcpu *vcpu, unsigned int = num, ...) va_end(ap); } =20 -void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent) +void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, u8 indent) { struct kvm_regs regs; =20 --=20 2.50.1 (Apple Git-155) From nobody Wed Jun 10 22:47:08 2026 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (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 ACCD2407CFF for ; Wed, 10 Jun 2026 12:48:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095717; cv=none; b=nOo0TQX5kNlsZhZ2iWlv8yuxTk6y99EYnZaeMKmgM/ezeKcOgkH+ppfQ5GL0HET6HdCLBWWTVy/io3Ea/8URkrOv4Nkzgr4GM4jvsBz7BfkBRn5msE3W9Ykd6F3pP9DgCriK2EkX6ObypRC4dqwAFPqq50wtCY3hkw2BlI5ItNY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781095717; c=relaxed/simple; bh=7wV4425Ik6VmbZw8mS9ERhskIFF8KLOKmoKc5i15TOc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OFGzSKGeWRsPWuPF4IVE3uVcAPor1ZaiIxZzTqeHuWX4ln5Y+Q4iPS3f4GkZ+iN+GOCFkz5by/AkYD7Ult7i/VMgvuPcAU+SCApPmTpZWflFtUBKKfkwXmilsGgh7nhFv/jjkXIcLxR6J6x96tAinv7bWeF38weswADg7fGb33I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UZ3ueX5g; arc=none smtp.client-ip=209.85.216.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UZ3ueX5g" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-36d5b11201aso4290839a91.2 for ; Wed, 10 Jun 2026 05:48:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781095716; x=1781700516; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=z9BiimjFi0aXMRD8saAolcJy9dKWyzjah+ENtioga50=; b=UZ3ueX5g1tECmiQTekl63YG4uxnbaZ5Ruja4oBxSC/TyyT9mu0AEIvsnWzSFtm0kVu r4z7Q/N416FOxEo7DOUpm1q84P9vJp+xoH6mNSCPC+1B1mLTFtA327bAel7Wt//F6iXD KiAn5kZeRZbexUauobIXQsF1pfPDx+z7lUSFL72a5ZdRJgCWeLDo98vwuNLRFdBtKhjl 2olNXw769sv1uutWsUTR8e8prLaYHBVqgzNTUiRrsh/TMJaWliR/ee4xpRk9ARMLFjnY XB9QTrso/RsR+qlbRrmLcvvMagnbimnHoiv3q/MBduL1cRvYEn7GYhLXs5X2H3v4jCqv rX2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781095716; x=1781700516; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=z9BiimjFi0aXMRD8saAolcJy9dKWyzjah+ENtioga50=; b=bxmZr8qYZ4oS2lmzrzYuSqnobkxpyHu3d0d/LrDxtUtaTLFm8DBCa5f3ISEUdOfTkU qzMktc/WRn8CyMt/096rPAbC6TyOfBJP4uOfgn8D/+APi1TFeeRWR5AtZpTGP7GgLvwY 1zDtITURMu76/nd1rtT+xGtxwqCSdQCG8X5ZE8KE8DMaR+TTYCc6cMgmImicgtP9nl3s 12O30j4JWzt1mYzLK0rHyE9Nqjq1JV16My4kv0drXChOrpR8TPLozaN1ep0dpumNj5CD Lmuv42JGviPLz8c8NYOn7K/1EYM081zfBQTwY87WYexpCB4GqKj4+BAiZx2g0tVGdV8O q/Mw== X-Forwarded-Encrypted: i=1; AFNElJ9wNVw7p+qd8RBIUOKplc4kRNvpxajt/M2aZGSnzBeGWfmTjl/miXZi0DCLilfjPD0vOPSm0/L/P8kjVkA=@vger.kernel.org X-Gm-Message-State: AOJu0YzJACccKnDJZNoktqBtgIGDNAvTgJ5bdpprtvW1wUj7Foea9IeO F+FRXp2UBRXkRDL63bIs6Iaq5/TcF/I+zP7664SA4GZP7YyzLZKOVil4 X-Gm-Gg: Acq92OEgy3ZcMvGgGKLBTl0J96J3qrMEZKlKujFEHy7RwVR4PX5FCriD1iURWEe9Z1f Yt6aaammnyb7jBxLtFr338c4FweVCSqaeNkDcEVN1UYyFQT8ePo2RJKMCXqaomKhNSJ1DbjDVmX wjkOs6dExbrMbipa6M0BKw/ZtAu7+SxA9t9bh9F1nIWwoVKNb04wKbAjIYWs0nSwEF6f6zLwC78 GTmCWMd1kmP9LTNzVkRB7idlobrEPDErAF+wqx9+v6es6DC1VmDBnyp1elxBGMrCoOZBRnyH9Xl DPuwdeYLwq2w9eBaJuASWvrfYY8/Y/TanuBRxGz4n9P3+pkQo3U84/cAKaUM+SndoN2JKfWM9+j PHaNLBCGMrvR14LpD/PdQa55sOghNx2zMgAxxAOzs68bGcfVoSgB9fZwYjlLc7FWoBN2+dyFmrm NRjIwoMaBN7K0qPkVjZiC8J9hj2CwHBmG9aJBE/+fskMmI/pO1HiD6qsVHArTEyYfptler8o/J X-Received: by 2002:a17:90b:1350:b0:366:4782:1379 with SMTP id 98e67ed59e1d1-370f0f459d1mr26153514a91.24.1781095716002; Wed, 10 Jun 2026 05:48:36 -0700 (PDT) Received: from localhost.localdomain ([171.76.83.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37624b83589sm3783554a91.16.2026.06.10.05.48.30 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 10 Jun 2026 05:48:35 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org, Paolo Bonzini Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Christophe Leroy , Anushree Mathur , Venkat Rao Bagalkote , Harsh Prateek Bora , Sean Christopherson , Ackerley Tng , Christian Borntraeger , Claudio Imbrenda , "Ritesh Harjani (IBM)" Subject: [PATCH v3 RESEND 10/10] KVM: PPC: selftests: Replace u64 gpa, u64 gva|vaddr with gpa_t and gva_t Date: Wed, 10 Jun 2026 18:17:26 +0530 Message-ID: <2acdd4984130cc5b66ab6cdbdb8bdfee193838c2.1781093720.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" commit df079910f9814 ("KVM: selftests: Replace "u64 gpa" with "gpa_t" throu= ghout") commit 014dfb7b9bf3f ("KVM: selftests: Replace "vaddr" with "gva" throughou= t") Similar to above 2 commits, this patch makes the relevant changes to powerpc kvm selftests code to make use of gpa_t and gva_t types instead of u64 throughout the code. No functional change intended. Signed-off-by: Ritesh Harjani (IBM) --- .../selftests/kvm/include/powerpc/processor.h | 3 ++- .../selftests/kvm/lib/powerpc/processor.c | 20 +++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/kvm/include/powerpc/processor.h b/tool= s/testing/selftests/kvm/include/powerpc/processor.h index 95ec3debc83c..f0ee21a8e2d4 100644 --- a/tools/testing/selftests/kvm/include/powerpc/processor.h +++ b/tools/testing/selftests/kvm/include/powerpc/processor.h @@ -7,6 +7,7 @@ =20 #include #include "ppc_asm.h" +#include "kvm_util_types.h" =20 extern unsigned char __interrupts_start[]; extern unsigned char __interrupts_end[]; @@ -24,7 +25,7 @@ struct ex_regs { u64 xer; u32 cr; u32 trap; - u64 vaddr; /* vaddr of this struct */ + gva_t gva; /* gva of this struct */ }; =20 void vm_install_exception_handler(struct kvm_vm *vm, int vector, diff --git a/tools/testing/selftests/kvm/lib/powerpc/processor.c b/tools/te= sting/selftests/kvm/lib/powerpc/processor.c index 2c1e95c8aa9c..009a0859ba05 100644 --- a/tools/testing/selftests/kvm/lib/powerpc/processor.c +++ b/tools/testing/selftests/kvm/lib/powerpc/processor.c @@ -97,17 +97,17 @@ static u64 pt_entry_coverage(struct kvm_vm *vm, int lev= el) return size; } =20 -static int pt_idx(struct kvm_vm *vm, u64 vaddr, int level, u64 *nls) +static int pt_idx(struct kvm_vm *vm, gva_t gva, int level, u64 *nls) { switch (level) { case 1: if (nls) *nls =3D 0x9; - return (vaddr >> 39) & 0x1fff; + return (gva >> 39) & 0x1fff; case 2: if (nls) *nls =3D 0x9; - return (vaddr >> 30) & 0x1ff; + return (gva >> 30) & 0x1ff; case 3: if (vm->mode =3D=3D VM_MODE_P52V52_4K) { if (nls) @@ -116,12 +116,12 @@ static int pt_idx(struct kvm_vm *vm, u64 vaddr, int l= evel, u64 *nls) if (nls) *nls =3D 0x5; } - return (vaddr >> 21) & 0x1ff; + return (gva >> 21) & 0x1ff; case 4: if (vm->mode =3D=3D VM_MODE_P52V52_4K) - return (vaddr >> 12) & 0x1ff; + return (gva >> 12) & 0x1ff; else /* vm->mode =3D=3D VM_MODE_P52V52_64K */ - return (vaddr >> 16) & 0x1f; + return (gva >> 16) & 0x1f; default: TEST_ASSERT(false, "Invalid page table level %d\n", level); return 0; @@ -129,9 +129,9 @@ static int pt_idx(struct kvm_vm *vm, u64 vaddr, int lev= el, u64 *nls) } =20 static u64 *virt_get_pte(struct kvm_vm *vm, gpa_t pt, - u64 vaddr, int level, u64 *nls) + gva_t gva, int level, u64 *nls) { - int idx =3D pt_idx(vm, vaddr, level, nls); + int idx =3D pt_idx(vm, gva, level, nls); u64 *ptep =3D addr_gpa2hva(vm, pt + idx * 8); =20 return ptep; @@ -189,7 +189,7 @@ static gpa_t __vm_alloc_pt(struct kvm_vm *vm, u64 pt_sh= ift) return pt; } =20 -void virt_arch_pg_map(struct kvm_vm *vm, u64 gva, u64 gpa) +void virt_arch_pg_map(struct kvm_vm *vm, gva_t gva, gpa_t gpa) { gpa_t pt =3D vm->mmu.pgd; u64 *ptep, pte; @@ -331,7 +331,7 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, u3= 2 vcpu_id) MEM_REGION_DATA); ex_regs_paddr =3D addr_gva2gpa(vm, ex_regs_vaddr); ex_regs =3D addr_gpa2hva(vm, ex_regs_paddr); - ex_regs->vaddr =3D ex_regs_vaddr; + ex_regs->gva =3D ex_regs_vaddr; =20 vcpu =3D __vm_vcpu_add(vm, vcpu_id); =20 --=20 2.50.1 (Apple Git-155)