diff mbox series

[v2,3/7] iommu/arm-smmu: Add dependency on io-pgtable format modules

Message ID 1608597876-32367-4-git-send-email-isaacm@codeaurora.org (mailing list archive)
State New, archived
Headers show
Series iommu: Permit modular builds of io-pgtable drivers | expand

Commit Message

Isaac J. Manjarres Dec. 22, 2020, 12:44 a.m. UTC
The SMMU driver depends on the availability of the ARM LPAE and
ARM V7S io-pgtable format code to work properly. In preparation
for having the io-pgtable formats as modules, add a "pre"
dependency with MODULE_SOFTDEP() to ensure that the io-pgtable
format modules are loaded before loading the ARM SMMU driver module.

Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
---
 drivers/iommu/arm/arm-smmu/arm-smmu.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Robin Murphy Dec. 22, 2020, 7:27 p.m. UTC | #1
On 2020-12-22 00:44, Isaac J. Manjarres wrote:
> The SMMU driver depends on the availability of the ARM LPAE and
> ARM V7S io-pgtable format code to work properly. In preparation

Nit: we don't really depend on v7s - we *can* use it if it's available, 
address constraints are suitable, and the SMMU implementation actually 
supports it (many don't), but we can still quite happily not use it even 
so. LPAE is mandatory in the architecture so that's our only hard 
requirement, embodied in the kconfig select.

This does mean there may technically still be a corner case involving 
ARM_SMMU=y and IO_PGTABLE_ARM_V7S=m, but at worst it's now a runtime 
failure rather than a build error, so unless and until anyone 
demonstrates that it actually matters I don't feel particularly inclined 
to give it much thought.

Robin.

> for having the io-pgtable formats as modules, add a "pre"
> dependency with MODULE_SOFTDEP() to ensure that the io-pgtable
> format modules are loaded before loading the ARM SMMU driver module.
> 
> Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
> ---
>   drivers/iommu/arm/arm-smmu/arm-smmu.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c b/drivers/iommu/arm/arm-smmu/arm-smmu.c
> index d8c6bfd..a72649f 100644
> --- a/drivers/iommu/arm/arm-smmu/arm-smmu.c
> +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c
> @@ -2351,3 +2351,4 @@ MODULE_DESCRIPTION("IOMMU API for ARM architected SMMU implementations");
>   MODULE_AUTHOR("Will Deacon <will@kernel.org>");
>   MODULE_ALIAS("platform:arm-smmu");
>   MODULE_LICENSE("GPL v2");
> +MODULE_SOFTDEP("pre: io-pgtable-arm io-pgtable-arm-v7s");
>
Isaac J. Manjarres Dec. 22, 2020, 7:49 p.m. UTC | #2
On 2020-12-22 11:27, Robin Murphy wrote:
> On 2020-12-22 00:44, Isaac J. Manjarres wrote:
>> The SMMU driver depends on the availability of the ARM LPAE and
>> ARM V7S io-pgtable format code to work properly. In preparation
> 
> Nit: we don't really depend on v7s - we *can* use it if it's
> available, address constraints are suitable, and the SMMU
> implementation actually supports it (many don't), but we can still
> quite happily not use it even so. LPAE is mandatory in the
> architecture so that's our only hard requirement, embodied in the
> kconfig select.
> 
> This does mean there may technically still be a corner case involving
> ARM_SMMU=y and IO_PGTABLE_ARM_V7S=m, but at worst it's now a runtime
> failure rather than a build error, so unless and until anyone
> demonstrates that it actually matters I don't feel particularly
> inclined to give it much thought.
> 
> Robin.
> 
Okay, I'll fix up the commit message, as well as the code, so that it
only depends on io-pgtable-arm.

Thanks,
Isaac
>> for having the io-pgtable formats as modules, add a "pre"
>> dependency with MODULE_SOFTDEP() to ensure that the io-pgtable
>> format modules are loaded before loading the ARM SMMU driver module.
>> 
>> Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
>> ---
>>   drivers/iommu/arm/arm-smmu/arm-smmu.c | 1 +
>>   1 file changed, 1 insertion(+)
>> 
>> diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c 
>> b/drivers/iommu/arm/arm-smmu/arm-smmu.c
>> index d8c6bfd..a72649f 100644
>> --- a/drivers/iommu/arm/arm-smmu/arm-smmu.c
>> +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c
>> @@ -2351,3 +2351,4 @@ MODULE_DESCRIPTION("IOMMU API for ARM 
>> architected SMMU implementations");
>>   MODULE_AUTHOR("Will Deacon <will@kernel.org>");
>>   MODULE_ALIAS("platform:arm-smmu");
>>   MODULE_LICENSE("GPL v2");
>> +MODULE_SOFTDEP("pre: io-pgtable-arm io-pgtable-arm-v7s");
>> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Robin Murphy Dec. 23, 2020, 1:05 p.m. UTC | #3
On 2020-12-22 19:49, isaacm@codeaurora.org wrote:
> On 2020-12-22 11:27, Robin Murphy wrote:
>> On 2020-12-22 00:44, Isaac J. Manjarres wrote:
>>> The SMMU driver depends on the availability of the ARM LPAE and
>>> ARM V7S io-pgtable format code to work properly. In preparation
>>
>> Nit: we don't really depend on v7s - we *can* use it if it's
>> available, address constraints are suitable, and the SMMU
>> implementation actually supports it (many don't), but we can still
>> quite happily not use it even so. LPAE is mandatory in the
>> architecture so that's our only hard requirement, embodied in the
>> kconfig select.
>>
>> This does mean there may technically still be a corner case involving
>> ARM_SMMU=y and IO_PGTABLE_ARM_V7S=m, but at worst it's now a runtime
>> failure rather than a build error, so unless and until anyone
>> demonstrates that it actually matters I don't feel particularly
>> inclined to give it much thought.
>>
>> Robin.
>>
> Okay, I'll fix up the commit message, as well as the code, so that it
> only depends on io-pgtable-arm.

Well, IIUC it would make sense to keep the softdep for when the v7s 
module *is* present; I just wanted to clarify that it's more of a 
nice-to-have rather than a necessity.

Robin.

> Thanks,
> Isaac
>>> for having the io-pgtable formats as modules, add a "pre"
>>> dependency with MODULE_SOFTDEP() to ensure that the io-pgtable
>>> format modules are loaded before loading the ARM SMMU driver module.
>>>
>>> Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
>>> ---
>>>   drivers/iommu/arm/arm-smmu/arm-smmu.c | 1 +
>>>   1 file changed, 1 insertion(+)
>>>
>>> diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c 
>>> b/drivers/iommu/arm/arm-smmu/arm-smmu.c
>>> index d8c6bfd..a72649f 100644
>>> --- a/drivers/iommu/arm/arm-smmu/arm-smmu.c
>>> +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c
>>> @@ -2351,3 +2351,4 @@ MODULE_DESCRIPTION("IOMMU API for ARM 
>>> architected SMMU implementations");
>>>   MODULE_AUTHOR("Will Deacon <will@kernel.org>");
>>>   MODULE_ALIAS("platform:arm-smmu");
>>>   MODULE_LICENSE("GPL v2");
>>> +MODULE_SOFTDEP("pre: io-pgtable-arm io-pgtable-arm-v7s");
>>>
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Isaac J. Manjarres Dec. 23, 2020, 3:10 p.m. UTC | #4
On 2020-12-23 05:05, Robin Murphy wrote:
> On 2020-12-22 19:49, isaacm@codeaurora.org wrote:
>> On 2020-12-22 11:27, Robin Murphy wrote:
>>> On 2020-12-22 00:44, Isaac J. Manjarres wrote:
>>>> The SMMU driver depends on the availability of the ARM LPAE and
>>>> ARM V7S io-pgtable format code to work properly. In preparation
>>> 
>>> Nit: we don't really depend on v7s - we *can* use it if it's
>>> available, address constraints are suitable, and the SMMU
>>> implementation actually supports it (many don't), but we can still
>>> quite happily not use it even so. LPAE is mandatory in the
>>> architecture so that's our only hard requirement, embodied in the
>>> kconfig select.
>>> 
>>> This does mean there may technically still be a corner case involving
>>> ARM_SMMU=y and IO_PGTABLE_ARM_V7S=m, but at worst it's now a runtime
>>> failure rather than a build error, so unless and until anyone
>>> demonstrates that it actually matters I don't feel particularly
>>> inclined to give it much thought.
>>> 
>>> Robin.
>>> 
>> Okay, I'll fix up the commit message, as well as the code, so that it
>> only depends on io-pgtable-arm.
> 
> Well, IIUC it would make sense to keep the softdep for when the v7s
> module *is* present; I just wanted to clarify that it's more of a
> nice-to-have rather than a necessity.
> 
> Robin.
> 
Understood, I will keep it there and reword the commit msg. I just tried 
it out in an environment
where the io-pgtable-arm-v7s module isn't present, and I didn't see any
warnings or error messages, and the SMMU driver module was loaded 
properly,
so yes, it's good to have it.

Thanks,
Isaac
>> Thanks,
>> Isaac
>>>> for having the io-pgtable formats as modules, add a "pre"
>>>> dependency with MODULE_SOFTDEP() to ensure that the io-pgtable
>>>> format modules are loaded before loading the ARM SMMU driver module.
>>>> 
>>>> Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
>>>> ---
>>>>   drivers/iommu/arm/arm-smmu/arm-smmu.c | 1 +
>>>>   1 file changed, 1 insertion(+)
>>>> 
>>>> diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c 
>>>> b/drivers/iommu/arm/arm-smmu/arm-smmu.c
>>>> index d8c6bfd..a72649f 100644
>>>> --- a/drivers/iommu/arm/arm-smmu/arm-smmu.c
>>>> +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c
>>>> @@ -2351,3 +2351,4 @@ MODULE_DESCRIPTION("IOMMU API for ARM 
>>>> architected SMMU implementations");
>>>>   MODULE_AUTHOR("Will Deacon <will@kernel.org>");
>>>>   MODULE_ALIAS("platform:arm-smmu");
>>>>   MODULE_LICENSE("GPL v2");
>>>> +MODULE_SOFTDEP("pre: io-pgtable-arm io-pgtable-arm-v7s");
>>>> 
>>> 
>>> _______________________________________________
>>> linux-arm-kernel mailing list
>>> linux-arm-kernel@lists.infradead.org
>>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
diff mbox series

Patch

diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c b/drivers/iommu/arm/arm-smmu/arm-smmu.c
index d8c6bfd..a72649f 100644
--- a/drivers/iommu/arm/arm-smmu/arm-smmu.c
+++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c
@@ -2351,3 +2351,4 @@  MODULE_DESCRIPTION("IOMMU API for ARM architected SMMU implementations");
 MODULE_AUTHOR("Will Deacon <will@kernel.org>");
 MODULE_ALIAS("platform:arm-smmu");
 MODULE_LICENSE("GPL v2");
+MODULE_SOFTDEP("pre: io-pgtable-arm io-pgtable-arm-v7s");