From patchwork Wed Apr 19 22:16:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Atish Patra X-Patchwork-Id: 13217461 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 41DE6C77B7C for ; Wed, 19 Apr 2023 22:18:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C2C2B90000C; Wed, 19 Apr 2023 18:18:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BDB5F900003; Wed, 19 Apr 2023 18:18:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 946BD90000C; Wed, 19 Apr 2023 18:18:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 80118900003 for ; Wed, 19 Apr 2023 18:18:01 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 4B1AB120194 for ; Wed, 19 Apr 2023 22:18:01 +0000 (UTC) X-FDA: 80699554362.06.8681FC7 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by imf23.hostedemail.com (Postfix) with ESMTP id 6318A14000A for ; Wed, 19 Apr 2023 22:17:59 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=3BXkkvcr; spf=pass (imf23.hostedemail.com: domain of atishp@rivosinc.com designates 209.85.210.171 as permitted sender) smtp.mailfrom=atishp@rivosinc.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1681942679; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LUld/G/1WeH25lUdXRYxnjPYZXeYYgEcmI7A3/bRIcw=; b=w6fSJNbG7YLIAL0GbxLS0LwibqMp5cAZ1MX4xTQ2SKuckZ0AHhoy618gUGmqf5V029Zd/a 6WB3zvgRC9hm2pQcdhHZdUF3G7YI3MWEPH4YlJKRbUVLu+IXwo6RKK5tRkyhwzW2B6k84L zcBAq9D01j3GFxxRI60mOTe++7ZUFsU= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=3BXkkvcr; spf=pass (imf23.hostedemail.com: domain of atishp@rivosinc.com designates 209.85.210.171 as permitted sender) smtp.mailfrom=atishp@rivosinc.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1681942679; a=rsa-sha256; cv=none; b=Wov/4Di9R+aPb3qAq7DV5J/18KfvtjfHOXkx9CVI8DuPZVAAtFX26mbJQzMigCXWj4J0OE yo9A0shFlB9vCtXJngARUKSNguJUIAWmsBkjSBnqBSqgpQNq/MuNAt5G4DL4l8pDwmx4qQ xLdx1xYuJThRONw49vjR2ivDFg25Q5g= Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-63b7096e2e4so376904b3a.2 for ; Wed, 19 Apr 2023 15:17:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1681942678; x=1684534678; 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=LUld/G/1WeH25lUdXRYxnjPYZXeYYgEcmI7A3/bRIcw=; b=3BXkkvcr1OqHpZ/1lavYXP7tve2GxDnWf4O2fWPOiSdbOWRF8chSO/YIyqpEuxWDXh BJ7QFDeoj+Jn0Arzj7+Z5YjQU574gbvT6cAETsRRSqDeVkx/Ylx7RmGaHK6RFXNh6Eit fV0M97Hugr5QTbW1u6+18YRRaKIRIagsziaBLExN4bCT6bnocXCkvHc2Ew+80dXvoOZo BF8+iOJKnVBNIx5dtVYx6vnMu5+ZMBbkouCan/31RqRplh6dabd1rARUBLlSsQGaKiSb 4trlbYIIc+EnwzxQuThX6PKBOpT5C2rO+n2a+7R9hS1L0V6qAuL49rS0jBoNV5zJv4h3 Joww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681942678; x=1684534678; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LUld/G/1WeH25lUdXRYxnjPYZXeYYgEcmI7A3/bRIcw=; b=bB5cP9fyYYl6l85qGK5Katw0EhZRBTJYEY9nt1Y3CuDf6Zum3pVfWFQsjnNzOA1U/X JrZ2cYHjen/1B7FB7+PuvbNip+gfempIFi+JbKIECilcJAtkx7spUp4S9dopYI/G/Y/8 4K0/59avIvSWGLuTmEmVrTSmJvciiVQbUfWvgx1hCiHMrhijihPp9HyH96NczrTGUl95 LwSr0XEz7E4ZW4nTjL1X9+sOsx/KpBxhbsxJHwqSI35BvJAtBgvsD6uUKfG+C11lP1dz OaK6ZQJwGVB9uAavRUokubR0k0KIiOdLEvHmq6Ti722x3O66ilC26+69fBPGCFviWMM1 u9tw== X-Gm-Message-State: AAQBX9fOyCZAWA4Ql8cKPo7XStQhIejrMAiiiRIBWMf4c0aH3melUhin h5DPvGbdo8D3Qrizl7BynFkxZw== X-Google-Smtp-Source: AKy350bb7O7vRNJqV0slEkpJiEEitj66qfL0H4rvbzo6EDHZOM2g1chblrb/iCkgTowCPCRsrQSCkw== X-Received: by 2002:a17:902:eb8d:b0:19c:f476:4793 with SMTP id q13-20020a170902eb8d00b0019cf4764793mr5940941plg.51.1681942678346; Wed, 19 Apr 2023 15:17:58 -0700 (PDT) Received: from atishp.ba.rivosinc.com ([66.220.2.162]) by smtp.gmail.com with ESMTPSA id jn11-20020a170903050b00b00196807b5189sm11619190plb.292.2023.04.19.15.17.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Apr 2023 15:17:58 -0700 (PDT) From: Atish Patra To: linux-kernel@vger.kernel.org Cc: Atish Patra , Alexandre Ghiti , Andrew Jones , Andrew Morton , Anup Patel , Atish Patra , =?utf-8?b?QmrDtnJuIFTDtnBlbA==?= , Suzuki K Poulose , Will Deacon , Marc Zyngier , Sean Christopherson , linux-coco@lists.linux.dev, Dylan Reid , abrestic@rivosinc.com, Samuel Ortiz , Christoph Hellwig , Conor Dooley , Greg Kroah-Hartman , Guo Ren , Heiko Stuebner , Jiri Slaby , kvm-riscv@lists.infradead.org, kvm@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, Mayuresh Chitale , Palmer Dabbelt , Paolo Bonzini , Paul Walmsley , Rajnesh Kanwal , Uladzislau Rezki Subject: [RFC 13/48] RISC-V: KVM: Return early for gstage modifications Date: Wed, 19 Apr 2023 15:16:41 -0700 Message-Id: <20230419221716.3603068-14-atishp@rivosinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230419221716.3603068-1-atishp@rivosinc.com> References: <20230419221716.3603068-1-atishp@rivosinc.com> MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 6318A14000A X-Stat-Signature: qwx9wjymfqwidd44qwz9sfeojqepegg6 X-Rspam-User: X-HE-Tag: 1681942679-713251 X-HE-Meta: U2FsdGVkX18hAtJiGIvXJgdqGyVjKB6WzGctiKJUZzGWOBFVq7H0mYvLtwBkZzgJdEs7yQJCu8iS3kPSFeKLvL1eOIcc8RLuiybYTnGT7r6HptlMPSGkHFHseyVTLOiHdIt/nFrtjYZuWzEHTp+cz4CMjnB0IY6Jshs2ypFYjwnNDolr6dYtnTOc6WdWyMwko6CNvQAOpK6CoxSm/HaTUNjtfq8r03PBky4q0LzNSml30EFb5zh8RMsk3s+hP76yk/xIrorH7tr5+IN9KSG5JvGvto52TX866E4px83TT6oUY/iJGi0zIa4cpOzTqQxiovPv2BpesmC6wsfy7gBb0MqrGpIIFmX5wEprQQS0CRjwb2Dhn3n5OdhaK/AQATP+AOXYT9sJdHzVVZncctSccYq2Ojpgedy4wo+2JrwHnKuxTNNjwi/s+nMw9/R/JahJPBJt62SqML9ANRoPtrtwq/k9dI2+3Mr5Y7HxMlvc4+2NgJzY41sCyYtu8HcgMWdnUiEp2RXzQgKdV+qQFC/gSAhZB8YdzTP7jkbdf4QEjZqJhA3HEE3ICie737jEj/ITDZyrMKFcyy3kEJirgVkPKX73NX0raTJwCIIGBVHt7F3PrjY42LvGaCdyX7FJnCLu65MEvOQi2aYCBo+oPMks/g9X4TBVv24/HRdlUmD88uwQdMF7oyR5NJyI/pxQAdGdrJ52pgKxFGVco5b6OsrvOJ/50nsoGPGrx9z5zUiP59V16Vwm77BsGOUvgyRuGWmjvTMWqiWQTv7OXh8Lr1SybQWfqtN2DA8vtaQhXTsQ3V7+ySz23Fj0edk/pXF55xeCg3iEE0BE0U9MiofcfRS1xy89jVFKLqd4y7rLRdgd71xd8GJbMdC+H79Hv6CmvJ0V8kOFQ3BmH1tyIzNBUPM3NCs83W1g2lXrxW97ARVv/LxNJBubl5s/7nO9w0tMpfSnV0cSzNdWjQDi1UazA8V DaI44YDs MqEp2Up+THeebEwbgVJjjXNXfzaDumD+ulTp1tQGsr6Ul4XLrNekXkRmE1ZHa/beJWW2bxmevZDFen+el58r2QCW5Q07eNh2kGdieqV4qGeud07CSp/RA2559vT/HK8Ec39R5Hyk6oV4QpXLohYjcsvcF8UQhHrwK5YEQIM0C3QatDUDujsm/KYm8SADF67rYrxR2U7tnZhgntmjs7ib75FUhLWyPmFOPVM12PKWVKk70M9dskHc8kZnlq7ND1jeg3lZvy9mMBz4sIHO5jIAmXe7u6g5hmQiKnbk0vg5HBD8mf3xjnMqdRuNZyzfukff/UHujw9fdsVAkAgTVt5NJ5Ood+4lhooal5awYJCsirhc7yvmCqYZqDACFbqFAsxpon1JvH6N3VBsmUmuAi7ZpCMta9EUZjeLG7AoJ8XjEaFEWYQi8eBEDRwlCnEq4pKGYuc7rodm+2f7eZ3CqJkdW9KiCBQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: The gstage entries for CoVE VM is managed by the TSM. Return early for any gstage pte modification operations. Signed-off-by: Atish Patra --- arch/riscv/kvm/mmu.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c index 6b037f7..9693897 100644 --- a/arch/riscv/kvm/mmu.c +++ b/arch/riscv/kvm/mmu.c @@ -16,6 +16,9 @@ #include #include #include +#include +#include +#include #include #include @@ -356,6 +359,11 @@ int kvm_riscv_gstage_ioremap(struct kvm *kvm, gpa_t gpa, .gfp_zero = __GFP_ZERO, }; + if (is_cove_vm(kvm)) { + kvm_debug("%s: KVM doesn't support ioremap for TVM io regions\n", __func__); + return -EPERM; + } + end = (gpa + size + PAGE_SIZE - 1) & PAGE_MASK; pfn = __phys_to_pfn(hpa); @@ -385,6 +393,10 @@ int kvm_riscv_gstage_ioremap(struct kvm *kvm, gpa_t gpa, void kvm_riscv_gstage_iounmap(struct kvm *kvm, gpa_t gpa, unsigned long size) { + /* KVM doesn't map any IO region in gstage for TVM */ + if (is_cove_vm(kvm)) + return; + spin_lock(&kvm->mmu_lock); gstage_unmap_range(kvm, gpa, size, false); spin_unlock(&kvm->mmu_lock); @@ -431,6 +443,10 @@ void kvm_arch_flush_shadow_memslot(struct kvm *kvm, gpa_t gpa = slot->base_gfn << PAGE_SHIFT; phys_addr_t size = slot->npages << PAGE_SHIFT; + /* No need to unmap gstage as it is managed by TSM */ + if (is_cove_vm(kvm)) + return; + spin_lock(&kvm->mmu_lock); gstage_unmap_range(kvm, gpa, size, false); spin_unlock(&kvm->mmu_lock); @@ -547,7 +563,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, bool kvm_unmap_gfn_range(struct kvm *kvm, struct kvm_gfn_range *range) { - if (!kvm->arch.pgd) + if (!kvm->arch.pgd || is_cove_vm(kvm)) return false; gstage_unmap_range(kvm, range->start << PAGE_SHIFT, @@ -561,7 +577,7 @@ bool kvm_set_spte_gfn(struct kvm *kvm, struct kvm_gfn_range *range) int ret; kvm_pfn_t pfn = pte_pfn(range->pte); - if (!kvm->arch.pgd) + if (!kvm->arch.pgd || is_cove_vm(kvm)) return false; WARN_ON(range->end - range->start != 1); @@ -582,7 +598,7 @@ bool kvm_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range) u32 ptep_level = 0; u64 size = (range->end - range->start) << PAGE_SHIFT; - if (!kvm->arch.pgd) + if (!kvm->arch.pgd || is_cove_vm(kvm)) return false; WARN_ON(size != PAGE_SIZE && size != PMD_SIZE && size != PUD_SIZE); @@ -600,7 +616,7 @@ bool kvm_test_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range) u32 ptep_level = 0; u64 size = (range->end - range->start) << PAGE_SHIFT; - if (!kvm->arch.pgd) + if (!kvm->arch.pgd || is_cove_vm(kvm)) return false; WARN_ON(size != PAGE_SIZE && size != PMD_SIZE && size != PUD_SIZE); @@ -737,6 +753,10 @@ void kvm_riscv_gstage_free_pgd(struct kvm *kvm) { void *pgd = NULL; + /* PGD is mapped in TSM */ + if (is_cove_vm(kvm)) + return; + spin_lock(&kvm->mmu_lock); if (kvm->arch.pgd) { gstage_unmap_range(kvm, 0UL, gstage_gpa_size, false);