@@ -864,6 +864,12 @@ static struct id_reg_info id_dfr1_el1_info = {
.ftr_check_types = S_FCT(ID_DFR1_MTPMU_SHIFT, FCT_LOWER_SAFE),
};
+static struct id_reg_info id_mmfr0_el1_info = {
+ .sys_reg = SYS_ID_MMFR0_EL1,
+ .ftr_check_types = S_FCT(ID_MMFR0_INNERSHR_SHIFT, FCT_LOWER_SAFE) |
+ S_FCT(ID_MMFR0_OUTERSHR_SHIFT, FCT_LOWER_SAFE),
+};
+
/*
* An ID register that needs special handling to control the value for the
* guest must have its own id_reg_info in id_reg_info_table.
@@ -874,6 +880,7 @@ static struct id_reg_info id_dfr1_el1_info = {
#define GET_ID_REG_INFO(id) (id_reg_info_table[IDREG_IDX(id)])
static struct id_reg_info *id_reg_info_table[KVM_ARM_ID_REG_MAX_NUM] = {
[IDREG_IDX(SYS_ID_DFR0_EL1)] = &id_dfr0_el1_info,
+ [IDREG_IDX(SYS_ID_MMFR0_EL1)] = &id_mmfr0_el1_info,
[IDREG_IDX(SYS_ID_DFR1_EL1)] = &id_dfr1_el1_info,
[IDREG_IDX(SYS_ID_AA64PFR0_EL1)] = &id_aa64pfr0_el1_info,
[IDREG_IDX(SYS_ID_AA64PFR1_EL1)] = &id_aa64pfr1_el1_info,
This patch adds id_reg_info for ID_MMFR0_EL1 to make it writable by userspace. Signed-off-by: Reiji Watanabe <reijiw@google.com> --- arch/arm64/kvm/sys_regs.c | 7 +++++++ 1 file changed, 7 insertions(+)