Message ID | 20230419221716.3603068-23-atishp@rivosinc.com (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> 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 91049C77B7C for <linux-mm@archiver.kernel.org>; Wed, 19 Apr 2023 22:18:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4B289900017; Wed, 19 Apr 2023 18:18:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 43984900003; Wed, 19 Apr 2023 18:18:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 28B85900017; Wed, 19 Apr 2023 18:18:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 15A64900003 for <linux-mm@kvack.org>; Wed, 19 Apr 2023 18:18:21 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id DA2B31A039F for <linux-mm@kvack.org>; Wed, 19 Apr 2023 22:18:20 +0000 (UTC) X-FDA: 80699555160.09.32A834F Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf28.hostedemail.com (Postfix) with ESMTP id EA309C000F for <linux-mm@kvack.org>; Wed, 19 Apr 2023 22:18:18 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=di7chbqL; spf=pass (imf28.hostedemail.com: domain of atishp@rivosinc.com designates 209.85.214.182 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=1681942699; 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=Pex4ariWnXDdKnos4XH43DasA78+EqfUbH0Wh8CR5w4=; b=0WUSt/iBogWvJDaVYgsR4dC2fHnvfVO5kEOZNoZPemTAE4O9/d8TMBgW1zwdk0YIWqdJr1 ygE37V+quF/zpAGxcRmQMOXtwGW656N6j7J4FMtTaFNaaBKEetfF8qC0h6uZ+M52japIcm lUfNHXRBQVqytXUIuNFckHvs1jAGQLg= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=di7chbqL; spf=pass (imf28.hostedemail.com: domain of atishp@rivosinc.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=atishp@rivosinc.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1681942699; a=rsa-sha256; cv=none; b=CgexQn5D690mLqXYx0xAovHNrBlciQrUuQkRX7JIlHLNTW0035L1ZKYsAoIaB3xB9YYpyG oGZ95KnHX330yORMjRE7bwXYRZwxLvyQTZsshz3V9SZX2gxQAm0Mh09dL7+MqOkqvGsRl9 Ol3QYp55WPoQ1gm5zmQx6uCDjTiObTg= Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-1a6670671e3so4743535ad.0 for <linux-mm@kvack.org>; Wed, 19 Apr 2023 15:18:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1681942698; x=1684534698; 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=Pex4ariWnXDdKnos4XH43DasA78+EqfUbH0Wh8CR5w4=; b=di7chbqLiC3SvYTY8G+fGI2cGV6/NplXfCh5v5XyNgDlngesP2y27MIvOHwrp1X4yx 4JsJle4v6NILzYjrBdQfclQHMQ1y+XkUvrnKfQUj0Ry5xsz9RSAaP7xk6bNe/vd52w3q C3nd14GGW5Qj94glYyk3NSDPRmLJqvozvF8lGdcOkQJDY2HZ2XGm6lNAbX6/JmUwtYhH cJH7ZmbN28BevOjXzCzDy6LpP/+8QR1qPGxigpkkPQjHRv6qA67df2bzJD5EJMK27xPT x2yJWlQYdkRTzgVvhswp/3TbWfU5x7nor5CBTVJeRFUg+I3fFtPgIMfjV7YwcmwCLtW3 tRuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681942698; x=1684534698; 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=Pex4ariWnXDdKnos4XH43DasA78+EqfUbH0Wh8CR5w4=; b=i7Ik89xJ8yjqakTpFqmlb8yp2j5DhiIq5qM0UA/Bn/lvdWMdWi49jlgS6uQkMN8PXp iCevZ5FN+sxkApVMV+SuRGW+ZWN8JO6rsg/cdDMtwvrW8k/zqFPpArMbNmvgjXeZQ+0c IQWK9xZS4BE4+hgUFOcQRuOAKb76PQZu0rsz0ojfbEjP5rRp9BFcMda08M733+44PMq2 z/2MZpMhCyNJcNF269U1S10LyAB5GEZTV8DOiBzqzdQQ04DHaf87F61gqCejGKQBTgMy QvhLtzvF5Efd8VHRcqmCn3jpeV+LKLpo6AePJAcdJBnWQsJPdXEtgmkt0pkg5GljrGyx hJQA== X-Gm-Message-State: AAQBX9dw+x1J5tdzUlBhCtwEGwfMIUdhEjJN1asMPEQtmLFGfxbaeO0/ t2iln43/SfJkHMCizL9/ml3C1A== X-Google-Smtp-Source: AKy350bAGBT2wDySHdJsoaBivRKAhhoN6FGmg4/i0kk3x7CE/96pMKWgvriPwXlMHgJNkHUROr/6AQ== X-Received: by 2002:a17:903:1210:b0:1a6:4a64:4d27 with SMTP id l16-20020a170903121000b001a64a644d27mr7784281plh.40.1681942697893; Wed, 19 Apr 2023 15:18:17 -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.18.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Apr 2023 15:18:17 -0700 (PDT) From: Atish Patra <atishp@rivosinc.com> To: linux-kernel@vger.kernel.org Cc: Atish Patra <atishp@rivosinc.com>, Rajnesh Kanwal <rkanwal@rivosinc.com>, Alexandre Ghiti <alex@ghiti.fr>, Andrew Jones <ajones@ventanamicro.com>, Andrew Morton <akpm@linux-foundation.org>, Anup Patel <anup@brainfault.org>, Atish Patra <atishp@atishpatra.org>, =?utf-8?b?QmrDtnJuIFTDtnBlbA==?= <bjorn@rivosinc.com>, Suzuki K Poulose <suzuki.poulose@arm.com>, Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>, Sean Christopherson <seanjc@google.com>, linux-coco@lists.linux.dev, Dylan Reid <dylan@rivosinc.com>, abrestic@rivosinc.com, Samuel Ortiz <sameo@rivosinc.com>, Christoph Hellwig <hch@infradead.org>, Conor Dooley <conor.dooley@microchip.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Guo Ren <guoren@kernel.org>, Heiko Stuebner <heiko@sntech.de>, Jiri Slaby <jirislaby@kernel.org>, kvm-riscv@lists.infradead.org, kvm@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, Mayuresh Chitale <mchitale@ventanamicro.com>, Palmer Dabbelt <palmer@dabbelt.com>, Paolo Bonzini <pbonzini@redhat.com>, Paul Walmsley <paul.walmsley@sifive.com>, Uladzislau Rezki <urezki@gmail.com> Subject: [RFC 22/48] RISC-V: KVM: Implement vcpu load/put functions for CoVE guests Date: Wed, 19 Apr 2023 15:16:50 -0700 Message-Id: <20230419221716.3603068-23-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 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: EA309C000F X-Stat-Signature: 5odfe3t6m166oyxa7nrshy4tdpec6ixh X-HE-Tag: 1681942698-896224 X-HE-Meta: U2FsdGVkX1+leyyQLHLSPNy/ywNxb0be1vahrh1cV2s3VszmdwtudU6ingiVL3ON4hcae49vJLcjfJHWcFgA0lSXogZOhPCVPpW9UF2LcKPd1GkNXEtnxscKQwTZatGY0bb7FDKPKRQT7DZbuQBh5UdnouzHkkrxhgZeol9yxZI12wZeVJQwtizk2V0uIUK+WG5oDh4iUb1XV3SPUYRdZR4G+kKTLwQoHa+gMPeTz6Mn6bHhDBgBGDwa/Wzv75ZGrGXAhU3tcC8xmJDXwjZmilR2bYTSX0AX8GDRa9A+OakeZk9oLs9h+DpF4u3csChlAFxMyxqKSeU6qNV6OnVwe9u+WHWIIRHWujWzGpxuacFFWIRMP3deQ9Zcahnxao/2Y5UGWDwkpAyVXp+Ng9mvAMwt8TLyeA48rIfr9Dl1gPzaMZBvzCelIl++rLE5Q7owocbFunB3CO9fSxRk0k5hTQKa7L4O/xmxC+K0gWcWCtgF9Uafm39B/uCa9qEz1aHzHeLTq/n1vWEDOhEHBRFlnoPewEaFxp3J+NLHL7PBON3mG8pDlJMNwFpbM4JS931owhN22IMyei9NPhPndGLGW2TzZaT7Mpv7mbBNH95ukioUWASXdyA4+qD9GqkjctPQfOQMY0wQdTXKOOVY4dLOI8uLZZXUt1XUDq3yTplmeM9hhnBJzxI2P73NOZI9ng8H0G6V7Sf09WIaotTjzLQgaYgRHwSHsJSkLyClLYQiwWBscIKrh5Y0itiJQDqaP2wq4sfZSTUldjVwC9fvJ9QviMoNYP4N9xi+u5N360wLNViWZzd9i9ZjkT9gGWmtAZYRtRxfZqqG9/PpV+mhIior7cL4835G9HrLAf7gg3E1yJ7JC/QRjeYkKw2T3r0CLSt4YnrJwyTVdrjU7IPMxDFvVJfR+npiAsM91Pu5Nqkj8Fe85IJMmQ4YbKJZL5hlZS4wzwF6KWEOrR/oIRiGEJl Ai9BD2YP uNXkWgGDpDLaVw3ZFnsWKOIjaeRkJiQuZ3Pa3wwirzYrKwnssaqvXkKQdYpL6OACAuFUFBeMZalqXL4KPT1MbkIY7QWkR1Q+U9GHSPlv43hcYPsySyRm9cKpbSitHqLubIVJAouS8TXkeB2HFgQyZRkwEXEIFhwApoZ3JjoPoZK0r/QWAmc1GRflZQlc1BiMSWsDLA4HtFA5j7mENjQpXXNXJIVCUEd7kguVuI40O8mxQ9GVgP9kr8pWkuOQvHW32O+8YpMNg+Fy3lVsw1pO/8OARNdtNoTPq7VZr9hm3kyUJtIgHlfG0w5iLiYcOyCpRDBorVuj1WMLTMmJyfNP1NkVwqohnDly0AzQ9NVKsQiCxfXlUMbAmraB3kGrWA0eEeokang1vDY/HvepadDYv5RMsyW7lyFCqeN7ddocJF7nXyAupoJ9oGNv36YgR2gghjo24BMzLJoSLtupLltrNS/bVlQ== 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: <linux-mm.kvack.org> |
Series |
RISC-V CoVE support
|
expand
|
diff --git a/arch/riscv/kvm/cove.c b/arch/riscv/kvm/cove.c index 87fa04b..c93de9b 100644 --- a/arch/riscv/kvm/cove.c +++ b/arch/riscv/kvm/cove.c @@ -139,12 +139,20 @@ __always_inline bool kvm_riscv_cove_enabled(void) void kvm_riscv_cove_vcpu_load(struct kvm_vcpu *vcpu) { - /* TODO */ + kvm_riscv_vcpu_timer_restore(vcpu); } void kvm_riscv_cove_vcpu_put(struct kvm_vcpu *vcpu) { - /* TODO */ + void *nshmem; + struct kvm_vcpu_csr *csr = &vcpu->arch.guest_csr; + + kvm_riscv_vcpu_timer_save(vcpu); + /* NACL is mandatory for CoVE */ + nshmem = nacl_shmem(); + + /* Only VSIE needs to be read to manage the interrupt stuff */ + csr->vsie = nacl_shmem_csr_read(nshmem, CSR_VSIE); } int kvm_riscv_cove_vcpu_sbi_ecall(struct kvm_vcpu *vcpu, struct kvm_run *run) diff --git a/arch/riscv/kvm/vcpu.c b/arch/riscv/kvm/vcpu.c index 8cf462c..3e04b78 100644 --- a/arch/riscv/kvm/vcpu.c +++ b/arch/riscv/kvm/vcpu.c @@ -972,6 +972,11 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) u64 henvcfg = kvm_riscv_vcpu_get_henvcfg(vcpu->arch.isa); struct kvm_vcpu_csr *csr = &vcpu->arch.guest_csr; + if (is_cove_vcpu(vcpu)) { + kvm_riscv_cove_vcpu_load(vcpu); + goto skip_load; + } + if (kvm_riscv_nacl_sync_csr_available()) { nshmem = nacl_shmem(); nacl_shmem_csr_write(nshmem, CSR_VSSTATUS, csr->vsstatus); @@ -1010,9 +1015,9 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) kvm_riscv_vcpu_host_fp_save(&vcpu->arch.host_context); kvm_riscv_vcpu_guest_fp_restore(&vcpu->arch.guest_context, vcpu->arch.isa); - kvm_riscv_vcpu_aia_load(vcpu, cpu); +skip_load: vcpu->cpu = cpu; } @@ -1023,6 +1028,11 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu) vcpu->cpu = -1; + if (is_cove_vcpu(vcpu)) { + kvm_riscv_cove_vcpu_put(vcpu); + return; + } + kvm_riscv_vcpu_aia_put(vcpu); kvm_riscv_vcpu_guest_fp_save(&vcpu->arch.guest_context,