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 X-Spam-Level: X-Spam-Status: No, score=-14.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1CE82C4338F for ; Tue, 3 Aug 2021 05:33:51 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id C72E660F35 for ; Tue, 3 Aug 2021 05:33:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org C72E660F35 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=o75IywaRzvXmh84PGSgI6XZgrxKA+Vg1QKSdzP3Nrlc=; b=bCFOpuqfHapaJF 8FEw/mkN1iVXj/iNqIXt5O1y6DK6oMZ39Fkh3Zko9itTfWTNo3rxQcotwar0E7JyAAmkBJVV/Xq8J jbdJIQzSAa8qXBYXQpR7m8JFUgA8RjMSdpavDaCMCvXOZQzd0/K/y6Iqgp8umNYQcOcfr8Jy6J7a/ Upnas4jP+cqYy+PxAQ7+V+Qpid9miL2KaJS7IUMIF3OnKbVTh3XkWU4ZJuq7LKy45mXixSPZYOoOh vmES5nJHaASFwoUGtIqiVinhr3Bhy+2F8Q3q6oZtduZw6SJhUf/jpUPlMagrXtT2e6AmF0dc+btlT rmW567xmiavsGB32STJA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mAn1j-001BId-Pu; Tue, 03 Aug 2021 05:31:43 +0000 Received: from mail-ot1-x330.google.com ([2607:f8b0:4864:20::330]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mAn1g-001BIH-NR for linux-arm-kernel@lists.infradead.org; Tue, 03 Aug 2021 05:31:42 +0000 Received: by mail-ot1-x330.google.com with SMTP id r1-20020a0568304181b02904cf73f54f4bso2472086otu.2 for ; Mon, 02 Aug 2021 22:31:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Po/YZOILTmzrKkwPCgFv0W6S5rEcnTiI475aJx7OtDk=; b=tspspKCzxf3dmvM9PbDYEPm3AmQpSu50tc9b+llKKl7n1mT4jrbe+Z6JGQDcifMAF+ HQY90mmsaeiBqaBa0zJVodVm+2NmqPjcsViqcCVODxGkOF5ysu1zCjyeOvmQvutwqF2Q xyBGMpTCE/+qoBcJ9OZOU7EXqwbCN8VOrL8EA9myE9R0bcJs3uOPWRRr3HJNstqH1jHe M/awtkRnSp+XXF7yXRKRu0R6aVoLeZuxy4CgQzPVN95+XgmsjMVe7Rxalo7LE7ZsrA+P MBYrJ13XeNcKRFqBMNULhow1Bq3fV8f0w32XIuU7iAGaWWJwBU1MQat268IbtZ5tlcgV /L9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Po/YZOILTmzrKkwPCgFv0W6S5rEcnTiI475aJx7OtDk=; b=ZxnP7DF6jkpli+dgFHnBqeH1zhqPxwuboxkQok30mqZ3h1G5j0nB9TG0Y9//a4iAnR iOG3OX5C+FubaPWiXJAH3b8CQ0S948jfjJDrc4O27gtzurQLqKWsaYMOGa0r6uWoWN5P GnjGd/K1HZWTtySXqfp7pPueebrAobud0ZTAUiXgFupXdzX1EkrC9F0MeEbQ5j7SVb0D Pgv4VwHVq7c98OuJY1c2ORhMB+j915FeUjF9bm434ZYwZDM4oTPKkaoq4t4wKfZLTCEQ ykafz8Su8WUKk5nF9qb3I9IhPBu4titENTshncYuHOqdUfZo3pnCNLRYX43x2Q7i6H7W 5S/g== X-Gm-Message-State: AOAM531gcEFgDUEM/0ZpUZvYLODjKVwHbMP3/7x0OsR8uh3j3gIAcg4H OGWAp9sPB6dA10sI9psFmCk8VNG1g2XbzHGphklw6A== X-Google-Smtp-Source: ABdhPJy1HDBBzhcvNCRK5xNSS9iFpgQuB17eEHlmHNL8ct6gYXoCpJTZVAjHq3COPZzflHgWQ+W5gfuj9ZOJYJghGNM= X-Received: by 2002:a05:6830:1455:: with SMTP id w21mr14380175otp.365.1627968699557; Mon, 02 Aug 2021 22:31:39 -0700 (PDT) MIME-Version: 1.0 References: <20210729132818.4091769-1-qperret@google.com> <20210729132818.4091769-20-qperret@google.com> In-Reply-To: <20210729132818.4091769-20-qperret@google.com> From: Fuad Tabba Date: Tue, 3 Aug 2021 07:31:03 +0200 Message-ID: Subject: Re: [PATCH v3 19/21] KVM: arm64: Refactor protected nVHE stage-1 locking To: Quentin Perret Cc: maz@kernel.org, james.morse@arm.com, alexandru.elisei@arm.com, suzuki.poulose@arm.com, catalin.marinas@arm.com, will@kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org, ardb@kernel.org, qwandor@google.com, dbrazdil@google.com, kernel-team@android.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210802_223140_828959_9E5ABE4C X-CRM114-Status: GOOD ( 21.17 ) 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 Hi Quentin, On Thu, Jul 29, 2021 at 3:29 PM Quentin Perret wrote: > > Refactor the hypervisor stage-1 locking in nVHE protected mode to expose > a new pkvm_create_mappings_locked() function. This will be used in later > patches to allow walking and changing the hypervisor stage-1 without > releasing the lock. > > Signed-off-by: Quentin Perret > --- > arch/arm64/kvm/hyp/include/nvhe/mm.h | 1 + > arch/arm64/kvm/hyp/nvhe/mm.c | 18 ++++++++++++++++-- > 2 files changed, 17 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/kvm/hyp/include/nvhe/mm.h b/arch/arm64/kvm/hyp/include/nvhe/mm.h > index 8ec3a5a7744b..c76d7136ed9b 100644 > --- a/arch/arm64/kvm/hyp/include/nvhe/mm.h > +++ b/arch/arm64/kvm/hyp/include/nvhe/mm.h > @@ -23,6 +23,7 @@ int hyp_map_vectors(void); > int hyp_back_vmemmap(phys_addr_t phys, unsigned long size, phys_addr_t back); > int pkvm_cpu_set_vector(enum arm64_hyp_spectre_vector slot); > int pkvm_create_mappings(void *from, void *to, enum kvm_pgtable_prot prot); > +int pkvm_create_mappings_locked(void *from, void *to, enum kvm_pgtable_prot prot); > int __pkvm_create_mappings(unsigned long start, unsigned long size, > unsigned long phys, enum kvm_pgtable_prot prot); > unsigned long __pkvm_create_private_mapping(phys_addr_t phys, size_t size, > diff --git a/arch/arm64/kvm/hyp/nvhe/mm.c b/arch/arm64/kvm/hyp/nvhe/mm.c > index a8efdf0f9003..6fbe8e8030f6 100644 > --- a/arch/arm64/kvm/hyp/nvhe/mm.c > +++ b/arch/arm64/kvm/hyp/nvhe/mm.c > @@ -67,13 +67,15 @@ unsigned long __pkvm_create_private_mapping(phys_addr_t phys, size_t size, > return addr; > } > > -int pkvm_create_mappings(void *from, void *to, enum kvm_pgtable_prot prot) > +int pkvm_create_mappings_locked(void *from, void *to, enum kvm_pgtable_prot prot) > { > unsigned long start = (unsigned long)from; > unsigned long end = (unsigned long)to; > unsigned long virt_addr; > phys_addr_t phys; > > + hyp_assert_lock_held(&pkvm_pgd_lock); > + > start = start & PAGE_MASK; > end = PAGE_ALIGN(end); > > @@ -81,7 +83,8 @@ int pkvm_create_mappings(void *from, void *to, enum kvm_pgtable_prot prot) > int err; > > phys = hyp_virt_to_phys((void *)virt_addr); > - err = __pkvm_create_mappings(virt_addr, PAGE_SIZE, phys, prot); > + err = kvm_pgtable_hyp_map(&pkvm_pgtable, virt_addr, PAGE_SIZE, > + phys, prot); > if (err) > return err; > } > @@ -89,6 +92,17 @@ int pkvm_create_mappings(void *from, void *to, enum kvm_pgtable_prot prot) > return 0; > } > > +int pkvm_create_mappings(void *from, void *to, enum kvm_pgtable_prot prot) > +{ > + int ret; > + > + hyp_spin_lock(&pkvm_pgd_lock); > + ret = pkvm_create_mappings_locked(from, to, prot); > + hyp_spin_unlock(&pkvm_pgd_lock); > + > + return ret; > +} > + I'm wondering whether this patch should also refactor __pkvm_create_mappings. It doesn't quite do the exact same thing and has different parameters. Thanks, /fuad > int hyp_back_vmemmap(phys_addr_t phys, unsigned long size, phys_addr_t back) > { > unsigned long start, end; > -- > 2.32.0.432.gabb21c7263-goog > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel