From nobody Thu Dec 18 07:51:18 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 4E4B2C07E8F for ; Tue, 15 Aug 2023 21:36:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240339AbjHOVgX (ORCPT ); Tue, 15 Aug 2023 17:36:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57416 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240307AbjHOVfz (ORCPT ); Tue, 15 Aug 2023 17:35:55 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D4AB01FDE for ; Tue, 15 Aug 2023 14:35:46 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-d66c957e1b2so3507435276.0 for ; Tue, 15 Aug 2023 14:35:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692135346; x=1692740146; 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=IBUBLv/HPCB4LKxnLIHtLexFhB0Q0oPfVfCHc1YuUoQ=; b=ftNRWSl2wcGncg449q6rittoHtsDkLodn9kmNNUK4LvngOrGtwDM2K09o9jf3R2pWi J3rnWu1wfSmkPaWGCrTivT9XIwI25fnxEfMmLd6yElwf41//GnxDXpOLLLVK7QiJpuph UKe2V+pWXdFaU0qqnuvDqot6lzX4CyW+S+uwhI8I6SEQKtr1i6KNzbfokbei/gfCCPoT ZmVsyHDjk0qvfkmihtZhiRv4q2CrPlagNMXQjJOA1vii66vGwm3w3VkLMCuZDqEakcrX KT0mCmG0VjFv/EahokcTaUV85DWjL6GdJehIiImnAwPJF2dIpRUWlXyzp6djaTYHXdaR Vg9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692135346; x=1692740146; 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=IBUBLv/HPCB4LKxnLIHtLexFhB0Q0oPfVfCHc1YuUoQ=; b=e+pKyS8sSUhfh54RRgsJeVQapJ4Rcm0vxSOM7xx/lIoFb2IWl08054dfDCs2C7cV30 hz01WrL3VyYnnE7J1rvwp5MiULLwKqgC317UHL76hm4vl11k1YqtdQZhrIILVgQ+XXsA 1X2pgfpdftwboHkfI6OYO7thL1n0P+mCkajFil+cfDxaC/SOWCEJmNGnT4HXJcDx+rGU gmjNVNXOZPco/StthPpfNdZlVJvG2vjENFHSdrwnMDfmuFg6B1XNAobSSQvwQlsuJspj rlVIcgtoRf2xlkzCstH47oICDJUItzusPOQZxj0HmS2NOHHUqkVIpgA+YmjMBHXu8cwC 28sw== X-Gm-Message-State: AOJu0YxDuU/maiOuY4UOThfgeMHBTlcshxTP6UMMhZz9/Wr9jXf+yaf6 fw7qKCCwmUT/fXIkWg88jz6IZcPeClM= X-Google-Smtp-Source: AGHT+IEe878IgObP3kTHS4toaTgW55ygHhngjMRQJ+zm+0LnGR8rirD+rxQqbK+V+ONXjM8I6rX58b3A/iQ= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a5b:90e:0:b0:d6b:1a89:6673 with SMTP id a14-20020a5b090e000000b00d6b1a896673mr100ybq.5.1692135345838; Tue, 15 Aug 2023 14:35:45 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 15 Aug 2023 14:35:27 -0700 In-Reply-To: <20230815213533.548732-1-seanjc@google.com> Mime-Version: 1.0 References: <20230815213533.548732-1-seanjc@google.com> X-Mailer: git-send-email 2.41.0.694.ge786442a9b-goog Message-ID: <20230815213533.548732-5-seanjc@google.com> Subject: [PATCH 04/10] KVM: SVM: Add helper to deduplicate code for getting AVIC backing page From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini , Joerg Roedel Cc: kvm@vger.kernel.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org, Maxim Levitsky Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a helper to get the physical address of the AVIC backing page, both to deduplicate code and to prepare for getting the address directly from apic->regs, at which point it won't be all that obvious that the address in question is what SVM calls the AVIC backing page. No functional change intended. Signed-off-by: Sean Christopherson Reviewed-by: Maxim Levitsky --- arch/x86/kvm/svm/avic.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index b8313f2d88fa..954bdb45033b 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -241,14 +241,18 @@ int avic_vm_init(struct kvm *kvm) return err; } =20 +static phys_addr_t avic_get_backing_page_address(struct vcpu_svm *svm) +{ + return __sme_set(page_to_phys(svm->avic_backing_page)); +} + void avic_init_vmcb(struct vcpu_svm *svm, struct vmcb *vmcb) { struct kvm_svm *kvm_svm =3D to_kvm_svm(svm->vcpu.kvm); - phys_addr_t bpa =3D __sme_set(page_to_phys(svm->avic_backing_page)); phys_addr_t lpa =3D __sme_set(page_to_phys(kvm_svm->avic_logical_id_table= _page)); phys_addr_t ppa =3D __sme_set(page_to_phys(kvm_svm->avic_physical_id_tabl= e_page)); =20 - vmcb->control.avic_backing_page =3D bpa; + vmcb->control.avic_backing_page =3D avic_get_backing_page_address(svm); vmcb->control.avic_logical_id =3D lpa; vmcb->control.avic_physical_id =3D ppa; vmcb->control.avic_vapic_bar =3D APIC_DEFAULT_PHYS_BASE; @@ -308,7 +312,7 @@ static int avic_init_backing_page(struct kvm_vcpu *vcpu) if (!entry) return -EINVAL; =20 - new_entry =3D __sme_set(page_to_phys(svm->avic_backing_page)) | + new_entry =3D avic_get_backing_page_address(svm) | AVIC_PHYSICAL_ID_ENTRY_VALID_MASK; WRITE_ONCE(*entry, new_entry); =20 @@ -859,7 +863,7 @@ get_pi_vcpu_info(struct kvm *kvm, struct kvm_kernel_irq= _routing_entry *e, pr_debug("SVM: %s: use GA mode for irq %u\n", __func__, irq.vector); *svm =3D to_svm(vcpu); - vcpu_info->pi_desc_addr =3D __sme_set(page_to_phys((*svm)->avic_backing_p= age)); + vcpu_info->pi_desc_addr =3D avic_get_backing_page_address(*svm); vcpu_info->vector =3D irq.vector; =20 return 0; @@ -917,7 +921,7 @@ int avic_pi_update_irte(struct kvm *kvm, unsigned int h= ost_irq, struct amd_iommu_pi_data pi; =20 /* Try to enable guest_mode in IRTE */ - pi.base =3D __sme_set(page_to_phys(svm->avic_backing_page)); + pi.base =3D avic_get_backing_page_address(svm); pi.ga_tag =3D AVIC_GATAG(to_kvm_svm(kvm)->avic_vm_id, svm->vcpu.vcpu_id); pi.is_guest_mode =3D true; --=20 2.41.0.694.ge786442a9b-goog