Mailing List Archive

[PATCH 1/3] arm: smmu: allow SMMU to have more IRQs than context banks
I encountered platform, namely Qualcomm SA8155P where SMMU-compatible
IO-MMU advertises more context IQRs than there are context banks. This
should not be an issue, we need to relax the check in the SMMU driver
to allow such configuration.

Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
---
xen/drivers/passthrough/arm/smmu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c
index 32e2ff279b..2dd3688f3b 100644
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -2550,7 +2550,7 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev)
parse_driver_options(smmu);

if (smmu->version > ARM_SMMU_V1 &&
- smmu->num_context_banks != smmu->num_context_irqs) {
+ smmu->num_context_banks > smmu->num_context_irqs) {
dev_err(dev,
"found only %d context interrupt(s) but %d required\n",
smmu->num_context_irqs, smmu->num_context_banks);
--
2.43.0
Re: [PATCH 1/3] arm: smmu: allow SMMU to have more IRQs than context banks [ In reply to ]
Hello,

On 29/03/2024 01:08, Volodymyr Babchuk wrote:
>
>
> I encountered platform, namely Qualcomm SA8155P where SMMU-compatible
NIT: a commit msg should be written in imperative mood

> IO-MMU advertises more context IQRs than there are context banks. This
> should not be an issue, we need to relax the check in the SMMU driver
> to allow such configuration.
>
> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> ---
> xen/drivers/passthrough/arm/smmu.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c
> index 32e2ff279b..2dd3688f3b 100644
> --- a/xen/drivers/passthrough/arm/smmu.c
> +++ b/xen/drivers/passthrough/arm/smmu.c
> @@ -2550,7 +2550,7 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev)
> parse_driver_options(smmu);
>
> if (smmu->version > ARM_SMMU_V1 &&
> - smmu->num_context_banks != smmu->num_context_irqs) {
> + smmu->num_context_banks > smmu->num_context_irqs) {
This was done in Linux by commit:
d1e20222d537 ("iommu/arm-smmu: Error out only if not enough context interrupts")

However, they also ignore superfluous interrupts. Shouldn't we do the same?

~Michal
Re: [PATCH 1/3] arm: smmu: allow SMMU to have more IRQs than context banks [ In reply to ]
Hi,

On 02/04/2024 08:28, Michal Orzel wrote:
> Hello,
>
> On 29/03/2024 01:08, Volodymyr Babchuk wrote:
>>
>>
>> I encountered platform, namely Qualcomm SA8155P where SMMU-compatible
> NIT: a commit msg should be written in imperative mood
>
>> IO-MMU advertises more context IQRs than there are context banks. This
>> should not be an issue, we need to relax the check in the SMMU driver
>> to allow such configuration.
>>
>> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>> ---
>> xen/drivers/passthrough/arm/smmu.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c
>> index 32e2ff279b..2dd3688f3b 100644
>> --- a/xen/drivers/passthrough/arm/smmu.c
>> +++ b/xen/drivers/passthrough/arm/smmu.c
>> @@ -2550,7 +2550,7 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev)
>> parse_driver_options(smmu);
>>
>> if (smmu->version > ARM_SMMU_V1 &&
>> - smmu->num_context_banks != smmu->num_context_irqs) {
>> + smmu->num_context_banks > smmu->num_context_irqs) {
> This was done in Linux by commit:
> d1e20222d537 ("iommu/arm-smmu: Error out only if not enough context interrupts")
>
> However, they also ignore superfluous interrupts. Shouldn't we do the same?

+1. It would be better to avoid allocating stating for IRQs that are
never used.

Cheers,

--
Julien Grall