[PATCH v2 06/45] KVM: arm64: Make MPAMSM_EL1 accesses UNDEF

Ben Horgan posted 45 patches 1 month, 3 weeks ago
There is a newer version of this series
[PATCH v2 06/45] KVM: arm64: Make MPAMSM_EL1 accesses UNDEF
Posted by Ben Horgan 1 month, 3 weeks ago
The MPAMSM_EL1 controls the MPAM labeling for an SMCU, Streaming Mode
Compute Unit. As there is on MPAM support in kvm, make sure MPAMSM_EL1
accesses trigger an UNDEF.

The range of valid configurations for the PARTID and PMG in MPAMSM_EL1 is
not currently specified in Arm Architectural Reference Manual but the
architect has confirmed that it is intended to be the same as that for the
cpu configuration in the MPAMy_ELx registers.

Signed-off-by: Ben Horgan <ben.horgan@arm.com>
---
 arch/arm64/kvm/sys_regs.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
index c8fd7c6a12a1..72654ab984ee 100644
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
@@ -3373,6 +3373,8 @@ static const struct sys_reg_desc sys_reg_descs[] = {
 
 	{ SYS_DESC(SYS_MPAM1_EL1), undef_access },
 	{ SYS_DESC(SYS_MPAM0_EL1), undef_access },
+	{ SYS_DESC(SYS_MPAMSM_EL1), undef_access },
+
 	{ SYS_DESC(SYS_VBAR_EL1), access_rw, reset_val, VBAR_EL1, 0 },
 	{ SYS_DESC(SYS_DISR_EL1), NULL, reset_val, DISR_EL1, 0 },
 
-- 
2.43.0
Re: [PATCH v2 06/45] KVM: arm64: Make MPAMSM_EL1 accesses UNDEF
Posted by Jonathan Cameron 1 month ago
On Fri, 19 Dec 2025 18:11:08 +0000
Ben Horgan <ben.horgan@arm.com> wrote:

> The MPAMSM_EL1 controls the MPAM labeling for an SMCU, Streaming Mode
> Compute Unit. As there is on MPAM support in kvm, make sure MPAMSM_EL1
> accesses trigger an UNDEF.
> 
> The range of valid configurations for the PARTID and PMG in MPAMSM_EL1 is
> not currently specified in Arm Architectural Reference Manual but the
> architect has confirmed that it is intended to be the same as that for the
> cpu configuration in the MPAMy_ELx registers.

Good to know but I'm not seeing why it matters in this patch. Perhaps
a little more on that?

> 
> Signed-off-by: Ben Horgan <ben.horgan@arm.com>

Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>

> ---
>  arch/arm64/kvm/sys_regs.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
> index c8fd7c6a12a1..72654ab984ee 100644
> --- a/arch/arm64/kvm/sys_regs.c
> +++ b/arch/arm64/kvm/sys_regs.c
> @@ -3373,6 +3373,8 @@ static const struct sys_reg_desc sys_reg_descs[] = {
>  
>  	{ SYS_DESC(SYS_MPAM1_EL1), undef_access },
>  	{ SYS_DESC(SYS_MPAM0_EL1), undef_access },
> +	{ SYS_DESC(SYS_MPAMSM_EL1), undef_access },
> +
>  	{ SYS_DESC(SYS_VBAR_EL1), access_rw, reset_val, VBAR_EL1, 0 },
>  	{ SYS_DESC(SYS_DISR_EL1), NULL, reset_val, DISR_EL1, 0 },
>
Re: [PATCH v2 06/45] KVM: arm64: Make MPAMSM_EL1 accesses UNDEF
Posted by Ben Horgan 1 month ago
Hi Jonathan,

On 1/5/26 16:47, Jonathan Cameron wrote:
> On Fri, 19 Dec 2025 18:11:08 +0000
> Ben Horgan <ben.horgan@arm.com> wrote:
> 
>> The MPAMSM_EL1 controls the MPAM labeling for an SMCU, Streaming Mode
>> Compute Unit. As there is on MPAM support in kvm, make sure MPAMSM_EL1
>> accesses trigger an UNDEF.
>>
>> The range of valid configurations for the PARTID and PMG in MPAMSM_EL1 is
>> not currently specified in Arm Architectural Reference Manual but the
>> architect has confirmed that it is intended to be the same as that for the
>> cpu configuration in the MPAMy_ELx registers.
> 
> Good to know but I'm not seeing why it matters in this patch. Perhaps
> a little more on that?

Hmmm, yes. This paragraph should go with patch 11 where we start setting
MPAMSM_EL1 with the same value as MPAM0_EL1 and MPAM1_EL1.

> 
>>
>> Signed-off-by: Ben Horgan <ben.horgan@arm.com>
> 
> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
> 
>> ---
>>  arch/arm64/kvm/sys_regs.c | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
>> index c8fd7c6a12a1..72654ab984ee 100644
>> --- a/arch/arm64/kvm/sys_regs.c
>> +++ b/arch/arm64/kvm/sys_regs.c
>> @@ -3373,6 +3373,8 @@ static const struct sys_reg_desc sys_reg_descs[] = {
>>  
>>  	{ SYS_DESC(SYS_MPAM1_EL1), undef_access },
>>  	{ SYS_DESC(SYS_MPAM0_EL1), undef_access },
>> +	{ SYS_DESC(SYS_MPAMSM_EL1), undef_access },
>> +
>>  	{ SYS_DESC(SYS_VBAR_EL1), access_rw, reset_val, VBAR_EL1, 0 },
>>  	{ SYS_DESC(SYS_DISR_EL1), NULL, reset_val, DISR_EL1, 0 },
>>  
> 

Thanks,

Ben