From patchwork Thu Oct 27 13:02:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Jones X-Patchwork-Id: 1695404 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=DJVVvcQE; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=XEjt/ZvA; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Mym99136Pz23kp for ; Fri, 28 Oct 2022 00:04:29 +1100 (AEDT) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=E5cnQ1X+bSxCyO7DtDnatHCLytwV5atQLxQzkI6h2Ko=; b=DJVVvcQEzOCfdP hQOjZsOQ0je0QR/tugZf4TW4G+oumrORUTZeleF51ydRa5P2wScLOoohWlPDYCKpmAXSeHa9q/dIP Ntz43c7orGEGhZHpAcqn57teJTLb7rTfjeIO0xzYAllHd2OhIgNv4Ut156CY/lBU1Ids0gi10fDaV krihEvae5kPbdAy9/8wzI04bVtjNgudg9FjCAFqzvslyxr3rjaWr6ooDFvUs908ls9NGNi19qYVrK a2gdWBLr35o8pZ/j0oTDjCPZ3RxTZa4Mz68YMm351dUXUJvMFWWnP5MTCl8BWCSvTKgKlmboKkflU ibo+G4Tmp1DAEflR+diw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oo2YY-00DJeK-Jl; Thu, 27 Oct 2022 13:04:22 +0000 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oo2XF-00DJ4T-Un for kvm-riscv@lists.infradead.org; Thu, 27 Oct 2022 13:03:03 +0000 Received: by mail-wr1-x430.google.com with SMTP id bk15so2017297wrb.13 for ; Thu, 27 Oct 2022 06:03:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; 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=obHF+5YDsySvdPBRcVj0srfYU63GXDl3O8xwcIRgRzw=; b=XEjt/ZvArDPmY4O3ubEf3FujxIx+hIRcqEDq9rTYRI9KTMRAuRngXTxCm3EVoXc/yN g0Fv4acWyGLzdWsbIVaf2fJu5cEFo0Kar0WYS5SbqUP8k4ygFRculFyTlwiQ45mwSHy/ ZbzKEw3RPP5c0g3DVgSOjnOwELOkg11dT+Gru8oWW5P2MBtieV1vZ6ppDGbilq8LzLy2 kO8iY1j0Dvovbex6DXyP7v2fhh/r22aSobVWXo7ETdQj0dHQ3NVLkdGG3iXU4plFpJoT MosssL5GjYPK6DAVPCGNwo4NNvrS2Bcz0oI13Yp0jUXSkDFyBdiuDda5kJaeZQWiaYqE uK4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=obHF+5YDsySvdPBRcVj0srfYU63GXDl3O8xwcIRgRzw=; b=iEYMAUIgkpUC8KhcN2HACRR2oR6NUSm/H3UtYwIuD72rIU/m/TRJU1eiUHN5d9CdWV 7LGcd7DCVBpclcKz6me2bJP7LPf+PkpnvcOPSb/8dWDvfRDsIn+JGsHsWDI4cNk14XW6 EKfPIAN9+5oh8DcjAiA2ay9a9XCVACN4efh7PWdu4OgbukLe/UN9hP5ntWwWO7ZWwYiS zVdhvSjBlIiVQksQQaHjgNakNlBdE3wk0oZkSVW7GgcSKkxV46XTBO1VjGRmMSIIi/tB FI4yoya8lff1IeNulvfoH9YSGcjKeRGViqVqXl8RfAZa2tn2ZUUmpyNo4MsNFjtSJ0cg Kcag== X-Gm-Message-State: ACrzQf0Aj+8yTYjKw5+JeRWv9itAprDHL6alvsebdyPhNG07tRnbtVVl CfUjnHWF0UnLidh2J8pizFWIyQ== X-Google-Smtp-Source: AMsMyM7eLuv8Ea9bPqNxCBUDLH2ursMZDlUftRfPXYQUA+OGiuSj1yFkGbXboPh33UxYspEn7WiHOA== X-Received: by 2002:adf:e446:0:b0:236:773b:c6f0 with SMTP id t6-20020adfe446000000b00236773bc6f0mr12575244wrm.55.1666875780398; Thu, 27 Oct 2022 06:03:00 -0700 (PDT) Received: from localhost (cst2-173-61.cust.vodafone.cz. [31.30.173.61]) by smtp.gmail.com with ESMTPSA id j21-20020a05600c42d500b003b492753826sm1399176wme.43.2022.10.27.06.02.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Oct 2022 06:03:00 -0700 (PDT) From: Andrew Jones To: linux-riscv@lists.infradead.org, kvm-riscv@lists.infradead.org Cc: Paul Walmsley , Palmer Dabbelt , Albert Ou , Anup Patel , Heiko Stuebner , Conor Dooley , Atish Patra , Jisheng Zhang Subject: [PATCH 6/9] RISC-V: KVM: Expose Zicboz to the guest Date: Thu, 27 Oct 2022 15:02:44 +0200 Message-Id: <20221027130247.31634-7-ajones@ventanamicro.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221027130247.31634-1-ajones@ventanamicro.com> References: <20221027130247.31634-1-ajones@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221027_060302_064106_AEC6350A X-CRM114-Status: UNSURE ( 9.60 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Guests may use the cbo.zero instruction when the CPU has the Zicboz extension and the hypervisor sets henvcfg.CBZE. Add Zicboz support for KVM guests which may be enabled and disabled from KVM userspace using the ISA extension ONE_REG API. Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:430 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: kvm-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "kvm-riscv" Errors-To: kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Guests may use the cbo.zero instruction when the CPU has the Zicboz extension and the hypervisor sets henvcfg.CBZE. Add Zicboz support for KVM guests which may be enabled and disabled from KVM userspace using the ISA extension ONE_REG API. Signed-off-by: Andrew Jones Reviewed-by: Conor Dooley Reviewed-by: Anup Patel --- arch/riscv/include/uapi/asm/kvm.h | 1 + arch/riscv/kvm/vcpu.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/arch/riscv/include/uapi/asm/kvm.h b/arch/riscv/include/uapi/asm/kvm.h index 4bbf55cb2b70..8dc21ceee7aa 100644 --- a/arch/riscv/include/uapi/asm/kvm.h +++ b/arch/riscv/include/uapi/asm/kvm.h @@ -103,6 +103,7 @@ enum KVM_RISCV_ISA_EXT_ID { KVM_RISCV_ISA_EXT_SVINVAL, KVM_RISCV_ISA_EXT_ZIHINTPAUSE, KVM_RISCV_ISA_EXT_ZICBOM, + KVM_RISCV_ISA_EXT_ZICBOZ, KVM_RISCV_ISA_EXT_MAX, }; diff --git a/arch/riscv/kvm/vcpu.c b/arch/riscv/kvm/vcpu.c index 18a739070b51..7758faec590a 100644 --- a/arch/riscv/kvm/vcpu.c +++ b/arch/riscv/kvm/vcpu.c @@ -62,6 +62,7 @@ static const unsigned long kvm_isa_ext_arr[] = { KVM_ISA_EXT_ARR(SVPBMT), KVM_ISA_EXT_ARR(ZIHINTPAUSE), KVM_ISA_EXT_ARR(ZICBOM), + KVM_ISA_EXT_ARR(ZICBOZ), }; static unsigned long kvm_riscv_vcpu_base2isa_ext(unsigned long base_ext) @@ -821,6 +822,9 @@ static void kvm_riscv_vcpu_update_config(const unsigned long *isa) if (riscv_isa_extension_available(isa, ZICBOM)) henvcfg |= (ENVCFG_CBIE | ENVCFG_CBCFE); + if (riscv_isa_extension_available(isa, ZICBOZ)) + henvcfg |= ENVCFG_CBZE; + csr_write(CSR_HENVCFG, henvcfg); #ifdef CONFIG_32BIT csr_write(CSR_HENVCFGH, henvcfg >> 32);