Re: [PATCH 01/13] arm/arm64: Add new is_kernel_in_hyp_mode predicate
On Wed, Jul 08, 2015 at 05:19:04PM +0100, Marc Zyngier wrote: With ARMv8.1 VHE extension, it will be possible to run the kernel at EL2 (aka HYP mode). In order for the kernel to easily find out where it is running, add a new predicate that returns whether or not the kernel is in HYP mode. For completeness, the 32bit code also get such a predicate (always returning false) so that code common to both architecture (timers, KVM) can use it transparently. Signed-off-by: Marc Zyngier marc.zyng...@arm.com --- arch/arm/include/asm/virt.h | 5 + arch/arm64/include/asm/virt.h | 10 ++ 2 files changed, 15 insertions(+) [...] +static inline bool is_kernel_in_hyp_mode(void) +{ + u64 el; + + asm(mrs %0, CurrentEL : =r (el)); + return el == CurrentEL_EL2; Missing mask? Will ___ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Re: [PATCH 01/13] arm/arm64: Add new is_kernel_in_hyp_mode predicate
Hi, +static inline bool is_kernel_in_hyp_mode(void) +{ + u64 el; + + asm(mrs %0, CurrentEL : =r (el)); + return el == CurrentEL_EL2; +} If you can include cputype.h, I think this can be: static inline bool is_kernel_in_hyp_mode(void) { return read_cpuid(CurrentEL) == CurrentEL_EL2; } Mark. ___ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Re: [PATCH 01/13] arm/arm64: Add new is_kernel_in_hyp_mode predicate
On 09/07/15 10:42, Mark Rutland wrote: Hi, +static inline bool is_kernel_in_hyp_mode(void) +{ +u64 el; + +asm(mrs %0, CurrentEL : =r (el)); +return el == CurrentEL_EL2; +} If you can include cputype.h, I think this can be: static inline bool is_kernel_in_hyp_mode(void) { return read_cpuid(CurrentEL) == CurrentEL_EL2; } This would indeed work, but CurrentEL is hardly an ID register. I feel slightly uncomfortable using read_cpuid (which might return a cached version at some point) for random system registers. Thoughts? M. -- Jazz is not dead. It just smells funny... ___ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
Re: [PATCH 01/13] arm/arm64: Add new is_kernel_in_hyp_mode predicate
On Thu, Jul 09, 2015 at 11:05:34AM +0100, Marc Zyngier wrote: On 09/07/15 10:42, Mark Rutland wrote: Hi, +static inline bool is_kernel_in_hyp_mode(void) +{ + u64 el; + + asm(mrs %0, CurrentEL : =r (el)); + return el == CurrentEL_EL2; +} If you can include cputype.h, I think this can be: static inline bool is_kernel_in_hyp_mode(void) { return read_cpuid(CurrentEL) == CurrentEL_EL2; } This would indeed work, but CurrentEL is hardly an ID register. I feel slightly uncomfortable using read_cpuid (which might return a cached version at some point) for random system registers. Thoughts? I have no strong feelings either way, but I agree with the general uneasiness w.r.t. what read_cpuid can be expected to do. Elsewhere we just use inline asm to read non CPUID system registers, so let's leave your patch as it was. Thanks, Mark. ___ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm