[PATCH] arm64/Kconfig: introduce GENERIC_ISA_DMA

huanglei814 posted 1 patch 1 month ago
arch/arm64/Kconfig | 3 +++
1 file changed, 3 insertions(+)
[PATCH] arm64/Kconfig: introduce GENERIC_ISA_DMA
Posted by huanglei814 1 month ago
From: huanglei <huanglei@kylinos.cn>

Enable GENERIC_ISA_DMA feature on arm64 platform,
thus, request_dma and free_dma interface can be export.
and driver modules can use the this interfaces on arm64
platform.

Currently, many pcie parallel port drivers still use these
interfaces when ported to arm64 platform.

Signed-off-by: huanglei <huanglei@kylinos.cn>
---
 arch/arm64/Kconfig | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index fd9df6dcc593..986eb251f68f 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -367,6 +367,9 @@ config GENERIC_CSUM
 config GENERIC_CALIBRATE_DELAY
 	def_bool y
 
+config GENERIC_ISA_DMA
+	def_bool y
+
 config SMP
 	def_bool y
 
-- 
2.17.1
Re: [PATCH] arm64/Kconfig: introduce GENERIC_ISA_DMA
Posted by Will Deacon 4 weeks ago
On Fri, Oct 25, 2024 at 09:16:41AM +0800, huanglei814 wrote:
> From: huanglei <huanglei@kylinos.cn>
> 
> Enable GENERIC_ISA_DMA feature on arm64 platform,
> thus, request_dma and free_dma interface can be export.
> and driver modules can use the this interfaces on arm64
> platform.
> 
> Currently, many pcie parallel port drivers still use these
> interfaces when ported to arm64 platform.

Why has it taken so long for anybody to notice?

> Signed-off-by: huanglei <huanglei@kylinos.cn>
> ---
>  arch/arm64/Kconfig | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index fd9df6dcc593..986eb251f68f 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -367,6 +367,9 @@ config GENERIC_CSUM
>  config GENERIC_CALIBRATE_DELAY
>  	def_bool y
>  
> +config GENERIC_ISA_DMA
> +	def_bool y
> +

Does this actually do anything without MAX_DMA_CHANNELS defined?

Will
Re:Re: [PATCH] arm64/Kconfig: introduce GENERIC_ISA_DMA
Posted by huanglei 3 weeks, 6 days ago
    Even if MAX_SMA_CANNELS is not defined, as long as GENETIC-SIA_DMA is enabled, request_rma/free_rma  function will also be exported, and other modules using these two interfaces will not encounter link errors.

    I don't know why others haven't noticed, but I discovered it when debugging pcie parallel port drivers.  And the arm/Kconfig  has been around for a long time.


Best regards!

At 2024-10-28 22:05:45, "Will Deacon" <will@kernel.org> wrote:
>On Fri, Oct 25, 2024 at 09:16:41AM +0800, huanglei814 wrote:
>> From: huanglei <huanglei@kylinos.cn>
>> 
>> Enable GENERIC_ISA_DMA feature on arm64 platform,
>> thus, request_dma and free_dma interface can be export.
>> and driver modules can use the this interfaces on arm64
>> platform.
>> 
>> Currently, many pcie parallel port drivers still use these
>> interfaces when ported to arm64 platform.
>
>Why has it taken so long for anybody to notice?
>
>> Signed-off-by: huanglei <huanglei@kylinos.cn>
>> ---
>>  arch/arm64/Kconfig | 3 +++
>>  1 file changed, 3 insertions(+)
>> 
>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
>> index fd9df6dcc593..986eb251f68f 100644
>> --- a/arch/arm64/Kconfig
>> +++ b/arch/arm64/Kconfig
>> @@ -367,6 +367,9 @@ config GENERIC_CSUM
>>  config GENERIC_CALIBRATE_DELAY
>>  	def_bool y
>>  
>> +config GENERIC_ISA_DMA
>> +	def_bool y
>> +
>
>Does this actually do anything without MAX_DMA_CHANNELS defined?
>
>Will
Re: Re: [PATCH] arm64/Kconfig: introduce GENERIC_ISA_DMA
Posted by Will Deacon 3 weeks, 6 days ago
On Tue, Oct 29, 2024 at 09:41:08AM +0800, huanglei wrote:
>     Even if MAX_SMA_CANNELS is not defined, as long as GENETIC-SIA_DMA is
>     enabled, request_rma/free_rma  function will also be exported, and
>     other modules using these two interfaces will not encounter link
>     errors.
> 
>     I don't know why others haven't noticed, but I discovered it when
>     debugging pcie parallel port drivers.  And the arm/Kconfig  has been
>     around for a long time.

Please try to avoid top-posting in replies, as it makes the conversation
very hard to follow.

