From nobody Mon Jun 8 18:55:20 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (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 2BCC73FF1C5 for ; Wed, 27 May 2026 12:50:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886219; cv=none; b=VrGWL8cqlGZQY+IzGZ5TWvhSdIevJPQyOHX5I6oT369svrQv8x79K8+h/yFwgL4qGzCqM8Gc+LCNf4vPF6xqQ6mQR0/fBXUFMR4LlUjRL2NRzlpFsi86F74s4OFvUtpNQZGVqPB4X2ybDwikoE1+wwOrnUADuBwUKNav1xL8IZ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886219; c=relaxed/simple; bh=O0Dzr9y6cFVg8qYMI2oqsWYDxzwPFiV1IZwYIsniE4Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=n2/s29WVexz2zma6zsks1tCVvRpopBFGgXzcm30qwNDACkWRyVMhZUevse9huFALKWlsjLKREwP12ZEfOym4Kdc/bprvnNS9LoPH5YKFDz0xY6Q7ultyrmg8mhAOh7CkJky23yIRhiFOHze8bowptdVqbFPZwVIEKlPb1NKwkfc= 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=IJG9FpLe; arc=none smtp.client-ip=209.85.214.169 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="IJG9FpLe" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2b9e9a6802aso50777085ad.3 for ; Wed, 27 May 2026 05:50:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779886217; x=1780491017; 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=oMG8EtROF9Cg3C7hjmtqqGx+u6sXMBdHtk9UvMaumUw=; b=IJG9FpLekx29W6HxC+rSYHFo/CwLadCu8zJEgBDEGmIr+x6ECFYcFASBXQBad8HLyN HU+fnC6e2GcHe9mzLUFj9pDl+g/7a+mfxgJulouN2keEFf9YIOqIf9hvRwhossPPas7C f2BmdXsZ51BLa37ZDjk78JiVdyqCrszMh/mtk4hGXxgt4PMokmZp/hGtpTWc35c4+7e+ vZGsXr7OtIKCEbxYMrlSkno1xtOmU/4s4GClFEkEzTO99FdSmFJTvjuESF4EiSYFJyk5 QPkwdJ6OL48oT4fc5hTofP6K1J5lpgObnjn4lt43MvOoT7vbV+WYMtu7OyVHJL4Qr2Ta Fplw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886217; x=1780491017; 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=oMG8EtROF9Cg3C7hjmtqqGx+u6sXMBdHtk9UvMaumUw=; b=jiv0zth/yL9rMOkyvjulORN7x+sL9OIKyhm0GSSSJI4foOeHqHfi907/7riBCA4XmH IXL1vkBwJGPcf+MhrX1LRx7mevXPd5M53DbVykmtFpNvdZNO8o8y0HabHnBW7F2W7GD6 9wBqQwR0lNYLfyIVg8Ms9z03lSXJSYXsRiJAtG0XWprnf4akAWwnnjOQpm0pE6/nCFi6 /mq2MZGXZESx6x3I2IlVqdymb7ToLcKK9sJwKhAHRvTtClHHaYZYehQ/2Pv9V2erVJHL m8X6z2h3A+/OzAFhBex/Eq8gsCrFkb9V0Vhn6QGAofV6DnktT2rKxenMoT+uaW6u47Ja FYdQ== X-Forwarded-Encrypted: i=1; AFNElJ+ADrapX/9tJTd8Nzov6z2ME6tQFz1TtWr4zIAYICroj90OAe684DrZ3BJQpfJj3niHRITau45uhABFeUI=@vger.kernel.org X-Gm-Message-State: AOJu0YxzgaxSqDxk3qCskoD9dp4GndkfK4j6dL6iBY/XRYtInrILk1TF IJXClSY8bhwqaiU0zwx4nlsp+6ThNxXG5LGGiGPogGRdYlnX+4qLudBqtUmiUA== X-Gm-Gg: Acq92OECX5NcPUMyhXDHItnszLroUDZS/Oqgj7tMozzlmWAVylJFjAN4VdhZKxFP8rV 3iHyvvb/Ksd3Ij3U3DmiXYBF+FUutWa0eEaFnnRLNVulRZwqLhyz3FXvS88TfI6Frs6cPuREwMc L7Ij//+bdlpdWY8y0YbzySVe84554B2ztiarzbLpG2kpRSYwlUsXKxCONEdUTnO1zb6BcEDAG25 7ZdkPunMLq3MJ/XhqEHh/H2SAHSvfzQhWsPmRlNEEMzSCPWGqMEeCxprBLqCgzADG7/L94aQ7Tc OLRYrTWkdOwiJ+kEi7qHWPKPCwyiOz8bDtAa93tpixbMUb7tCAd4joFVXgQ8rVKEjS1ZuctPhO2 XF8V/dVu3av2l24Zum/OtpTsEOgmxERTyrwP3sPuUX/BEXMFerEDMxyjYYlwwHxcTvu9rwt7GRN ZErUrK0E/81OiPld4BX2EOrlNJB2q4sKKe0sM/ux0= X-Received: by 2002:a17:903:390d:b0:2b4:5e0f:c239 with SMTP id d9443c01a7336-2beb03776bcmr229042615ad.10.1779886217442; Wed, 27 May 2026 05:50:17 -0700 (PDT) Received: from Mac.ibm.com ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c69a0sm151851185ad.59.2026.05.27.05.50.13 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 27 May 2026 05:50:16 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Madhavan Srinivasan , Harsh Prateek Bora , Christophe Leroy , Venkat Rao Bagalkote , Nicholas Piggin , Misbah Anjum N , Anushree Mathur , Michael Ellerman , linux-kernel@vger.kernel.org, "Ritesh Harjani (IBM)" Subject: [RFC v3 01/10] KVM: selftests: Move pgd_created check into virt_pgd_alloc Date: Wed, 27 May 2026 18:19:50 +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.39.5 From nobody Mon Jun 8 18:55:20 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (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 511EE3D1CDB for ; Wed, 27 May 2026 12:50:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886224; cv=none; b=LZiyOOCDh5SzPWOeGu+BD0u6S4itln1q+/D5Xdn8CPn/wpb+mUktkQTAhgSU46HBNxYZKHAQ6jigEqgIWQoeyC1rm4Oo035ZDk3CjCyEPqorZYN5cgYrPB0AMPYm8b0muADO6PLP6qpegY7q0UVAuz5oeHtv3Bsv1uoGCZcU9s8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886224; c=relaxed/simple; bh=/5ntm12UBsNEn1uqQ17yyFb8FWJxtbSa9O5h5/dpkP8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TO5AofJHXC/oEE4lvIBu/qvPvWo0VZxqIw6ggXM46cvKryCpmULckCkJLQrtdRfYvlhGHXyg7ernLtoGNCoDHns9+/iIuxCknOWODsKG/vIGW+NNvcIN2KrrLbabMUexTHsu8eDC3IMMbz5NQVJxhtCpyRATKvFKrw7+LxFkyMQ= 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=WaPeus44; arc=none smtp.client-ip=209.85.214.177 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="WaPeus44" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2bc85eda6b6so59215775ad.1 for ; Wed, 27 May 2026 05:50:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779886223; x=1780491023; 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=5yVGhyRSYo0EGvj1O2Xj5DkH81nOVKSw16RhmJnLg/M=; b=WaPeus44Uqwq2fcQ+1uVWJaFTHVuUyjhfBIHYQMmV58mHYiXRE5SsGFL1nH6ew4j7k SWtI4DIH6kxBgjM7oIHZJFsjc2qmMvtUABXxBb6dEYJYaeN90Oa6oZ2hgWX5ijrjTDum WUeEEDNfajj/0gqETOeYu5rc5N3kHAvFcEn8G/cweS7F0Cpqv1CKisyJi9yfcGK2cTV5 rdHtAGEUw/WEfcHTVdApxPx35jbIXbSv9BiYUen4rzNRg9wvVjhleU6QT2G+ubD8AEbB ottCid7hbV3OHlA2h6lNJw4EPc1HvfcrMeWGKdgbgr5o+HLeZtRcwU2pW8jIEdYnkuSq mo6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886223; x=1780491023; 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=5yVGhyRSYo0EGvj1O2Xj5DkH81nOVKSw16RhmJnLg/M=; b=dCO5FI/p7QkPyi2XhNIuAgYW8TL0Z5PVIhM9BYIZvluYKmyG68/zDaf0UoE3W/IW9i THbMjp2xZFvYGk37pjliF/Dr+Vg3fYi2Z50N4L3jsGl7a3/wM/VB4VN72oTk74SoNr06 jJ0wLdY6PyQqAZzH0JSgOtxlRuhYLWlEXzeVNYUpqcrLzA9uHtX7PN+jYXH8kd50BBqA yVJYD+S077vEFU2emJeiC9mf79HHOMaFNgtcDJr3FVkBHeZR3iPYEvH+EODDikL082rF jaPHAIC63KkdcuGf2We0FYYg3BMIHI3XWa6xA61Bs7PEh48dYEACY5u9+eqaLUKbUlZL 74Pg== X-Forwarded-Encrypted: i=1; AFNElJ/b6JcamjqnnBgEvdOzbDieHRjj+zwqW4kg+WGiAFTTEyzXC7zSLZc67zOLIbfQOHnoLGZd6/mp9YcNkGE=@vger.kernel.org X-Gm-Message-State: AOJu0YwNfESgCo2JfqokLpakV0cb1uOd1t0po78XB3/7L1ZC8Z/72ZUH ui/olIRD5TChsdvWrQ/J6WM0O3Hah7LC3DR5ukkQDOjurS2JUsTASiq3 X-Gm-Gg: Acq92OH1LzUUiHKqcZkOGN6uLDBo3ANDqEm5GZnS1wvk1+n7BNE06+lhGPyY51OZBVt wvfJMScAgz77Ww2HqAfq1/AF/PyuyDoRtxfXLOwEB7NGMZ5+4/v7eyvYFh0so8XaUPpJXlXVCBD vjx0WLu2Ck/GC9cToDvhdNvtQmiZ+BpuXov5P6bmhOfJ45YaiwcxDJ6fhUt5AVgPB0Az6m3zDN9 DrursyGAOSaLPEV+W5ct+Od2GNghQuxZ10iuNBdmGk+wgryUGTVtbUu63Vm1PZbERXpFdqjDdCB KvJcSqphlwYV7v72Gbiqy0m32JqNCjTTAWMOf9M9fVl1kpXpffPCdR2gRjmzb5Jg+/lXFDBFvZz AuDXUOn+0xm3v0DDxF2D8zTZd3FMd1hWpYlPAAF20j1Wfng4sDC5b23ZU54qoP0LrEYCLF5H5Dy ABStrZJn10uGrR7FC6cCNRCfYcEFi7ZtgJfeoKkj0zkRp/uJGzgA== X-Received: by 2002:a17:903:11c6:b0:2bd:3bfd:7512 with SMTP id d9443c01a7336-2beb065b6edmr251222955ad.29.1779886222267; Wed, 27 May 2026 05:50:22 -0700 (PDT) Received: from Mac.ibm.com ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c69a0sm151851185ad.59.2026.05.27.05.50.17 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 27 May 2026 05:50:21 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Madhavan Srinivasan , Harsh Prateek Bora , Christophe Leroy , Venkat Rao Bagalkote , Nicholas Piggin , Misbah Anjum N , Anushree Mathur , Michael Ellerman , linux-kernel@vger.kernel.org, "Ritesh Harjani (IBM)" Subject: [RFC v3 02/10] KVM: selftests: Add aligned guest physical page allocator Date: Wed, 27 May 2026 18:19:51 +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.39.5 From nobody Mon Jun 8 18:55:20 2026 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (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 1463C49659 for ; Wed, 27 May 2026 12:50:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886230; cv=none; b=Pt7RYN78jN8U1a9Hv93GGuYcn9Q3V15kp6VqeZLoEV2GetDKeWcWqK9kP4VAFoHAPw/1fBsMeHP6dZrUbmsjimDL6t/6vC/sQamY4ze6WaxUxhHY/uYOZk+NQ+rkliKW3TQfYleK8i5X5/TnSj0hfpdZTJ2w++hcWIFRAnmzoZw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886230; c=relaxed/simple; bh=9+pTzZHBkvmSlFQsbGvUtYuUvFlK1kLmXh6ZkADGTUM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Yn3NNARcTZL0yoBIW/FKmO5rPhWFAEDPurFQ/Cwlpp9y9WI2eRp5Ff+V1JFtnJG++uVzb2+7/qRTi0XaY5/OBsgq7IYAdUxzcc0xJ57sfFFBvxuKxcRmopXDP/eXE/ZUX2+kQcp+toZ8ZSeXZyhvNTcPiOVpPTGYL8zjI2kOS6M= 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=A9MLZrOr; arc=none smtp.client-ip=209.85.214.173 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="A9MLZrOr" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2b788a98557so75307725ad.2 for ; Wed, 27 May 2026 05:50:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779886227; x=1780491027; 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=9gR7tgkrbQRImY6t0yJHVI2GcTMTOF9OzVJrBXLXX2c=; b=A9MLZrOra2sQyYdk526FfCa8EVjgH8G+SP2DX/OI+mRocMvCFvJCJsKOnuM2f1UUHq nY0cUzDQNi1SU2PxRPXAnfTGLwis9rIgmAgzLdSLq8VRWmp5vPKBIGTyNqbfXiiGLk18 AFvMk7IGdVgKZjN4i3/P0HlheQUsD54XcMjbJbGCIgx/S8K8oyNywJeSuVawo0MiDGlQ FUPzLSQsSO8tZhGq5qTDWAgyC7dMKINEg4zmoic8GAdw97cqPKrsfbCkreTmwh+yySRY 7D0VccEJUrvQ4aO9E+xY+gsm0N2wIygvublkT6g74uFfNfygTr+TmihHOL1PspNhU/Qw l1Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886227; x=1780491027; 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=9gR7tgkrbQRImY6t0yJHVI2GcTMTOF9OzVJrBXLXX2c=; b=Op3u/sVuI9SuTUR4XdWcEcXIUYNlerAPmJ8HwGab7MlpX6vzBXejBStd0d5+ypC+Ek AT35z0ik2/gKqUi560FUmP/66jd5szPKmf6PCUTkAxcvQcJsnGiPU36gVjn/wsOGmsJl 7WcFBPbo19hKJhmRkBCYaAVgGpBchakjdxk8I5ISrqXbwC+d9bAp3t/cEJ6zY7+C8ljW Ltp0gsZoT8hYLDn+c3M78cTNDv8UDeEJlimOceB0zJavMuliuRoJuY2zjz+nwXKNg+o1 NMV7285kANoQ8Jn5nN6hwSHyc0OAXelueR2je3zIHu3flMSuJrXF5CYzb8gCvNEmmriN yQ6A== X-Forwarded-Encrypted: i=1; AFNElJ/GIDAOSTZE6wkNmB7inFXwcc++6yi+pyr9m/ISZi4/V8tp/PrfAMviA2aOKNTdQf3n65faMSAnLuJQOw8=@vger.kernel.org X-Gm-Message-State: AOJu0YzDYWTRpLci+LRRnyk+ilfaytON5yj1med/KUfhfVn/jG6c7xdy zFk/cZABw4fQJgTQ//jC7LESuC7d4VFJ5ekL7dRRp4DkY1snAEHzAg7y X-Gm-Gg: Acq92OGI/xMF/pgHWV73Zo/lhjUHc4nIAIea2fHiACnMHM9ua9AmiZl3+BjswzHhcg2 emVJw+MSQgo9WSwaFe9fGzm38mR1An3FpG7k0SpIwJWOpp3Dw/E4at9I31SzZU8A1y1laCzIHkm 7bBEJWkr/mODaUtHRsk/P7QNLAlb/PnTa2P6TwCIgXhRcPVw3f4YOekz8J7KZsfHjZUwmbvk5MG YmWTZgz7yZACeBA9fXQNoGiIYUaTfFVNdJgOeJ/2Al4Uaww4RZXHkYXY2OPP/bepA2aaCMQvs1J q8W3GbFpezqBXtMCEJ6LWBp8DzxSvpNSOWxuVGBTlBhegA07f3eO1Zx674X9D9tqNhCRbw3ZMsT SaYjQt6Oi+DOKFPeDx8beUe38b1GgrKhfCh/5CHnLdM/K02/kISOFkupXCahuxp07J0o+ezkGg9 H1XVOnMxVk+hbS/FMxT3pMNk3C3oJidu7mfGsEbuvS+iTHw2+h/g== X-Received: by 2002:a17:902:fc50:b0:2bd:78d6:2a15 with SMTP id d9443c01a7336-2beb033f056mr258902875ad.7.1779886227108; Wed, 27 May 2026 05:50:27 -0700 (PDT) Received: from Mac.ibm.com ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c69a0sm151851185ad.59.2026.05.27.05.50.22 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 27 May 2026 05:50:26 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Madhavan Srinivasan , Harsh Prateek Bora , Christophe Leroy , Venkat Rao Bagalkote , Nicholas Piggin , Misbah Anjum N , Anushree Mathur , Michael Ellerman , linux-kernel@vger.kernel.org, "Ritesh Harjani (IBM)" Subject: [RFC v3 03/10] KVM: PPC: selftests: add support for powerpc Date: Wed, 27 May 2026 18:19:52 +0530 Message-ID: <99818a9e1c8954ba74e1861dfa2bd5eee19f4f86.1779885589.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" 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. Signed-off-by: Nicholas Piggin [Rebased to latest mainline tree, "cc" to clobber list, fix the size calculation in kvm_arch_vm_post_create()] 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 4087b67bbc69..ae5c933bfa55 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14241,6 +14241,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 3aba476def62..70b40bd9e663 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 @@ -241,6 +246,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.39.5 From nobody Mon Jun 8 18:55:20 2026 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 8B6553E9287 for ; Wed, 27 May 2026 12:50:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886233; cv=none; b=iVaYPN1FtV8eul0oAR+Pta07K0iQwG9ifnANXVwkhto9OfElALmV2kPmFN1Ff/OUFU0R8P5fga58RN0e1I7Dqs8fQVjFs7ZFroLiP+azedn9KscRZ0WaeMcrBmFcERsdCK1RQTQ5xb/iKwuL3GbuZRfFnxMQJqgkWJkTIzr2JbQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886233; c=relaxed/simple; bh=KLO6h2CiB1/rteH5f840+2wKPqI5HPLzKE9w5TFO6+s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E+85Nrvu9ZGn87tjeOcjKvqMjCfe5YnzphTOHtJGBN4b88IGi+SG0jazbVZMEzy2WFtTvbbjrI3pnxX6+0ndwXHxhc49hmHHi0+ytDs1r6TRlDf46z+4/QaKGXFCOL7QZZtvZ69RNE+FkXYAlptbiQQmfGdyDygtxBKCMPf0Vqo= 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=JUTkYAVk; arc=none smtp.client-ip=209.85.216.42 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="JUTkYAVk" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-36622412e97so8829843a91.2 for ; Wed, 27 May 2026 05:50:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779886232; x=1780491032; 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=WHUxe7lnPztFxDQVjPCLiqbcKDb3U3X7b1X5k1GLWTA=; b=JUTkYAVkcfNHC0TMgEPNLdHTQhB6447RGkvG+vRcQjZ8Z3lYikJ6dTIPV/A2PIPB8m 3Ku/6CKPKVsd9CHJtLdAlXCjb27+m35VdUMYl67QFFOKl6dsxI3WA3cdchk9CdYTd6pR J4VVmYBgMkdQLWx2J5IANQYKDjV+oqrEsWMEDh5BxZyaAQ82MCcHZ1sBQFPLtlYwdGVf 7JaSe1mELY7h8zTdpCRB56pBDsEtl/brBd+Mnji5uVGcWLhTx08J+66sGjbWeFM+iC+a 6jEDClx9V6iTrSZgoyEM6M6b8cwVpQhA3H5KU/urUGAiYdhJZyMrpzEnRiV4/32Mtt7z ztKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886232; x=1780491032; 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=WHUxe7lnPztFxDQVjPCLiqbcKDb3U3X7b1X5k1GLWTA=; b=AFM5hUZPE7m8l+NX7hkPCAvTpRYjsLENpI3k//VAGfWwQgzTNOkDs3Rg2GsR85VItj vWGrB5xoxHoxN4s8rNqgnfQCvIZzuOcwzuobTDGDFRGffvTMUnc0TyTfN1sT5kGVF0Vf MFGR2jshohK2KIOR64c2PWjdS6PSnqWLO2B5VnU2tcjE1H18ISYnmpVgcTDbmSJEkaZi 7hZXfK4hQSjL4jby2GxeBkNsVZ2cioNoT0knjblCr1y70jXCefPyAf/8Zap8jAdFSW58 1pSt6bvuk6l4TgCNKuOW+fVQuLay6cFhCNZNNXjVFxrn1W/nf5fhJMXvA5WqdGwNk2V6 TSkg== X-Forwarded-Encrypted: i=1; AFNElJ/MYOXjvFZqtJk/HUzICn5b72E4g+UdLSGdoh2UJ/WNpL2S4c25Zs2/bx4TafCwCqozD60RdEIP9IZ9Cko=@vger.kernel.org X-Gm-Message-State: AOJu0YzgKaWOvG7pcL0A5/9IFO9jDG1rVndsn8IMdvzcYf9E1e5mB3u9 BxZB7KMhbIoWlG+5gq4IxC/I0Cun50h/060As0Z4d3XacCtA8gfhVbWQ X-Gm-Gg: Acq92OFR2z0osjh6T++W47l8S+HTmxHal333BzLWI6U5r8b2jCXsKHY8HuuZw4tOMbt mablztOlvfJF4VH/M7AB/C+2kJYac3JnWLUHqx1agWy6MNO0/cZmvyNwR+eKxFiF3OoNyOL3Zr0 i1b7k4+Q9wuZmKCDSDLFFokPB29eLe+F/YW6kEfrvyug0tsXw+dYKf61QN2fm8FCVmY7OwE898c lZOrP3VowC7l2WUoxfpbpUvnFYtXp6gJMOUsF8mW49hiApBdIclai7JjxzNL1984dNeo8afeg7d M90OIeiQ8948LZ6LiL+5sF0VVTMZ0Pxt6a4Al5RLvD7bwP79nJS+3iF8D18HRMSbBwf60Ut8WSO pM1UC+/gD2euBC0OUT7rYHJlW7Ps1wtf99wbNndtukbyekcxRptZvrd2V192hTgUyNGNWBxcD77 fzeP4DtCVBZ9fvd7MdIA2XJTI4i7ouYLfAKRb7T+6mp2CQjza4PQ== X-Received: by 2002:a17:902:f70e:b0:2bc:8ebd:af76 with SMTP id d9443c01a7336-2beb03466afmr244325935ad.0.1779886231867; Wed, 27 May 2026 05:50:31 -0700 (PDT) Received: from Mac.ibm.com ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c69a0sm151851185ad.59.2026.05.27.05.50.27 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 27 May 2026 05:50:31 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Madhavan Srinivasan , Harsh Prateek Bora , Christophe Leroy , Venkat Rao Bagalkote , Nicholas Piggin , Misbah Anjum N , Anushree Mathur , Michael Ellerman , linux-kernel@vger.kernel.org, "Ritesh Harjani (IBM)" Subject: [RFC v3 04/10] KVM: PPC: selftests: powerpc enable kvm_create_max_vcpus test Date: Wed, 27 May 2026 18:19:53 +0530 Message-ID: <5233755b872c4b97ca5a8aa06f06ee9fc73b4c40.1779885589.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" 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.39.5 From nobody Mon Jun 8 18:55:20 2026 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) (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 49658405C3F for ; Wed, 27 May 2026 12:50:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886240; cv=none; b=q5FQHcWB4Yk6qK+d+EhMkZKlZ1AlkOJeAgyh2DHcgKGiZeoThhtyjKYZLTcYAYMca/Wmqas1YusL9GeN3iYJKIUJ4e5Zz3bXR6S3Nzh2yB39vD6fCYA8FcSNUObXmJSpDblkVFrxZRZMXDfoyRlfU/ywYlH1PaPSeEISOkCxrRA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886240; c=relaxed/simple; bh=VZncZLZyzeZAaiIuhyjROvi6ztX3D3dqBhle8qaHB4o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E8cvvP4PvQVUCJqnf2qi8BhoFcRBzWdtFRCOpvACrJDk8nzorjrYsJYpSFTrRnP5Id5taeWUF05KMUaXJ/bS22rbtpko1PL9Ypqy3I2uO1fPf/yIMJ2e5fOHXy+BNb+n8f1RCuUwsUgXFDxqq1oI+YQymW2VJadMjdQDyH4XeUU= 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=KXhqHpQH; arc=none smtp.client-ip=209.85.216.47 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="KXhqHpQH" Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-36a35e4eefeso4507125a91.1 for ; Wed, 27 May 2026 05:50:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779886237; x=1780491037; 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=cFfUfVdymceQ6sN/zEMi68S56nOfGcMVCqg5DL2077Y=; b=KXhqHpQH/EuXmKA6+vgD5wBMDvE3PfzGJQNCi38lAOIOsgyFKOkm4Bg0zY6MSlIANg /gHLyUt+yF7DHa7y6Y6l1Iw/9DLFkl1Vqm1jh55hzbLcx7uvffjoNw6vKR33EMBlUcUR dZS23H4GMIm/yTaL9TG8Di1b2XyF6X9qZ+u7xyD8Y5/kkB7BEQoFstCeXUFIAm7vIML2 z5rIeFsQUan8+W3GCLsC1vg6ISiMJNQw0UHBSgv3xsBWH0heE0YoOlxmeyw1ody2J4no ZxphVjdsATIEVoSj9/ozJuj7t/G1DimRiKIQIOA7AgibGoasad/VpQ0Nin4K3DHS3cs7 XN1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886237; x=1780491037; 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=cFfUfVdymceQ6sN/zEMi68S56nOfGcMVCqg5DL2077Y=; b=QzBOsklg0kupdYQSBmrzR03YTIIoh8hcVFolt03mi/T7rFwwEYFYyMP3E5RdqpoYwx KA8NpjPDUcfID9Af0O8lTjpD6NjOH2i7Mv/k+g3p5pM9H/J05p2Ovaa6717yIuGPrhwT SqNSIT3utAI8ONmOzkFDDOzMx+tbPmqfT/xl8c23ACs8c5wFF5Aj1HEeTIs8xm5UfP7d WlZFlS9bhNRyh/3S7fIaRhpz7oazjR/t/Dz63tV/8SLqf9OKlL5iSrzeL917Le8G/wq/ bsORwLGvJAZs17owfYUQvq7fMPT1qKQNN1VgPxe3IMIkWgFTacMqW+zSOSN/h56UPaSz SZSQ== X-Forwarded-Encrypted: i=1; AFNElJ84VzhElFajfpzAIfbVL5UJk1AGlmk/QkrNsvNLfYgf9xkFvENff+SzJhTBWRKfT7pElKzmGFJifATLOzI=@vger.kernel.org X-Gm-Message-State: AOJu0YxApEDe3Rg04pElknYf6OZRRMNJk+b47zDb+lHcivyDY3yJtXhq QHiuqX5AbSYxje5miGmMAtU6EvTGjmHAQxwYgQ1R9zOLIa5AAfbOo7zS X-Gm-Gg: Acq92OH3clbn9DdBUillmCJBCRr0o6lscWrhw6K7JCNablHxkRoj2kss/Oa5WGwZv4g Zz+jU+xA+iepAKHFONFTmVe+2AIFfF4F47G+s9CiW7MsCjaFK7lya7v7H8p2ePzQez/nsGvV8FZ 0fuV+FF5m3ncKSRNr3a+Uwe3DcIATC7Z2Q3mmTL6MIEfJTQhhkUpLZ5yu94eexBE7tXdj3OKro/ o9PMlJNG1K02y0e2js1B2SC3GzVerF103+Adlk6B3SMBknQJdgde5GyW+Ny2Ww3AJsnqW7BH3nh wzWH2TzQmJspaIRzJrVVOT13zMnRztIA7KvewJJ6YN8tetWc3GskAVn9pqYSSdI7DyQyPwvkTEv fcIQ7UvrYT7N7JrutbaQL25aexZ/N+1ZlqDolz6oVd8zQMsPJ/o2L+Gw41vFnjOy3ETU2Mtpcjc C0oXScEzmnouLd8DU3KGWIRHIwjWSB3xCeb3QBBKk= X-Received: by 2002:a17:903:2f89:b0:2b0:ccad:de1a with SMTP id d9443c01a7336-2beb06bc100mr254327575ad.30.1779886236651; Wed, 27 May 2026 05:50:36 -0700 (PDT) Received: from Mac.ibm.com ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c69a0sm151851185ad.59.2026.05.27.05.50.32 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 27 May 2026 05:50:36 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Madhavan Srinivasan , Harsh Prateek Bora , Christophe Leroy , Venkat Rao Bagalkote , Nicholas Piggin , Misbah Anjum N , Anushree Mathur , Michael Ellerman , linux-kernel@vger.kernel.org, "Ritesh Harjani (IBM)" Subject: [RFC v3 05/10] KVM: selftests: Print the vcpu_id when KVM_CREATE_VCPU ioctl fails Date: Wed, 27 May 2026 18:19:54 +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" 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.39.5 From nobody Mon Jun 8 18:55:20 2026 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (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 E4E5A405C58 for ; Wed, 27 May 2026 12:50:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886243; cv=none; b=ETsGabNTupLhuPE4fxqOUKUoX6pjbkRmgLwTHXMCzVFVzRLiXguJ6bA6Ar2sEIH5l+yeGz6xtsJbHihK7i74fOdBkj10ycb1qJ7gg1uy+q1eAafwsxF1cd28DG3w01HSQfk274PPipINHD7AMblAj3+WoxKt8OMekkjebYqVa+g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886243; c=relaxed/simple; bh=iGu/jCmUI75IPaNIOyg0/8ZKPNqZvB77qbHSERBa7sI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nh6Q6CJ698OA+hVJ/MWoNxcfYTAfl+g0zjJLy58EqNb7tLVZmVJmokNq2nanwQt/C4RnMfYR7qTYke3NhQbyUBggkqeZ0ir4DjexEcEmA9UsnH14RS78+J0yq5cPtTx9GqtezCNXzaQPO9Wu3M3J7YKqeUJ66R08/t6+zdeUOuE= 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=VOaWj63j; arc=none smtp.client-ip=209.85.214.171 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="VOaWj63j" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2b941cd869cso75604565ad.1 for ; Wed, 27 May 2026 05:50:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779886241; x=1780491041; 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=V4S58wFnVNRvnxdkAeXXsrXJzD1QYgOVb+aOndCv6B0=; b=VOaWj63jzj3gjDk38Horm6RGN9AWDXovHZxZUOhYICxN/hghcxtQvpG+0gjnm+7Irq DhYLHOVAxBzQPwOmxlkd7N6Dh8BIG2u4JBWyr1sTK3v+tQ3cf9SqjTNxnsT42wZq/LgP tJ1yM+c83PK3dgyqooRTaTyX63AqSEkZCIhFTc5MddYqtAPR448HfMNvHx/mMcVrxFo+ dUmwryJ3hqydlCvuTsC96GTi4gcCr+UAGI7IA90C7cCcq0ut4wiOfdl6/oK3xPIew1KV qc8gUuWjlRxIaAHOvOp8wWb8FYxrxN1p9AAbg72CroLItb3iikW8jvE+ZDFqvuKEZJb4 qDGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886241; x=1780491041; 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=V4S58wFnVNRvnxdkAeXXsrXJzD1QYgOVb+aOndCv6B0=; b=RLzs1jWEV6CAxmVk9/b1FHKeqs5iioXS51mEc3hty+CggRuRxX2A6iR3FU8y1AJKht 0oKdiihjDe8/c21y9+YAcmBj/VuMk5sZOvpJm2jladU6R/yAbBw8KzjZ5ypdD9vgbwYY 1OySOSMLKI5Qa4gWJrq2dnI0HLaaQUfnqW6GjV5M5/RhwAOBosR71x47RI1ty1nu6aHf pXY3wug5v5nqN+maIuI+w9Kpcy0yCzf8GxYrxXpXdC301+BNI8JYVf0xOOLhCHwQSdgV lfqwvS1EdQOyhorLdJbMTQlHeeVjsDqS39qe69ztWYdHjT1GnqggkCIdX5q2cSlcQO9b Yl/w== X-Forwarded-Encrypted: i=1; AFNElJ/ZGUKGbXIZ3a07GTZ+onos628haTfBNshSBiRtKr2/97DAYZZw2dAPUbPBOBWNcrLzpgJTpa+yoeHlo9g=@vger.kernel.org X-Gm-Message-State: AOJu0YxmBYNjqCwbfCauR0JVMdbJTRaMR9zhOCfxOvQPVius0/UWy7+R KEZaBwBknlVbUrKqwzSBJvfO0CjtqLYWPH5GQqWCcXBGfGfZl2yvt50O X-Gm-Gg: Acq92OHp8sfEspmZGfENUp7MJcNbwH0BheT1uYUZn5jG1Pg4+BUl/x1zTtdMhALGzZy R3By97KIlN9V04oCHJkd+Re0hqmfDXyLvbCMpt1X702UsMXfaF+DUsH066/4UzM4frTzJ5SlhD+ rNW+gx+7k18NGoJuug5zzL+dmAGeT1buRquoIzCYZU65OGmFINA5S558KrB0w4wIilJVxFHW2UP p9c9XOrsepQtCjAt6/gLEPT6ufJQciWLvQWt8yrrgPl96mmdU3oEhj905+UyufnL2qXeYuJtfOU 8zYGRQ3SQDyFSOSx2fPoZzbmWqwyDLnjKLnzbyXAtVnAnVP2B8jjaBxXlsrMm9n71h3WO5rhWky mrFzjZiZPovlsX5kzELhQ/hd1zJtTrEE2yg4jEs1Gd3cyDHz/PHEbJ2hGPg70goB6D2ekDfanix /tfVgWvtC14XtzdHQXsWnWBqfSNmz8Rz0TdMOVLtKCtzUKYamq8A== X-Received: by 2002:a17:903:19e8:b0:2b2:539b:d2b1 with SMTP id d9443c01a7336-2beb0628a12mr256281175ad.16.1779886241233; Wed, 27 May 2026 05:50:41 -0700 (PDT) Received: from Mac.ibm.com ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c69a0sm151851185ad.59.2026.05.27.05.50.37 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 27 May 2026 05:50:40 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Madhavan Srinivasan , Harsh Prateek Bora , Christophe Leroy , Venkat Rao Bagalkote , Nicholas Piggin , Misbah Anjum N , Anushree Mathur , Michael Ellerman , linux-kernel@vger.kernel.org, "Ritesh Harjani (IBM)" Subject: [RFC v3 06/10] KVM: PPC: selftests: Use u64 instead of uint64_t Date: Wed, 27 May 2026 18:19:55 +0530 Message-ID: <0132c8045f8d2718b155eab52e659d9b0a80aefe.1779885589.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 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.39.5 From nobody Mon Jun 8 18:55:20 2026 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (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 5B42F406278 for ; Wed, 27 May 2026 12:50:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886247; cv=none; b=hxHvaA6+k1v/tNk/Lh0r6YJc6w+PJ5w55q5pYuzSjWenPhHC9EAWdGaSeea4dOaRTJRno2bo7idj/HmXOBYBYounQnv7RsnK1nGdRxNa7nLiIGvQXe0MtEGXYU+9AT9o1xFuwO3Y9LLpnc9HqAPVWnuqM4wa7kNVPBtuHPlrvPk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886247; c=relaxed/simple; bh=tXElErZNcBbriw+TyhjxBJkurMB2aoqDR8yZDyyZg3Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nlGTbW0Ig+/wbvRuf1U776zAY031y4i2/rNzuw3ZlRYytDfDY/B2J9J39Dy9nV/a3rCvlGziflfKEFE/ShtR1PELWt5n8jvO08b2yyOEYNbzDftFPDwERAxRRW2nuIAPy6+vgYbVIyaqM+t1LsJstsYJ+HHIoPPEGgI958yMjzc= 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=CQCVwR6s; arc=none smtp.client-ip=209.85.214.182 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="CQCVwR6s" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2b458ca2296so87425035ad.0 for ; Wed, 27 May 2026 05:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779886246; x=1780491046; 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=9mgdd+DnUFLn0dyt4Tw1vt7I7z+j1EUlNtFttHUygxs=; b=CQCVwR6sry2Ta1s19MwvxcO/AFhYRq49YQlj6qiOd5QTcUjknZ4jPkEM4r3UZaB18X wnYjVuPx8xrnLwF0pFnW2Qyh6WFlJCgoShIRTLgiMc/t9ksgb+IOeJ9gWCtBjGby0J7M YiVI5HHbfkXPkinI/f1+k90AotFpL6rUdCC/Yxh3GM7dX/+Gr/0yhnkhPSN8HOVerphv 58bkzogohRgoul4S+8/gbvL6ZkcT7x6B5c4zE2kWTsBN45vjqJP0X2nBTlVGKJz9ayNw 5+5RVEYafoUBlwJwl9fpHumFIlFEEqkdObKD5B3QmPXsvOgW/6/+jQulL9NkX30aZWyp MmEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886246; x=1780491046; 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=9mgdd+DnUFLn0dyt4Tw1vt7I7z+j1EUlNtFttHUygxs=; b=UN+l33TKj07GepOFaxBpyW3Rj7WvumZPdTcwdIWOoJzpiUTn5SP5nQ5Rc6woSV9NZL CLjhn2ZtegPBcG78qIRRXl1KntONMerX8RDNLLvez9gIxMumr97L4rasidVMMJvD7shE eIhQPAhIAPJnQGblB49WD20YiGATPxFJlQtM1Ztw+IHg88ZkENG5eqZ7LcV8wXXXBHZY +lZQuHEY0pnkDr+O5OT/1whugp0xfaBmnEqlMG1pMQHbBc8hohuqTYAtszPtkMfVfz6O tcJGDv811pUavZogxMO/eyE5JWegNe3vci3W0+/JNYTjUFBEpNJ1qJ3hg+gFII/LazOA iCDA== X-Forwarded-Encrypted: i=1; AFNElJ+7tONDoTJTwzk2NPeWDsOHMDt5nGs5kDbb2Sv9UVAIPbuTjMa0NVEah3DB1hFd1KQjyDIinYruxsyqLCE=@vger.kernel.org X-Gm-Message-State: AOJu0YyCDVVZA5eB8Tyv7cYFEBXclKbVmiUPX4S5I938n5p3g5FHW8bm QCR7vA33RBK82KaCx20P0i+kU17AhcFIw8IrPLFOXv5sYet0D/1iCeYt X-Gm-Gg: Acq92OFCZ7Tm0YbTUHbNY7aGCzsvWdB1ruSg4PQgY495B2jLE/TLxcKTPSHc57jvolf VSxH7cHCdeggqgruoR3Czw6uglpV/H/i4ZOb4juEznsTRCUFnQGt2oLFwV82Ko8BqxsyIzr+ul+ oAqkUhBqH1afIJOZBs8p1w8ihw+rYvVRRdWcuJV+kzJ5LFZCUr9P9gM61uYcFeKjTgGaWT6oeFZ CHI1lh97hP+GPCVubLIEc7VLitkli3ptqpi4q1TBvqUI1KZi1ShowbgpGNwd1s0LX2LjgRdNfAl q/udUGSjVpchMAnGqNtoDCXe/azpQYZbC1zeLb7JBe8LYWYf8KVGRr1DX7cC7AUmNcU/rcvrcaJ GyfHon2sx8vsGWPsXMWzQO1hnKkPvjWaBNRVDRO2MBWljaW7YuAAUcdg7tT7qp1s+Fu+IRAd0od KwM5dC5Yna48elWcx/5zrdoktZmdi86yPugmliOoMelQxJ+cLcIMOfdr6vE46e X-Received: by 2002:a17:903:390d:b0:2b4:5e0f:c239 with SMTP id d9443c01a7336-2beb03776bcmr229059685ad.10.1779886245826; Wed, 27 May 2026 05:50:45 -0700 (PDT) Received: from Mac.ibm.com ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c69a0sm151851185ad.59.2026.05.27.05.50.41 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 27 May 2026 05:50:45 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Madhavan Srinivasan , Harsh Prateek Bora , Christophe Leroy , Venkat Rao Bagalkote , Nicholas Piggin , Misbah Anjum N , Anushree Mathur , Michael Ellerman , linux-kernel@vger.kernel.org, "Ritesh Harjani (IBM)" Subject: [RFC v3 07/10] KVM: PPC: selftests: Use s64 instead of int64_t Date: Wed, 27 May 2026 18:19:56 +0530 Message-ID: <3384018316098997b673cec914aae501a6359ea7.1779885589.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.39.5 From nobody Mon Jun 8 18:55:20 2026 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 1F1A7400DF3 for ; Wed, 27 May 2026 12:50:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886252; cv=none; b=LUqgonTuTMAuvBpV8bAsAuewiVlI9ifGKoTSSmMkBLls2bEAstKoy/aETsMMZ7RRNe4Dv3dCd861eirEPszLAfXEgmrXfkph971T7qJ0mHNEPtViKB1jX0ktTosU4YoHBMeYuF5t9HnNpXOcWle3XRn8SFgfRXU3OcxJkWcZr0A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886252; c=relaxed/simple; bh=E4xmxJt1GeEWmipyPkRcfS5k8eAh7SdmfFX/EoP92dM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OthAvcOmKsEIMIM3dO5CR6o4OhQuIrbDks9oXjmIwjbr6TS0YF4cjG0dO2OD7tuPT6NIo7czSibaDoJgSYBDt9QodhBHLLV7t/MmoxloQ/JdLztjCwSjFWwCh2qZEHedYVImX331M7OmkaSJOyPJj/UnU3oJd0Ttmpyp/sBDKZ4= 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=qK+yqqSM; arc=none smtp.client-ip=209.85.214.170 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="qK+yqqSM" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-2ba21d32776so85820665ad.2 for ; Wed, 27 May 2026 05:50:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779886250; x=1780491050; 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=YMs/uXhPHvjv8tK0rG5PcV9J3YapP9N2N0Ynmb7Sr+A=; b=qK+yqqSMKEMKpBe9hbdT1HIuSsK3Cu6QN9tQQS37K6l/7u9IuyMESDXzM6dRS9VPDH Fc3xbcQeg/sIUA3aJlAlmztMU1u5soNxtF8+6T9nTaCha0Ogg9PPpVk+86hxpeMF7nOI ZdPa20gfdqC/gmgxUm9uXPzmlum718HLvYkcrf/2FPdFvpLhupxO6buuEYLEzQ+TxRye D4DVQKL+FZvNKAw5PwpvVWqXYZLdtNuAi5h9J6HQ9OJROIGJappxap36kwe+bZBIiSeQ kQ5PIx2IMGDJMyOjcBW8Qfc/GhwkANGGwNmWX7utqAIQxzSCqFD4A3RiFs9kaw/xK7eb 869g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886250; x=1780491050; 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=YMs/uXhPHvjv8tK0rG5PcV9J3YapP9N2N0Ynmb7Sr+A=; b=KyGbgDYIdshqCT5xzSFijmjk6mpkC1mBNULloqMYS7dOo1qT+C9+GhCBRiEZLLN9IZ kGH9kCFabQ9w+JVPZ1lmfmbNSbLD5+RIWaAgOYNWjAT91zFLFkbpSQTWdW8GO+q3HUxV U6tbi1z8/mgfLdCdTprrqP6iFaNz+YbGAaLl4Pgi1aGYIiRd1snDNr9WOnX41k8uFn5s rgsoLi2iJImFt6+yvwJmvQEqPTDcwm8MJOxbNtlwcusk3P3x3lH0l72ivQuv+wn+Oja9 ub4BFae1dTFvYVjYvyzyNeGGc+fvOvxhj2rW+iV6t+/IzBiw/hqYLnIwJRqXvCuxPB4/ q/CQ== X-Forwarded-Encrypted: i=1; AFNElJ9mdmtHXwmy/qMjm8ftflKknnZh/9Pg1G7PLjKs2eiWbjS/+j6sAk368+5l6Sr25OEfoZuJF0XLH/ubQQA=@vger.kernel.org X-Gm-Message-State: AOJu0Ywst7LDfUAfni4+5JpKFSXltIOG51Ol8SWfKBT3IAuw3UIL26By AbJBjduY60k/rFtSbtPvz4SFBvgxaTCWtT7/duBrYj4s07kVB2AbkJzF X-Gm-Gg: Acq92OEUFlkb1FBEMdUFZ4vKqHhLCCK7qO7JHpKkBTHaoFqkLC9qFPbUr/3NqMT2JXS NFa2zpvVw+iblWRn9loP1Bg9+rtCnIRAaI6It5S88bn0sa3gJveN6iZrsFB6qQ3X9cVIksbXI7T am25qf9w8M9C9SWWRGwWIL27mzvPMsNXj8kjEPTIbzynHnFbZsgGZAZqfwz611ecA2lVlYhjwdk O/uHhG/9IijCtqpt0xKB0Tft9Zv1Y5lGNtF1MCIeAL/FKJBZjyLK92/k+H5G13xwXdh3JlKQQIc fFkgbXPbzJZSJIXFkVB5+1VmvUgS5HQ299FP8zpnlfafXVIrDOf42YgCu5eVMdxoU2IR+9Htq/q qf8NsDhFs9IAQJ1iMykFW6OyqM2m0n9mKKUJsA6zZtgzHPrY6wI8bMXLAonpxijWGTEc4xzdTym wWrAw+l6ZCciRvLz4SMNhqzcQ8PX7owsjYz0f0KjM= X-Received: by 2002:a17:903:1b68:b0:2bd:9da9:a29b with SMTP id d9443c01a7336-2beb031a83fmr252499005ad.5.1779886250352; Wed, 27 May 2026 05:50:50 -0700 (PDT) Received: from Mac.ibm.com ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c69a0sm151851185ad.59.2026.05.27.05.50.46 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 27 May 2026 05:50:49 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Madhavan Srinivasan , Harsh Prateek Bora , Christophe Leroy , Venkat Rao Bagalkote , Nicholas Piggin , Misbah Anjum N , Anushree Mathur , Michael Ellerman , linux-kernel@vger.kernel.org, "Ritesh Harjani (IBM)" Subject: [RFC v3 08/10] KVM: PPC: selftests: Use u32 instead of uint32_t Date: Wed, 27 May 2026 18:19:57 +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 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.39.5 From nobody Mon Jun 8 18:55:20 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 26B783FF8B5 for ; Wed, 27 May 2026 12:50:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886258; cv=none; b=CpatQVWsoIFEuQdJGuQ+YZrSokUZs/lZy/+xc4jx00GOYGOMnvioFc81XE3B9z5pPGjhoRVCB3ww4sZQSkMal0m2twbsB0mh5V5bku/xuvE/X7hjmVVuuIKBJzt/ZfGazb7RrBIPPNEEhXvGFxFVXhZBI0oo/NOq83veM5q47uc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886258; c=relaxed/simple; bh=QsfV9o6uyG3fZ0Cm0ZVpAXQmYPVs2CM/4Rt6IDqxWek=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VSEY+firzQ7t6lbNgrcr0GQg2D3W+aSuGDDLbVhauXatmG/BQ3wiATyXDK6yrtM8G1jgQqgFErt8452xCeSZagWb6kRqg1RkaXcej5+VSlzFYmXcQvnonW44xiptR5lQiKM+VfXmA5JH3T14IhIHdVhLtx1HsXFsT6pmL6FU59Y= 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=eJfyUSMz; arc=none smtp.client-ip=209.85.214.179 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="eJfyUSMz" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2b9fcf7c91bso131661855ad.0 for ; Wed, 27 May 2026 05:50:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779886256; x=1780491056; 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=o69E8eZZ8xoY19N9nOZcNtpgHKzR1JbFW5hWEhTv7Qg=; b=eJfyUSMzDh9hrsG1ty1kqcTpg2cIHpQ4ydzGRYTtx2lfjwK+I0NTy8ChAveHHcbBfV OwNXiQ31xZIdvKz0s03vdqIWUwzlLJyTbEmvKpR6Yg71VXji+tY1MJ8AOJetO0UgGBpg uJHgL4qa2qsdIr5uqzgfs2I6tuojxAlk6Do01Ed1UilT7Z7ppHcYgAj/fWO/gwxAp2kL Q3Dm3SrysUnCVzLgVGfKfBZVP06u917sWGaytt7F03T2KKC/mCsoxNH8SvL5UY3L7Ju4 zEDzQZ1IZHAZRmSCogk5o6B41OS3iecUMBjtXjDkbWYEg0HbtLktSiYpde2wWudvxrrY tK4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886256; x=1780491056; 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=o69E8eZZ8xoY19N9nOZcNtpgHKzR1JbFW5hWEhTv7Qg=; b=mRfECSLhZWg7YzDvxaMKgIR/U/DfFnXNIF+bQsKF+iQh6Atji7DuPZYRT3ZhU7bS3l hVvxpgGSwugWG/tgZN0DlGOsqpGrAE0VZAB2MWNw+9nXdiyGN84FbOUJnk5fxpeZ99Ns xC0j5zDVgBmrM16tchiEfoRsEZJdxgumR+5UfGLSEhO0ADM15fTcZhFhE9JDlNOW5EDH WtL4Q64NV5t2WilMdrn7V49BFN8k5ldBQV63AUPOX3yes7esE0FnIec5psUuc/O7j2NW LjHi9K+DzDTJUkSpwwnE6ko/npSqY9HAat76vImPhy7nMniwqv08U570KYaqdpcv7efZ /63w== X-Forwarded-Encrypted: i=1; AFNElJ/ZgR56Eo+tgeByqBt+H/Y7ZXgkDLMLBJqdoOlDeo+Fu2ytsJtG9ShQpsgIG3Sv6z74rsHDjYIn1zUdABk=@vger.kernel.org X-Gm-Message-State: AOJu0YxSvFB1XZeElE3jxFUABkMigWjOjvHASCIOrBke2UTjQtv+K0RI /QBEGIQtjPUzUsffbueLgxthcYE1B6+lo8XSuPCDvd/gjTck2Z5t10Xi X-Gm-Gg: Acq92OFXTYlOrSAQdqNj3A41Svxupg4QfEMABkAvoUUbgWZYYi5iJ58aPm+d3yEDDRU 6pHOP/ICWf3YkSSOF55lOvSo1sm/vaEzrF5euBEMrrJQqRjIudanbH4FsZZr2+zLDxiquSqJOFr ojTrmNk5qM2J/b+7WbJ1zibnurZ0r/Mo/erau7SapL2EGi/BzocRPbHLXrcecrcCe4aQzRDugRP Z+F7wbmNFlTl969kuA4cY02SfxZGQ1AG6HIL+LoR84GQU0oNrbTjuwwDo/Ji4ldZPRu4Im29JGF Pf8ZTGh58koutuGLdY2hcmIdl6J8zzQcBJIsYXQkwPG0AMOK2fY5prO5qZb5amKJUQ63ai0Tc9M xUnf+/qTGp0gnPG9TgXXePBWwHn6OnyMnR/V7C+iUWA+CrZaaLC/aggK6bYa0jCthBCIOWm5p5b Ui3DrcIe06nzQqIN28vqO2IbYi0vKdbWFdBA+NOwB1T9pmi+K7Ow== X-Received: by 2002:a17:903:198b:b0:2bd:c2ec:eec9 with SMTP id d9443c01a7336-2beb05ef6c2mr253654725ad.18.1779886255305; Wed, 27 May 2026 05:50:55 -0700 (PDT) Received: from Mac.ibm.com ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c69a0sm151851185ad.59.2026.05.27.05.50.50 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 27 May 2026 05:50:54 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Madhavan Srinivasan , Harsh Prateek Bora , Christophe Leroy , Venkat Rao Bagalkote , Nicholas Piggin , Misbah Anjum N , Anushree Mathur , Michael Ellerman , linux-kernel@vger.kernel.org, "Ritesh Harjani (IBM)" Subject: [RFC v3 09/10] KVM: PPC: selftests: Use u8 instead of uint8_t Date: Wed, 27 May 2026 18:19:58 +0530 Message-ID: <206327ff71a118e0a87fd3eca5c84afc6e3e6142.1779885589.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.39.5 From nobody Mon Jun 8 18:55:20 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (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 B35B0405874 for ; Wed, 27 May 2026 12:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886263; cv=none; b=uStwkqH+Bce1x/3uqDaflmeLh/1nMg0Goy26hCJUNC9vSMtirG4E3Y82jQkcZdJ9zg1wIG7wDVTxRHjI0ftZRbHpU1tbc3Bb/JKUDj0v68JNYvoakJHkEQcCstgpnMLTTVcxH7YRlSwYVLHFHkdpUcBgKEpE6/okpd5iNM/qKs0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779886263; c=relaxed/simple; bh=837FnyDbpS/a1PEWC/Inqc4NqRHxMIbFt3S85zcWWtQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=b9iBjpQfYwoL6cNrUBEMrlZB/YSCCv/Dn5qFV+MZ6c9JK223oH9FdtRB6Ea+yaWUX7HrZQLSkSALg+ukPmonyNFVLVk6k+STwXlt7MvLOyEKEe6aUVN6NqDSxdnQ6WJpBUwW+YKJmjkm2bhbmsL5UxDW/cHCo3O4vWcQJZq/JKA= 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=FujwVX6l; arc=none smtp.client-ip=209.85.214.169 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="FujwVX6l" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2ba3e3c4f87so121207815ad.3 for ; Wed, 27 May 2026 05:51:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779886261; x=1780491061; 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=H/w1Ny+GkWjJd36xIuiCWajcu8GK6fBsl49miGPD7vg=; b=FujwVX6lvoZq3VWsWSMMOYE8JF7piHSep9OjK5sU4X1CJpM1hG9rMNTrwGTj3Ew9/V 1YI0jNc9lZQbXpyTwACdrmn/QyQJzaey8A4lcgk1KrxcNUoU4njV7UnHElU5R87xxcQu Ig1ND6BJiYTeAzV7jCcUsEqdVu+aCDTNQl9PpHWoF7ulBTYmVmYd62fkRWi6LkqhKpwt cWpnUadDNYZAFxdVpfwQlB+MXYdtwrevYAPcAAGnTUxNEfeN3iVS7Tvj6ZBeXOYEe6US QeGf81Ujqh8z35gSZsABTDalbBC7FG9I0LVenM7HXi42pEc7hcGQWCiBCMjzGkoFo4cm NgmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779886261; x=1780491061; 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=H/w1Ny+GkWjJd36xIuiCWajcu8GK6fBsl49miGPD7vg=; b=IDVzVyYm9tVWju4gA/B/PYxSL16BxwE05ORJt5gC/Nt4K0LlCdGdl7DkBA51RYqlnu hxpyUYWqku5FjBWGJkaRZN4JK/HnwW/bFG0t9A2tSC8nYUy2lyACiSg0zsg3PfSYPymA Fjq8KRhtGBe06MhnlepkiDBeLHDZo8Zq2rH/ItK+HpjELNfJXnukGehPD1Os1w+5Hf7/ 6KGZL+4blxW5IEpFlXE8+SMm8BF3SHFsil9v2u6bDUsCFYXB/IgKW44XkW3/Bs2dRfVA uS/mGyEYv/vBfVFaT9ZqWpbq/vHkZ434DTfZ9lJb8ZuKujyljwgNY7owSxqH7yfpSZ5y LHJA== X-Forwarded-Encrypted: i=1; AFNElJ+jT9GR83qyCRmfL9qoTxr9nvDVfDsniJ1TmtULrRGxh9kipUgBpS1BVmwG9BxyhvH7WUq3G5wROnBA8Vg=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2B1KncBqpE4a2pT2WzCiO8FLJn3Qfa2bdUqN0g5Ay9H1ef6B5 VR6xG/589J18a8NQw89cYgvfyWpRpdKiZNhR2Ji9TheXpOPSUw38M+DG X-Gm-Gg: Acq92OFT5o+nHPjfaSSWTmKvgz/6KkU5YCWW96Nml+zG/c4EL0swPE4mhgZCkyuH2VZ DQhTmZ5OCClKqTyEawwnEixR8B2hvGVTVcDVwVoGiAfH6j42El1lXJzJhPRTNnPTFvBy6PoMM2A 80GeukZXAubQpAfJiA9nuyunPYaJPeOp0O/uox3HHpjf+eZ3g5+23tVT4OvhrolfZKUGKFMXVIi ly+WlKWelfeTAvIS1QgA25bBEDuwPqODccaxjbkO3G3cGqDif5QcLpUfK/dfWWv5qHG9waJZY3d tZEx4dxWfEt+KrcphicEr2kQH/eKECTJ8LjQL5lmqVtY6Qp2o60uBPOJjieD6yi6LnYlWnO4K5h IIxhzsyZ+lP6wph5x20KKvbBhXk3rGqr9pn+9ptB6VBFEnycYBa6/+Qfd5XlTNUXSfwnXLWo65j OXhgrt4go+LWIesLuHQK3q8EaOqkvNVshrQIkx6jA= X-Received: by 2002:a17:903:2f4f:b0:2b4:5f69:715d with SMTP id d9443c01a7336-2beb05d9d8emr260493225ad.25.1779886261058; Wed, 27 May 2026 05:51:01 -0700 (PDT) Received: from Mac.ibm.com ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb58c69a0sm151851185ad.59.2026.05.27.05.50.56 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 27 May 2026 05:51:00 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: kvm@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Madhavan Srinivasan , Harsh Prateek Bora , Christophe Leroy , Venkat Rao Bagalkote , Nicholas Piggin , Misbah Anjum N , Anushree Mathur , Michael Ellerman , linux-kernel@vger.kernel.org, "Ritesh Harjani (IBM)" Subject: [RFC v3 10/10] KVM: PPC: selftests: Replace u64 gpa, u64 gva|vaddr with gpa_t and gva_t Date: Wed, 27 May 2026 18:19:59 +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 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.39.5