diff --git a/drivers/platform/mpam/mpam_devices.c b/drivers/platform/mpam/mpam_devices.c index 5f05771e3e4da0747722dfb72493c63a4e728cca..21ca76695d3e9bd59af7c82bcf5fde41f73b90a4 100644 --- a/drivers/platform/mpam/mpam_devices.c +++ b/drivers/platform/mpam/mpam_devices.c @@ -928,6 +928,14 @@ bool resctrl_arch_would_mbm_overflow(void) return read_cpuid_implementor() != ARM_CPU_IMP_HISI; } +static bool mpam_ris_has_nrdy_bit(struct mpam_msc_ris *ris) +{ + if (ris->comp->class->type == MPAM_CLASS_MEMORY) + return read_cpuid_implementor() != ARM_CPU_IMP_HISI; + + return true; +} + static void __ris_msmon_read(void *arg) { bool nrdy = false; @@ -1002,6 +1010,9 @@ static void __ris_msmon_read(void *arg) now = FIELD_GET(MSMON___VALUE, now); } + if (config_mismatch && !mpam_ris_has_nrdy_bit(ris)) + nrdy = true; + if (nrdy) break;