extern struct arm64_ftr_override id_aa64mmfr1_override;
 extern struct arm64_ftr_override id_aa64pfr1_override;
+extern struct arm64_ftr_override id_aa64isar1_override;
 
 u32 get_kvm_ipa_limit(void);
 void dump_cpu_features(void);
 
 
 struct arm64_ftr_override __ro_after_init id_aa64mmfr1_override;
 struct arm64_ftr_override __ro_after_init id_aa64pfr1_override;
+struct arm64_ftr_override __ro_after_init id_aa64isar1_override;
 
 static const struct __ftr_reg_entry {
        u32                     sys_id;
 
        /* Op1 = 0, CRn = 0, CRm = 6 */
        ARM64_FTR_REG(SYS_ID_AA64ISAR0_EL1, ftr_id_aa64isar0),
-       ARM64_FTR_REG(SYS_ID_AA64ISAR1_EL1, ftr_id_aa64isar1),
+       ARM64_FTR_REG_OVERRIDE(SYS_ID_AA64ISAR1_EL1, ftr_id_aa64isar1,
+                              &id_aa64isar1_override),
 
        /* Op1 = 0, CRn = 0, CRm = 7 */
        ARM64_FTR_REG(SYS_ID_AA64MMFR0_EL1, ftr_id_aa64mmfr0),
 
        },
 };
 
+static const struct ftr_set_desc isar1 __initconst = {
+       .name           = "id_aa64isar1",
+       .override       = &id_aa64isar1_override,
+       .fields         = {
+               { "gpi", ID_AA64ISAR1_GPI_SHIFT },
+               { "gpa", ID_AA64ISAR1_GPA_SHIFT },
+               { "api", ID_AA64ISAR1_API_SHIFT },
+               { "apa", ID_AA64ISAR1_APA_SHIFT },
+               {}
+       },
+};
+
 extern struct arm64_ftr_override kaslr_feature_override;
 
 static const struct ftr_set_desc kaslr __initconst = {
 static const struct ftr_set_desc * const regs[] __initconst = {
        &mmfr1,
        &pfr1,
+       &isar1,
        &kaslr,
 };
 
        { "kvm-arm.mode=nvhe",          "id_aa64mmfr1.vh=0" },
        { "kvm-arm.mode=protected",     "id_aa64mmfr1.vh=0" },
        { "arm64.nobti",                "id_aa64pfr1.bt=0" },
+       { "arm64.nopauth",
+         "id_aa64isar1.gpi=0 id_aa64isar1.gpa=0 "
+         "id_aa64isar1.api=0 id_aa64isar1.apa=0"          },
        { "nokaslr",                    "kaslr.disabled=1" },
 };