2016-03-21 04:05:52

by Finn Thain

[permalink] [raw]
Subject: [PATCH v3 00/23] ncr5380: Eliminate macros, reduce code duplication, fix bugs etc


This patch series has more macro elimination and some tweaks to the
DMA hooks so that all the wrapper drivers can share the same core
DMA algorithm. This resolves the major discrepancies between the two
core drivers, which relate to code conditional on the REAL_DMA and
PSEUDO_DMA macros.

After all the wrapper drivers agree on the DMA hook api, the core driver
fork gets resolved. NCR5380.c is adopted by atari_scsi and sun3_scsi and
atari_NCR5380.c is then deleted.

Historically, the 5380 drivers suffered from over-use of conditional
compilation, which caused the compile-time configuration space to explode,
leading to core driver code that was practically untestable, unmaintainable
and difficult to reason about. It also prevented driver modules from
sharing object code.

Along with REAL_DMA, REAL_DMA_POLL and PSEUDO_DMA, most of the remaining
macros are also eradicated, such as CONFIG_SCSI_GENERIC_NCR53C400,
SUPPORT_TAGS, DONT_USE_INTR, AUTOPROBE_IRQ and BIOSPARAM.

Also in this patch series, some duplicated documentation is removed and
the PDMA implementation in mac_scsi finally gets fixed.

This patch series was tested by exercising the dmx3191d and mac_scsi modules
on suitable hardware. Michael has tested atari_scsi on an Atari Falcon.
Help with driver testing on ISA cards is sought as I don't have such
hardware. Likewise RiscPC ecards and Sun 3.

Changes since v1:
- Patch 4: don't remove MIN_DMA_SIZE macro from wrapper drivers.
- Patch 9: improve commit log entry and add 'Reviewed-by' tag.
- Patch 14: reduce shost->max_lun limit instead of adding MAX_LUN limit.
- Patches 20 and 22: set the default cmd_per_lun to 4.
- For the rest: add 'Reviewed-by' tag.

Changes since v2:
- Patches 20 and 22: revert the default cmd_per_lun to 2, like the v1 patch
series.
- Add patch 23 to fix a theoretical bus reset/autosense issue.

---
Documentation/scsi/g_NCR5380.txt | 17
Documentation/scsi/scsi-parameters.txt | 11
drivers/scsi/Kconfig | 11
drivers/scsi/NCR5380.c | 659 ++++----
drivers/scsi/NCR5380.h | 143 -
drivers/scsi/arm/cumana_1.c | 25
drivers/scsi/arm/oak.c | 22
drivers/scsi/atari_NCR5380.c | 2676 ---------------------------------
drivers/scsi/atari_scsi.c | 144 -
drivers/scsi/dmx3191d.c | 10
drivers/scsi/dtc.c | 27
drivers/scsi/dtc.h | 7
drivers/scsi/g_NCR5380.c | 143 -
drivers/scsi/g_NCR5380.h | 26
drivers/scsi/mac_scsi.c | 239 +-
drivers/scsi/pas16.c | 27
drivers/scsi/pas16.h | 5
drivers/scsi/sun3_scsi.c | 47
drivers/scsi/t128.c | 19
drivers/scsi/t128.h | 7
20 files changed, 634 insertions(+), 3631 deletions(-)





2016-03-22 22:24:41

by Ondrej Zary

[permalink] [raw]
Subject: Re: [PATCH v3 00/23] ncr5380: Eliminate macros, reduce code duplication, fix bugs etc

On Monday 21 March 2016 03:31:49 Finn Thain wrote:
>
> This patch series has more macro elimination and some tweaks to the
> DMA hooks so that all the wrapper drivers can share the same core
> DMA algorithm. This resolves the major discrepancies between the two
> core drivers, which relate to code conditional on the REAL_DMA and
> PSEUDO_DMA macros.
>
> After all the wrapper drivers agree on the DMA hook api, the core driver
> fork gets resolved. NCR5380.c is adopted by atari_scsi and sun3_scsi and
> atari_NCR5380.c is then deleted.
>
> Historically, the 5380 drivers suffered from over-use of conditional
> compilation, which caused the compile-time configuration space to explode,
> leading to core driver code that was practically untestable, unmaintainable
> and difficult to reason about. It also prevented driver modules from
> sharing object code.
>
> Along with REAL_DMA, REAL_DMA_POLL and PSEUDO_DMA, most of the remaining
> macros are also eradicated, such as CONFIG_SCSI_GENERIC_NCR53C400,
> SUPPORT_TAGS, DONT_USE_INTR, AUTOPROBE_IRQ and BIOSPARAM.
>
> Also in this patch series, some duplicated documentation is removed and
> the PDMA implementation in mac_scsi finally gets fixed.
>
> This patch series was tested by exercising the dmx3191d and mac_scsi modules
> on suitable hardware. Michael has tested atari_scsi on an Atari Falcon.
> Help with driver testing on ISA cards is sought as I don't have such
> hardware. Likewise RiscPC ecards and Sun 3.

Tested on HP C2502 (53C400A chip), Canon FG2-5202 (53C400 chip) and DTC-3181L
(DTCT-436P chip) ISA cards - everything works fine!

Thanks.

Tested-by: Ondrej Zary <[email protected]>

HP C2502:
scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x280, n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 128, this_id 7, flags { }, options { }

Canon FG2-5202:
scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x0, n_io_port 0, base 0xd8000, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 128, this_id 7, flags { }, options { }

DTC-3181L:
scsi host2: Generic NCR5380/NCR53C400 SCSI, io_port 0x240, n_io_port 16, base 0x0, irq 0, can_queue 16, cmd_per_lun 2, sg_tablesize 128, this_id 7, flags { }, options { }

--
Ondrej Zary

2016-03-23 01:36:28

by Finn Thain

[permalink] [raw]
Subject: Re: [PATCH v3 00/23] ncr5380: Eliminate macros, reduce code duplication, fix bugs etc


On Tue, 22 Mar 2016, Ondrej Zary wrote:

> Tested on HP C2502 (53C400A chip), Canon FG2-5202 (53C400 chip) and
> DTC-3181L (DTCT-436P chip) ISA cards - everything works fine!
>
> Thanks.

Thanks for testing, Ondrej.

>
> Tested-by: Ondrej Zary <[email protected]>

Hannes, would you please take a look at patches 04/23, 14/23, 20/23 and
23/23 when convenient? These four patches need a "reviewed-by" tag.

--