msr     spsr_el2, x0
 .endm
 
+.macro __init_el2_mpam
+       /* Memory Partitioning And Monitoring: disable EL2 traps */
+       mrs     x1, id_aa64pfr0_el1
+       ubfx    x0, x1, #ID_AA64PFR0_EL1_MPAM_SHIFT, #4
+       cbz     x0, .Lskip_mpam_\@              // skip if no MPAM
+       msr_s   SYS_MPAM2_EL2, xzr              // use the default partition
+                                               // and disable lower traps
+       mrs_s   x0, SYS_MPAMIDR_EL1
+       tbz     x0, #MPAMIDR_EL1_HAS_HCR_SHIFT, .Lskip_mpam_\@  // skip if no MPAMHCR reg
+       msr_s   SYS_MPAMHCR_EL2, xzr            // clear TRAP_MPAMIDR_EL1 -> EL2
+.Lskip_mpam_\@:
+.endm
+
 /**
  * Initialize EL2 registers to sane values. This should be called early on all
  * cores that were booted in EL2. Note that everything gets initialised as
        __init_el2_stage2
        __init_el2_gicv3
        __init_el2_hstr
+       __init_el2_mpam
        __init_el2_nvhe_idregs
        __init_el2_cptr
        __init_el2_fgt