> At 2024-10-28 22:05:45, "Will Deacon" <will@kernel.org> wrote:
> >On Fri, Oct 25, 2024 at 09:16:41AM +0800, huanglei814 wrote:
> >> From: huanglei <huanglei@kylinos.cn>
> >> 
> >> Enable GENERIC_ISA_DMA feature on arm64 platform,
> >> thus, request_dma and free_dma interface can be export.
> >> and driver modules can use the this interfaces on arm64
> >> platform.
> >> 
> >> Currently, many pcie parallel port drivers still use these
> >> interfaces when ported to arm64 platform.
> >
> >Why has it taken so long for anybody to notice?
> >
> >> Signed-off-by: huanglei <huanglei@kylinos.cn>
> >> ---
> >>  arch/arm64/Kconfig | 3 +++
> >>  1 file changed, 3 insertions(+)
> >> 
> >> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> >> index fd9df6dcc593..986eb251f68f 100644
> >> --- a/arch/arm64/Kconfig
> >> +++ b/arch/arm64/Kconfig
> >> @@ -367,6 +367,9 @@ config GENERIC_CSUM
> >>  config GENERIC_CALIBRATE_DELAY
> >>  	def_bool y
> >>  
> >> +config GENERIC_ISA_DMA
> >> +	def_bool y
> >> +
> >
> > Does this actually do anything without MAX_DMA_CHANNELS defined?
>
>     Even if MAX_SMA_CANNELS is not defined, as long as GENETIC-SIA_DMA is
>     enabled, request_rma/free_rma  function will also be exported, and
>     other modules using these two interfaces will not encounter link
>     errors.

Do the drivers do anything useful after they've linked? Can you please
provide some in-tree examples of drivers that can be used on arm64 only
once GENERIC_ISA_DMA is selected? If they just need some stubs for
request_dma() and free_dma(), then it feels to me like that should be
the default implementation, rather than having to select something to
get them.

Will
Re: [PATCH] arm64/Kconfig: introduce GENERIC_ISA_DMA
Posted by Arnd Bergmann 3 weeks, 5 days ago
On Tue, Oct 29, 2024, at 13:20, Will Deacon wrote:
> On Tue, Oct 29, 2024 at 09:41:08AM +0800, huanglei wrote:
>>
>>     Even if MAX_SMA_CANNELS is not defined, as long as GENETIC-SIA_DMA is
>>     enabled, request_rma/free_rma  function will also be exported, and
>>     other modules using these two interfaces will not encounter link
>>     errors.
>
> Do the drivers do anything useful after they've linked? Can you please
> provide some in-tree examples of drivers that can be used on arm64 only
> once GENERIC_ISA_DMA is selected? If they just need some stubs for
> request_dma() and free_dma(), then it feels to me like that should be
> the default implementation, rather than having to select something to
> get them.

GENERIC_ISA_DMA does nothing by iself, there also needs to
be an iplementation of CONFIG_ISA_DMA_API in order to use
DMA mode on floppy/parport/soundblaster.

I think this should not be enabled by the architecture
itself, but by the LPC host driver that provides the ISA
style DMA. Most LPC implementations don't have this, and
most arm64 machines have no LPC or PC104 at all.

Note that PCI-ISA bridges can sometimes provide ISA devices,
but ISA DMA won't work behind a PCIe bridge.

The patch also needs a better changelog text to explain
specifically which arm64 platform has PC style DMA support,
and what devices are connected to it. 

     Arnd
Re:Re:Re: [PATCH] arm64/Kconfig: introduce GENERIC_ISA_DMA
Posted by huanglei 3 weeks, 6 days ago
   There was a slight word spelling error in the previous reply, Now correct it.

 Even if MAX_DMA_CHANNELS is not defined, as long as GENERIC_ISA_DMA is enabled, request_dma/free_dma  function will also be exported, and other modules using these two interfaces will not encounter link errors.
I don't know why others haven't noticed, but I discovered it when debugging pcie parallel port drivers.  And the arm/Kconfig  has been around for a long time.

Best regards!

>At 2024-10-28 22:05:45, "Will Deacon" <will@kernel.org> wrote:
>>On Fri, Oct 25, 2024 at 09:16:41AM +0800, huanglei814 wrote:
>>> From: huanglei <huanglei@kylinos.cn>
>>> 
>>> Enable GENERIC_ISA_DMA feature on arm64 platform,
>>> thus, request_dma and free_dma interface can be export.
>>> and driver modules can use the this interfaces on arm64
>>> platform.
>>> 
>>> Currently, many pcie parallel port drivers still use these
>>> interfaces when ported to arm64 platform.
>>
>>Why has it taken so long for anybody to notice?
>>
>>> Signed-off-by: huanglei <huanglei@kylinos.cn>
>>> ---
>>>  arch/arm64/Kconfig | 3 +++
>>>  1 file changed, 3 insertions(+)
>>> 
>>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
>>> index fd9df6dcc593..986eb251f68f 100644
>>> --- a/arch/arm64/Kconfig
>>> +++ b/arch/arm64/Kconfig
>>> @@ -367,6 +367,9 @@ config GENERIC_CSUM
>>>  config GENERIC_CALIBRATE_DELAY
>>>  	def_bool y
>>>  
>>> +config GENERIC_ISA_DMA
>>> +	def_bool y
>>> +
>>
>>Does this actually do anything without MAX_DMA_CHANNELS defined?
>>
>>Will