arm64: KVM: VHE: save and restore some PSTATE bits
The negative effect is that kernel can not access kernel space adress through copy_to/from_user even KERNEL_DS is set 发件人:vladimir.murzin 收件人:耿东久,marc.zyngier,christoffer.dall,pbonzini,rkrcmar,linux-arm-kernel,kvmarm,kvm,linux-kernel,suzuki.poulose,mark.rutland,Catalin Marinas 抄送:James.Morse,张海斌,黄韶宇
时间:2017-09-06 23:19:38
主题:Re: [PATCH] arm64: KVM: VHE: save and restore some PSTATE bits
Quoted 1 line · gengdongjiu
It is similar with the PAN,when the guest traps to el2,it will reset the pstate.PAN <http://pstate.PAN> to 0, and continue run。In fact the host pstate.UAO <http://pstate.UAO> can be 1, but guest change it to 0 when trap to EL2。so after swich to host,need to check whether set pstate.UAO <http://pstate.UAO> again。
What negative effect do you see with change UAO to 0 (i.e. do not override)?
P. S.
Please, avoid HTML and top posting
Vladimir
Quoted 21 lines
*发件人:*Vladimir Murzin *收件人:*耿东久,marc.zyngier,[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],linux-kernel,[email protected],[email protected],Catalin Marinas *抄送:*James Morse,张海斌,黄韶宇
*时间:*2017-09-06 22:41:09
*主题:*Re: [PATCH] arm64: KVM: VHE: save and restore some PSTATE bitsQuoted 14 lines · gengdongjiu
Hi, Vladimir
Quoted 10 lines
Quoted 3 lines
Quoted 1 line
Do you see effect of "PAN is unexpectedly enabled"?
In fact I did not encounter this case, but I think it can exist.
I think if host OS dynamically disable PAN, it wants the host kernel access the user space address space not through copy_to/from_userAPI.
Quoted 1 line
Now if it is unexpectedly enabled, when host kernel still accesses the user space address, it will happen MMU fault exception.
And this is expected! The only allowed channel for kernel <-> user is uaccess API.
I guess that you have test (and that great!) which violates that rule (for testing purpose, why not?) and now you are trying to fit kernel into it...
Quoted 66 lines
Quoted 2 lines
If you think that makes sense for it, we do not consider the paste.PAN in the world-switch. For the pstate.UAO issue, do you agree my fixing or you have other suggestion? Also to other reviewer. Thanks.
It would help if you give precise description on "pstate.UAO issue".
Thanks
VladimirQuoted 57 lines
arch/arm64/kvm/hyp/sysreg-sr.c +7
-1@@ -21,6 +21,8 @@#include <asm/kvm_asm.h> #include <asm/kvm_hyp.h> +#include <asm/exec.h> /* Yes, this does nothing, on purpose */ static void __hyp_text __sysreg_do_nothing(struct kvm_cpu_context *ctxt) { }@@ -121,8 +123,13 @@ static void __hyp_text __sysreg_restore_state(struct kvm_cpu_context *ctxt)write_sysreg_el1 (ctxt->gp_regs.spsr[KVM_SPSR_EL1 ],spsr); } +static void __hyp_text __sysreg_restore_state_vhe(struct kvm_cpu_context *ctxt) +{ +uao_thread_switch (current); +} + static hyp_alternate_select(__sysreg_call_restore_host_state, - __sysreg_restore_state, __sysreg_do_nothing, + __sysreg_restore_state, __sysreg_restore_state_vhe, ARM64_HAS_VIRT_HOST_EXTN); void __hyp_text __sysreg_restore_host_state(struct kvm_cpu_context *ctxt)Quoted 27 lines
Cheers
VladimirQuoted 21 lines
Quoted 19 lines
Cheers
VladimirQuoted 9 lines
Quoted 7 lines
Cheers
Vladimir.
.
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm