arm_mpam: Restore the error interrupt enable from mpam_cpu_online()

When all the associated CPUs to an MSC are offline, possibly caused by
PSCI_CPU_OFF, the power supply to the MSC can be cut off and all the
registers lose their value, including MPAMF_ECR.INTEN. Afterwards, we need
to explicitly set MPAMF_ECR.INTEN when the first associated CPU becomes
online and the power supply to the MSC is recovered.

Restore MPAMF_ECR.INTEN in mpam_cpu_online() when the first associated CPU
of the MSC becomes online.

Fixes: 49aa621c4d ("arm_mpam: Register and enable IRQs")
Signed-off-by: Ben Horgan <ben.horgan@arm.com>
Tested-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: James Morse <james.morse@arm.com>
[morse: rephrased commit message]
Signed-off-by: James Morse <james.morse@arm.com>
This commit is contained in:
Ben Horgan 2026-09-17 15:56:07 +01:00 committed by James Morse
parent 63b3495c3d
commit 9ced048825

View File

@ -1856,8 +1856,14 @@ static int mpam_cpu_online(unsigned int cpu)
if (msc->reenable_error_ppi)
_enable_percpu_irq(&msc->reenable_error_ppi);
if (atomic_fetch_inc(&msc->online_refs) == 0)
if (atomic_fetch_inc(&msc->online_refs) == 0) {
mutex_lock(&msc->error_irq_lock);
if (msc->error_irq_hw_enabled)
mpam_touch_msc(msc, mpam_enable_msc_ecr, msc);
mutex_unlock(&msc->error_irq_lock);
mpam_reprogram_msc(msc);
}
}
if (mpam_resctrl_enabled)