Messages in this thread | | | From | Anup Patel <> | Date | Tue, 30 Jul 2019 18:21:24 +0530 | Subject | Re: [RFC PATCH 07/16] RISC-V: KVM: Implement VCPU world-switch |
| |
On Tue, Jul 30, 2019 at 3:04 PM Paolo Bonzini <pbonzini@redhat.com> wrote: > > On 29/07/19 13:57, Anup Patel wrote: > > void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) > > { > > - /* TODO: */ > > + struct kvm_vcpu_csr *csr = &vcpu->arch.guest_csr; > > + > > + csr_write(CSR_HIDELEG, csr->hideleg); > > + csr_write(CSR_HEDELEG, csr->hedeleg); > > Writing HIDELEG and HEDELEG here seems either wrong or inefficient to me. > > I don't remember the spec well enough, but there are two cases: > > 1) either they only matter while the guest runs and then you can set > them in kvm_arch_hardware_enable. KVM common code takes care of doing > this on all CPUs for you.
This is a good suggestion. I will use kvm_arch_hardware_enable() for programming HIDELEG and HEDELEG CSRs.
> > 2) or they also matter while the host runs and then you need to set them > in vcpu_switch.S.
They don't matter in HS-mode so we don't need to access them in vcpu_switch.S
Regards, Anup
| |