From: Andrew Jones <ajones@ventanamicro.com>
To: kvm-riscv@lists.infradead.org
Subject: [PATCH v2 06/13] RISC-V: KVM: Add SBI STA info to vcpu_arch
Date: Thu, 14 Dec 2023 11:15:58 +0100 [thread overview]
Message-ID: <20231214101552.100721-21-ajones@ventanamicro.com> (raw)
In-Reply-To: <20231214101552.100721-15-ajones@ventanamicro.com>
KVM's implementation of SBI STA needs to track the address of each
VCPU's steal-time shared memory region as well as the amount of
stolen time. Add a structure to vcpu_arch to contain this state
and make sure that the address is always set to INVALID_GPA on
vcpu reset. And, of course, ensure KVM won't try to update steal-
time when the shared memory address is invalid.
Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
---
arch/riscv/include/asm/kvm_host.h | 6 ++++++
arch/riscv/kvm/vcpu.c | 2 ++
arch/riscv/kvm/vcpu_sbi_sta.c | 4 ++++
3 files changed, 12 insertions(+)
diff --git a/arch/riscv/include/asm/kvm_host.h b/arch/riscv/include/asm/kvm_host.h
index 230b82c3118d..b10026fb6412 100644
--- a/arch/riscv/include/asm/kvm_host.h
+++ b/arch/riscv/include/asm/kvm_host.h
@@ -263,6 +263,12 @@ struct kvm_vcpu_arch {
/* 'static' configurations which are set only once */
struct kvm_vcpu_config cfg;
+
+ /* SBI steal-time accounting */
+ struct {
+ gpa_t shmem;
+ u64 last_steal;
+ } sta;
};
static inline void kvm_arch_sync_events(struct kvm *kvm) {}
diff --git a/arch/riscv/kvm/vcpu.c b/arch/riscv/kvm/vcpu.c
index 6995b8b641e4..fec4f5fd0fa7 100644
--- a/arch/riscv/kvm/vcpu.c
+++ b/arch/riscv/kvm/vcpu.c
@@ -83,6 +83,8 @@ static void kvm_riscv_reset_vcpu(struct kvm_vcpu *vcpu)
vcpu->arch.hfence_tail = 0;
memset(vcpu->arch.hfence_queue, 0, sizeof(vcpu->arch.hfence_queue));
+ vcpu->arch.sta.shmem = INVALID_GPA;
+
/* Reset the guest CSRs for hotplug usecase */
if (loaded)
kvm_arch_vcpu_load(vcpu, smp_processor_id());
diff --git a/arch/riscv/kvm/vcpu_sbi_sta.c b/arch/riscv/kvm/vcpu_sbi_sta.c
index e28351c9488b..157c199be0b4 100644
--- a/arch/riscv/kvm/vcpu_sbi_sta.c
+++ b/arch/riscv/kvm/vcpu_sbi_sta.c
@@ -10,6 +10,10 @@
void kvm_riscv_vcpu_record_steal_time(struct kvm_vcpu *vcpu)
{
+ gpa_t shmem = vcpu->arch.sta.shmem;
+
+ if (shmem == INVALID_GPA)
+ return;
}
static int kvm_sbi_sta_steal_time_set_shmem(struct kvm_vcpu *vcpu)
--
2.43.0
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Jones <ajones@ventanamicro.com>
To: kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
virtualization@lists.linux-foundation.org
Cc: anup@brainfault.org, atishp@atishpatra.org, pbonzini@redhat.com,
paul.walmsley@sifive.com, palmer@dabbelt.com,
aou@eecs.berkeley.edu, jgross@suse.com, srivatsa@csail.mit.edu,
guoren@kernel.org, conor.dooley@microchip.com
Subject: [PATCH v2 06/13] RISC-V: KVM: Add SBI STA info to vcpu_arch
Date: Thu, 14 Dec 2023 11:15:58 +0100 [thread overview]
Message-ID: <20231214101552.100721-21-ajones@ventanamicro.com> (raw)
In-Reply-To: <20231214101552.100721-15-ajones@ventanamicro.com>
KVM's implementation of SBI STA needs to track the address of each
VCPU's steal-time shared memory region as well as the amount of
stolen time. Add a structure to vcpu_arch to contain this state
and make sure that the address is always set to INVALID_GPA on
vcpu reset. And, of course, ensure KVM won't try to update steal-
time when the shared memory address is invalid.
Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
---
arch/riscv/include/asm/kvm_host.h | 6 ++++++
arch/riscv/kvm/vcpu.c | 2 ++
arch/riscv/kvm/vcpu_sbi_sta.c | 4 ++++
3 files changed, 12 insertions(+)
diff --git a/arch/riscv/include/asm/kvm_host.h b/arch/riscv/include/asm/kvm_host.h
index 230b82c3118d..b10026fb6412 100644
--- a/arch/riscv/include/asm/kvm_host.h
+++ b/arch/riscv/include/asm/kvm_host.h
@@ -263,6 +263,12 @@ struct kvm_vcpu_arch {
/* 'static' configurations which are set only once */
struct kvm_vcpu_config cfg;
+
+ /* SBI steal-time accounting */
+ struct {
+ gpa_t shmem;
+ u64 last_steal;
+ } sta;
};
static inline void kvm_arch_sync_events(struct kvm *kvm) {}
diff --git a/arch/riscv/kvm/vcpu.c b/arch/riscv/kvm/vcpu.c
index 6995b8b641e4..fec4f5fd0fa7 100644
--- a/arch/riscv/kvm/vcpu.c
+++ b/arch/riscv/kvm/vcpu.c
@@ -83,6 +83,8 @@ static void kvm_riscv_reset_vcpu(struct kvm_vcpu *vcpu)
vcpu->arch.hfence_tail = 0;
memset(vcpu->arch.hfence_queue, 0, sizeof(vcpu->arch.hfence_queue));
+ vcpu->arch.sta.shmem = INVALID_GPA;
+
/* Reset the guest CSRs for hotplug usecase */
if (loaded)
kvm_arch_vcpu_load(vcpu, smp_processor_id());
diff --git a/arch/riscv/kvm/vcpu_sbi_sta.c b/arch/riscv/kvm/vcpu_sbi_sta.c
index e28351c9488b..157c199be0b4 100644
--- a/arch/riscv/kvm/vcpu_sbi_sta.c
+++ b/arch/riscv/kvm/vcpu_sbi_sta.c
@@ -10,6 +10,10 @@
void kvm_riscv_vcpu_record_steal_time(struct kvm_vcpu *vcpu)
{
+ gpa_t shmem = vcpu->arch.sta.shmem;
+
+ if (shmem == INVALID_GPA)
+ return;
}
static int kvm_sbi_sta_steal_time_set_shmem(struct kvm_vcpu *vcpu)
--
2.43.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Jones <ajones@ventanamicro.com>
To: kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
virtualization@lists.linux-foundation.org
Cc: anup@brainfault.org, atishp@atishpatra.org, pbonzini@redhat.com,
paul.walmsley@sifive.com, palmer@dabbelt.com,
aou@eecs.berkeley.edu, jgross@suse.com, srivatsa@csail.mit.edu,
guoren@kernel.org, conor.dooley@microchip.com
Subject: [PATCH v2 06/13] RISC-V: KVM: Add SBI STA info to vcpu_arch
Date: Thu, 14 Dec 2023 11:15:58 +0100 [thread overview]
Message-ID: <20231214101552.100721-21-ajones@ventanamicro.com> (raw)
In-Reply-To: <20231214101552.100721-15-ajones@ventanamicro.com>
KVM's implementation of SBI STA needs to track the address of each
VCPU's steal-time shared memory region as well as the amount of
stolen time. Add a structure to vcpu_arch to contain this state
and make sure that the address is always set to INVALID_GPA on
vcpu reset. And, of course, ensure KVM won't try to update steal-
time when the shared memory address is invalid.
Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
---
arch/riscv/include/asm/kvm_host.h | 6 ++++++
arch/riscv/kvm/vcpu.c | 2 ++
arch/riscv/kvm/vcpu_sbi_sta.c | 4 ++++
3 files changed, 12 insertions(+)
diff --git a/arch/riscv/include/asm/kvm_host.h b/arch/riscv/include/asm/kvm_host.h
index 230b82c3118d..b10026fb6412 100644
--- a/arch/riscv/include/asm/kvm_host.h
+++ b/arch/riscv/include/asm/kvm_host.h
@@ -263,6 +263,12 @@ struct kvm_vcpu_arch {
/* 'static' configurations which are set only once */
struct kvm_vcpu_config cfg;
+
+ /* SBI steal-time accounting */
+ struct {
+ gpa_t shmem;
+ u64 last_steal;
+ } sta;
};
static inline void kvm_arch_sync_events(struct kvm *kvm) {}
diff --git a/arch/riscv/kvm/vcpu.c b/arch/riscv/kvm/vcpu.c
index 6995b8b641e4..fec4f5fd0fa7 100644
--- a/arch/riscv/kvm/vcpu.c
+++ b/arch/riscv/kvm/vcpu.c
@@ -83,6 +83,8 @@ static void kvm_riscv_reset_vcpu(struct kvm_vcpu *vcpu)
vcpu->arch.hfence_tail = 0;
memset(vcpu->arch.hfence_queue, 0, sizeof(vcpu->arch.hfence_queue));
+ vcpu->arch.sta.shmem = INVALID_GPA;
+
/* Reset the guest CSRs for hotplug usecase */
if (loaded)
kvm_arch_vcpu_load(vcpu, smp_processor_id());
diff --git a/arch/riscv/kvm/vcpu_sbi_sta.c b/arch/riscv/kvm/vcpu_sbi_sta.c
index e28351c9488b..157c199be0b4 100644
--- a/arch/riscv/kvm/vcpu_sbi_sta.c
+++ b/arch/riscv/kvm/vcpu_sbi_sta.c
@@ -10,6 +10,10 @@
void kvm_riscv_vcpu_record_steal_time(struct kvm_vcpu *vcpu)
{
+ gpa_t shmem = vcpu->arch.sta.shmem;
+
+ if (shmem == INVALID_GPA)
+ return;
}
static int kvm_sbi_sta_steal_time_set_shmem(struct kvm_vcpu *vcpu)
--
2.43.0
next prev parent reply other threads:[~2023-12-14 10:15 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-14 10:15 [PATCH v2 00/13] RISC-V: Add steal-time support Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-14 10:15 ` [PATCH v2 01/13] RISC-V: paravirt: Add skeleton for pv-time support Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-15 5:37 ` Anup Patel
2023-12-15 5:37 ` Anup Patel
2023-12-15 5:37 ` Anup Patel
2023-12-14 10:15 ` [PATCH v2 02/13] RISC-V: Add SBI STA extension definitions Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-15 5:38 ` Anup Patel
2023-12-15 5:38 ` Anup Patel
2023-12-15 5:38 ` Anup Patel
2023-12-14 10:15 ` [PATCH v2 03/13] RISC-V: paravirt: Implement steal-time support Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-15 5:54 ` Anup Patel
2023-12-15 5:54 ` Anup Patel
2023-12-15 5:54 ` Anup Patel
2023-12-15 8:19 ` Andrew Jones
2023-12-15 8:19 ` Andrew Jones
2023-12-15 8:19 ` Andrew Jones
2023-12-14 10:15 ` [PATCH v2 04/13] RISC-V: KVM: Add SBI STA extension skeleton Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-15 6:11 ` Anup Patel
2023-12-15 6:11 ` Anup Patel
2023-12-15 6:11 ` Anup Patel
2023-12-14 10:15 ` [PATCH v2 05/13] RISC-V: KVM: Add steal-update vcpu request Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-15 6:16 ` Anup Patel
2023-12-15 6:16 ` Anup Patel
2023-12-15 6:16 ` Anup Patel
2023-12-14 10:15 ` Andrew Jones [this message]
2023-12-14 10:15 ` [PATCH v2 06/13] RISC-V: KVM: Add SBI STA info to vcpu_arch Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-15 9:07 ` Anup Patel
2023-12-15 9:07 ` Anup Patel
2023-12-15 9:07 ` Anup Patel
2023-12-15 12:52 ` Andrew Jones
2023-12-15 12:52 ` Andrew Jones
2023-12-15 12:52 ` Andrew Jones
2023-12-14 10:15 ` [PATCH v2 07/13] RISC-V: KVM: Add support for SBI extension registers Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-14 10:15 ` Andrew Jones
2023-12-15 9:09 ` Anup Patel
2023-12-15 9:09 ` Anup Patel
2023-12-15 9:09 ` Anup Patel
2023-12-14 10:16 ` [PATCH v2 08/13] RISC-V: KVM: Add support for SBI STA registers Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-15 9:16 ` Anup Patel
2023-12-15 9:16 ` Anup Patel
2023-12-15 9:16 ` Anup Patel
2023-12-19 20:30 ` Atish Patra
2023-12-19 20:30 ` Atish Patra
2023-12-19 20:30 ` Atish Patra
2023-12-14 10:16 ` [PATCH v2 09/13] RISC-V: KVM: Implement SBI STA extension Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-15 9:18 ` Anup Patel
2023-12-15 9:18 ` Anup Patel
2023-12-15 9:18 ` Anup Patel
2023-12-14 10:16 ` [PATCH v2 10/13] RISC-V: KVM: selftests: Move sbi_ecall to processor.c Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-15 9:20 ` Anup Patel
2023-12-15 9:20 ` Anup Patel
2023-12-15 9:20 ` Anup Patel
2023-12-19 21:53 ` Atish Patra
2023-12-19 21:53 ` Atish Patra
2023-12-19 21:53 ` Atish Patra
2023-12-14 10:16 ` [PATCH v2 11/13] RISC-V: KVM: selftests: Add guest_sbi_probe_extension Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-15 9:21 ` Anup Patel
2023-12-15 9:21 ` Anup Patel
2023-12-15 9:21 ` Anup Patel
2023-12-14 10:16 ` [PATCH v2 12/13] RISC-V: KVM: selftests: Add steal_time test support Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-15 9:24 ` Anup Patel
2023-12-15 9:24 ` Anup Patel
2023-12-15 9:24 ` Anup Patel
2023-12-14 10:16 ` [PATCH v2 13/13] RISC-V: KVM: selftests: Add get-reg-list test for STA registers Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-14 10:16 ` Andrew Jones
2023-12-15 9:27 ` Anup Patel
2023-12-15 9:27 ` Anup Patel
2023-12-15 9:27 ` Anup Patel
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=20231214101552.100721-21-ajones@ventanamicro.com \
--to=ajones@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.