Skip to content

Fixes, cleanups and modernization for NCR5380 drivers

Finn Thain linux-arm-kernel linux-m68k linux-scsi 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest37 patches 6 repliesIn review
  2. v236 patches 57 repliesSuperseded
  3. v129 patches 30 repliesSuperseded

Changes in v3 from the cover letter

- Addressed issues raised in code review (see relevant patches for details).
- Fixed a checkpatch warning in patch 22.
- Added patch 37 to fix a typo.

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/37ncr5380: Use printk() not pr_debug()drivers/scsi/NCR5380.h+2 -10 replies
2/37ncr5380: Remove unused hostdata fieldsdrivers/scsi/dmx3191d.c drivers/scsi/mac_scsi.c drivers/scsi/mac_scsi.h +2 more+4 -410 replies
3/37ncr5380: Fix compiler warnings and __setup optionsdrivers/scsi/dtc.c drivers/scsi/pas16.c drivers/scsi/t128.c+26 -30 replies
4/37ncr5380: Remove unused macros+0 -00 replies
5/37ncr5380: Remove useless prototypesdrivers/scsi/atari_scsi.c drivers/scsi/dtc.h drivers/scsi/g_NCR5380.c +8 more+11 -510 replies
6/37ncr5380: Remove more useless prototypesdrivers/scsi/NCR5380.h drivers/scsi/atari_NCR5380.c drivers/scsi/atari_scsi.c +4 more+50 -610 replies
7/37ncr5380: Cleanup TAG_NEXT and TAG_NONE macrosdrivers/scsi/NCR5380.c drivers/scsi/NCR5380.h drivers/scsi/atari_NCR5380.c +1 more+27 -510 replies
8/37ncr5380: Remove redundant AUTOSENSE macro+0 -00 replies
9/37ncr5380: Remove duplicate commentsdrivers/scsi/dtc.c drivers/scsi/dtc.h drivers/scsi/g_NCR5380.c +9 more+1 -1950 replies
10/37ncr5380: Fix SCSI_IRQ_NONE bugs+0 -00 replies
11/37ncr5380: Remove NCR5380_STATSdrivers/scsi/NCR5380.c drivers/scsi/NCR5380.h drivers/scsi/atari_NCR5380.c +2 more+0 -2520 replies
12/37ncr5380: Cleanup host info() methods+0 -00 replies
13/37ncr5380: Move static PDMA spin counters to host data+0 -00 replies
14/37ncr5380: Remove pointless compiler command line override macrosdrivers/scsi/atari_scsi.c drivers/scsi/atari_scsi.h drivers/scsi/mac_scsi.c +3 more+20 -580 replies
15/37ncr5380: Remove *_RELEASE macros+0 -00 replies
16/37ncr5380: Drop legacy scsi.h include+0 -00 replies
17/37dmx3191d: Use NO_IRQdrivers/scsi/dmx3191d.c+8 -170 replies
18/37mac_scsi: Remove headerdrivers/scsi/mac_scsi.c drivers/scsi/mac_scsi.h+20 -430 replies
19/37mac_scsi: Add module option to Kconfigdrivers/scsi/Kconfig drivers/scsi/mac_scsi.c+38 -760 replies
20/37mac_scsi: Cleanup PDMA codedrivers/scsi/mac_scsi.c+62 -600 replies
21/37mac_scsi: Convert to platform devicearch/m68k/include/asm/macintosh.h arch/m68k/mac/config.c drivers/scsi/mac_scsi.c+262 -1330 replies
22/37atari_scsi: Fix atari_scsi deadlocks on Falconarch/m68k/atari/stdma.c arch/m68k/include/asm/atari_stdma.h drivers/scsi/atari_NCR5380.c +1 more+66 -1070 replies
23/37atari_scsi: Convert to platform devicearch/m68k/atari/config.c drivers/scsi/atari_scsi.c drivers/scsi/atari_scsi.h+237 -2310 replies
24/37atari_scsi: Remove headerdrivers/scsi/atari_scsi.c drivers/scsi/atari_scsi.h+26 -490 replies
25/37sun3_scsi: Convert to platform devicearch/m68k/sun3/config.c drivers/scsi/sun3_scsi.c drivers/scsi/sun3_scsi.h+245 -2223 replies
26/37sun3_scsi: Move macro definitionsdrivers/scsi/sun3_scsi.c drivers/scsi/sun3_scsi.h+32 -380 replies
27/37ncr5380: Remove ENABLE_IRQ/DISABLE_IRQ macrosdrivers/scsi/atari_NCR5380.c drivers/scsi/atari_scsi.c drivers/scsi/sun3_NCR5380.c +1 more+0 -320 replies
28/37atari_NCR5380: Refactor Falcon special casesdrivers/scsi/NCR5380.h drivers/scsi/atari_NCR5380.c drivers/scsi/atari_scsi.c+31 -240 replies
29/37atari_NCR5380: Refactor Falcon lockingdrivers/scsi/atari_NCR5380.c drivers/scsi/atari_scsi.c+62 -570 replies
30/37atari_NCR5380: Merge from sun3_NCR5380.cdrivers/scsi/atari_NCR5380.c drivers/scsi/atari_scsi.c+193 -160 replies
31/37sun3_scsi: Adopt atari_NCR5380 core driver and remove sun3_NCR5380.cMAINTAINERS drivers/scsi/sun3_NCR5380.c drivers/scsi/sun3_scsi.c+6 -28540 replies
32/37atari_NCR5380: Merge from NCR5380.cdrivers/scsi/atari_NCR5380.c+87 -1220 replies
33/37atari_NCR5380: Introduce FLAG_TAGGED_QUEUINGdrivers/scsi/NCR5380.h drivers/scsi/atari_NCR5380.c drivers/scsi/atari_scsi.c +2 more+28 -230 replies
34/37atari_NCR5380: Move static TagAlloc array to host datadrivers/scsi/NCR5380.h drivers/scsi/atari_NCR5380.c+21 -180 replies
35/37atari_NCR5380: Move static co-routine variables to host datadrivers/scsi/NCR5380.h drivers/scsi/atari_NCR5380.c drivers/scsi/atari_scsi.c+28 -430 replies
36/37atari_NCR5380: Remove RESET_RUN_DONE macrodrivers/scsi/atari_NCR5380.c drivers/scsi/sun3_scsi.c+0 -890 replies
37/37atari_NCR5380: Fix "transfered" typodrivers/scsi/atari_NCR5380.c+4 -40 replies

