From nobody Fri Dec 19 22:02:10 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B26A9C433F5 for ; Thu, 6 Oct 2022 00:45:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229722AbiJFApe (ORCPT ); Wed, 5 Oct 2022 20:45:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50092 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229817AbiJFApW (ORCPT ); Wed, 5 Oct 2022 20:45:22 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 72F273473B for ; Wed, 5 Oct 2022 17:45:21 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-3549b9f0a03so4161497b3.11 for ; Wed, 05 Oct 2022 17:45:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=O9zzrj71ODVbYnDDy0jgcppAPNlAGvICv+49NEPzfnc=; b=T7fZJpEtTKXswD5xBDEOcbcqIcbwV/sOO5vof+HNmR2ccgYgCsO8T/Ius86GqGKXhK xR9N44ahLs/WTA+YZEpBXjj3UCBOK1TPrvpbSskAL3B3d+yH9bH90gOto1f5at9YLKMU LmdtODgF8Q9q7zqIEBFD2w8T+elZY0DG/rOQnlIbZ6xAOiOenlPYd51Hwy3GPqQydAvk 58xLCdiXuNFJny73eEVWOR+8H+UYL0Kqxkfku1HlH/9AlWXkpNUyZzA/FgXItikVJH2o ygVcWDK+4dKvAdl8tHwBfPdIJHxtZxpNSzPYUWg0zJMJuTIiY9xcCxsdrvZ0XMzEjdDL 7D6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=O9zzrj71ODVbYnDDy0jgcppAPNlAGvICv+49NEPzfnc=; b=kHgSAac8xw1VsbFpsjZSG5OZaxe86gzHFYPVtrTIAWc5IZvsfjHpRxTYF1RgfwC6JH Vx5xmX2n1ok5ISGwDrv5J/+nlgtRD38qQDdYnT0+QybqgJReeI4ivjzITk3jMROjjyvu zrKkalFurJlhqfAGm+DjLKUZ8VxSMND/Y0D03nTSSWpXrJARmLWsyf1XY+qkBAsfp6F2 ULNc9RY1uLNnE3edtN8ihu5/Vlv9ktl97OO7hlH1w5MjdJGNSSNfWHNHgGRFtpAjeDnZ uejOzNkQ2VAWCCKfFT6KIe0X35QoI96Y+4dWR/um2yg4BMbIsVIulp4+gxoqBhZRzRrJ DMyA== X-Gm-Message-State: ACrzQf1TzTJe2l3Lw0BaMJvnEgD8dcQuEsTRnnZxGmT657TjAf1VtaKU qOUii5VFNBKTANyd+ZNSdfUtr9t+i/A= X-Google-Smtp-Source: AMsMyM502IFVAOparPEReWGXDNORaqkAt7oRbWwqkLa1VFUFBkwdimgEWhHLPrSKL14nSIv2PLQIrg+4AgA= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a81:5a42:0:b0:35d:80ee:eb7d with SMTP id o63-20020a815a42000000b0035d80eeeb7dmr2351119ywb.272.1665017120735; Wed, 05 Oct 2022 17:45:20 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 6 Oct 2022 00:45:08 +0000 In-Reply-To: <20221006004512.666529-1-seanjc@google.com> Mime-Version: 1.0 References: <20221006004512.666529-1-seanjc@google.com> X-Mailer: git-send-email 2.38.0.rc1.362.ged0d419d3c-goog Message-ID: <20221006004512.666529-4-seanjc@google.com> Subject: [PATCH 3/7] KVM: selftests: Remove useless shifts when creating guest page tables From: Sean Christopherson To: Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Remove the pointless shift from GPA=3D>GFN and immediately back to GFN=3D>GPA when creating guest page tables. Ignore the other walkers that have a similar pattern for the moment, they will be converted to use virt_get_pte() in the near future. No functional change intended. Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/x86_64/processor.h | 3 ++- .../selftests/kvm/lib/x86_64/processor.c | 17 ++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools= /testing/selftests/kvm/include/x86_64/processor.h index 53d52a5ace48..9676a3464758 100644 --- a/tools/testing/selftests/kvm/include/x86_64/processor.h +++ b/tools/testing/selftests/kvm/include/x86_64/processor.h @@ -177,7 +177,8 @@ struct kvm_x86_cpu_feature { #define PAGE_MASK (~(PAGE_SIZE-1)) =20 #define PHYSICAL_PAGE_MASK GENMASK_ULL(51, 12) -#define PTE_GET_PFN(pte) (((pte) & PHYSICAL_PAGE_MASK) >> PAGE_SHIF= T) +#define PTE_GET_PA(pte) ((pte) & PHYSICAL_PAGE_MASK) +#define PTE_GET_PFN(pte) (PTE_GET_PA(pte) >> PAGE_SHIFT) =20 /* General Registers in 64-Bit Mode */ struct gpr64_regs { diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index 9e196837a794..324bf24564a1 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -131,23 +131,23 @@ void virt_arch_pgd_alloc(struct kvm_vm *vm) } } =20 -static void *virt_get_pte(struct kvm_vm *vm, uint64_t pt_pfn, uint64_t vad= dr, +static void *virt_get_pte(struct kvm_vm *vm, uint64_t pt_gpa, uint64_t vad= dr, int level) { - uint64_t *page_table =3D addr_gpa2hva(vm, pt_pfn << vm->page_shift); + uint64_t *page_table =3D addr_gpa2hva(vm, pt_gpa); int index =3D (vaddr >> PG_LEVEL_SHIFT(level)) & 0x1ffu; =20 return &page_table[index]; } =20 static uint64_t *virt_create_upper_pte(struct kvm_vm *vm, - uint64_t pt_pfn, + uint64_t pt_gpa, uint64_t vaddr, uint64_t paddr, int current_level, int target_level) { - uint64_t *pte =3D virt_get_pte(vm, pt_pfn, vaddr, current_level); + uint64_t *pte =3D virt_get_pte(vm, pt_gpa, vaddr, current_level); =20 if (!(*pte & PTE_PRESENT_MASK)) { *pte =3D PTE_PRESENT_MASK | PTE_WRITABLE_MASK; @@ -197,21 +197,20 @@ void __virt_pg_map(struct kvm_vm *vm, uint64_t vaddr,= uint64_t paddr, int level) * Allocate upper level page tables, if not already present. Return * early if a hugepage was created. */ - pml4e =3D virt_create_upper_pte(vm, vm->pgd >> vm->page_shift, - vaddr, paddr, PG_LEVEL_512G, level); + pml4e =3D virt_create_upper_pte(vm, vm->pgd, vaddr, paddr, PG_LEVEL_512G,= level); if (*pml4e & PTE_LARGE_MASK) return; =20 - pdpe =3D virt_create_upper_pte(vm, PTE_GET_PFN(*pml4e), vaddr, paddr, PG_= LEVEL_1G, level); + pdpe =3D virt_create_upper_pte(vm, PTE_GET_PA(*pml4e), vaddr, paddr, PG_L= EVEL_1G, level); if (*pdpe & PTE_LARGE_MASK) return; =20 - pde =3D virt_create_upper_pte(vm, PTE_GET_PFN(*pdpe), vaddr, paddr, PG_LE= VEL_2M, level); + pde =3D virt_create_upper_pte(vm, PTE_GET_PA(*pdpe), vaddr, paddr, PG_LEV= EL_2M, level); if (*pde & PTE_LARGE_MASK) return; =20 /* Fill in page table entry. */ - pte =3D virt_get_pte(vm, PTE_GET_PFN(*pde), vaddr, PG_LEVEL_4K); + pte =3D virt_get_pte(vm, PTE_GET_PA(*pde), vaddr, PG_LEVEL_4K); TEST_ASSERT(!(*pte & PTE_PRESENT_MASK), "PTE already present for 4k page at vaddr: 0x%lx\n", vaddr); *pte =3D PTE_PRESENT_MASK | PTE_WRITABLE_MASK | (paddr & PHYSICAL_PAGE_MA= SK); --=20 2.38.0.rc1.362.ged0d419d3c-goog