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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 68D84EB64DA for ; Wed, 28 Jun 2023 21:32:47 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qEclH-0002Gx-Ue; Wed, 28 Jun 2023 17:31:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qEclA-0002BS-Je for qemu-riscv@nongnu.org; Wed, 28 Jun 2023 17:31:33 -0400 Received: from mail-oa1-x2f.google.com ([2001:4860:4864:20::2f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qEcl9-00088o-0V for qemu-riscv@nongnu.org; Wed, 28 Jun 2023 17:31:32 -0400 Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-1b09276ed49so4780fac.1 for ; Wed, 28 Jun 2023 14:31:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1687987889; x=1690579889; 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=xIsSwZv0+6HkvL9zAUnCljJ7f9IbfLIHWBAcagEC0B4=; b=oIqVZMrSygMyee85Y8C0HVMCegYFDssnRnH1WO0fdyeJYrKpkpYs6NU1SsG4g48WJI WwcY5rBupNe4M9zfhe7zoqM8VbTvV2VS6oJMCaaNtxIR71idqb6IGU2M58PRyEyg9PxD BE3KZZ+eMH7CDz3HXgKbxAQtowXJ0h5Ajhh2EL20BPpRaLht5Iytmhbei2TLWeF188f2 O5tCBi58BsigBZUtPHI+KJ5lfrrjxMJshdbFhRE6hvdtFofgduQqEnScYnpz1QXyuKyr 6Rh44GjUnQSGUc2kTEz55wWvKHbUtsR3XBBX/635A7nW/DzIpg+eSFRdD7bg5dFY90iI 6YAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687987889; x=1690579889; 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=xIsSwZv0+6HkvL9zAUnCljJ7f9IbfLIHWBAcagEC0B4=; b=jvnAOIs1XYM6TqDqk6dgtZCcTupSFA8EoisjTde/hVGPCgSB3KqyYCGlyfX/iMXnRf yo+c0MbnPH47axCgPe2Msq8h0lvl6ac8hNIQsVX2yknmkiWu088LTPwR1ZmylKEtKqYv G8rNHeTULqXY6k19LDR2Yfz/pot1jQZ+AJJEfsfFRgM+yP3lVvdKNaMmZw1fU/jIHxvS mbC73KhrSkRN33REbamHwUsbcC47MB2OpfHGOTWnxzQ2zt1KJgzI+JbtzcaIE/u74VF3 ioXUiWuxXem3Itd5jeTWg7j9BJP1zFG3KAspMQQKM2AqiaVrTU5ZorcXqgAdicM9gQMX 88rw== X-Gm-Message-State: AC+VfDzHONtqlGZ0iQIaZ9jqOnzylFQPIUxKQU44fxbpcs8m/NQYRwxH y/fx10WeXt+wq5S/YdlqlqqC8A== X-Google-Smtp-Source: ACHHUZ6ry2c/NXTNXEukmhwHEdrF9JY18e/wOiAdzN75OsjNGY+fhbLtKP3+nGSdArcVyBbJuJkKww== X-Received: by 2002:a05:6870:65a6:b0:1b0:7f59:6491 with SMTP id fp38-20020a05687065a600b001b07f596491mr3185493oab.34.1687987889735; Wed, 28 Jun 2023 14:31:29 -0700 (PDT) Received: from grind.dc1.ventanamicro.com (201-69-66-110.dial-up.telesp.net.br. [201.69.66.110]) by smtp.gmail.com with ESMTPSA id y17-20020a4a4511000000b0056084a91c74sm832892ooa.24.2023.06.28.14.31.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Jun 2023 14:31:29 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, alistair.francis@wdc.com, bmeng@tinylab.org, liweiwei@iscas.ac.cn, zhiwei_liu@linux.alibaba.com, palmer@rivosinc.com, ajones@ventanamicro.com, philmd@linaro.org, Daniel Henrique Barboza Subject: [PATCH v6 08/20] target/riscv: handle mvendorid/marchid/mimpid for KVM CPUs Date: Wed, 28 Jun 2023 18:30:21 -0300 Message-ID: <20230628213033.170315-9-dbarboza@ventanamicro.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230628213033.170315-1-dbarboza@ventanamicro.com> References: <20230628213033.170315-1-dbarboza@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2001:4860:4864:20::2f; envelope-from=dbarboza@ventanamicro.com; helo=mail-oa1-x2f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-riscv@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-riscv-bounces+qemu-riscv=archiver.kernel.org@nongnu.org Sender: qemu-riscv-bounces+qemu-riscv=archiver.kernel.org@nongnu.org After changing user validation for mvendorid/marchid/mimpid to guarantee that the value is validated on user input time, coupled with the work in fetching KVM default values for them by using a scratch CPU, we're certain that the values in cpu->cfg.(mvendorid|marchid|mimpid) are already good to be written back to KVM. There's no need to write the values back for 'host' type CPUs since the values can't be changed, so let's do that just for generic CPUs. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Acked-by: Alistair Francis --- target/riscv/kvm.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index cd2974c663..602727cdfd 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -495,6 +495,33 @@ void kvm_arch_init_irq_routing(KVMState *s) { } +static int kvm_vcpu_set_machine_ids(RISCVCPU *cpu, CPUState *cs) +{ + CPURISCVState *env = &cpu->env; + uint64_t id; + int ret; + + id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG, + KVM_REG_RISCV_CONFIG_REG(mvendorid)); + ret = kvm_set_one_reg(cs, id, &cpu->cfg.mvendorid); + if (ret != 0) { + return ret; + } + + id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG, + KVM_REG_RISCV_CONFIG_REG(marchid)); + ret = kvm_set_one_reg(cs, id, &cpu->cfg.marchid); + if (ret != 0) { + return ret; + } + + id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG, + KVM_REG_RISCV_CONFIG_REG(mimpid)); + ret = kvm_set_one_reg(cs, id, &cpu->cfg.mimpid); + + return ret; +} + int kvm_arch_init_vcpu(CPUState *cs) { int ret = 0; @@ -513,6 +540,10 @@ int kvm_arch_init_vcpu(CPUState *cs) } env->misa_ext = isa; + if (!object_dynamic_cast(OBJECT(cpu), TYPE_RISCV_CPU_HOST)) { + ret = kvm_vcpu_set_machine_ids(cpu, cs); + } + return ret; } -- 2.41.0