From: Jinjie Ruan <[email protected]> The arm_mpam driver picks the MBA-backing class for the MBPRI pseudo-resource, which requires the memory-side MSC to advertise HAS_PRI_PART -- without it the driver never exposes MBPRI even though the register is handled. Assemble the same PRI_IDR view (INTPRI, 2 bits, 0 = low) as the cache subtype.
Signed-off-by: Jinjie Ruan <[email protected]> --- hw/arm/mpam.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hw/arm/mpam.c b/hw/arm/mpam.c index 1bd76ba..50c8a8e 100644 --- a/hw/arm/mpam.c +++ b/hw/arm/mpam.c @@ -991,6 +991,18 @@ static void mpam_msc_mem_realize(DeviceState *dev, Error **errp) mpamf->idr = FIELD_DP64(mpamf->idr, MPAMF_IDR, HAS_MSMON, 1); /* Memory specific bit */ mpamf->idr = FIELD_DP64(mpamf->idr, MPAMF_IDR, HAS_MBW_PART, 1); + /* + * Priority partitioning on the memory side too: the driver exposes + * the MBPRI pseudo-resource from the class backing MBA, which + * requires the memory-side MSC to advertise HAS_PRI_PART. + */ + mpamf->idr = FIELD_DP64(mpamf->idr, MPAMF_IDR, HAS_PRI_PART, 1); + mpamf->pri_idr = FIELD_DP32(mpamf->pri_idr, MPAMF_PRI_IDR, + HAS_INTPRI, 1); + mpamf->pri_idr = FIELD_DP32(mpamf->pri_idr, MPAMF_PRI_IDR, + INTPRI_0_IS_LOW, 1); + mpamf->pri_idr = FIELD_DP32(mpamf->pri_idr, MPAMF_PRI_IDR, + INTPRI_WD, 2); mpamf->msmon_idr = FIELD_DP32(mpamf->msmon_idr, MPAMF_MSMON_IDR, MSMON_MBWU, 1); -- 2.43.0
