Re: [PATCH 03/13] arm64: Add ARM64_HAS_VIRT_HOST_EXTN feature

2015-07-16 Thread Will Deacon
On Wed, Jul 08, 2015 at 05:19:06PM +0100, Marc Zyngier wrote:
 Add a new ARM64_HAS_VIRT_HOST_EXTN features to indicate that the
 CPU has the ARMv8,1 VHE capability.
 
 This will be used to trigger kernel patching in KVM.
 
 Signed-off-by: Marc Zyngier marc.zyng...@arm.com

Acked-by: Will Deacon will.dea...@arm.com

Will
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 03/13] arm64: Add ARM64_HAS_VIRT_HOST_EXTN feature

2015-07-09 Thread Marc Zyngier
On 09/07/15 10:48, Mark Rutland wrote:
 On Wed, Jul 08, 2015 at 05:19:06PM +0100, Marc Zyngier wrote:
 Add a new ARM64_HAS_VIRT_HOST_EXTN features to indicate that the
 CPU has the ARMv8,1 VHE capability.
 
 Nit: s/,/./
 
 It's probably worth mentioning somewhere that we have to check CurrentEL
 rather than a feature register in case some prior software dropped us to
 EL1N (e.g. if we're a guest under this scheme).

Good point, this is a leftover from a previous version that actually
checked the feature register. I'll clean up the commit log.

Thanks,

M.

 Mark.
 

 This will be used to trigger kernel patching in KVM.

 Signed-off-by: Marc Zyngier marc.zyng...@arm.com
 ---
  arch/arm64/include/asm/cpufeature.h |  3 ++-
  arch/arm64/kernel/cpufeature.c  | 11 +++
  2 files changed, 13 insertions(+), 1 deletion(-)

 diff --git a/arch/arm64/include/asm/cpufeature.h 
 b/arch/arm64/include/asm/cpufeature.h
 index c104421..6c3742d 100644
 --- a/arch/arm64/include/asm/cpufeature.h
 +++ b/arch/arm64/include/asm/cpufeature.h
 @@ -25,8 +25,9 @@
  #define ARM64_WORKAROUND_DEVICE_LOAD_ACQUIRE1
  #define ARM64_WORKAROUND_845719 2
  #define ARM64_HAS_SYSREG_GIC_CPUIF  3
 +#define ARM64_HAS_VIRT_HOST_EXTN4
  
 -#define ARM64_NCAPS 4
 +#define ARM64_NCAPS 5
  
  #ifndef __ASSEMBLY__
  
 diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
 index 5ad86ce..e1dcd63 100644
 --- a/arch/arm64/kernel/cpufeature.c
 +++ b/arch/arm64/kernel/cpufeature.c
 @@ -21,6 +21,7 @@
  #include linux/types.h
  #include asm/cpu.h
  #include asm/cpufeature.h
 +#include asm/virt.h
  
  static bool
  has_id_aa64pfr0_feature(const struct arm64_cpu_capabilities *entry)
 @@ -31,6 +32,11 @@ has_id_aa64pfr0_feature(const struct 
 arm64_cpu_capabilities *entry)
  return (val  entry-register_mask) == entry-register_value;
  }
  
 +static bool runs_at_el2(const struct arm64_cpu_capabilities *entry)
 +{
 +return is_kernel_in_hyp_mode();
 +}
 +
  static const struct arm64_cpu_capabilities arm64_features[] = {
  {
  .desc = GIC system register CPU interface,
 @@ -39,6 +45,11 @@ static const struct arm64_cpu_capabilities 
 arm64_features[] = {
  .register_mask = (0xf  24),
  .register_value = (1  24),
  },
 +{
 +.desc = Virtualization Host Extensions,
 +.capability = ARM64_HAS_VIRT_HOST_EXTN,
 +.matches = runs_at_el2,
 +},
  {},
  };
  
 -- 
 2.1.4

 ___
 kvmarm mailing list
 kvm...@lists.cs.columbia.edu
 https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

 


-- 
Jazz is not dead. It just smells funny...
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 03/13] arm64: Add ARM64_HAS_VIRT_HOST_EXTN feature

2015-07-09 Thread Mark Rutland
On Wed, Jul 08, 2015 at 05:19:06PM +0100, Marc Zyngier wrote:
 Add a new ARM64_HAS_VIRT_HOST_EXTN features to indicate that the
 CPU has the ARMv8,1 VHE capability.

Nit: s/,/./

