Re: [PATCH v2 1/3] scsi: dpt_i2o: drop stale VIRT_TO_BUS dependency

Hannes Reinecke
2022-06-21T08:43:09Z

On 6/17/22 14:57, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> The dpt_i2o driver was fixed to stop using virt_to_bus() in 2008, but
> it still has a stale reference in an error handling code path that could
> never work.
>
> Fix it up to build without VIRT_TO_BUS and remove the Kconfig dependency.
>
> The alternative to this would be to just remove the driver, as it is
> clearly obsolete. The i2o driver layer was removed in 2015 with commit
> 4a72a7af462d ("staging: remove i2o subsystem"), but the even older
> dpt_i2o scsi driver stayed around.
>
> The last non-cleanup patches I could find were from Miquel van Smoorenburg
> and Mark Salyzyn back in 2008, they might know if there is any chance
> of the hardware still being used anywhere.
>
> Fixes: 67af2b060e02 ("[SCSI] dpt_i2o: move from virt_to_bus/bus_to_virt to dma_alloc_coherent")
> Cc: Miquel van Smoorenburg <mikevs@xs4all.net>
> Cc: Mark Salyzyn <salyzyn@android.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> drivers/scsi/Kconfig | 2 +-
> drivers/scsi/dpt_i2o.c | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
> index a9fe5152addd..cf75588a2587 100644
> --- a/drivers/scsi/Kconfig
> +++ b/drivers/scsi/Kconfig
> @@ -460,7 +460,7 @@ config SCSI_MVUMI
>
> config SCSI_DPT_I2O
> tristate "Adaptec I2O RAID support "
> - depends on SCSI && PCI && VIRT_TO_BUS
> + depends on SCSI && PCI
> help
> This driver supports all of Adaptec's I2O based RAID controllers as
> well as the DPT SmartRaid V cards. This is an Adaptec maintained
> diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
> index 2e9155ba7408..55dfe7011912 100644
> --- a/drivers/scsi/dpt_i2o.c
> +++ b/drivers/scsi/dpt_i2o.c
> @@ -52,11 +52,11 @@ MODULE_DESCRIPTION("Adaptec I2O RAID Driver");
>
> #include <linux/timer.h>
> #include <linux/string.h>
> +#include <linux/io.h>
> #include <linux/ioport.h>
> #include <linux/mutex.h>
>
> #include <asm/processor.h> /* for boot_cpu_data */
> -#include <asm/io.h> /* for virt_to_bus, etc. */
>
> #include <scsi/scsi.h>
> #include <scsi/scsi_cmnd.h>
> @@ -2112,7 +2112,7 @@ static irqreturn_t adpt_isr(int irq, void *dev_id)
> } else {
> /* Ick, we should *never* be here */
> printk(KERN_ERR "dpti: reply frame not from pool\n");
> - reply = (u8 *)bus_to_virt(m);
> + goto out;
> }
>
> if (readl(reply) & MSG_FAIL) {

Reviewed-by: Hannes Reinecke <hare@suse.de>

Personally I wouldn't mind to see this driver gone, as it's being built
upon the (long-defunct) I2O specification. We already deleted the i2o
subsystem years ago, so maybe it's time to consign this driver to
history, too.

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare@suse.de +49 911 74053 688
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), GF: Felix Imendörffer