diff mbox

[v2] scsi: advansys needs ISA dma api for ISA support

Message ID 4351271.eUtUWpTn54@wuerfel (mailing list archive)
State New, archived
Headers show

Commit Message

Arnd Bergmann Oct. 16, 2015, 12:13 p.m. UTC
The advansys drvier uses the request_dma function that is used on ISA
machines for the internal DMA controller, which causes build errors
on platforms that have ISA slots but do not provide the ISA DMA API:

drivers/scsi/advansys.c: In function 'advansys_board_found':
drivers/scsi/advansys.c:11300:10: error: implicit declaration of function 'request_dma' [-Werror=implicit-function-declaration]

The problem now showed up in ARM randconfig builds after commit
6571fb3f8b7f ("advansys: Update to version 3.5 and remove compilation
warning") made it possible to build on platforms that have neither
VIRT_TO_BUS nor ISA_DMA_API but that do have ISA.

This adds a dependency to only build the driver on ISA based machines
if they also support ISA_DMA_API, or if they EISA or PCI are also
enabled.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Hannes Reinecke Oct. 16, 2015, 12:16 p.m. UTC | #1
On 10/16/2015 02:13 PM, Arnd Bergmann wrote:
> The advansys drvier uses the request_dma function that is used on ISA
> machines for the internal DMA controller, which causes build errors
> on platforms that have ISA slots but do not provide the ISA DMA API:
> 
> drivers/scsi/advansys.c: In function 'advansys_board_found':
> drivers/scsi/advansys.c:11300:10: error: implicit declaration of function 'request_dma' [-Werror=implicit-function-declaration]
> 
> The problem now showed up in ARM randconfig builds after commit
> 6571fb3f8b7f ("advansys: Update to version 3.5 and remove compilation
> warning") made it possible to build on platforms that have neither
> VIRT_TO_BUS nor ISA_DMA_API but that do have ISA.
> 
> This adds a dependency to only build the driver on ISA based machines
> if they also support ISA_DMA_API, or if they EISA or PCI are also
> enabled.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> 
Reviewed-by: Hannes Reinecke <hare@suse.de>

Cheers,

Hannes
James Bottomley Oct. 16, 2015, 1:53 p.m. UTC | #2
On Fri, 2015-10-16 at 14:13 +0200, Arnd Bergmann wrote:
> The advansys drvier uses the request_dma function that is used on ISA
> machines for the internal DMA controller, which causes build errors
> on platforms that have ISA slots but do not provide the ISA DMA API:
> 
> drivers/scsi/advansys.c: In function 'advansys_board_found':
> drivers/scsi/advansys.c:11300:10: error: implicit declaration of function 'request_dma' [-Werror=implicit-function-declaration]
> 
> The problem now showed up in ARM randconfig builds after commit
> 6571fb3f8b7f ("advansys: Update to version 3.5 and remove compilation
> warning") made it possible to build on platforms that have neither
> VIRT_TO_BUS nor ISA_DMA_API but that do have ISA.
> 
> This adds a dependency to only build the driver on ISA based machines
> if they also support ISA_DMA_API, or if they EISA or PCI are also
> enabled.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> 
> diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
> index d2f480b04a52..1d8b8257773d 100644
> --- a/drivers/scsi/Kconfig
> +++ b/drivers/scsi/Kconfig
> @@ -498,7 +498,7 @@ config SCSI_DPT_I2O
>  config SCSI_ADVANSYS
>  	tristate "AdvanSys SCSI support"
>  	depends on SCSI
> -	depends on ISA || EISA || PCI
> +	depends on (ISA && ISA_DMA_API) || EISA || PCI

I thought the desire was to avoid a compile failure when ISA && !
ISA_DMA_API?  Won't this one fail if ISA is defined with either EISA or
PCI and !ISA_DMA_API?

James


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arnd Bergmann Oct. 16, 2015, 2:19 p.m. UTC | #3
On Friday 16 October 2015 06:53:44 James Bottomley wrote:
> > 
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > 
> > diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
> > index d2f480b04a52..1d8b8257773d 100644
> > --- a/drivers/scsi/Kconfig
> > +++ b/drivers/scsi/Kconfig
> > @@ -498,7 +498,7 @@ config SCSI_DPT_I2O
> >  config SCSI_ADVANSYS
> >       tristate "AdvanSys SCSI support"
> >       depends on SCSI
> > -     depends on ISA || EISA || PCI
> > +     depends on (ISA && ISA_DMA_API) || EISA || PCI
> 
> I thought the desire was to avoid a compile failure when ISA && !
> ISA_DMA_API?  Won't this one fail if ISA is defined with either EISA or
> PCI and !ISA_DMA_API?

I thought I had it ruled out, but now I've actually found a combination:
we can build an ARM kernel that supports two ancient machines, and one
of them supports ISA (but not ISA_DMA_API), while the other one supports
PCI. I had looked through several thousand randconfig builds and not
found this combination together with advansys, but I guess that is
because those were mostly old builds from the times when there was
a dependency on VIRT_TO_BUS that this platform doesn't have.

So screw this one and go back to the original patch.

	Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
James Bottomley Oct. 16, 2015, 2:26 p.m. UTC | #4
On Fri, 2015-10-16 at 16:19 +0200, Arnd Bergmann wrote:
> On Friday 16 October 2015 06:53:44 James Bottomley wrote:
> > > 
> > > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > > 
> > > diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
> > > index d2f480b04a52..1d8b8257773d 100644
> > > --- a/drivers/scsi/Kconfig
> > > +++ b/drivers/scsi/Kconfig
> > > @@ -498,7 +498,7 @@ config SCSI_DPT_I2O
> > >  config SCSI_ADVANSYS
> > >       tristate "AdvanSys SCSI support"
> > >       depends on SCSI
> > > -     depends on ISA || EISA || PCI
> > > +     depends on (ISA && ISA_DMA_API) || EISA || PCI
> > 
> > I thought the desire was to avoid a compile failure when ISA && !
> > ISA_DMA_API?  Won't this one fail if ISA is defined with either EISA or
> > PCI and !ISA_DMA_API?
> 
> I thought I had it ruled out, but now I've actually found a combination:
> we can build an ARM kernel that supports two ancient machines, and one
> of them supports ISA (but not ISA_DMA_API), while the other one supports
> PCI. I had looked through several thousand randconfig builds and not
> found this combination together with advansys, but I guess that is
> because those were mostly old builds from the times when there was
> a dependency on VIRT_TO_BUS that this platform doesn't have.
> 
> So screw this one and go back to the original patch.

Agreed ... you've also got PA-RISC that enables EISA and is !
DMA_ISA_API.

James


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index d2f480b04a52..1d8b8257773d 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -498,7 +498,7 @@  config SCSI_DPT_I2O
 config SCSI_ADVANSYS
 	tristate "AdvanSys SCSI support"
 	depends on SCSI
-	depends on ISA || EISA || PCI
+	depends on (ISA && ISA_DMA_API) || EISA || PCI
 	help
 	  This is a driver for all SCSI host adapters manufactured by
 	  AdvanSys. It is documented in the kernel source in