2021-11-17 06:03:12

by Anup Patel

[permalink] [raw]
Subject: [PATCH] RISC-V: KVM: Fix incorrect KVM_MAX_VCPUS value

The KVM_MAX_VCPUS value is supposed to be aligned with number of
VMID bits in the hgatp CSR but the current KVM_MAX_VCPUS value
is aligned with number of ASID bits in the satp CSR.

Fixes: 99cdc6c18c2d ("RISC-V: Add initial skeletal KVM support")
Signed-off-by: Anup Patel <[email protected]>
---
arch/riscv/include/asm/kvm_host.h | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/arch/riscv/include/asm/kvm_host.h b/arch/riscv/include/asm/kvm_host.h
index 25ba21f98504..2639b9ee48f9 100644
--- a/arch/riscv/include/asm/kvm_host.h
+++ b/arch/riscv/include/asm/kvm_host.h
@@ -12,14 +12,12 @@
#include <linux/types.h>
#include <linux/kvm.h>
#include <linux/kvm_types.h>
+#include <asm/csr.h>
#include <asm/kvm_vcpu_fp.h>
#include <asm/kvm_vcpu_timer.h>

-#ifdef CONFIG_64BIT
-#define KVM_MAX_VCPUS (1U << 16)
-#else
-#define KVM_MAX_VCPUS (1U << 9)
-#endif
+#define KVM_MAX_VCPUS \
+ ((HGATP_VMID_MASK >> HGATP_VMID_SHIFT) + 1)

#define KVM_HALT_POLL_NS_DEFAULT 500000

--
2.25.1



2021-11-18 07:53:39

by Atish Patra

[permalink] [raw]
Subject: Re: [PATCH] RISC-V: KVM: Fix incorrect KVM_MAX_VCPUS value

On Tue, Nov 16, 2021 at 10:03 PM Anup Patel <[email protected]> wrote:
>
> The KVM_MAX_VCPUS value is supposed to be aligned with number of
> VMID bits in the hgatp CSR but the current KVM_MAX_VCPUS value
> is aligned with number of ASID bits in the satp CSR.
>
> Fixes: 99cdc6c18c2d ("RISC-V: Add initial skeletal KVM support")
> Signed-off-by: Anup Patel <[email protected]>
> ---
> arch/riscv/include/asm/kvm_host.h | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/arch/riscv/include/asm/kvm_host.h b/arch/riscv/include/asm/kvm_host.h
> index 25ba21f98504..2639b9ee48f9 100644
> --- a/arch/riscv/include/asm/kvm_host.h
> +++ b/arch/riscv/include/asm/kvm_host.h
> @@ -12,14 +12,12 @@
> #include <linux/types.h>
> #include <linux/kvm.h>
> #include <linux/kvm_types.h>
> +#include <asm/csr.h>
> #include <asm/kvm_vcpu_fp.h>
> #include <asm/kvm_vcpu_timer.h>
>
> -#ifdef CONFIG_64BIT
> -#define KVM_MAX_VCPUS (1U << 16)
> -#else
> -#define KVM_MAX_VCPUS (1U << 9)
> -#endif
> +#define KVM_MAX_VCPUS \
> + ((HGATP_VMID_MASK >> HGATP_VMID_SHIFT) + 1)
>
> #define KVM_HALT_POLL_NS_DEFAULT 500000
>
> --
> 2.25.1
>


Reviewed-by: Atish Patra <[email protected]>

--
Regards,
Atish

2021-11-19 12:21:15

by Anup Patel

[permalink] [raw]
Subject: Re: [PATCH] RISC-V: KVM: Fix incorrect KVM_MAX_VCPUS value

On Thu, Nov 18, 2021 at 1:23 PM Atish Patra <[email protected]> wrote:
>
> On Tue, Nov 16, 2021 at 10:03 PM Anup Patel <[email protected]> wrote:
> >
> > The KVM_MAX_VCPUS value is supposed to be aligned with number of
> > VMID bits in the hgatp CSR but the current KVM_MAX_VCPUS value
> > is aligned with number of ASID bits in the satp CSR.
> >
> > Fixes: 99cdc6c18c2d ("RISC-V: Add initial skeletal KVM support")
> > Signed-off-by: Anup Patel <[email protected]>
> > ---
> > arch/riscv/include/asm/kvm_host.h | 8 +++-----
> > 1 file changed, 3 insertions(+), 5 deletions(-)
> >
> > diff --git a/arch/riscv/include/asm/kvm_host.h b/arch/riscv/include/asm/kvm_host.h
> > index 25ba21f98504..2639b9ee48f9 100644
> > --- a/arch/riscv/include/asm/kvm_host.h
> > +++ b/arch/riscv/include/asm/kvm_host.h
> > @@ -12,14 +12,12 @@
> > #include <linux/types.h>
> > #include <linux/kvm.h>
> > #include <linux/kvm_types.h>
> > +#include <asm/csr.h>
> > #include <asm/kvm_vcpu_fp.h>
> > #include <asm/kvm_vcpu_timer.h>
> >
> > -#ifdef CONFIG_64BIT
> > -#define KVM_MAX_VCPUS (1U << 16)
> > -#else
> > -#define KVM_MAX_VCPUS (1U << 9)
> > -#endif
> > +#define KVM_MAX_VCPUS \
> > + ((HGATP_VMID_MASK >> HGATP_VMID_SHIFT) + 1)
> >
> > #define KVM_HALT_POLL_NS_DEFAULT 500000
> >
> > --
> > 2.25.1
> >
>
>
> Reviewed-by: Atish Patra <[email protected]>

I have queued this patch for fixes.

Thanks,
Anup

>
> --
> Regards,
> Atish