Re: [RFC v2 30/39] scsi: add HAS_IOPORT dependencies

Bjorn Helgaas
2022-05-04T20:42:43Z

On Fri, Apr 29, 2022 at 03:50:51PM +0200, Niklas Schnelle wrote:
> In a future patch HAS_IOPORT=n will result in inb()/outb() and friends
> not being declared. We thus need to add HAS_IOPORT as dependency for
> those drivers using them.

Some of these drivers support devices using either I/O ports or MMIO.
Adding the HAS_IOPORT dependency means MMIO devices that *could* work
on systems without I/O ports, won't work.

Even the MMIO-only devices are probably old and not of much interest.
But if you want to disable them even though they *could* work, I think
that's worth mentioning in the commit log.

> diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
> config SCSI_IPS
> tristate "IBM ServeRAID support"
> - depends on PCI && SCSI
> + depends on PCI && HAS_IOPORT && SCSI

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/ips.c?id=v5.17#n6867

> diff --git a/drivers/scsi/aic7xxx/Kconfig.aic7xxx b/drivers/scsi/aic7xxx/Kconfig.aic7xxx
> config SCSI_AIC94XX
> tristate "Adaptec AIC94xx SAS/SATA support"
> - depends on PCI
> + depends on PCI && HAS_IOPORT
> select SCSI_SAS_LIBSAS
> select FW_LOADER
> help

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/aic7xxx/aic79xx_osm_pci.c?id=v5.17#n304

> diff --git a/drivers/scsi/megaraid/Kconfig.megaraid b/drivers/scsi/megaraid/Kconfig.megaraid
> config MEGARAID_LEGACY
> tristate "LSI Logic Legacy MegaRAID Driver"
> - depends on PCI && SCSI
> + depends on PCI && HAS_IOPORT && SCSI

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/megaraid.c?id=v5.17#n4190

> diff --git a/drivers/scsi/mvsas/Kconfig b/drivers/scsi/mvsas/Kconfig
> config SCSI_MVSAS
> tristate "Marvell 88SE64XX/88SE94XX SAS/SATA support"
> - depends on PCI
> + depends on PCI && HAS_IOPORT
> select SCSI_SAS_LIBSAS
> select FW_LOADER
> help

This turns off all MVSAS support, but apparently only mv_64xx.c uses
I/O ports:

git grep -E "\<(in|out)[bwl]\>" drivers/scsi/mvsas
git grep -E "\<io[rw](8|16|32)\>" drivers/scsi/mvsas

It doesn't look like the Makefile is currently set up to build
mv_64xx.c separately.

Bjorn