|
@@ -26,6 +26,7 @@
|
|
#include <asm/cpu_ops.h>
|
|
#include <asm/cpu_ops.h>
|
|
#include <asm/processor.h>
|
|
#include <asm/processor.h>
|
|
#include <asm/sysreg.h>
|
|
#include <asm/sysreg.h>
|
|
|
|
+#include <asm/virt.h>
|
|
|
|
|
|
unsigned long elf_hwcap __read_mostly;
|
|
unsigned long elf_hwcap __read_mostly;
|
|
EXPORT_SYMBOL_GPL(elf_hwcap);
|
|
EXPORT_SYMBOL_GPL(elf_hwcap);
|
|
@@ -621,6 +622,11 @@ static bool has_useable_gicv3_cpuif(const struct arm64_cpu_capabilities *entry)
|
|
return has_sre;
|
|
return has_sre;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+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[] = {
|
|
static const struct arm64_cpu_capabilities arm64_features[] = {
|
|
{
|
|
{
|
|
.desc = "GIC system register CPU interface",
|
|
.desc = "GIC system register CPU interface",
|
|
@@ -651,6 +657,11 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
|
|
.min_field_value = 2,
|
|
.min_field_value = 2,
|
|
},
|
|
},
|
|
#endif /* CONFIG_AS_LSE && CONFIG_ARM64_LSE_ATOMICS */
|
|
#endif /* CONFIG_AS_LSE && CONFIG_ARM64_LSE_ATOMICS */
|
|
|
|
+ {
|
|
|
|
+ .desc = "Virtualization Host Extensions",
|
|
|
|
+ .capability = ARM64_HAS_VIRT_HOST_EXTN,
|
|
|
|
+ .matches = runs_at_el2,
|
|
|
|
+ },
|
|
{},
|
|
{},
|
|
};
|
|
};
|
|
|
|
|