From: Anup Patel <apatel@ventanamicro.com>
To: kvm-riscv@lists.infradead.org
Subject: [kvmtool PATCH v4 3/9] riscv: Allow setting custom mvendorid, marchid, and mimpid
Date: Wed, 12 Jul 2023 22:04:55 +0530 [thread overview]
Message-ID: <20230712163501.1769737-4-apatel@ventanamicro.com> (raw)
In-Reply-To: <20230712163501.1769737-1-apatel@ventanamicro.com>
We add command-line parameter to set custom mvendorid, marchid, and
mimpid so that users can show fake CPU type to Guest/VM which does
not match underlying Host CPU.
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
---
riscv/include/kvm/kvm-config-arch.h | 12 ++++++++++++
riscv/kvm-cpu.c | 26 +++++++++++++++++++++++++-
2 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/riscv/include/kvm/kvm-config-arch.h b/riscv/include/kvm/kvm-config-arch.h
index 188125c..e64e3ca 100644
--- a/riscv/include/kvm/kvm-config-arch.h
+++ b/riscv/include/kvm/kvm-config-arch.h
@@ -5,6 +5,9 @@
struct kvm_config_arch {
const char *dump_dtb_filename;
+ u64 custom_mvendorid;
+ u64 custom_marchid;
+ u64 custom_mimpid;
bool ext_disabled[KVM_RISCV_ISA_EXT_MAX];
};
@@ -12,6 +15,15 @@ struct kvm_config_arch {
pfx, \
OPT_STRING('\0', "dump-dtb", &(cfg)->dump_dtb_filename, \
".dtb file", "Dump generated .dtb to specified file"),\
+ OPT_U64('\0', "custom-mvendorid", \
+ &(cfg)->custom_mvendorid, \
+ "Show custom mvendorid to Guest VCPU"), \
+ OPT_U64('\0', "custom-marchid", \
+ &(cfg)->custom_marchid, \
+ "Show custom marchid to Guest VCPU"), \
+ OPT_U64('\0', "custom-mimpid", \
+ &(cfg)->custom_mimpid, \
+ "Show custom mimpid to Guest VCPU"), \
OPT_BOOLEAN('\0', "disable-sstc", \
&(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_SSTC], \
"Disable Sstc Extension"), \
diff --git a/riscv/kvm-cpu.c b/riscv/kvm-cpu.c
index f98bd7a..89122b4 100644
--- a/riscv/kvm-cpu.c
+++ b/riscv/kvm-cpu.c
@@ -22,7 +22,7 @@ struct kvm_cpu *kvm_cpu__arch_init(struct kvm *kvm, unsigned long cpu_id)
{
struct kvm_cpu *vcpu;
u64 timebase = 0;
- unsigned long isa = 0;
+ unsigned long isa = 0, id = 0;
int coalesced_offset, mmap_size;
struct kvm_one_reg reg;
@@ -64,6 +64,30 @@ struct kvm_cpu *kvm_cpu__arch_init(struct kvm *kvm, unsigned long cpu_id)
if (ioctl(vcpu->vcpu_fd, KVM_SET_ONE_REG, ®) < 0)
die("KVM_SET_ONE_REG failed (config.isa)");
+ if (kvm->cfg.arch.custom_mvendorid) {
+ id = kvm->cfg.arch.custom_mvendorid;
+ reg.id = RISCV_CONFIG_REG(mvendorid);
+ reg.addr = (unsigned long)&id;
+ if (ioctl(vcpu->vcpu_fd, KVM_SET_ONE_REG, ®) < 0)
+ die("KVM_SET_ONE_REG failed (config.mvendorid)");
+ }
+
+ if (kvm->cfg.arch.custom_marchid) {
+ id = kvm->cfg.arch.custom_marchid;
+ reg.id = RISCV_CONFIG_REG(marchid);
+ reg.addr = (unsigned long)&id;
+ if (ioctl(vcpu->vcpu_fd, KVM_SET_ONE_REG, ®) < 0)
+ die("KVM_SET_ONE_REG failed (config.marchid)");
+ }
+
+ if (kvm->cfg.arch.custom_mimpid) {
+ id = kvm->cfg.arch.custom_mimpid;
+ reg.id = RISCV_CONFIG_REG(mimpid);
+ reg.addr = (unsigned long)&id;
+ if (ioctl(vcpu->vcpu_fd, KVM_SET_ONE_REG, ®) < 0)
+ die("KVM_SET_ONE_REG failed (config.mimpid)");
+ }
+
/* Populate the vcpu structure. */
vcpu->kvm = kvm;
vcpu->cpu_id = cpu_id;
--
2.34.1
WARNING: multiple messages have this Message-ID (diff)
From: Anup Patel <apatel@ventanamicro.com>
To: Will Deacon <will@kernel.org>,
julien.thierry.kdev@gmail.com, maz@kernel.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Atish Patra <atishp@atishpatra.org>,
Andrew Jones <ajones@ventanamicro.com>,
Anup Patel <anup@brainfault.org>,
kvm@vger.kernel.org, kvm-riscv@lists.infradead.org,
Anup Patel <apatel@ventanamicro.com>
Subject: [kvmtool PATCH v4 3/9] riscv: Allow setting custom mvendorid, marchid, and mimpid
Date: Wed, 12 Jul 2023 22:04:55 +0530 [thread overview]
Message-ID: <20230712163501.1769737-4-apatel@ventanamicro.com> (raw)
In-Reply-To: <20230712163501.1769737-1-apatel@ventanamicro.com>
We add command-line parameter to set custom mvendorid, marchid, and
mimpid so that users can show fake CPU type to Guest/VM which does
not match underlying Host CPU.
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
---
riscv/include/kvm/kvm-config-arch.h | 12 ++++++++++++
riscv/kvm-cpu.c | 26 +++++++++++++++++++++++++-
2 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/riscv/include/kvm/kvm-config-arch.h b/riscv/include/kvm/kvm-config-arch.h
index 188125c..e64e3ca 100644
--- a/riscv/include/kvm/kvm-config-arch.h
+++ b/riscv/include/kvm/kvm-config-arch.h
@@ -5,6 +5,9 @@
struct kvm_config_arch {
const char *dump_dtb_filename;
+ u64 custom_mvendorid;
+ u64 custom_marchid;
+ u64 custom_mimpid;
bool ext_disabled[KVM_RISCV_ISA_EXT_MAX];
};
@@ -12,6 +15,15 @@ struct kvm_config_arch {
pfx, \
OPT_STRING('\0', "dump-dtb", &(cfg)->dump_dtb_filename, \
".dtb file", "Dump generated .dtb to specified file"),\
+ OPT_U64('\0', "custom-mvendorid", \
+ &(cfg)->custom_mvendorid, \
+ "Show custom mvendorid to Guest VCPU"), \
+ OPT_U64('\0', "custom-marchid", \
+ &(cfg)->custom_marchid, \
+ "Show custom marchid to Guest VCPU"), \
+ OPT_U64('\0', "custom-mimpid", \
+ &(cfg)->custom_mimpid, \
+ "Show custom mimpid to Guest VCPU"), \
OPT_BOOLEAN('\0', "disable-sstc", \
&(cfg)->ext_disabled[KVM_RISCV_ISA_EXT_SSTC], \
"Disable Sstc Extension"), \
diff --git a/riscv/kvm-cpu.c b/riscv/kvm-cpu.c
index f98bd7a..89122b4 100644
--- a/riscv/kvm-cpu.c
+++ b/riscv/kvm-cpu.c
@@ -22,7 +22,7 @@ struct kvm_cpu *kvm_cpu__arch_init(struct kvm *kvm, unsigned long cpu_id)
{
struct kvm_cpu *vcpu;
u64 timebase = 0;
- unsigned long isa = 0;
+ unsigned long isa = 0, id = 0;
int coalesced_offset, mmap_size;
struct kvm_one_reg reg;
@@ -64,6 +64,30 @@ struct kvm_cpu *kvm_cpu__arch_init(struct kvm *kvm, unsigned long cpu_id)
if (ioctl(vcpu->vcpu_fd, KVM_SET_ONE_REG, ®) < 0)
die("KVM_SET_ONE_REG failed (config.isa)");
+ if (kvm->cfg.arch.custom_mvendorid) {
+ id = kvm->cfg.arch.custom_mvendorid;
+ reg.id = RISCV_CONFIG_REG(mvendorid);
+ reg.addr = (unsigned long)&id;
+ if (ioctl(vcpu->vcpu_fd, KVM_SET_ONE_REG, ®) < 0)
+ die("KVM_SET_ONE_REG failed (config.mvendorid)");
+ }
+
+ if (kvm->cfg.arch.custom_marchid) {
+ id = kvm->cfg.arch.custom_marchid;
+ reg.id = RISCV_CONFIG_REG(marchid);
+ reg.addr = (unsigned long)&id;
+ if (ioctl(vcpu->vcpu_fd, KVM_SET_ONE_REG, ®) < 0)
+ die("KVM_SET_ONE_REG failed (config.marchid)");
+ }
+
+ if (kvm->cfg.arch.custom_mimpid) {
+ id = kvm->cfg.arch.custom_mimpid;
+ reg.id = RISCV_CONFIG_REG(mimpid);
+ reg.addr = (unsigned long)&id;
+ if (ioctl(vcpu->vcpu_fd, KVM_SET_ONE_REG, ®) < 0)
+ die("KVM_SET_ONE_REG failed (config.mimpid)");
+ }
+
/* Populate the vcpu structure. */
vcpu->kvm = kvm;
vcpu->cpu_id = cpu_id;
--
2.34.1
next prev parent reply other threads:[~2023-07-12 16:34 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-12 16:34 [kvmtool PATCH v4 0/9] RISC-V SBI enable/disable, Zbb, Zicboz, and Ssaia support Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 1/9] kvm tools: Add __DECLARE_FLEX_ARRAY() in include/linux/stddef.h Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 2/9] Sync-up headers with Linux-6.4 Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` Anup Patel [this message]
2023-07-12 16:34 ` [kvmtool PATCH v4 3/9] riscv: Allow setting custom mvendorid, marchid, and mimpid Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 4/9] riscv: Allow disabling SBI extensions for Guest Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 5/9] riscv: Sort the ISA extension array alphabetically Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 6/9] riscv: Add zbb extension support Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 7/9] riscv: Add Zicboz " Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:35 ` [kvmtool PATCH v4 8/9] riscv: Add Ssaia " Anup Patel
2023-07-12 16:35 ` Anup Patel
2023-07-12 16:35 ` [kvmtool PATCH v4 9/9] riscv: Fix guest RAM alloc size computation for RV32 Anup Patel
2023-07-12 16:35 ` Anup Patel
2023-07-20 16:04 ` [kvmtool PATCH v4 0/9] RISC-V SBI enable/disable, Zbb, Zicboz, and Ssaia support Will Deacon
2023-07-20 16:04 ` Will Deacon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230712163501.1769737-4-apatel@ventanamicro.com \
--to=apatel@ventanamicro.com \
--cc=kvm-riscv@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.