Reviews trailers per patch

29 of 37 patches have a Reviewed-by or Acked-by.

PatchHannes ReineckeMichael SchmitzGeert Uytterhoeven
1/37R-b T-b
2/37R-b
3/37R-b
4/37
5/37R-b T-b
6/37R-b T-b
7/37R-b T-b
8/37
9/37R-b
10/37
11/37R-b T-b
12/37
13/37
14/37R-b T-b
15/37
16/37
17/37R-b
18/37R-b
19/37R-b
20/37R-b
21/37R-b A-b
22/37R-b T-b A-b
23/37R-b T-b A-b
24/37R-b T-b
25/37R-b R-b A-b A-b
26/37R-b
27/37R-b T-b
28/37R-b T-b
29/37R-b T-b
30/37R-b T-b
31/37R-b
32/37R-b T-b
33/37R-b T-b
34/37R-b T-b
35/37R-b T-b
36/37R-b T-b
37/37

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v3 thread

Cover letter [PATCH v3 00/37] Fixes, cleanups and modernization for NCR5380 drivers

This patch series has fixes for bugs and compiler warnings as well as code cleanup and modernization. It covers all ten NCR5380 drivers and the three core NCR5380 drivers so it's fairly large.

These patches remove a lot of duplicated code and C pre-processor abuse. There are also patches for scsi_add_host() conversion for atari_scsi, mac_scsi and sun3_scsi.

