нед, 3. мај 2020. у 12:12 Huacai Chen <chenhc@xxxxxxxxxx> је написао/ла: > > KVM guest has two levels of address translation: guest tlb translates > GVA to GPA, and root tlb translates GPA to HPA. By default guest's CCA > is controlled by guest tlb, but Loongson-3 maintains all cache coherency > by hardware (including multi-core coherency and I/O DMA coherency) so it > prefers all guest mappings be cacheable mappings. Thus, we use root tlb > to control guest's CCA for Loongson-3. > > Signed-off-by: Huacai Chen <chenhc@xxxxxxxxxx> > Co-developed-by: Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx> > --- > arch/mips/kvm/vz.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/arch/mips/kvm/vz.c b/arch/mips/kvm/vz.c > index 422cd06..f9fbbc16 100644 > --- a/arch/mips/kvm/vz.c > +++ b/arch/mips/kvm/vz.c > @@ -2871,6 +2871,12 @@ static int kvm_vz_hardware_enable(void) > if (cpu_has_guestctl2) > clear_c0_guestctl2(0x3f << 10); > > +#ifdef CONFIG_CPU_LOONGSON64 > + /* Control guest CCA attribute */ > + if (cpu_has_csr()) > + csr_writel(csr_readl(0xffffffec) | 0x1, 0xffffffec); > +#endif > + > return 0; > } > > -- > 2.7.0 > Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@xxxxxxxxx>