* [PATCH 1/3] KVM: MIPS: Change KVM_ENTRYHI_ASID to cpu_asid_mask(¤t_cpu_data)
@ 2020-01-10 9:08 Xing Li
2020-01-10 9:08 ` [PATCH 2/3] KVM: MIPS: Fixup VPN2_MASK definition over 32bits virtual address Xing Li
2020-01-10 9:08 ` [PATCH 3/3] KVM: MIPS: Support kvm modules autoprobed when startup system Xing Li
0 siblings, 2 replies; 4+ messages in thread
From: Xing Li @ 2020-01-10 9:08 UTC (permalink / raw)
To: Ralf Baechle, Paul Burton; +Cc: linux-mips, linux-kernel
The code in decode_config4 of arch/mips/kernel/cpu-probe.c
asid_mask = MIPS_ENTRYHI_ASID;
if (config4 & MIPS_CONF4_AE)
asid_mask |= MIPS_ENTRYHI_ASIDX;
set_cpu_asid_mask(c, asid_mask);
set asid_mask to cpuinfo->asid_mask
So KVM_ENTRYHI_ASID should change to cpu_asid_mask(¤t_cpu_data)
for support 10bits ASID_MASK
Signed-off-by: Xing Li <lixing@loongson.cn>
---
arch/mips/include/asm/kvm_host.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/mips/include/asm/kvm_host.h b/arch/mips/include/asm/kvm_host.h
index 41204a4..6be70d5 100644
--- a/arch/mips/include/asm/kvm_host.h
+++ b/arch/mips/include/asm/kvm_host.h
@@ -275,7 +275,7 @@ enum emulation_result {
#define MIPS3_PG_FRAME 0x3fffffc0
#define VPN2_MASK 0xffffe000
-#define KVM_ENTRYHI_ASID MIPS_ENTRYHI_ASID
+#define KVM_ENTRYHI_ASID cpu_asid_mask(¤t_cpu_data)
#define TLB_IS_GLOBAL(x) ((x).tlb_lo[0] & (x).tlb_lo[1] & ENTRYLO_G)
#define TLB_VPN2(x) ((x).tlb_hi & VPN2_MASK)
#define TLB_ASID(x) ((x).tlb_hi & KVM_ENTRYHI_ASID)
--
2.1.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] KVM: MIPS: Fixup VPN2_MASK definition over 32bits virtual address
2020-01-10 9:08 [PATCH 1/3] KVM: MIPS: Change KVM_ENTRYHI_ASID to cpu_asid_mask(¤t_cpu_data) Xing Li
@ 2020-01-10 9:08 ` Xing Li
2020-01-13 1:47 ` Jiaxun Yang
2020-01-10 9:08 ` [PATCH 3/3] KVM: MIPS: Support kvm modules autoprobed when startup system Xing Li
1 sibling, 1 reply; 4+ messages in thread
From: Xing Li @ 2020-01-10 9:08 UTC (permalink / raw)
To: Ralf Baechle, Paul Burton; +Cc: linux-mips, linux-kernel
If the cpu support more than 32bits vmbits, VPN2_MASK set to fixed
0xffffe000 will lead to wrong entryhi for _kvm_mips_host_tlb_inv
Signed-off-by: Xing Li <lixing@loongson.cn>
---
arch/mips/include/asm/kvm_host.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/mips/include/asm/kvm_host.h b/arch/mips/include/asm/kvm_host.h
index 6be70d5..ce9546c 100644
--- a/arch/mips/include/asm/kvm_host.h
+++ b/arch/mips/include/asm/kvm_host.h
@@ -274,7 +274,12 @@ enum emulation_result {
#define MIPS3_PG_SHIFT 6
#define MIPS3_PG_FRAME 0x3fffffc0
+#if defined(CONFIG_64BIT)
+#define VPN2_MASK (((1UL << cpu_vmbits) - 1) & \
+ 0x3fffffffffffe000UL)
+#else
#define VPN2_MASK 0xffffe000
+#endif
#define KVM_ENTRYHI_ASID cpu_asid_mask(¤t_cpu_data)
#define TLB_IS_GLOBAL(x) ((x).tlb_lo[0] & (x).tlb_lo[1] & ENTRYLO_G)
#define TLB_VPN2(x) ((x).tlb_hi & VPN2_MASK)
--
2.1.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] KVM: MIPS: Support kvm modules autoprobed when startup system
2020-01-10 9:08 [PATCH 1/3] KVM: MIPS: Change KVM_ENTRYHI_ASID to cpu_asid_mask(¤t_cpu_data) Xing Li
2020-01-10 9:08 ` [PATCH 2/3] KVM: MIPS: Fixup VPN2_MASK definition over 32bits virtual address Xing Li
@ 2020-01-10 9:08 ` Xing Li
1 sibling, 0 replies; 4+ messages in thread
From: Xing Li @ 2020-01-10 9:08 UTC (permalink / raw)
To: Ralf Baechle, Paul Burton; +Cc: linux-mips, linux-kernel
Currently, the module_init of kvm_mips_init cannot force the kvm
modules insmod when startup system.
Add new feature CPU_MIPS_VZ in elf_hwcap to support KVM auto probe
when hardware virtualization supported.
Signed-off-by: Xing Li <lixing@loongson.cn>
---
arch/mips/include/uapi/asm/hwcap.h | 1 +
arch/mips/kernel/cpu-probe.c | 4 +++-
arch/mips/kvm/mips.c | 3 ++-
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/arch/mips/include/uapi/asm/hwcap.h b/arch/mips/include/uapi/asm/hwcap.h
index 1ade1da..9e66509 100644
--- a/arch/mips/include/uapi/asm/hwcap.h
+++ b/arch/mips/include/uapi/asm/hwcap.h
@@ -17,5 +17,6 @@
#define HWCAP_LOONGSON_MMI (1 << 11)
#define HWCAP_LOONGSON_EXT (1 << 12)
#define HWCAP_LOONGSON_EXT2 (1 << 13)
+#define HWCAP_MIPS_VZ (1 << 14)
#endif /* _UAPI_ASM_HWCAP_H */
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index c543326..b305269 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -2242,8 +2242,10 @@ void cpu_probe(void)
if (cpu_has_loongson_ext2)
elf_hwcap |= HWCAP_LOONGSON_EXT2;
- if (cpu_has_vz)
+ if (cpu_has_vz) {
cpu_probe_vz(c);
+ elf_hwcap |= HWCAP_MIPS_VZ;
+ }
cpu_probe_vmbits(c);
diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c
index 1109924..1da5df3 100644
--- a/arch/mips/kvm/mips.c
+++ b/arch/mips/kvm/mips.c
@@ -19,6 +19,7 @@
#include <linux/sched/signal.h>
#include <linux/fs.h>
#include <linux/memblock.h>
+#include <linux/cpufeature.h>
#include <asm/fpu.h>
#include <asm/page.h>
@@ -1742,7 +1743,7 @@ static void __exit kvm_mips_exit(void)
unregister_die_notifier(&kvm_mips_csr_die_notifier);
}
-module_init(kvm_mips_init);
+module_cpu_feature_match(MIPS_VZ, kvm_mips_init);
module_exit(kvm_mips_exit);
EXPORT_TRACEPOINT_SYMBOL(kvm_exit);
--
2.1.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 2/3] KVM: MIPS: Fixup VPN2_MASK definition over 32bits virtual address
2020-01-10 9:08 ` [PATCH 2/3] KVM: MIPS: Fixup VPN2_MASK definition over 32bits virtual address Xing Li
@ 2020-01-13 1:47 ` Jiaxun Yang
0 siblings, 0 replies; 4+ messages in thread
From: Jiaxun Yang @ 2020-01-13 1:47 UTC (permalink / raw)
To: Xing Li, Ralf Baechle, Paul Burton; +Cc: linux-mips, linux-kernel
于 2020年1月10日 GMT+08:00 下午5:08:39, Xing Li <lixing@loongson.cn> 写到:
>If the cpu support more than 32bits vmbits, VPN2_MASK set to fixed
>0xffffe000 will lead to wrong entryhi for _kvm_mips_host_tlb_inv
>
>Signed-off-by: Xing Li <lixing@loongson.cn>
>---
> arch/mips/include/asm/kvm_host.h | 5 +++++
> 1 file changed, 5 insertions(+)
>
>diff --git a/arch/mips/include/asm/kvm_host.h
>b/arch/mips/include/asm/kvm_host.h
>index 6be70d5..ce9546c 100644
>--- a/arch/mips/include/asm/kvm_host.h
>+++ b/arch/mips/include/asm/kvm_host.h
>@@ -274,7 +274,12 @@ enum emulation_result {
> #define MIPS3_PG_SHIFT 6
> #define MIPS3_PG_FRAME 0x3fffffc0
>
>+#if defined(CONFIG_64BIT)
>+#define VPN2_MASK (((1UL << cpu_vmbits) - 1) & \
>+ 0x3fffffffffffe000UL)
>+#else
> #define VPN2_MASK 0xffffe000
Hi Lixing,
It could be more reasonable to do like:
#define VPN2_MASK GENMASK(vm_bits, 13)
So we can avoid ugly ifdef.
Thanks
>+#endif
> #define KVM_ENTRYHI_ASID cpu_asid_mask(¤t_cpu_data)
> #define TLB_IS_GLOBAL(x) ((x).tlb_lo[0] & (x).tlb_lo[1] & ENTRYLO_G)
> #define TLB_VPN2(x) ((x).tlb_hi & VPN2_MASK)
--
Jiaxun Yang
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-01-13 1:47 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-10 9:08 [PATCH 1/3] KVM: MIPS: Change KVM_ENTRYHI_ASID to cpu_asid_mask(¤t_cpu_data) Xing Li
2020-01-10 9:08 ` [PATCH 2/3] KVM: MIPS: Fixup VPN2_MASK definition over 32bits virtual address Xing Li
2020-01-13 1:47 ` Jiaxun Yang
2020-01-10 9:08 ` [PATCH 3/3] KVM: MIPS: Support kvm modules autoprobed when startup system Xing Li
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.