It's probably worth mentioning somewhere that we have to check CurrentEL
rather than a feature register in case some prior software dropped us to
EL1N (e.g. if we're a guest under this scheme).

Mark.

 
 This will be used to trigger kernel patching in KVM.
 
 Signed-off-by: Marc Zyngier marc.zyng...@arm.com
 ---
  arch/arm64/include/asm/cpufeature.h |  3 ++-
  arch/arm64/kernel/cpufeature.c  | 11 +++
  2 files changed, 13 insertions(+), 1 deletion(-)
 
 diff --git a/arch/arm64/include/asm/cpufeature.h 
 b/arch/arm64/include/asm/cpufeature.h
 index c104421..6c3742d 100644
 --- a/arch/arm64/include/asm/cpufeature.h
 +++ b/arch/arm64/include/asm/cpufeature.h
 @@ -25,8 +25,9 @@
  #define ARM64_WORKAROUND_DEVICE_LOAD_ACQUIRE 1
  #define ARM64_WORKAROUND_845719  2
  #define ARM64_HAS_SYSREG_GIC_CPUIF   3
 +#define ARM64_HAS_VIRT_HOST_EXTN 4
  
 -#define ARM64_NCAPS  4
 +#define ARM64_NCAPS  5
  
  #ifndef __ASSEMBLY__
  
 diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
 index 5ad86ce..e1dcd63 100644
 --- a/arch/arm64/kernel/cpufeature.c
 +++ b/arch/arm64/kernel/cpufeature.c
 @@ -21,6 +21,7 @@
  #include linux/types.h
  #include asm/cpu.h
  #include asm/cpufeature.h
 +#include asm/virt.h
  
  static bool
  has_id_aa64pfr0_feature(const struct arm64_cpu_capabilities *entry)
 @@ -31,6 +32,11 @@ has_id_aa64pfr0_feature(const struct 
 arm64_cpu_capabilities *entry)
   return (val  entry-register_mask) == entry-register_value;
  }
  
 +static bool runs_at_el2(const struct arm64_cpu_capabilities *entry)
 +{
 + return is_kernel_in_hyp_mode();
 +}
 +
  static const struct arm64_cpu_capabilities arm64_features[] = {
   {
   .desc = GIC system register CPU interface,
 @@ -39,6 +45,11 @@ static const struct arm64_cpu_capabilities 
 arm64_features[] = {
   .register_mask = (0xf  24),
   .register_value = (1  24),
   },
 + {
 + .desc = Virtualization Host Extensions,
 + .capability = ARM64_HAS_VIRT_HOST_EXTN,
 + .matches = runs_at_el2,
 + },
   {},
  };
  
 -- 
 2.1.4
 
 ___
 kvmarm mailing list
 kvm...@lists.cs.columbia.edu
 https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
 
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 03/13] arm64: Add ARM64_HAS_VIRT_HOST_EXTN feature

2015-07-08 Thread Marc Zyngier
Add a new ARM64_HAS_VIRT_HOST_EXTN features to indicate that the
CPU has the ARMv8,1 VHE capability.

This will be used to trigger kernel patching in KVM.

Signed-off-by: Marc Zyngier marc.zyng...@arm.com
---
 arch/arm64/include/asm/cpufeature.h |  3 ++-
 arch/arm64/kernel/cpufeature.c  | 11 +++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/include/asm/cpufeature.h 
b/arch/arm64/include/asm/cpufeature.h
index c104421..6c3742d 100644
--- a/arch/arm64/include/asm/cpufeature.h
+++ b/arch/arm64/include/asm/cpufeature.h
@@ -25,8 +25,9 @@
 #define ARM64_WORKAROUND_DEVICE_LOAD_ACQUIRE   1
 #define ARM64_WORKAROUND_8457192
 #define ARM64_HAS_SYSREG_GIC_CPUIF 3
+#define ARM64_HAS_VIRT_HOST_EXTN   4
 
-#define ARM64_NCAPS4
+#define ARM64_NCAPS5
 
 #ifndef __ASSEMBLY__
 
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 5ad86ce..e1dcd63 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -21,6 +21,7 @@
 #include linux/types.h
 #include asm/cpu.h
 #include asm/cpufeature.h
+#include asm/virt.h
 
 static bool
 has_id_aa64pfr0_feature(const struct arm64_cpu_capabilities *entry)
@@ -31,6 +32,11 @@ has_id_aa64pfr0_feature(const struct arm64_cpu_capabilities 
*entry)
return (val  entry-register_mask) == entry-register_value;
 }
 
+static bool runs_at_el2(const struct arm64_cpu_capabilities *entry)
+{
+   return is_kernel_in_hyp_mode();
+}
+
 static const struct arm64_cpu_capabilities arm64_features[] = {
{
.desc = GIC system register CPU interface,
@@ -39,6 +45,11 @@ static const struct arm64_cpu_capabilities arm64_features[] 
= {
.register_mask = (0xf  24),
.register_value = (1  24),
},
+   {
+   .desc = Virtualization Host Extensions,
+   .capability = ARM64_HAS_VIRT_HOST_EXTN,
+   .matches = runs_at_el2,
+   },
{},
 };
 
-- 
2.1.4

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html