Some steps are taken toward re-unification of the NCR5380 core driver forks by reducing divergence between them. Also, the atari_NCR5380.c core driver is generalized so it can be used by sun3_scsi.c (and others).

I have compile-tested all of the NCR5380 drivers (x86, ARM and m68k) and executed mac_scsi and dmx3191d on suitable hardware. I found no regressions but the core NCR5380 drivers have bugs unrelated to these patches.

Testing mac_scsi and dmx3191d provides only limited code coverage for these patches. Some testing on Sun 3, Atari ST and/or Atari TT would be nice (I don't have the hardware).

There are old bugs relating to exception handling and autosense in the core NCR5380 drivers that can make testing difficult. I'm working on a series of patches to address these bugs. Those patches are not yet ready for submission but they were helpful for the testing I did and may be helpful to other testers. Let me know if so.

Changes since v1:
- Re-based to v3.17.
- Addressed issues raised in code review (see relevant patches for details).
- Added patches 30 to 36, to remove sun3_NCR5380.c entirely and remove more static variables from atari_NCR5380.c.

This patch set stops short of parameterizing the drivers with platform_data and/or ops struct. IMHO, it would be premature to do such refactoring before drivers have been purged of static variables and certain #ifdefs. After that is done, entire modules could be replaced with platform devices.

Several patches in this set address issues with the tagged command queueing code (see patches 7, 33 and 34). I've since learned from recent discussions on the linux-scsi list that use of the tag member in struct scsi_cmnd is deprecated. If removal of the tag member is imminent then it may be better to remove TCQ support from all of the NCR5380 drivers instead of this cleanup. Or it could be done separately.

Removal of TCQ code might make re-unification easier, by bringing atari_NCR5380.c closer to NCR5380.c and eliminating some #ifdefs. Changes to the TCQ code would affect atari_scsi, being the only driver to #define SUPPORT_TAGS.

Changes since v2:
- Addressed issues raised in code review (see relevant patches for details).
- Fixed a checkpatch warning in patch 22.
- Added patch 37 to fix a typo.

---
 MAINTAINERS                         |    1 
 arch/m68k/atari/config.c            |   27 
 arch/m68k/atari/stdma.c             |   61 
 arch/m68k/include/asm/atari_stdma.h |    4 
 arch/m68k/include/asm/macintosh.h   |    4 
 arch/m68k/mac/config.c              |  146 +
 arch/m68k/sun3/config.c             |   60 
 drivers/scsi/Kconfig                |    2 
 drivers/scsi/NCR5380.c              |  295 +--
 drivers/scsi/NCR5380.h              |   78 
 drivers/scsi/arm/cumana_1.c         |   18 
 drivers/scsi/arm/oak.c              |   23 
 drivers/scsi/atari_NCR5380.c        |  983 +++++-------
 drivers/scsi/atari_scsi.c           |  673 +++-----
 drivers/scsi/atari_scsi.h           |   60 
 drivers/scsi/dmx3191d.c             |   31 
 drivers/scsi/dtc.c                  |   85 -
 drivers/scsi/dtc.h                  |   26 
 drivers/scsi/g_NCR5380.c            |  224 --
 drivers/scsi/g_NCR5380.h            |   26 
 drivers/scsi/mac_scsi.c             |  542 ++----
 drivers/scsi/mac_scsi.h             |   74 
 drivers/scsi/pas16.c                |  106 -
 drivers/scsi/pas16.h                |   21 
 drivers/scsi/sun3_NCR5380.c         | 2933 ------------------------------------
 drivers/scsi/sun3_scsi.c            |  512 ++----
 drivers/scsi/sun3_scsi.h            |   84 -
 drivers/scsi/t128.c                 |   83 -
 drivers/scsi/t128.h                 |   23 
 29 files changed, 1742 insertions(+), 5463 deletions(-)