From mboxrd@z Thu Jan 1 00:00:00 1970 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7675DC433EF for ; Fri, 14 Jan 2022 13:50:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WDIZ3aEdC3K0cW3d+Flu2rJeSRQR2iVchvNPv9dWRNo=; b=DhPxnQ90dUH8aj t4EUBBnt3mVEOuYGdfCHCjoYV5A0ZG/M7NrcE7DjI7x5BLTUBXA2+brxZtShZy91g7mwh+ZLE3TUH B3q4CYLNGbojL9rB4b4jUc/0QTwBmjDpTAI3hRZ9yR080KpNWV5n7tFhcbyuoHKfoXc9RvZIsPttA Zn2DU2/0XihHhmM9pZTdRP2fP6Vjqfmol5ZUhXkwiii0NGtYZXWyNh7lD0rw+n8dCeDExBS8zCJnH s3sKcs6BWkFM6A5/MZ94Eyn+DzPO89amiB8AbfR4R+A+QqRKYfmXuyiedfAwGTWJOddJMkDWRXxVZ eOAHKEzabCuS9zWWoetw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n8MxR-009FrT-3j; Fri, 14 Jan 2022 13:49:33 +0000 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n8MxG-009Fmj-7K for linux-arm-kernel@lists.infradead.org; Fri, 14 Jan 2022 13:49:23 +0000 Received: by mail-wr1-x429.google.com with SMTP id q8so15664804wra.12 for ; Fri, 14 Jan 2022 05:49:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=SplDRCa6NNrw+jmw+XcUlhx9ZxjilxrjFesGl7lzU8g=; b=a8+JP378o1HAvFjmRAXUOS92EqYOCCF88AwdX0/glSzNwYInZgQODDEMtel8YNg43L yYJWvN218zskoZeANgcb1mJ8YkIikwhMIQ/j/c2EwwWlx1AyTftWuWJLK/q4DO2x9KhF SX2Q17/rj7UDxp1MxMU5n5EyscAbo+Y6gBeBFRUUqZnOhohMNv3u0xHpRXG88P5rCodV J6ZzYoj2CCEzrG1fanC9jK06RN3WeAj2R91MreRQDcoTPbOu0SdKk3oOkZyPWai0cSxg Run8+wVv5fEmM8o7zcChBaWTpUjMXF7lpEXzUR8WOjnviB7ezlfmvN16E2LaKXWslsnM g8PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=SplDRCa6NNrw+jmw+XcUlhx9ZxjilxrjFesGl7lzU8g=; b=s/AiqG1KcJ8v8ogeBNWo6NeWDcQtxWkAhv/JS5Ije+XRvJA3eV8WCh3UNMixsR8nW+ jbS6SJ0SLwSiq145jdrB2A+l1Q4vGoHv/SCzIgxLZFRvU1EXq0JZoiVtlV2dmMOevpY9 3P3rcfmegMtb8tiVdyBpSCid9RyCGCAhXWeDCa9z68wfeIV6OyW35EVUqDLL36DTc/hs t/8MCSQxZv5J4/Cj0bHpbBlDiynVQlED4DToPW1ttvJGtoj8+JPdZdwjzRRo4L4d2pLf yyZnkDBqUv6a12/zBUqcYtGOLQaoQqWVV3CGDpFS6wUZqeX5XcHvzeea8syAGTW97A1c T2VQ== X-Gm-Message-State: AOAM532bSo05OZ1ninuw3YAQgUUFWwR8cQrMwrZ4Tn8oZ4pCrxMeUTU5 iIqbjoxgFgaROeM2rLmTOvmxZA== X-Google-Smtp-Source: ABdhPJwoUoCO5g9qpmclfYXylg3VPdHOz196vgmYaxgcYpAG6lUSt03T/h3hujcZM8T0T16gsvO79w== X-Received: by 2002:a05:6000:18a5:: with SMTP id b5mr8486696wri.24.1642168156403; Fri, 14 Jan 2022 05:49:16 -0800 (PST) Received: from google.com ([2a00:79e0:d:210:d47e:30f8:4fad:745b]) by smtp.gmail.com with ESMTPSA id f15sm1858029wmq.38.2022.01.14.05.49.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jan 2022 05:49:15 -0800 (PST) Date: Fri, 14 Jan 2022 13:49:12 +0000 From: Quentin Perret To: Marc Zyngier Cc: kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, James Morse , Suzuki K Poulose , Alexandru Elisei , Will Deacon , Fuad Tabba Subject: Re: [PATCH] KVM: arm64: pkvm: Use the mm_ops indirection for cache maintenance Message-ID: References: <20220114125038.1336965-1-maz@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220114125038.1336965-1-maz@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220114_054922_295872_C0B955F9 X-CRM114-Status: GOOD ( 18.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Friday 14 Jan 2022 at 12:50:38 (+0000), Marc Zyngier wrote: > CMOs issued from EL2 cannot directly use the kernel helpers, > as EL2 doesn't have a mapping of the guest pages. Oops. > > Instead, use the mm_ops indirection to use helpers that will > perform a mapping at EL2 and allow the CMO to be effective. Right, we were clearly lucky not to use those paths at EL2 _yet_, but that's going to change soon and this is better for consistency, so: Reviewed-by: Quentin Perret > Fixes: 25aa28691bb9 ("KVM: arm64: Move guest CMOs to the fault handlers") > Signed-off-by: Marc Zyngier > --- > arch/arm64/kvm/hyp/pgtable.c | 18 ++++++------------ > 1 file changed, 6 insertions(+), 12 deletions(-) > > diff --git a/arch/arm64/kvm/hyp/pgtable.c b/arch/arm64/kvm/hyp/pgtable.c > index 844a6f003fd5..2cb3867eb7c2 100644 > --- a/arch/arm64/kvm/hyp/pgtable.c > +++ b/arch/arm64/kvm/hyp/pgtable.c > @@ -983,13 +983,9 @@ static int stage2_unmap_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep, > */ > stage2_put_pte(ptep, mmu, addr, level, mm_ops); > > - if (need_flush) { > - kvm_pte_t *pte_follow = kvm_pte_follow(pte, mm_ops); > - > - dcache_clean_inval_poc((unsigned long)pte_follow, > - (unsigned long)pte_follow + > - kvm_granule_size(level)); > - } > + if (need_flush && mm_ops->dcache_clean_inval_poc) > + mm_ops->dcache_clean_inval_poc(kvm_pte_follow(pte, mm_ops), > + kvm_granule_size(level)); > > if (childp) > mm_ops->put_page(childp); > @@ -1151,15 +1147,13 @@ static int stage2_flush_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep, > struct kvm_pgtable *pgt = arg; > struct kvm_pgtable_mm_ops *mm_ops = pgt->mm_ops; > kvm_pte_t pte = *ptep; > - kvm_pte_t *pte_follow; > > if (!kvm_pte_valid(pte) || !stage2_pte_cacheable(pgt, pte)) > return 0; > > - pte_follow = kvm_pte_follow(pte, mm_ops); > - dcache_clean_inval_poc((unsigned long)pte_follow, > - (unsigned long)pte_follow + > - kvm_granule_size(level)); > + if (mm_ops->dcache_clean_inval_poc) > + mm_ops->dcache_clean_inval_poc(kvm_pte_follow(pte, mm_ops), > + kvm_granule_size(level)); > return 0; > } > > -- > 2.30.2 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel