From 679b2ec8e060ca7a90441aff5e7d384720a41b76 Mon Sep 17 00:00:00 2001 From: Diego Elio Pettenò Date: Sun, 23 Feb 2020 19:11:44 +0000 Subject: scsi: sr: remove references to BLK_DEV_SR_VENDOR, leave it enabled This kernel configuration is basically enabling/disabling sr driver quirks detection. While these quirks are for fairly rare devices (very old CD burners, and a glucometer), the additional detection of these models is a very minimal amount of code. The logic behind the quirks is always built into the sr driver. This also removes the config from all the defconfig files that are enabling this already. Link: https://lore.kernel.org/r/20200223191144.726-1-flameeyes@flameeyes.com Reviewed-by: Jens Axboe Signed-off-by: Diego Elio Pettenò Signed-off-by: Martin K. Petersen --- drivers/scsi/Kconfig | 9 --------- 1 file changed, 9 deletions(-) (limited to 'drivers/scsi/Kconfig') diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index a7881f8eb05e..2b882b96e0d4 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -115,15 +115,6 @@ config BLK_DEV_SR . The module will be called sr_mod. -config BLK_DEV_SR_VENDOR - bool "Enable vendor-specific extensions (for SCSI CDROM)" - depends on BLK_DEV_SR - help - This enables the usage of vendor specific SCSI commands. This is - required to support multisession CDs with old NEC/TOSHIBA cdrom - drives (and HP Writers). If you have such a drive and get the first - session only, try saying Y here; everybody else says N. - config CHR_DEV_SG tristate "SCSI generic support" depends on SCSI -- cgit v1.2.3 From dd9cc1447ad39ddf09224357396d5e5175fb44dc Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:15:37 +0100 Subject: scsi: docs: convert aacraid.txt to ReST Link: https://lore.kernel.org/r/67c60ad88777c91937d49771e2a3f48cbf353e4c.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/aacraid.rst | 177 +++++++++++++++++++++++++++++++++++++++++ Documentation/scsi/aacraid.txt | 150 ---------------------------------- Documentation/scsi/index.rst | 1 + MAINTAINERS | 2 +- drivers/scsi/Kconfig | 2 +- 5 files changed, 180 insertions(+), 152 deletions(-) create mode 100644 Documentation/scsi/aacraid.rst delete mode 100644 Documentation/scsi/aacraid.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/aacraid.rst b/Documentation/scsi/aacraid.rst new file mode 100644 index 000000000000..1904674b94f3 --- /dev/null +++ b/Documentation/scsi/aacraid.rst @@ -0,0 +1,177 @@ +.. SPDX-License-Identifier: GPL-2.0 + +=================================== +AACRAID Driver for Linux (take two) +=================================== + +Introduction +============ +The aacraid driver adds support for Adaptec (http://www.adaptec.com) +RAID controllers. This is a major rewrite from the original +Adaptec supplied driver. It has significantly cleaned up both the code +and the running binary size (the module is less than half the size of +the original). + +Supported Cards/Chipsets +======================== + + =================== ======= ======================================= + PCI ID (pci.ids) OEM Product + =================== ======= ======================================= + 9005:0285:9005:0285 Adaptec 2200S (Vulcan) + 9005:0285:9005:0286 Adaptec 2120S (Crusader) + 9005:0285:9005:0287 Adaptec 2200S (Vulcan-2m) + 9005:0285:9005:0288 Adaptec 3230S (Harrier) + 9005:0285:9005:0289 Adaptec 3240S (Tornado) + 9005:0285:9005:028a Adaptec 2020ZCR (Skyhawk) + 9005:0285:9005:028b Adaptec 2025ZCR (Terminator) + 9005:0286:9005:028c Adaptec 2230S (Lancer) + 9005:0286:9005:028c Adaptec 2230SLP (Lancer) + 9005:0286:9005:028d Adaptec 2130S (Lancer) + 9005:0285:9005:028e Adaptec 2020SA (Skyhawk) + 9005:0285:9005:028f Adaptec 2025SA (Terminator) + 9005:0285:9005:0290 Adaptec 2410SA (Jaguar) + 9005:0285:103c:3227 Adaptec 2610SA (Bearcat HP release) + 9005:0285:9005:0293 Adaptec 21610SA (Corsair-16) + 9005:0285:9005:0296 Adaptec 2240S (SabreExpress) + 9005:0285:9005:0292 Adaptec 2810SA (Corsair-8) + 9005:0285:9005:0297 Adaptec 4005 (AvonPark) + 9005:0285:9005:0298 Adaptec 4000 (BlackBird) + 9005:0285:9005:0299 Adaptec 4800SAS (Marauder-X) + 9005:0285:9005:029a Adaptec 4805SAS (Marauder-E) + 9005:0286:9005:029b Adaptec 2820SA (Intruder) + 9005:0286:9005:029c Adaptec 2620SA (Intruder) + 9005:0286:9005:029d Adaptec 2420SA (Intruder HP release) + 9005:0286:9005:02ac Adaptec 1800 (Typhoon44) + 9005:0285:9005:02b5 Adaptec 5445 (Voodoo44) + 9005:0285:15d9:02b5 SMC AOC-USAS-S4i + 9005:0285:9005:02b6 Adaptec 5805 (Voodoo80) + 9005:0285:15d9:02b6 SMC AOC-USAS-S8i + 9005:0285:9005:02b7 Adaptec 5085 (Voodoo08) + 9005:0285:9005:02bb Adaptec 3405 (Marauder40LP) + 9005:0285:9005:02bc Adaptec 3805 (Marauder80LP) + 9005:0285:9005:02c7 Adaptec 3085 (Marauder08ELP) + 9005:0285:9005:02bd Adaptec 31205 (Marauder120) + 9005:0285:9005:02be Adaptec 31605 (Marauder160) + 9005:0285:9005:02c3 Adaptec 51205 (Voodoo120) + 9005:0285:9005:02c4 Adaptec 51605 (Voodoo160) + 9005:0285:15d9:02c9 SMC AOC-USAS-S4iR + 9005:0285:15d9:02ca SMC AOC-USAS-S8iR + 9005:0285:9005:02ce Adaptec 51245 (Voodoo124) + 9005:0285:9005:02cf Adaptec 51645 (Voodoo164) + 9005:0285:9005:02d0 Adaptec 52445 (Voodoo244) + 9005:0285:9005:02d1 Adaptec 5405 (Voodoo40) + 9005:0285:15d9:02d2 SMC AOC-USAS-S8i-LP + 9005:0285:15d9:02d3 SMC AOC-USAS-S8iR-LP + 9005:0285:9005:02d4 Adaptec ASR-2045 (Voodoo04 Lite) + 9005:0285:9005:02d5 Adaptec ASR-2405 (Voodoo40 Lite) + 9005:0285:9005:02d6 Adaptec ASR-2445 (Voodoo44 Lite) + 9005:0285:9005:02d7 Adaptec ASR-2805 (Voodoo80 Lite) + 9005:0285:9005:02d8 Adaptec 5405Z (Voodoo40 BLBU) + 9005:0285:9005:02d9 Adaptec 5445Z (Voodoo44 BLBU) + 9005:0285:9005:02da Adaptec 5805Z (Voodoo80 BLBU) + 1011:0046:9005:0364 Adaptec 5400S (Mustang) + 1011:0046:9005:0365 Adaptec 5400S (Mustang) + 9005:0287:9005:0800 Adaptec Themisto (Jupiter) + 9005:0200:9005:0200 Adaptec Themisto (Jupiter) + 9005:0286:9005:0800 Adaptec Callisto (Jupiter) + 1011:0046:9005:1364 Dell PERC 2/QC (Quad Channel, Mustang) + 1011:0046:9005:1365 Dell PERC 2/QC (Quad Channel, Mustang) + 1028:0001:1028:0001 Dell PERC 2/Si (Iguana) + 1028:0003:1028:0003 Dell PERC 3/Si (SlimFast) + 1028:0002:1028:0002 Dell PERC 3/Di (Opal) + 1028:0004:1028:0004 Dell PERC 3/SiF (Iguana) + 1028:0004:1028:00d0 Dell PERC 3/DiF (Iguana) + 1028:0002:1028:00d1 Dell PERC 3/DiV (Viper) + 1028:0002:1028:00d9 Dell PERC 3/DiL (Lexus) + 1028:000a:1028:0106 Dell PERC 3/DiJ (Jaguar) + 1028:000a:1028:011b Dell PERC 3/DiD (Dagger) + 1028:000a:1028:0121 Dell PERC 3/DiB (Boxster) + 9005:0285:1028:0287 Dell PERC 320/DC (Vulcan) + 9005:0285:1028:0291 Dell CERC 2 (DellCorsair) + 1011:0046:103c:10c2 HP NetRAID-4M (Mustang) + 9005:0285:17aa:0286 Legend S220 (Crusader) + 9005:0285:17aa:0287 Legend S230 (Vulcan) + 9005:0285:9005:0290 IBM ServeRAID 7t (Jaguar) + 9005:0285:1014:02F2 IBM ServeRAID 8i (AvonPark) + 9005:0286:1014:9540 IBM ServeRAID 8k/8k-l4 (AuroraLite) + 9005:0286:1014:9580 IBM ServeRAID 8k/8k-l8 (Aurora) + 9005:0285:1014:034d IBM ServeRAID 8s (Marauder-E) + 9005:0286:9005:029e ICP ICP9024RO (Lancer) + 9005:0286:9005:029f ICP ICP9014RO (Lancer) + 9005:0286:9005:02a0 ICP ICP9047MA (Lancer) + 9005:0286:9005:02a1 ICP ICP9087MA (Lancer) + 9005:0285:9005:02a4 ICP ICP9085LI (Marauder-X) + 9005:0285:9005:02a5 ICP ICP5085BR (Marauder-E) + 9005:0286:9005:02a6 ICP ICP9067MA (Intruder-6) + 9005:0285:9005:02b2 ICP (Voodoo 8 internal 8 external) + 9005:0285:9005:02b8 ICP ICP5445SL (Voodoo44) + 9005:0285:9005:02b9 ICP ICP5085SL (Voodoo80) + 9005:0285:9005:02ba ICP ICP5805SL (Voodoo08) + 9005:0285:9005:02bf ICP ICP5045BL (Marauder40LP) + 9005:0285:9005:02c0 ICP ICP5085BL (Marauder80LP) + 9005:0285:9005:02c8 ICP ICP5805BL (Marauder08ELP) + 9005:0285:9005:02c1 ICP ICP5125BR (Marauder120) + 9005:0285:9005:02c2 ICP ICP5165BR (Marauder160) + 9005:0285:9005:02c5 ICP ICP5125SL (Voodoo120) + 9005:0285:9005:02c6 ICP ICP5165SL (Voodoo160) + 9005:0286:9005:02ab (Typhoon40) + 9005:0286:9005:02ad (Aurora ARK) + 9005:0286:9005:02ae (Aurora Lite ARK) + 9005:0285:9005:02b0 (Sunrise Lake ARK) + 9005:0285:9005:02b1 Adaptec (Voodoo 8 internal 8 external) + 9005:0285:108e:7aac SUN STK RAID REM (Voodoo44 Coyote) + 9005:0285:108e:0286 SUN STK RAID INT (Cougar) + 9005:0285:108e:0287 SUN STK RAID EXT (Prometheus) + 9005:0285:108e:7aae SUN STK RAID EM (Narvi) + =================== ======= ======================================= + +People +====== + +Alan Cox + +Christoph Hellwig + +- updates for new-style PCI probing and SCSI host registration, + small cleanups/fixes + +Matt Domsch + +- revision ioctl, adapter messages + +Deanna Bonds + +- non-DASD support, PAE fibs and 64 bit, added new adaptec controllers + added new ioctls, changed scsi interface to use new error handler, + increased the number of fibs and outstanding commands to a container +- fixed 64bit and 64G memory model, changed confusing naming convention + where fibs that go to the hardware are consistently called hw_fibs and + not just fibs like the name of the driver tracking structure + +Mark Salyzyn + +- Fixed panic issues and added some new product ids for upcoming hbas. +- Performance tuning, card failover and bug mitigations. + +Achim Leubner + +- Original Driver + +------------------------- + +Adaptec Unix OEM Product Group + +Mailing List +============ + +linux-scsi@vger.kernel.org (Interested parties troll here) +Also note this is very different to Brian's original driver +so don't expect him to support it. + +Adaptec does support this driver. Contact Adaptec tech support or +aacraid@adaptec.com + +Original by Brian Boerner February 2001 + +Rewritten by Alan Cox, November 2001 diff --git a/Documentation/scsi/aacraid.txt b/Documentation/scsi/aacraid.txt deleted file mode 100644 index 30f643f611b2..000000000000 --- a/Documentation/scsi/aacraid.txt +++ /dev/null @@ -1,150 +0,0 @@ -AACRAID Driver for Linux (take two) - -Introduction -------------------------- -The aacraid driver adds support for Adaptec (http://www.adaptec.com) -RAID controllers. This is a major rewrite from the original -Adaptec supplied driver. It has significantly cleaned up both the code -and the running binary size (the module is less than half the size of -the original). - -Supported Cards/Chipsets -------------------------- - PCI ID (pci.ids) OEM Product - 9005:0285:9005:0285 Adaptec 2200S (Vulcan) - 9005:0285:9005:0286 Adaptec 2120S (Crusader) - 9005:0285:9005:0287 Adaptec 2200S (Vulcan-2m) - 9005:0285:9005:0288 Adaptec 3230S (Harrier) - 9005:0285:9005:0289 Adaptec 3240S (Tornado) - 9005:0285:9005:028a Adaptec 2020ZCR (Skyhawk) - 9005:0285:9005:028b Adaptec 2025ZCR (Terminator) - 9005:0286:9005:028c Adaptec 2230S (Lancer) - 9005:0286:9005:028c Adaptec 2230SLP (Lancer) - 9005:0286:9005:028d Adaptec 2130S (Lancer) - 9005:0285:9005:028e Adaptec 2020SA (Skyhawk) - 9005:0285:9005:028f Adaptec 2025SA (Terminator) - 9005:0285:9005:0290 Adaptec 2410SA (Jaguar) - 9005:0285:103c:3227 Adaptec 2610SA (Bearcat HP release) - 9005:0285:9005:0293 Adaptec 21610SA (Corsair-16) - 9005:0285:9005:0296 Adaptec 2240S (SabreExpress) - 9005:0285:9005:0292 Adaptec 2810SA (Corsair-8) - 9005:0285:9005:0297 Adaptec 4005 (AvonPark) - 9005:0285:9005:0298 Adaptec 4000 (BlackBird) - 9005:0285:9005:0299 Adaptec 4800SAS (Marauder-X) - 9005:0285:9005:029a Adaptec 4805SAS (Marauder-E) - 9005:0286:9005:029b Adaptec 2820SA (Intruder) - 9005:0286:9005:029c Adaptec 2620SA (Intruder) - 9005:0286:9005:029d Adaptec 2420SA (Intruder HP release) - 9005:0286:9005:02ac Adaptec 1800 (Typhoon44) - 9005:0285:9005:02b5 Adaptec 5445 (Voodoo44) - 9005:0285:15d9:02b5 SMC AOC-USAS-S4i - 9005:0285:9005:02b6 Adaptec 5805 (Voodoo80) - 9005:0285:15d9:02b6 SMC AOC-USAS-S8i - 9005:0285:9005:02b7 Adaptec 5085 (Voodoo08) - 9005:0285:9005:02bb Adaptec 3405 (Marauder40LP) - 9005:0285:9005:02bc Adaptec 3805 (Marauder80LP) - 9005:0285:9005:02c7 Adaptec 3085 (Marauder08ELP) - 9005:0285:9005:02bd Adaptec 31205 (Marauder120) - 9005:0285:9005:02be Adaptec 31605 (Marauder160) - 9005:0285:9005:02c3 Adaptec 51205 (Voodoo120) - 9005:0285:9005:02c4 Adaptec 51605 (Voodoo160) - 9005:0285:15d9:02c9 SMC AOC-USAS-S4iR - 9005:0285:15d9:02ca SMC AOC-USAS-S8iR - 9005:0285:9005:02ce Adaptec 51245 (Voodoo124) - 9005:0285:9005:02cf Adaptec 51645 (Voodoo164) - 9005:0285:9005:02d0 Adaptec 52445 (Voodoo244) - 9005:0285:9005:02d1 Adaptec 5405 (Voodoo40) - 9005:0285:15d9:02d2 SMC AOC-USAS-S8i-LP - 9005:0285:15d9:02d3 SMC AOC-USAS-S8iR-LP - 9005:0285:9005:02d4 Adaptec ASR-2045 (Voodoo04 Lite) - 9005:0285:9005:02d5 Adaptec ASR-2405 (Voodoo40 Lite) - 9005:0285:9005:02d6 Adaptec ASR-2445 (Voodoo44 Lite) - 9005:0285:9005:02d7 Adaptec ASR-2805 (Voodoo80 Lite) - 9005:0285:9005:02d8 Adaptec 5405Z (Voodoo40 BLBU) - 9005:0285:9005:02d9 Adaptec 5445Z (Voodoo44 BLBU) - 9005:0285:9005:02da Adaptec 5805Z (Voodoo80 BLBU) - 1011:0046:9005:0364 Adaptec 5400S (Mustang) - 1011:0046:9005:0365 Adaptec 5400S (Mustang) - 9005:0287:9005:0800 Adaptec Themisto (Jupiter) - 9005:0200:9005:0200 Adaptec Themisto (Jupiter) - 9005:0286:9005:0800 Adaptec Callisto (Jupiter) - 1011:0046:9005:1364 Dell PERC 2/QC (Quad Channel, Mustang) - 1011:0046:9005:1365 Dell PERC 2/QC (Quad Channel, Mustang) - 1028:0001:1028:0001 Dell PERC 2/Si (Iguana) - 1028:0003:1028:0003 Dell PERC 3/Si (SlimFast) - 1028:0002:1028:0002 Dell PERC 3/Di (Opal) - 1028:0004:1028:0004 Dell PERC 3/SiF (Iguana) - 1028:0004:1028:00d0 Dell PERC 3/DiF (Iguana) - 1028:0002:1028:00d1 Dell PERC 3/DiV (Viper) - 1028:0002:1028:00d9 Dell PERC 3/DiL (Lexus) - 1028:000a:1028:0106 Dell PERC 3/DiJ (Jaguar) - 1028:000a:1028:011b Dell PERC 3/DiD (Dagger) - 1028:000a:1028:0121 Dell PERC 3/DiB (Boxster) - 9005:0285:1028:0287 Dell PERC 320/DC (Vulcan) - 9005:0285:1028:0291 Dell CERC 2 (DellCorsair) - 1011:0046:103c:10c2 HP NetRAID-4M (Mustang) - 9005:0285:17aa:0286 Legend S220 (Crusader) - 9005:0285:17aa:0287 Legend S230 (Vulcan) - 9005:0285:9005:0290 IBM ServeRAID 7t (Jaguar) - 9005:0285:1014:02F2 IBM ServeRAID 8i (AvonPark) - 9005:0286:1014:9540 IBM ServeRAID 8k/8k-l4 (AuroraLite) - 9005:0286:1014:9580 IBM ServeRAID 8k/8k-l8 (Aurora) - 9005:0285:1014:034d IBM ServeRAID 8s (Marauder-E) - 9005:0286:9005:029e ICP ICP9024RO (Lancer) - 9005:0286:9005:029f ICP ICP9014RO (Lancer) - 9005:0286:9005:02a0 ICP ICP9047MA (Lancer) - 9005:0286:9005:02a1 ICP ICP9087MA (Lancer) - 9005:0285:9005:02a4 ICP ICP9085LI (Marauder-X) - 9005:0285:9005:02a5 ICP ICP5085BR (Marauder-E) - 9005:0286:9005:02a6 ICP ICP9067MA (Intruder-6) - 9005:0285:9005:02b2 ICP (Voodoo 8 internal 8 external) - 9005:0285:9005:02b8 ICP ICP5445SL (Voodoo44) - 9005:0285:9005:02b9 ICP ICP5085SL (Voodoo80) - 9005:0285:9005:02ba ICP ICP5805SL (Voodoo08) - 9005:0285:9005:02bf ICP ICP5045BL (Marauder40LP) - 9005:0285:9005:02c0 ICP ICP5085BL (Marauder80LP) - 9005:0285:9005:02c8 ICP ICP5805BL (Marauder08ELP) - 9005:0285:9005:02c1 ICP ICP5125BR (Marauder120) - 9005:0285:9005:02c2 ICP ICP5165BR (Marauder160) - 9005:0285:9005:02c5 ICP ICP5125SL (Voodoo120) - 9005:0285:9005:02c6 ICP ICP5165SL (Voodoo160) - 9005:0286:9005:02ab (Typhoon40) - 9005:0286:9005:02ad (Aurora ARK) - 9005:0286:9005:02ae (Aurora Lite ARK) - 9005:0285:9005:02b0 (Sunrise Lake ARK) - 9005:0285:9005:02b1 Adaptec (Voodoo 8 internal 8 external) - 9005:0285:108e:7aac SUN STK RAID REM (Voodoo44 Coyote) - 9005:0285:108e:0286 SUN STK RAID INT (Cougar) - 9005:0285:108e:0287 SUN STK RAID EXT (Prometheus) - 9005:0285:108e:7aae SUN STK RAID EM (Narvi) - -People -------------------------- -Alan Cox -Christoph Hellwig (updates for new-style PCI probing and SCSI host registration, - small cleanups/fixes) -Matt Domsch (revision ioctl, adapter messages) -Deanna Bonds (non-DASD support, PAE fibs and 64 bit, added new adaptec controllers - added new ioctls, changed scsi interface to use new error handler, - increased the number of fibs and outstanding commands to a container) - - (fixed 64bit and 64G memory model, changed confusing naming convention - where fibs that go to the hardware are consistently called hw_fibs and - not just fibs like the name of the driver tracking structure) -Mark Salyzyn Fixed panic issues and added some new product ids for upcoming hbas. Performance tuning, card failover and bug mitigations. -Achim Leubner - -Original Driver -------------------------- -Adaptec Unix OEM Product Group - -Mailing List -------------------------- -linux-scsi@vger.kernel.org (Interested parties troll here) -Also note this is very different to Brian's original driver -so don't expect him to support it. -Adaptec does support this driver. Contact Adaptec tech support or -aacraid@adaptec.com - -Original by Brian Boerner February 2001 -Rewritten by Alan Cox, November 2001 diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index 99efc77c3ac2..2e0429d1a7a5 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -8,5 +8,6 @@ Linux SCSI Subsystem :maxdepth: 1 53c700 + aacraid scsi_transport_srp/figures diff --git a/MAINTAINERS b/MAINTAINERS index 2bcab7c4cf3a..3251b768fec0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -236,7 +236,7 @@ M: Adaptec OEM Raid Solutions L: linux-scsi@vger.kernel.org W: http://www.adaptec.com/ S: Supported -F: Documentation/scsi/aacraid.txt +F: Documentation/scsi/aacraid.rst F: drivers/scsi/aacraid/ ABI/API diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 2b882b96e0d4..a153444318fb 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -421,7 +421,7 @@ config SCSI_AACRAID help This driver supports a variety of Dell, HP, Adaptec, IBM and ICP storage products. For a list of supported products, refer - to . + to . To compile this driver as a module, choose M here: the module will be called aacraid. -- cgit v1.2.3 From 94b5530f1fb8e468ca0a4117f2bb0fbdca550df1 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:15:39 +0100 Subject: scsi: docs: convert aha152x.txt to ReST Link: https://lore.kernel.org/r/097cfcc7f25343676a1fedcefed7e3b91b41b4df.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/aha152x.rst | 204 +++++++++++++++++++++++++++++++++ Documentation/scsi/aha152x.txt | 183 ----------------------------- Documentation/scsi/index.rst | 1 + Documentation/scsi/scsi-parameters.txt | 2 +- drivers/scsi/Kconfig | 2 +- drivers/scsi/aha152x.c | 4 +- 6 files changed, 209 insertions(+), 187 deletions(-) create mode 100644 Documentation/scsi/aha152x.rst delete mode 100644 Documentation/scsi/aha152x.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/aha152x.rst b/Documentation/scsi/aha152x.rst new file mode 100644 index 000000000000..7012b5c46d5d --- /dev/null +++ b/Documentation/scsi/aha152x.rst @@ -0,0 +1,204 @@ +.. SPDX-License-Identifier: GPL-2.0 +.. include:: + +===================================================== +Adaptec AHA-1520/1522 SCSI driver for Linux (aha152x) +===================================================== + +Copyright |copy| 1993-1999 Jürgen Fischer + +TC1550 patches by Luuk van Dijk (ldz@xs4all.nl) + + +In Revision 2 the driver was modified a lot (especially the +bottom-half handler complete()). + +The driver is much cleaner now, has support for the new +error handling code in 2.3, produced less cpu load (much +less polling loops), has slightly higher throughput (at +least on my ancient test box; a i486/33Mhz/20MB). + + +Configuration Arguments +======================= + +============ ======================================== ====================== +IOPORT base io address (0x340/0x140) +IRQ interrupt level (9-12; default 11) +SCSI_ID scsi id of controller (0-7; default 7) +RECONNECT allow targets to disconnect from the bus (0/1; default 1 [on]) +PARITY enable parity checking (0/1; default 1 [on]) +SYNCHRONOUS enable synchronous transfers (0/1; default 1 [on]) +DELAY: bus reset delay (default 100) +EXT_TRANS: enable extended translation (0/1: default 0 [off]) + (see NOTES) +============ ======================================== ====================== + +Compile Time Configuration +========================== + +(go into AHA152X in drivers/scsi/Makefile): + +- DAUTOCONF + use configuration the controller reports (AHA-152x only) + +- DSKIP_BIOSTEST + Don't test for BIOS signature (AHA-1510 or disabled BIOS) + +- DSETUP0="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }" + override for the first controller + +- DSETUP1="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }" + override for the second controller + +- DAHA152X_DEBUG + enable debugging output + +- DAHA152X_STAT + enable some statistics + + +LILO Command Line Options +========================= + + :: + + aha152x=[,[,[,[,[,[, [,1GB: + + - take current geometry from the partition table + (using scsicam_bios_param and accept only 'valid' geometries, + ie. either (C/32/64) or (C/63/255)). This can be extended translation + even if it's not enabled in the driver. + + - if that fails, take extended translation if enabled by override, + kernel or module parameter, otherwise take default translation and + ask the user for verification. This might on not yet partitioned + disks. + + +References Used +=============== + + "AIC-6260 SCSI Chip Specification", Adaptec Corporation. + + "SCSI COMPUTER SYSTEM INTERFACE - 2 (SCSI-2)", X3T9.2/86-109 rev. 10h + + "Writing a SCSI device driver for Linux", Rik Faith (faith@cs.unc.edu) + + "Kernel Hacker's Guide", Michael K. Johnson (johnsonm@sunsite.unc.edu) + + "Adaptec 1520/1522 User's Guide", Adaptec Corporation. + + Michael K. Johnson (johnsonm@sunsite.unc.edu) + + Drew Eckhardt (drew@cs.colorado.edu) + + Eric Youngdale (eric@andante.org) + + special thanks to Eric Youngdale for the free(!) supplying the + documentation on the chip. diff --git a/Documentation/scsi/aha152x.txt b/Documentation/scsi/aha152x.txt deleted file mode 100644 index 94848734ac66..000000000000 --- a/Documentation/scsi/aha152x.txt +++ /dev/null @@ -1,183 +0,0 @@ -$Id: README.aha152x,v 1.2 1999/12/25 15:32:30 fischer Exp fischer $ -Adaptec AHA-1520/1522 SCSI driver for Linux (aha152x) - -Copyright 1993-1999 Jürgen Fischer -TC1550 patches by Luuk van Dijk (ldz@xs4all.nl) - - -In Revision 2 the driver was modified a lot (especially the -bottom-half handler complete()). - -The driver is much cleaner now, has support for the new -error handling code in 2.3, produced less cpu load (much -less polling loops), has slightly higher throughput (at -least on my ancient test box; a i486/33Mhz/20MB). - - -CONFIGURATION ARGUMENTS: - -IOPORT base io address (0x340/0x140) -IRQ interrupt level (9-12; default 11) -SCSI_ID scsi id of controller (0-7; default 7) -RECONNECT allow targets to disconnect from the bus (0/1; default 1 [on]) -PARITY enable parity checking (0/1; default 1 [on]) -SYNCHRONOUS enable synchronous transfers (0/1; default 1 [on]) -DELAY: bus reset delay (default 100) -EXT_TRANS: enable extended translation (0/1: default 0 [off]) - (see NOTES) - -COMPILE TIME CONFIGURATION (go into AHA152X in drivers/scsi/Makefile): - --DAUTOCONF - use configuration the controller reports (AHA-152x only) - --DSKIP_BIOSTEST - Don't test for BIOS signature (AHA-1510 or disabled BIOS) - --DSETUP0="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }" - override for the first controller - --DSETUP1="{ IOPORT, IRQ, SCSI_ID, RECONNECT, PARITY, SYNCHRONOUS, DELAY, EXT_TRANS }" - override for the second controller - --DAHA152X_DEBUG - enable debugging output - --DAHA152X_STAT - enable some statistics - - -LILO COMMAND LINE OPTIONS: - -aha152x=[,[,[,[,[,[, [,1GB: - - take current geometry from the partition table - (using scsicam_bios_param and accept only `valid' geometries, - ie. either (C/32/64) or (C/63/255)). This can be extended translation - even if it's not enabled in the driver. - - - if that fails, take extended translation if enabled by override, - kernel or module parameter, otherwise take default translation and - ask the user for verification. This might on not yet partitioned - disks. - - -REFERENCES USED: - - "AIC-6260 SCSI Chip Specification", Adaptec Corporation. - - "SCSI COMPUTER SYSTEM INTERFACE - 2 (SCSI-2)", X3T9.2/86-109 rev. 10h - - "Writing a SCSI device driver for Linux", Rik Faith (faith@cs.unc.edu) - - "Kernel Hacker's Guide", Michael K. Johnson (johnsonm@sunsite.unc.edu) - - "Adaptec 1520/1522 User's Guide", Adaptec Corporation. - - Michael K. Johnson (johnsonm@sunsite.unc.edu) - - Drew Eckhardt (drew@cs.colorado.edu) - - Eric Youngdale (eric@andante.org) - - special thanks to Eric Youngdale for the free(!) supplying the - documentation on the chip. diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index df526a0ceccf..8404e991b588 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -10,5 +10,6 @@ Linux SCSI Subsystem 53c700 aacraid advansys + aha152x scsi_transport_srp/figures diff --git a/Documentation/scsi/scsi-parameters.txt b/Documentation/scsi/scsi-parameters.txt index 25a4b4cf04a6..064d6dfcac26 100644 --- a/Documentation/scsi/scsi-parameters.txt +++ b/Documentation/scsi/scsi-parameters.txt @@ -16,7 +16,7 @@ parameters may be changed at runtime by the command See header of drivers/scsi/advansys.c. aha152x= [HW,SCSI] - See Documentation/scsi/aha152x.txt. + See Documentation/scsi/aha152x.rst. aha1542= [HW,SCSI] Format: [,,[,]] diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index a153444318fb..18af62594bc0 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -383,7 +383,7 @@ config SCSI_AHA152X It is explained in section 3.3 of the SCSI-HOWTO, available from . You might also want to - read the file . + read the file . To compile this driver as a module, choose M here: the module will be called aha152x. diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c index eb466c2e1839..90f97df1c42a 100644 --- a/drivers/scsi/aha152x.c +++ b/drivers/scsi/aha152x.c @@ -220,7 +220,7 @@ * ************************************************************************** - see Documentation/scsi/aha152x.txt for configuration details + see Documentation/scsi/aha152x.rst for configuration details **************************************************************************/ @@ -1249,7 +1249,7 @@ static int aha152x_biosparam(struct scsi_device *sdev, struct block_device *bdev "aha152x: unable to verify geometry for disk with >1GB.\n" " Using default translation. Please verify yourself.\n" " Perhaps you need to enable extended translation in the driver.\n" - " See Documentation/scsi/aha152x.txt for details.\n"); + " See Documentation/scsi/aha152x.rst for details.\n"); } } else { info_array[0] = info[0]; -- cgit v1.2.3 From 977b899ce3cc4c5ca6776f1a62d7817f49c7581f Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:15:44 +0100 Subject: scsi: docs: convert BusLogic.txt to ReST Link: https://lore.kernel.org/r/750629b6a5233c85c5391c44d126606b8aabefc8.1583136624.git.mchehab+huawei@kernel.org Acked-by: Khalid Aziz Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/BusLogic.rst | 605 ++++++++++++++++++++++++++++++++++++++++ Documentation/scsi/BusLogic.txt | 566 ------------------------------------- Documentation/scsi/index.rst | 1 + drivers/scsi/BusLogic.c | 2 +- drivers/scsi/Kconfig | 2 +- 5 files changed, 608 insertions(+), 568 deletions(-) create mode 100644 Documentation/scsi/BusLogic.rst delete mode 100644 Documentation/scsi/BusLogic.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/BusLogic.rst b/Documentation/scsi/BusLogic.rst new file mode 100644 index 000000000000..b60169812358 --- /dev/null +++ b/Documentation/scsi/BusLogic.rst @@ -0,0 +1,605 @@ +.. SPDX-License-Identifier: GPL-2.0 + +========================================================= +BusLogic MultiMaster and FlashPoint SCSI Driver for Linux +========================================================= + + Version 2.0.15 for Linux 2.0 + + Version 2.1.15 for Linux 2.1 + + PRODUCTION RELEASE + + 17 August 1998 + + Leonard N. Zubkoff + + Dandelion Digital + + lnz@dandelion.com + + Copyright 1995-1998 by Leonard N. Zubkoff + + +Introduction +============ + +BusLogic, Inc. designed and manufactured a variety of high performance SCSI +host adapters which share a common programming interface across a diverse +collection of bus architectures by virtue of their MultiMaster ASIC technology. +BusLogic was acquired by Mylex Corporation in February 1996, but the products +supported by this driver originated under the BusLogic name and so that name is +retained in the source code and documentation. + +This driver supports all present BusLogic MultiMaster Host Adapters, and should +support any future MultiMaster designs with little or no modification. More +recently, BusLogic introduced the FlashPoint Host Adapters, which are less +costly and rely on the host CPU, rather than including an onboard processor. +Despite not having an onboard CPU, the FlashPoint Host Adapters perform very +well and have very low command latency. BusLogic has recently provided me with +the FlashPoint Driver Developer's Kit, which comprises documentation and freely +redistributable source code for the FlashPoint SCCB Manager. The SCCB Manager +is the library of code that runs on the host CPU and performs functions +analogous to the firmware on the MultiMaster Host Adapters. Thanks to their +having provided the SCCB Manager, this driver now supports the FlashPoint Host +Adapters as well. + +My primary goals in writing this completely new BusLogic driver for Linux are +to achieve the full performance that BusLogic SCSI Host Adapters and modern +SCSI peripherals are capable of, and to provide a highly robust driver that can +be depended upon for high performance mission critical applications. All of +the major performance features can be configured from the Linux kernel command +line or at module initialization time, allowing individual installations to +tune driver performance and error recovery to their particular needs. + +The latest information on Linux support for BusLogic SCSI Host Adapters, as +well as the most recent release of this driver and the latest firmware for the +BT-948/958/958D, will always be available from my Linux Home Page at URL +"http://sourceforge.net/projects/dandelion/". + +Bug reports should be sent via electronic mail to "lnz@dandelion.com". Please +include with the bug report the complete configuration messages reported by the +driver and SCSI subsystem at startup, along with any subsequent system messages +relevant to SCSI operations, and a detailed description of your system's +hardware configuration. + +Mylex has been an excellent company to work with and I highly recommend their +products to the Linux community. In November 1995, I was offered the +opportunity to become a beta test site for their latest MultiMaster product, +the BT-948 PCI Ultra SCSI Host Adapter, and then again for the BT-958 PCI Wide +Ultra SCSI Host Adapter in January 1996. This was mutually beneficial since +Mylex received a degree and kind of testing that their own testing group cannot +readily achieve, and the Linux community has available high performance host +adapters that have been well tested with Linux even before being brought to +market. This relationship has also given me the opportunity to interact +directly with their technical staff, to understand more about the internal +workings of their products, and in turn to educate them about the needs and +potential of the Linux community. + +More recently, Mylex has reaffirmed the company's interest in supporting the +Linux community, and I am now working on a Linux driver for the DAC960 PCI RAID +Controllers. Mylex's interest and support is greatly appreciated. + +Unlike some other vendors, if you contact Mylex Technical Support with a +problem and are running Linux, they will not tell you that your use of their +products is unsupported. Their latest product marketing literature even states +"Mylex SCSI host adapters are compatible with all major operating systems +including: ... Linux ...". + +Mylex Corporation is located at 34551 Ardenwood Blvd., Fremont, California +94555, USA and can be reached at 510/796-6100 or on the World Wide Web at +http://www.mylex.com. Mylex HBA Technical Support can be reached by electronic +mail at techsup@mylex.com, by Voice at 510/608-2400, or by FAX at 510/745-7715. +Contact information for offices in Europe and Japan is available on the Web +site. + + +Driver Features +=============== + +Configuration Reporting and Testing +----------------------------------- + + During system initialization, the driver reports extensively on the host + adapter hardware configuration, including the synchronous transfer parameters + requested and negotiated with each target device. AutoSCSI settings for + Synchronous Negotiation, Wide Negotiation, and Disconnect/Reconnect are + reported for each target device, as well as the status of Tagged Queuing. + If the same setting is in effect for all target devices, then a single word + or phrase is used; otherwise, a letter is provided for each target device to + indicate the individual status. The following examples + should clarify this reporting format: + + Synchronous Negotiation: Ultra + + Synchronous negotiation is enabled for all target devices and the host + adapter will attempt to negotiate for 20.0 mega-transfers/second. + + Synchronous Negotiation: Fast + + Synchronous negotiation is enabled for all target devices and the host + adapter will attempt to negotiate for 10.0 mega-transfers/second. + + Synchronous Negotiation: Slow + + Synchronous negotiation is enabled for all target devices and the host + adapter will attempt to negotiate for 5.0 mega-transfers/second. + + Synchronous Negotiation: Disabled + + Synchronous negotiation is disabled and all target devices are limited to + asynchronous operation. + + Synchronous Negotiation: UFSNUUU#UUUUUUUU + + Synchronous negotiation to Ultra speed is enabled for target devices 0 + and 4 through 15, to Fast speed for target device 1, to Slow speed for + target device 2, and is not permitted to target device 3. The host + adapter's SCSI ID is represented by the "#". + + The status of Wide Negotiation, Disconnect/Reconnect, and Tagged Queuing + are reported as "Enabled", Disabled", or a sequence of "Y" and "N" letters. + +Performance Features +-------------------- + + BusLogic SCSI Host Adapters directly implement SCSI-2 Tagged Queuing, and so + support has been included in the driver to utilize tagged queuing with any + target devices that report having the tagged queuing capability. Tagged + queuing allows for multiple outstanding commands to be issued to each target + device or logical unit, and can improve I/O performance substantially. In + addition, BusLogic's Strict Round Robin Mode is used to optimize host adapter + performance, and scatter/gather I/O can support as many segments as can be + effectively utilized by the Linux I/O subsystem. Control over the use of + tagged queuing for each target device as well as individual selection of the + tagged queue depth is available through driver options provided on the kernel + command line or at module initialization time. By default, the queue depth + is determined automatically based on the host adapter's total queue depth and + the number, type, speed, and capabilities of the target devices found. In + addition, tagged queuing is automatically disabled whenever the host adapter + firmware version is known not to implement it correctly, or whenever a tagged + queue depth of 1 is selected. Tagged queuing is also disabled for individual + target devices if disconnect/reconnect is disabled for that device. + +Robustness Features +------------------- + + The driver implements extensive error recovery procedures. When the higher + level parts of the SCSI subsystem request that a timed out command be reset, + a selection is made between a full host adapter hard reset and SCSI bus reset + versus sending a bus device reset message to the individual target device + based on the recommendation of the SCSI subsystem. Error recovery strategies + are selectable through driver options individually for each target device, + and also include sending a bus device reset to the specific target device + associated with the command being reset, as well as suppressing error + recovery entirely to avoid perturbing an improperly functioning device. If + the bus device reset error recovery strategy is selected and sending a bus + device reset does not restore correct operation, the next command that is + reset will force a full host adapter hard reset and SCSI bus reset. SCSI bus + resets caused by other devices and detected by the host adapter are also + handled by issuing a soft reset to the host adapter and re-initialization. + Finally, if tagged queuing is active and more than one command reset occurs + in a 10 minute interval, or if a command reset occurs within the first 10 + minutes of operation, then tagged queuing will be disabled for that target + device. These error recovery options improve overall system robustness by + preventing individual errant devices from causing the system as a whole to + lock up or crash, and thereby allowing a clean shutdown and restart after the + offending component is removed. + +PCI Configuration Support +------------------------- + + On PCI systems running kernels compiled with PCI BIOS support enabled, this + driver will interrogate the PCI configuration space and use the I/O port + addresses assigned by the system BIOS, rather than the ISA compatible I/O + port addresses. The ISA compatible I/O port address is then disabled by the + driver. On PCI systems it is also recommended that the AutoSCSI utility be + used to disable the ISA compatible I/O port entirely as it is not necessary. + The ISA compatible I/O port is disabled by default on the BT-948/958/958D. + +/proc File System Support +------------------------- + + Copies of the host adapter configuration information together with updated + data transfer and error recovery statistics are available through the + /proc/scsi/BusLogic/ interface. + +Shared Interrupts Support +------------------------- + + On systems that support shared interrupts, any number of BusLogic Host + Adapters may share the same interrupt request channel. + + +Supported Host Adapters +======================= + +The following list comprises the supported BusLogic SCSI Host Adapters as of +the date of this document. It is recommended that anyone purchasing a BusLogic +Host Adapter not in the following table contact the author beforehand to verify +that it is or will be supported. + +FlashPoint Series PCI Host Adapters: + +======================= ============================================= +FlashPoint LT (BT-930) Ultra SCSI-3 +FlashPoint LT (BT-930R) Ultra SCSI-3 with RAIDPlus +FlashPoint LT (BT-920) Ultra SCSI-3 (BT-930 without BIOS) +FlashPoint DL (BT-932) Dual Channel Ultra SCSI-3 +FlashPoint DL (BT-932R) Dual Channel Ultra SCSI-3 with RAIDPlus +FlashPoint LW (BT-950) Wide Ultra SCSI-3 +FlashPoint LW (BT-950R) Wide Ultra SCSI-3 with RAIDPlus +FlashPoint DW (BT-952) Dual Channel Wide Ultra SCSI-3 +FlashPoint DW (BT-952R) Dual Channel Wide Ultra SCSI-3 with RAIDPlus +======================= ============================================= + +MultiMaster "W" Series Host Adapters: + +======= === ============================== +BT-948 PCI Ultra SCSI-3 +BT-958 PCI Wide Ultra SCSI-3 +BT-958D PCI Wide Differential Ultra SCSI-3 +======= === ============================== + +MultiMaster "C" Series Host Adapters: + +======== ==== ============================== +BT-946C PCI Fast SCSI-2 +BT-956C PCI Wide Fast SCSI-2 +BT-956CD PCI Wide Differential Fast SCSI-2 +BT-445C VLB Fast SCSI-2 +BT-747C EISA Fast SCSI-2 +BT-757C EISA Wide Fast SCSI-2 +BT-757CD EISA Wide Differential Fast SCSI-2 +BT-545C ISA Fast SCSI-2 +BT-540CF ISA Fast SCSI-2 +======== ==== ============================== + +MultiMaster "S" Series Host Adapters: + +======= ==== ============================== +BT-445S VLB Fast SCSI-2 +BT-747S EISA Fast SCSI-2 +BT-747D EISA Differential Fast SCSI-2 +BT-757S EISA Wide Fast SCSI-2 +BT-757D EISA Wide Differential Fast SCSI-2 +BT-545S ISA Fast SCSI-2 +BT-542D ISA Differential Fast SCSI-2 +BT-742A EISA SCSI-2 (742A revision H) +BT-542B ISA SCSI-2 (542B revision H) +======= ==== ============================== + +MultiMaster "A" Series Host Adapters: + +======= ==== ============================== +BT-742A EISA SCSI-2 (742A revisions A - G) +BT-542B ISA SCSI-2 (542B revisions A - G) +======= ==== ============================== + +AMI FastDisk Host Adapters that are true BusLogic MultiMaster clones are also +supported by this driver. + +BusLogic SCSI Host Adapters are available packaged both as bare boards and as +retail kits. The BT- model numbers above refer to the bare board packaging. +The retail kit model numbers are found by replacing BT- with KT- in the above +list. The retail kit includes the bare board and manual as well as cabling and +driver media and documentation that are not provided with bare boards. + + +FlashPoint Installation Notes +============================= + +RAIDPlus Support +---------------- + + FlashPoint Host Adapters now include RAIDPlus, Mylex's bootable software + RAID. RAIDPlus is not supported on Linux, and there are no plans to support + it. The MD driver in Linux 2.0 provides for concatenation (LINEAR) and + striping (RAID-0), and support for mirroring (RAID-1), fixed parity (RAID-4), + and distributed parity (RAID-5) is available separately. The built-in Linux + RAID support is generally more flexible and is expected to perform better + than RAIDPlus, so there is little impetus to include RAIDPlus support in the + BusLogic driver. + +Enabling UltraSCSI Transfers +---------------------------- + + FlashPoint Host Adapters ship with their configuration set to "Factory + Default" settings that are conservative and do not allow for UltraSCSI speed + to be negotiated. This results in fewer problems when these host adapters + are installed in systems with cabling or termination that is not sufficient + for UltraSCSI operation, or where existing SCSI devices do not properly + respond to synchronous transfer negotiation for UltraSCSI speed. AutoSCSI + may be used to load "Optimum Performance" settings which allow UltraSCSI + speed to be negotiated with all devices, or UltraSCSI speed can be enabled on + an individual basis. It is recommended that SCAM be manually disabled after + the "Optimum Performance" settings are loaded. + + +BT-948/958/958D Installation Notes +================================== + +The BT-948/958/958D PCI Ultra SCSI Host Adapters have some features which may +require attention in some circumstances when installing Linux. + +PCI I/O Port Assignments +------------------------ + + When configured to factory default settings, the BT-948/958/958D will only + recognize the PCI I/O port assignments made by the motherboard's PCI BIOS. + The BT-948/958/958D will not respond to any of the ISA compatible I/O ports + that previous BusLogic SCSI Host Adapters respond to. This driver supports + the PCI I/O port assignments, so this is the preferred configuration. + However, if the obsolete BusLogic driver must be used for any reason, such as + a Linux distribution that does not yet use this driver in its boot kernel, + BusLogic has provided an AutoSCSI configuration option to enable a legacy ISA + compatible I/O port. + + To enable this backward compatibility option, invoke the AutoSCSI utility via + Ctrl-B at system startup and select "Adapter Configuration", "View/Modify + Configuration", and then change the "ISA Compatible Port" setting from + "Disable" to "Primary" or "Alternate". Once this driver has been installed, + the "ISA Compatible Port" option should be set back to "Disable" to avoid + possible future I/O port conflicts. The older BT-946C/956C/956CD also have + this configuration option, but the factory default setting is "Primary". + +PCI Slot Scanning Order +----------------------- + + In systems with multiple BusLogic PCI Host Adapters, the order in which the + PCI slots are scanned may appear reversed with the BT-948/958/958D as + compared to the BT-946C/956C/956CD. For booting from a SCSI disk to work + correctly, it is necessary that the host adapter's BIOS and the kernel agree + on which disk is the boot device, which requires that they recognize the PCI + host adapters in the same order. The motherboard's PCI BIOS provides a + standard way of enumerating the PCI host adapters, which is used by the Linux + kernel. Some PCI BIOS implementations enumerate the PCI slots in order of + increasing bus number and device number, while others do so in the opposite + direction. + + Unfortunately, Microsoft decided that Windows 95 would always enumerate the + PCI slots in order of increasing bus number and device number regardless of + the PCI BIOS enumeration, and requires that their scheme be supported by the + host adapter's BIOS to receive Windows 95 certification. Therefore, the + factory default settings of the BT-948/958/958D enumerate the host adapters + by increasing bus number and device number. To disable this feature, invoke + the AutoSCSI utility via Ctrl-B at system startup and select "Adapter + Configuration", "View/Modify Configuration", press Ctrl-F10, and then change + the "Use Bus And Device # For PCI Scanning Seq." option to OFF. + + This driver will interrogate the setting of the PCI Scanning Sequence option + so as to recognize the host adapters in the same order as they are enumerated + by the host adapter's BIOS. + +Enabling UltraSCSI Transfers +---------------------------- + + The BT-948/958/958D ship with their configuration set to "Factory Default" + settings that are conservative and do not allow for UltraSCSI speed to be + negotiated. This results in fewer problems when these host adapters are + installed in systems with cabling or termination that is not sufficient for + UltraSCSI operation, or where existing SCSI devices do not properly respond + to synchronous transfer negotiation for UltraSCSI speed. AutoSCSI may be + used to load "Optimum Performance" settings which allow UltraSCSI speed to be + negotiated with all devices, or UltraSCSI speed can be enabled on an + individual basis. It is recommended that SCAM be manually disabled after the + "Optimum Performance" settings are loaded. + + +Driver Options +============== + +BusLogic Driver Options may be specified either via the Linux Kernel Command +Line or via the Loadable Kernel Module Installation Facility. Driver Options +for multiple host adapters may be specified either by separating the option +strings by a semicolon, or by specifying multiple "BusLogic=" strings on the +command line. Individual option specifications for a single host adapter are +separated by commas. The Probing and Debugging Options apply to all host +adapters whereas the remaining options apply individually only to the +selected host adapter. + +The BusLogic Driver Probing Options comprise the following: + +IO: + + The "IO:" option specifies an ISA I/O Address to be probed for a non-PCI + MultiMaster Host Adapter. If neither "IO:" nor "NoProbeISA" options are + specified, then the standard list of BusLogic MultiMaster ISA I/O Addresses + will be probed (0x330, 0x334, 0x230, 0x234, 0x130, and 0x134). Multiple + "IO:" options may be specified to precisely determine the I/O Addresses to + be probed, but the probe order will always follow the standard list. + +NoProbe + + The "NoProbe" option disables all probing and therefore no BusLogic Host + Adapters will be detected. + +NoProbeISA + + The "NoProbeISA" option disables probing of the standard BusLogic ISA I/O + Addresses and therefore only PCI MultiMaster and FlashPoint Host Adapters + will be detected. + +NoProbePCI + + The "NoProbePCI" options disables the interrogation of PCI Configuration + Space and therefore only ISA Multimaster Host Adapters will be detected, as + well as PCI Multimaster Host Adapters that have their ISA Compatible I/O + Port set to "Primary" or "Alternate". + +NoSortPCI + + The "NoSortPCI" option forces PCI MultiMaster Host Adapters to be + enumerated in the order provided by the PCI BIOS, ignoring any setting of + the AutoSCSI "Use Bus And Device # For PCI Scanning Seq." option. + +MultiMasterFirst + + The "MultiMasterFirst" option forces MultiMaster Host Adapters to be probed + before FlashPoint Host Adapters. By default, if both FlashPoint and PCI + MultiMaster Host Adapters are present, this driver will probe for + FlashPoint Host Adapters first unless the BIOS primary disk is controlled + by the first PCI MultiMaster Host Adapter, in which case MultiMaster Host + Adapters will be probed first. + +FlashPointFirst + + The "FlashPointFirst" option forces FlashPoint Host Adapters to be probed + before MultiMaster Host Adapters. + +The BusLogic Driver Tagged Queuing Options allow for explicitly specifying +the Queue Depth and whether Tagged Queuing is permitted for each Target +Device (assuming that the Target Device supports Tagged Queuing). The Queue +Depth is the number of SCSI Commands that are allowed to be concurrently +presented for execution (either to the Host Adapter or Target Device). Note +that explicitly enabling Tagged Queuing may lead to problems; the option to +enable or disable Tagged Queuing is provided primarily to allow disabling +Tagged Queuing on Target Devices that do not implement it correctly. The +following options are available: + +QueueDepth: + + The "QueueDepth:" or QD:" option specifies the Queue Depth to use for all + Target Devices that support Tagged Queuing, as well as the maximum Queue + Depth for devices that do not support Tagged Queuing. If no Queue Depth + option is provided, the Queue Depth will be determined automatically based + on the Host Adapter's Total Queue Depth and the number, type, speed, and + capabilities of the detected Target Devices. For Host Adapters that + require ISA Bounce Buffers, the Queue Depth is automatically set by default + to BusLogic_TaggedQueueDepthBB or BusLogic_UntaggedQueueDepthBB to avoid + excessive preallocation of DMA Bounce Buffer memory. Target Devices that + do not support Tagged Queuing always have their Queue Depth set to + BusLogic_UntaggedQueueDepth or BusLogic_UntaggedQueueDepthBB, unless a + lower Queue Depth option is provided. A Queue Depth of 1 automatically + disables Tagged Queuing. + +QueueDepth:[,...] + + The "QueueDepth:[...]" or "QD:[...]" option specifies the Queue Depth + individually for each Target Device. If an is omitted, the + associated Target Device will have its Queue Depth selected automatically. + +TaggedQueuing:Default + + The "TaggedQueuing:Default" or "TQ:Default" option permits Tagged Queuing + based on the firmware version of the BusLogic Host Adapter and based on + whether the Queue Depth allows queuing multiple commands. + +TaggedQueuing:Enable + + The "TaggedQueuing:Enable" or "TQ:Enable" option enables Tagged Queuing for + all Target Devices on this Host Adapter, overriding any limitation that + would otherwise be imposed based on the Host Adapter firmware version. + +TaggedQueuing:Disable + + The "TaggedQueuing:Disable" or "TQ:Disable" option disables Tagged Queuing + for all Target Devices on this Host Adapter. + +TaggedQueuing: + + The "TaggedQueuing:" or "TQ:" option controls + Tagged Queuing individually for each Target Device. is a + sequence of "Y", "N", and "X" characters. "Y" enables Tagged Queuing, "N" + disables Tagged Queuing, and "X" accepts the default based on the firmware + version. The first character refers to Target Device 0, the second to + Target Device 1, and so on; if the sequence of "Y", "N", and "X" characters + does not cover all the Target Devices, unspecified characters are assumed + to be "X". + +The BusLogic Driver Miscellaneous Options comprise the following: + +BusSettleTime: + + The "BusSettleTime:" or "BST:" option specifies the Bus Settle Time in + seconds. The Bus Settle Time is the amount of time to wait between a Host + Adapter Hard Reset which initiates a SCSI Bus Reset and issuing any SCSI + Commands. If unspecified, it defaults to BusLogic_DefaultBusSettleTime. + +InhibitTargetInquiry + + The "InhibitTargetInquiry" option inhibits the execution of an Inquire + Target Devices or Inquire Installed Devices command on MultiMaster Host + Adapters. This may be necessary with some older Target Devices that do not + respond correctly when Logical Units above 0 are addressed. + +The BusLogic Driver Debugging Options comprise the following: + +TraceProbe + + The "TraceProbe" option enables tracing of Host Adapter Probing. + +TraceHardwareReset + + The "TraceHardwareReset" option enables tracing of Host Adapter Hardware + Reset. + +TraceConfiguration + + The "TraceConfiguration" option enables tracing of Host Adapter + Configuration. + +TraceErrors + + The "TraceErrors" option enables tracing of SCSI Commands that return an + error from the Target Device. The CDB and Sense Data will be printed for + each SCSI Command that fails. + +Debug + + The "Debug" option enables all debugging options. + +The following examples demonstrate setting the Queue Depth for Target Devices +1 and 2 on the first host adapter to 7 and 15, the Queue Depth for all Target +Devices on the second host adapter to 31, and the Bus Settle Time on the +second host adapter to 30 seconds. + +Linux Kernel Command Line:: + + linux BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30 + +LILO Linux Boot Loader (in /etc/lilo.conf):: + + append = "BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30" + +INSMOD Loadable Kernel Module Installation Facility:: + + insmod BusLogic.o \ + 'BusLogic="QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30"' + + +.. Note:: + + Module Utilities 2.1.71 or later is required for correct parsing + of driver options containing commas. + + +Driver Installation +=================== + +This distribution was prepared for Linux kernel version 2.0.35, but should be +compatible with 2.0.4 or any later 2.0 series kernel. + +To install the new BusLogic SCSI driver, you may use the following commands, +replacing "/usr/src" with wherever you keep your Linux kernel source tree:: + + cd /usr/src + tar -xvzf BusLogic-2.0.15.tar.gz + mv README.* LICENSE.* BusLogic.[ch] FlashPoint.c linux/drivers/scsi + patch -p0 < BusLogic.patch (only for 2.0.33 and below) + cd linux + make config + make zImage + +Then install "arch/x86/boot/zImage" as your standard kernel, run lilo if +appropriate, and reboot. + + +BusLogic Announcements Mailing List +=================================== + +The BusLogic Announcements Mailing List provides a forum for informing Linux +users of new driver releases and other announcements regarding Linux support +for BusLogic SCSI Host Adapters. To join the mailing list, send a message to +"buslogic-announce-request@dandelion.com" with the line "subscribe" in the +message body. diff --git a/Documentation/scsi/BusLogic.txt b/Documentation/scsi/BusLogic.txt deleted file mode 100644 index 48e982cd6fe7..000000000000 --- a/Documentation/scsi/BusLogic.txt +++ /dev/null @@ -1,566 +0,0 @@ - BusLogic MultiMaster and FlashPoint SCSI Driver for Linux - - Version 2.0.15 for Linux 2.0 - Version 2.1.15 for Linux 2.1 - - PRODUCTION RELEASE - - 17 August 1998 - - Leonard N. Zubkoff - Dandelion Digital - lnz@dandelion.com - - Copyright 1995-1998 by Leonard N. Zubkoff - - - INTRODUCTION - -BusLogic, Inc. designed and manufactured a variety of high performance SCSI -host adapters which share a common programming interface across a diverse -collection of bus architectures by virtue of their MultiMaster ASIC technology. -BusLogic was acquired by Mylex Corporation in February 1996, but the products -supported by this driver originated under the BusLogic name and so that name is -retained in the source code and documentation. - -This driver supports all present BusLogic MultiMaster Host Adapters, and should -support any future MultiMaster designs with little or no modification. More -recently, BusLogic introduced the FlashPoint Host Adapters, which are less -costly and rely on the host CPU, rather than including an onboard processor. -Despite not having an onboard CPU, the FlashPoint Host Adapters perform very -well and have very low command latency. BusLogic has recently provided me with -the FlashPoint Driver Developer's Kit, which comprises documentation and freely -redistributable source code for the FlashPoint SCCB Manager. The SCCB Manager -is the library of code that runs on the host CPU and performs functions -analogous to the firmware on the MultiMaster Host Adapters. Thanks to their -having provided the SCCB Manager, this driver now supports the FlashPoint Host -Adapters as well. - -My primary goals in writing this completely new BusLogic driver for Linux are -to achieve the full performance that BusLogic SCSI Host Adapters and modern -SCSI peripherals are capable of, and to provide a highly robust driver that can -be depended upon for high performance mission critical applications. All of -the major performance features can be configured from the Linux kernel command -line or at module initialization time, allowing individual installations to -tune driver performance and error recovery to their particular needs. - -The latest information on Linux support for BusLogic SCSI Host Adapters, as -well as the most recent release of this driver and the latest firmware for the -BT-948/958/958D, will always be available from my Linux Home Page at URL -"http://sourceforge.net/projects/dandelion/". - -Bug reports should be sent via electronic mail to "lnz@dandelion.com". Please -include with the bug report the complete configuration messages reported by the -driver and SCSI subsystem at startup, along with any subsequent system messages -relevant to SCSI operations, and a detailed description of your system's -hardware configuration. - -Mylex has been an excellent company to work with and I highly recommend their -products to the Linux community. In November 1995, I was offered the -opportunity to become a beta test site for their latest MultiMaster product, -the BT-948 PCI Ultra SCSI Host Adapter, and then again for the BT-958 PCI Wide -Ultra SCSI Host Adapter in January 1996. This was mutually beneficial since -Mylex received a degree and kind of testing that their own testing group cannot -readily achieve, and the Linux community has available high performance host -adapters that have been well tested with Linux even before being brought to -market. This relationship has also given me the opportunity to interact -directly with their technical staff, to understand more about the internal -workings of their products, and in turn to educate them about the needs and -potential of the Linux community. - -More recently, Mylex has reaffirmed the company's interest in supporting the -Linux community, and I am now working on a Linux driver for the DAC960 PCI RAID -Controllers. Mylex's interest and support is greatly appreciated. - -Unlike some other vendors, if you contact Mylex Technical Support with a -problem and are running Linux, they will not tell you that your use of their -products is unsupported. Their latest product marketing literature even states -"Mylex SCSI host adapters are compatible with all major operating systems -including: ... Linux ...". - -Mylex Corporation is located at 34551 Ardenwood Blvd., Fremont, California -94555, USA and can be reached at 510/796-6100 or on the World Wide Web at -http://www.mylex.com. Mylex HBA Technical Support can be reached by electronic -mail at techsup@mylex.com, by Voice at 510/608-2400, or by FAX at 510/745-7715. -Contact information for offices in Europe and Japan is available on the Web -site. - - - DRIVER FEATURES - -o Configuration Reporting and Testing - - During system initialization, the driver reports extensively on the host - adapter hardware configuration, including the synchronous transfer parameters - requested and negotiated with each target device. AutoSCSI settings for - Synchronous Negotiation, Wide Negotiation, and Disconnect/Reconnect are - reported for each target device, as well as the status of Tagged Queuing. - If the same setting is in effect for all target devices, then a single word - or phrase is used; otherwise, a letter is provided for each target device to - indicate the individual status. The following examples - should clarify this reporting format: - - Synchronous Negotiation: Ultra - - Synchronous negotiation is enabled for all target devices and the host - adapter will attempt to negotiate for 20.0 mega-transfers/second. - - Synchronous Negotiation: Fast - - Synchronous negotiation is enabled for all target devices and the host - adapter will attempt to negotiate for 10.0 mega-transfers/second. - - Synchronous Negotiation: Slow - - Synchronous negotiation is enabled for all target devices and the host - adapter will attempt to negotiate for 5.0 mega-transfers/second. - - Synchronous Negotiation: Disabled - - Synchronous negotiation is disabled and all target devices are limited to - asynchronous operation. - - Synchronous Negotiation: UFSNUUU#UUUUUUUU - - Synchronous negotiation to Ultra speed is enabled for target devices 0 - and 4 through 15, to Fast speed for target device 1, to Slow speed for - target device 2, and is not permitted to target device 3. The host - adapter's SCSI ID is represented by the "#". - - The status of Wide Negotiation, Disconnect/Reconnect, and Tagged Queuing - are reported as "Enabled", Disabled", or a sequence of "Y" and "N" letters. - -o Performance Features - - BusLogic SCSI Host Adapters directly implement SCSI-2 Tagged Queuing, and so - support has been included in the driver to utilize tagged queuing with any - target devices that report having the tagged queuing capability. Tagged - queuing allows for multiple outstanding commands to be issued to each target - device or logical unit, and can improve I/O performance substantially. In - addition, BusLogic's Strict Round Robin Mode is used to optimize host adapter - performance, and scatter/gather I/O can support as many segments as can be - effectively utilized by the Linux I/O subsystem. Control over the use of - tagged queuing for each target device as well as individual selection of the - tagged queue depth is available through driver options provided on the kernel - command line or at module initialization time. By default, the queue depth - is determined automatically based on the host adapter's total queue depth and - the number, type, speed, and capabilities of the target devices found. In - addition, tagged queuing is automatically disabled whenever the host adapter - firmware version is known not to implement it correctly, or whenever a tagged - queue depth of 1 is selected. Tagged queuing is also disabled for individual - target devices if disconnect/reconnect is disabled for that device. - -o Robustness Features - - The driver implements extensive error recovery procedures. When the higher - level parts of the SCSI subsystem request that a timed out command be reset, - a selection is made between a full host adapter hard reset and SCSI bus reset - versus sending a bus device reset message to the individual target device - based on the recommendation of the SCSI subsystem. Error recovery strategies - are selectable through driver options individually for each target device, - and also include sending a bus device reset to the specific target device - associated with the command being reset, as well as suppressing error - recovery entirely to avoid perturbing an improperly functioning device. If - the bus device reset error recovery strategy is selected and sending a bus - device reset does not restore correct operation, the next command that is - reset will force a full host adapter hard reset and SCSI bus reset. SCSI bus - resets caused by other devices and detected by the host adapter are also - handled by issuing a soft reset to the host adapter and re-initialization. - Finally, if tagged queuing is active and more than one command reset occurs - in a 10 minute interval, or if a command reset occurs within the first 10 - minutes of operation, then tagged queuing will be disabled for that target - device. These error recovery options improve overall system robustness by - preventing individual errant devices from causing the system as a whole to - lock up or crash, and thereby allowing a clean shutdown and restart after the - offending component is removed. - -o PCI Configuration Support - - On PCI systems running kernels compiled with PCI BIOS support enabled, this - driver will interrogate the PCI configuration space and use the I/O port - addresses assigned by the system BIOS, rather than the ISA compatible I/O - port addresses. The ISA compatible I/O port address is then disabled by the - driver. On PCI systems it is also recommended that the AutoSCSI utility be - used to disable the ISA compatible I/O port entirely as it is not necessary. - The ISA compatible I/O port is disabled by default on the BT-948/958/958D. - -o /proc File System Support - - Copies of the host adapter configuration information together with updated - data transfer and error recovery statistics are available through the - /proc/scsi/BusLogic/ interface. - -o Shared Interrupts Support - - On systems that support shared interrupts, any number of BusLogic Host - Adapters may share the same interrupt request channel. - - - SUPPORTED HOST ADAPTERS - -The following list comprises the supported BusLogic SCSI Host Adapters as of -the date of this document. It is recommended that anyone purchasing a BusLogic -Host Adapter not in the following table contact the author beforehand to verify -that it is or will be supported. - -FlashPoint Series PCI Host Adapters: - -FlashPoint LT (BT-930) Ultra SCSI-3 -FlashPoint LT (BT-930R) Ultra SCSI-3 with RAIDPlus -FlashPoint LT (BT-920) Ultra SCSI-3 (BT-930 without BIOS) -FlashPoint DL (BT-932) Dual Channel Ultra SCSI-3 -FlashPoint DL (BT-932R) Dual Channel Ultra SCSI-3 with RAIDPlus -FlashPoint LW (BT-950) Wide Ultra SCSI-3 -FlashPoint LW (BT-950R) Wide Ultra SCSI-3 with RAIDPlus -FlashPoint DW (BT-952) Dual Channel Wide Ultra SCSI-3 -FlashPoint DW (BT-952R) Dual Channel Wide Ultra SCSI-3 with RAIDPlus - -MultiMaster "W" Series Host Adapters: - -BT-948 PCI Ultra SCSI-3 -BT-958 PCI Wide Ultra SCSI-3 -BT-958D PCI Wide Differential Ultra SCSI-3 - -MultiMaster "C" Series Host Adapters: - -BT-946C PCI Fast SCSI-2 -BT-956C PCI Wide Fast SCSI-2 -BT-956CD PCI Wide Differential Fast SCSI-2 -BT-445C VLB Fast SCSI-2 -BT-747C EISA Fast SCSI-2 -BT-757C EISA Wide Fast SCSI-2 -BT-757CD EISA Wide Differential Fast SCSI-2 -BT-545C ISA Fast SCSI-2 -BT-540CF ISA Fast SCSI-2 - -MultiMaster "S" Series Host Adapters: - -BT-445S VLB Fast SCSI-2 -BT-747S EISA Fast SCSI-2 -BT-747D EISA Differential Fast SCSI-2 -BT-757S EISA Wide Fast SCSI-2 -BT-757D EISA Wide Differential Fast SCSI-2 -BT-545S ISA Fast SCSI-2 -BT-542D ISA Differential Fast SCSI-2 -BT-742A EISA SCSI-2 (742A revision H) -BT-542B ISA SCSI-2 (542B revision H) - -MultiMaster "A" Series Host Adapters: - -BT-742A EISA SCSI-2 (742A revisions A - G) -BT-542B ISA SCSI-2 (542B revisions A - G) - -AMI FastDisk Host Adapters that are true BusLogic MultiMaster clones are also -supported by this driver. - -BusLogic SCSI Host Adapters are available packaged both as bare boards and as -retail kits. The BT- model numbers above refer to the bare board packaging. -The retail kit model numbers are found by replacing BT- with KT- in the above -list. The retail kit includes the bare board and manual as well as cabling and -driver media and documentation that are not provided with bare boards. - - - FLASHPOINT INSTALLATION NOTES - -o RAIDPlus Support - - FlashPoint Host Adapters now include RAIDPlus, Mylex's bootable software - RAID. RAIDPlus is not supported on Linux, and there are no plans to support - it. The MD driver in Linux 2.0 provides for concatenation (LINEAR) and - striping (RAID-0), and support for mirroring (RAID-1), fixed parity (RAID-4), - and distributed parity (RAID-5) is available separately. The built-in Linux - RAID support is generally more flexible and is expected to perform better - than RAIDPlus, so there is little impetus to include RAIDPlus support in the - BusLogic driver. - -o Enabling UltraSCSI Transfers - - FlashPoint Host Adapters ship with their configuration set to "Factory - Default" settings that are conservative and do not allow for UltraSCSI speed - to be negotiated. This results in fewer problems when these host adapters - are installed in systems with cabling or termination that is not sufficient - for UltraSCSI operation, or where existing SCSI devices do not properly - respond to synchronous transfer negotiation for UltraSCSI speed. AutoSCSI - may be used to load "Optimum Performance" settings which allow UltraSCSI - speed to be negotiated with all devices, or UltraSCSI speed can be enabled on - an individual basis. It is recommended that SCAM be manually disabled after - the "Optimum Performance" settings are loaded. - - - BT-948/958/958D INSTALLATION NOTES - -The BT-948/958/958D PCI Ultra SCSI Host Adapters have some features which may -require attention in some circumstances when installing Linux. - -o PCI I/O Port Assignments - - When configured to factory default settings, the BT-948/958/958D will only - recognize the PCI I/O port assignments made by the motherboard's PCI BIOS. - The BT-948/958/958D will not respond to any of the ISA compatible I/O ports - that previous BusLogic SCSI Host Adapters respond to. This driver supports - the PCI I/O port assignments, so this is the preferred configuration. - However, if the obsolete BusLogic driver must be used for any reason, such as - a Linux distribution that does not yet use this driver in its boot kernel, - BusLogic has provided an AutoSCSI configuration option to enable a legacy ISA - compatible I/O port. - - To enable this backward compatibility option, invoke the AutoSCSI utility via - Ctrl-B at system startup and select "Adapter Configuration", "View/Modify - Configuration", and then change the "ISA Compatible Port" setting from - "Disable" to "Primary" or "Alternate". Once this driver has been installed, - the "ISA Compatible Port" option should be set back to "Disable" to avoid - possible future I/O port conflicts. The older BT-946C/956C/956CD also have - this configuration option, but the factory default setting is "Primary". - -o PCI Slot Scanning Order - - In systems with multiple BusLogic PCI Host Adapters, the order in which the - PCI slots are scanned may appear reversed with the BT-948/958/958D as - compared to the BT-946C/956C/956CD. For booting from a SCSI disk to work - correctly, it is necessary that the host adapter's BIOS and the kernel agree - on which disk is the boot device, which requires that they recognize the PCI - host adapters in the same order. The motherboard's PCI BIOS provides a - standard way of enumerating the PCI host adapters, which is used by the Linux - kernel. Some PCI BIOS implementations enumerate the PCI slots in order of - increasing bus number and device number, while others do so in the opposite - direction. - - Unfortunately, Microsoft decided that Windows 95 would always enumerate the - PCI slots in order of increasing bus number and device number regardless of - the PCI BIOS enumeration, and requires that their scheme be supported by the - host adapter's BIOS to receive Windows 95 certification. Therefore, the - factory default settings of the BT-948/958/958D enumerate the host adapters - by increasing bus number and device number. To disable this feature, invoke - the AutoSCSI utility via Ctrl-B at system startup and select "Adapter - Configuration", "View/Modify Configuration", press Ctrl-F10, and then change - the "Use Bus And Device # For PCI Scanning Seq." option to OFF. - - This driver will interrogate the setting of the PCI Scanning Sequence option - so as to recognize the host adapters in the same order as they are enumerated - by the host adapter's BIOS. - -o Enabling UltraSCSI Transfers - - The BT-948/958/958D ship with their configuration set to "Factory Default" - settings that are conservative and do not allow for UltraSCSI speed to be - negotiated. This results in fewer problems when these host adapters are - installed in systems with cabling or termination that is not sufficient for - UltraSCSI operation, or where existing SCSI devices do not properly respond - to synchronous transfer negotiation for UltraSCSI speed. AutoSCSI may be - used to load "Optimum Performance" settings which allow UltraSCSI speed to be - negotiated with all devices, or UltraSCSI speed can be enabled on an - individual basis. It is recommended that SCAM be manually disabled after the - "Optimum Performance" settings are loaded. - - - DRIVER OPTIONS - -BusLogic Driver Options may be specified either via the Linux Kernel Command -Line or via the Loadable Kernel Module Installation Facility. Driver Options -for multiple host adapters may be specified either by separating the option -strings by a semicolon, or by specifying multiple "BusLogic=" strings on the -command line. Individual option specifications for a single host adapter are -separated by commas. The Probing and Debugging Options apply to all host -adapters whereas the remaining options apply individually only to the -selected host adapter. - -The BusLogic Driver Probing Options comprise the following: - -IO: - - The "IO:" option specifies an ISA I/O Address to be probed for a non-PCI - MultiMaster Host Adapter. If neither "IO:" nor "NoProbeISA" options are - specified, then the standard list of BusLogic MultiMaster ISA I/O Addresses - will be probed (0x330, 0x334, 0x230, 0x234, 0x130, and 0x134). Multiple - "IO:" options may be specified to precisely determine the I/O Addresses to - be probed, but the probe order will always follow the standard list. - -NoProbe - - The "NoProbe" option disables all probing and therefore no BusLogic Host - Adapters will be detected. - -NoProbeISA - - The "NoProbeISA" option disables probing of the standard BusLogic ISA I/O - Addresses and therefore only PCI MultiMaster and FlashPoint Host Adapters - will be detected. - -NoProbePCI - - The "NoProbePCI" options disables the interrogation of PCI Configuration - Space and therefore only ISA Multimaster Host Adapters will be detected, as - well as PCI Multimaster Host Adapters that have their ISA Compatible I/O - Port set to "Primary" or "Alternate". - -NoSortPCI - - The "NoSortPCI" option forces PCI MultiMaster Host Adapters to be - enumerated in the order provided by the PCI BIOS, ignoring any setting of - the AutoSCSI "Use Bus And Device # For PCI Scanning Seq." option. - -MultiMasterFirst - - The "MultiMasterFirst" option forces MultiMaster Host Adapters to be probed - before FlashPoint Host Adapters. By default, if both FlashPoint and PCI - MultiMaster Host Adapters are present, this driver will probe for - FlashPoint Host Adapters first unless the BIOS primary disk is controlled - by the first PCI MultiMaster Host Adapter, in which case MultiMaster Host - Adapters will be probed first. - -FlashPointFirst - - The "FlashPointFirst" option forces FlashPoint Host Adapters to be probed - before MultiMaster Host Adapters. - -The BusLogic Driver Tagged Queuing Options allow for explicitly specifying -the Queue Depth and whether Tagged Queuing is permitted for each Target -Device (assuming that the Target Device supports Tagged Queuing). The Queue -Depth is the number of SCSI Commands that are allowed to be concurrently -presented for execution (either to the Host Adapter or Target Device). Note -that explicitly enabling Tagged Queuing may lead to problems; the option to -enable or disable Tagged Queuing is provided primarily to allow disabling -Tagged Queuing on Target Devices that do not implement it correctly. The -following options are available: - -QueueDepth: - - The "QueueDepth:" or QD:" option specifies the Queue Depth to use for all - Target Devices that support Tagged Queuing, as well as the maximum Queue - Depth for devices that do not support Tagged Queuing. If no Queue Depth - option is provided, the Queue Depth will be determined automatically based - on the Host Adapter's Total Queue Depth and the number, type, speed, and - capabilities of the detected Target Devices. For Host Adapters that - require ISA Bounce Buffers, the Queue Depth is automatically set by default - to BusLogic_TaggedQueueDepthBB or BusLogic_UntaggedQueueDepthBB to avoid - excessive preallocation of DMA Bounce Buffer memory. Target Devices that - do not support Tagged Queuing always have their Queue Depth set to - BusLogic_UntaggedQueueDepth or BusLogic_UntaggedQueueDepthBB, unless a - lower Queue Depth option is provided. A Queue Depth of 1 automatically - disables Tagged Queuing. - -QueueDepth:[,...] - - The "QueueDepth:[...]" or "QD:[...]" option specifies the Queue Depth - individually for each Target Device. If an is omitted, the - associated Target Device will have its Queue Depth selected automatically. - -TaggedQueuing:Default - - The "TaggedQueuing:Default" or "TQ:Default" option permits Tagged Queuing - based on the firmware version of the BusLogic Host Adapter and based on - whether the Queue Depth allows queuing multiple commands. - -TaggedQueuing:Enable - - The "TaggedQueuing:Enable" or "TQ:Enable" option enables Tagged Queuing for - all Target Devices on this Host Adapter, overriding any limitation that - would otherwise be imposed based on the Host Adapter firmware version. - -TaggedQueuing:Disable - - The "TaggedQueuing:Disable" or "TQ:Disable" option disables Tagged Queuing - for all Target Devices on this Host Adapter. - -TaggedQueuing: - - The "TaggedQueuing:" or "TQ:" option controls - Tagged Queuing individually for each Target Device. is a - sequence of "Y", "N", and "X" characters. "Y" enables Tagged Queuing, "N" - disables Tagged Queuing, and "X" accepts the default based on the firmware - version. The first character refers to Target Device 0, the second to - Target Device 1, and so on; if the sequence of "Y", "N", and "X" characters - does not cover all the Target Devices, unspecified characters are assumed - to be "X". - -The BusLogic Driver Miscellaneous Options comprise the following: - -BusSettleTime: - - The "BusSettleTime:" or "BST:" option specifies the Bus Settle Time in - seconds. The Bus Settle Time is the amount of time to wait between a Host - Adapter Hard Reset which initiates a SCSI Bus Reset and issuing any SCSI - Commands. If unspecified, it defaults to BusLogic_DefaultBusSettleTime. - -InhibitTargetInquiry - - The "InhibitTargetInquiry" option inhibits the execution of an Inquire - Target Devices or Inquire Installed Devices command on MultiMaster Host - Adapters. This may be necessary with some older Target Devices that do not - respond correctly when Logical Units above 0 are addressed. - -The BusLogic Driver Debugging Options comprise the following: - -TraceProbe - - The "TraceProbe" option enables tracing of Host Adapter Probing. - -TraceHardwareReset - - The "TraceHardwareReset" option enables tracing of Host Adapter Hardware - Reset. - -TraceConfiguration - - The "TraceConfiguration" option enables tracing of Host Adapter - Configuration. - -TraceErrors - - The "TraceErrors" option enables tracing of SCSI Commands that return an - error from the Target Device. The CDB and Sense Data will be printed for - each SCSI Command that fails. - -Debug - - The "Debug" option enables all debugging options. - -The following examples demonstrate setting the Queue Depth for Target Devices -1 and 2 on the first host adapter to 7 and 15, the Queue Depth for all Target -Devices on the second host adapter to 31, and the Bus Settle Time on the -second host adapter to 30 seconds. - -Linux Kernel Command Line: - - linux BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30 - -LILO Linux Boot Loader (in /etc/lilo.conf): - - append = "BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30" - -INSMOD Loadable Kernel Module Installation Facility: - - insmod BusLogic.o \ - 'BusLogic="QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30"' - -NOTE: Module Utilities 2.1.71 or later is required for correct parsing - of driver options containing commas. - - - DRIVER INSTALLATION - -This distribution was prepared for Linux kernel version 2.0.35, but should be -compatible with 2.0.4 or any later 2.0 series kernel. - -To install the new BusLogic SCSI driver, you may use the following commands, -replacing "/usr/src" with wherever you keep your Linux kernel source tree: - - cd /usr/src - tar -xvzf BusLogic-2.0.15.tar.gz - mv README.* LICENSE.* BusLogic.[ch] FlashPoint.c linux/drivers/scsi - patch -p0 < BusLogic.patch (only for 2.0.33 and below) - cd linux - make config - make zImage - -Then install "arch/x86/boot/zImage" as your standard kernel, run lilo if -appropriate, and reboot. - - - BUSLOGIC ANNOUNCEMENTS MAILING LIST - -The BusLogic Announcements Mailing List provides a forum for informing Linux -users of new driver releases and other announcements regarding Linux support -for BusLogic SCSI Host Adapters. To join the mailing list, send a message to -"buslogic-announce-request@dandelion.com" with the line "subscribe" in the -message body. diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index d453fb3f1f7d..6bb2428c1d56 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -15,5 +15,6 @@ Linux SCSI Subsystem aic7xxx bfa bnx2fc + BusLogic scsi_transport_srp/figures diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c index 3170b295a5da..9b8be4f0da19 100644 --- a/drivers/scsi/BusLogic.c +++ b/drivers/scsi/BusLogic.c @@ -3652,7 +3652,7 @@ static bool __init blogic_parse(char **str, char *keyword) selected host adapter. The BusLogic Driver Probing Options are described in - . + . */ static int __init blogic_parseopts(char *options) diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 18af62594bc0..5ec7330f82b6 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -502,7 +502,7 @@ config SCSI_BUSLOGIC This is support for BusLogic MultiMaster and FlashPoint SCSI Host Adapters. Consult the SCSI-HOWTO, available from , and the files - and + and for more information. Note that support for FlashPoint is only available for 32-bit x86 configurations. -- cgit v1.2.3 From 62e3bfa4a1869cf8f221dce8ab90790e836e2b61 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:15:46 +0100 Subject: scsi: docs: convert dc395x.txt to ReST Link: https://lore.kernel.org/r/3c0876df0045695185f922a0404c497a69de36a9.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/dc395x.rst | 117 ++++++++++++++++++++++++++++++++++++++++++ Documentation/scsi/dc395x.txt | 102 ------------------------------------ Documentation/scsi/index.rst | 1 + MAINTAINERS | 2 +- drivers/scsi/Kconfig | 2 +- 5 files changed, 120 insertions(+), 104 deletions(-) create mode 100644 Documentation/scsi/dc395x.rst delete mode 100644 Documentation/scsi/dc395x.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/dc395x.rst b/Documentation/scsi/dc395x.rst new file mode 100644 index 000000000000..d779e782b1cb --- /dev/null +++ b/Documentation/scsi/dc395x.rst @@ -0,0 +1,117 @@ +.. SPDX-License-Identifier: GPL-2.0 + +====================================== +README file for the dc395x SCSI driver +====================================== + +Status +------ +The driver has been tested with CD-R and CD-R/W drives. These should +be safe to use. Testing with hard disks has not been done to any +great degree and caution should be exercised if you want to attempt +to use this driver with hard disks. + +This is a 2.5 only driver. For a 2.4 driver please see the original +driver (which this driver started from) at +http://www.garloff.de/kurt/linux/dc395/ + +Problems, questions and patches should be submitted to the mailing +list. Details on the list, including archives, are available at +http://lists.twibble.org/mailman/listinfo/dc395x/ + +Parameters +---------- +The driver uses the settings from the EEPROM set in the SCSI BIOS +setup. If there is no EEPROM, the driver uses default values. +Both can be overridden by command line parameters (module or kernel +parameters). + +The following parameters are available: + +safe + Default: 0, Acceptable values: 0 or 1 + + If safe is set to 1 then the adapter will use conservative + ("safe") default settings. This sets: + + shortcut for dc395x=7,4,9,15,2,10 + +adapter_id + Default: 7, Acceptable values: 0 to 15 + + Sets the host adapter SCSI ID. + +max_speed + Default: 1, Acceptable value: 0 to 7 + + == ======== + 0 20 Mhz + 1 12.2 Mhz + 2 10 Mhz + 3 8 Mhz + 4 6.7 Mhz + 5 5.8 Hhz + 6 5 Mhz + 7 4 Mhz + == ======== + +dev_mode + Bitmap for device configuration + + DevMode bit definition: + + === ======== ======== ========================================= + Bit Val(hex) Val(dec) Meaning + === ======== ======== ========================================= + 0 0x01 1 Parity check + 1 0x02 2 Synchronous Negotiation + 2 0x04 4 Disconnection + 3 0x08 8 Send Start command on startup. (Not used) + 4 0x10 16 Tagged Command Queueing + 5 0x20 32 Wide Negotiation + === ======== ======== ========================================= + +adapter_mode + Bitmap for adapter configuration + + AdaptMode bit definition + + ===== ======== ======== ==================================================== + Bit Val(hex) Val(dec) Meaning + ===== ======== ======== ==================================================== + 0 0x01 1 Support more than two drives. (Not used) + 1 0x02 2 Use DOS compatible mapping for HDs greater than 1GB. + 2 0x04 4 Reset SCSI Bus on startup. + 3 0x08 8 Active Negation: Improves SCSI Bus noise immunity. + 4 0x10 16 Immediate return on BIOS seek command. (Not used) + (*)5 0x20 32 Check for LUNs >= 1. + ===== ======== ======== ==================================================== + +tags + Default: 3, Acceptable values: 0-5 + + The number of tags is 1<= 1. - - - tags - Default: 3, Acceptable values: 0-5 - - The number of tags is 1<. + Documentation can be found in . To compile this driver as a module, choose M here: the module will be called dc395x. -- cgit v1.2.3 From f22978400e3ea6c35a1050a83a9a11f2c1dc8cb7 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:15:47 +0100 Subject: scsi: docs: convert dpti.txt to ReST Link: https://lore.kernel.org/r/212fd7961c134c5bd73d87cd818bcddc30270804.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/dpti.rst | 92 +++++++++++++++++++++++++++++++++++++++++++ Documentation/scsi/dpti.txt | 83 -------------------------------------- Documentation/scsi/index.rst | 1 + drivers/scsi/Kconfig | 2 +- drivers/scsi/dpt/dpti_ioctl.h | 2 +- drivers/scsi/dpt_i2o.c | 2 +- drivers/scsi/dpti.h | 2 +- 7 files changed, 97 insertions(+), 87 deletions(-) create mode 100644 Documentation/scsi/dpti.rst delete mode 100644 Documentation/scsi/dpti.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/dpti.rst b/Documentation/scsi/dpti.rst new file mode 100644 index 000000000000..0496919d87d3 --- /dev/null +++ b/Documentation/scsi/dpti.rst @@ -0,0 +1,92 @@ +.. SPDX-License-Identifier: GPL-2.0 + +=================== +Adaptec dpti driver +=================== + +Redistribution and use in source form, with or without modification, are +permitted provided that redistributions of source code must retain the +above copyright notice, this list of conditions and the following disclaimer. + +This software is provided ``as is`` by Adaptec and +any express or implied warranties, including, but not limited to, the +implied warranties of merchantability and fitness for a particular purpose, +are disclaimed. In no event shall Adaptec be +liable for any direct, indirect, incidental, special, exemplary or +consequential damages (including, but not limited to, procurement of +substitute goods or services; loss of use, data, or profits; or business +interruptions) however caused and on any theory of liability, whether in +contract, strict liability, or tort (including negligence or otherwise) +arising in any way out of the use of this driver software, even if advised +of the possibility of such damage. + +This driver supports the Adaptec I2O RAID and DPT SmartRAID V I2O boards. + +Credits +======= + +The original linux driver was ported to Linux by Karen White while at +Dell Computer. It was ported from Bob Pasteur's (of DPT) original +non-Linux driver. Mark Salyzyn and Bob Pasteur consulted on the original +driver. + +2.0 version of the driver by Deanna Bonds and Mark Salyzyn. + +History +======= + +The driver was originally ported to linux version 2.0.34 + +==== ========================================================================== +V2.0 Rewrite of driver. Re-architectured based on i2o subsystem. + This was the first full GPL version since the last version used + i2osig headers which were not GPL. Developer Testing version. +V2.1 Internal testing +V2.2 First released version + +V2.3 Changes: + + - Added Raptor Support + - Fixed bug causing system to hang under extreme load with + - management utilities running (removed GFP_DMA from kmalloc flags) + +V2.4 First version ready to be submitted to be embedded in the kernel + + Changes: + + - Implemented suggestions from Alan Cox + - Added calculation of resid for sg layer + - Better error handling + - Added checking underflow conditions + - Added DATAPROTECT checking + - Changed error return codes + - Fixed pointer bug in bus reset routine + - Enabled hba reset from ioctls (allows a FW flash to reboot and use + the new FW without having to reboot) + - Changed proc output +==== ========================================================================== + +TODO +==== +- Add 64 bit Scatter Gather when compiled on 64 bit architectures +- Add sparse lun scanning +- Add code that checks if a device that had been taken offline is + now online (at the FW level) when test unit ready or inquiry + command from scsi-core +- Add proc read interface +- busrescan command +- rescan command +- Add code to rescan routine that notifies scsi-core about new devices +- Add support for C-PCI (hotplug stuff) +- Add ioctl passthru error recovery + +Notes +===== +The DPT card optimizes the order of processing commands. Consequently, +a command may take up to 6 minutes to complete after it has been sent +to the board. + +The files dpti_ioctl.h dptsig.h osd_defs.h osd_util.h sys_info.h are part of the +interface files for Adaptec's management routines. These define the structures used +in the ioctls. They are written to be portable. They are hard to read, but I need +to use them 'as is' or I can miss changes in the interface. diff --git a/Documentation/scsi/dpti.txt b/Documentation/scsi/dpti.txt deleted file mode 100644 index f36dc0e7c8da..000000000000 --- a/Documentation/scsi/dpti.txt +++ /dev/null @@ -1,83 +0,0 @@ - /* TERMS AND CONDITIONS OF USE - * - * Redistribution and use in source form, with or without modification, are - * permitted provided that redistributions of source code must retain the - * above copyright notice, this list of conditions and the following disclaimer. - * - * This software is provided `as is' by Adaptec and - * any express or implied warranties, including, but not limited to, the - * implied warranties of merchantability and fitness for a particular purpose, - * are disclaimed. In no event shall Adaptec be - * liable for any direct, indirect, incidental, special, exemplary or - * consequential damages (including, but not limited to, procurement of - * substitute goods or services; loss of use, data, or profits; or business - * interruptions) however caused and on any theory of liability, whether in - * contract, strict liability, or tort (including negligence or otherwise) - * arising in any way out of the use of this driver software, even if advised - * of the possibility of such damage. - * - **************************************************************** - * This driver supports the Adaptec I2O RAID and DPT SmartRAID V I2O boards. - * - * CREDITS: - * The original linux driver was ported to Linux by Karen White while at - * Dell Computer. It was ported from Bob Pasteur's (of DPT) original - * non-Linux driver. Mark Salyzyn and Bob Pasteur consulted on the original - * driver. - * - * 2.0 version of the driver by Deanna Bonds and Mark Salyzyn. - * - * HISTORY: - * The driver was originally ported to linux version 2.0.34 - * - * V2.0 Rewrite of driver. Re-architectured based on i2o subsystem. - * This was the first full GPL version since the last version used - * i2osig headers which were not GPL. Developer Testing version. - * V2.1 Internal testing - * V2.2 First released version - * - * V2.3 - * Changes: - * Added Raptor Support - * Fixed bug causing system to hang under extreme load with - * management utilities running (removed GFP_DMA from kmalloc flags) - * - * - * V2.4 First version ready to be submitted to be embedded in the kernel - * Changes: - * Implemented suggestions from Alan Cox - * Added calculation of resid for sg layer - * Better error handling - * Added checking underflow conditions - * Added DATAPROTECT checking - * Changed error return codes - * Fixed pointer bug in bus reset routine - * Enabled hba reset from ioctls (allows a FW flash to reboot and use the new - * FW without having to reboot) - * Changed proc output - * - * TODO: - * Add 64 bit Scatter Gather when compiled on 64 bit architectures - * Add sparse lun scanning - * Add code that checks if a device that had been taken offline is - * now online (at the FW level) when test unit ready or inquiry - * command from scsi-core - * Add proc read interface - * busrescan command - * rescan command - * Add code to rescan routine that notifies scsi-core about new devices - * Add support for C-PCI (hotplug stuff) - * Add ioctl passthru error recovery - * - * NOTES: - * The DPT card optimizes the order of processing commands. Consequently, - * a command may take up to 6 minutes to complete after it has been sent - * to the board. - * - * The files dpti_ioctl.h dptsig.h osd_defs.h osd_util.h sys_info.h are part of the - * interface files for Adaptec's management routines. These define the structures used - * in the ioctls. They are written to be portable. They are hard to read, but I need - * to use them 'as is' or I can miss changes in the interface. - * - */ - diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index 6fe00709cbce..b553dd9904bf 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -18,5 +18,6 @@ Linux SCSI Subsystem BusLogic cxgb3i dc395x + dpti scsi_transport_srp/figures diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 9f5b2ddec6e0..5e834fba7934 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -448,7 +448,7 @@ config SCSI_DPT_I2O 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 - driver by Deanna Bonds. See . + driver by Deanna Bonds. See . To compile this driver as a module, choose M here: the module will be called dpt_i2o. diff --git a/drivers/scsi/dpt/dpti_ioctl.h b/drivers/scsi/dpt/dpti_ioctl.h index 6bc33f4f020d..25e9251f8c78 100644 --- a/drivers/scsi/dpt/dpti_ioctl.h +++ b/drivers/scsi/dpt/dpti_ioctl.h @@ -5,7 +5,7 @@ begin : Thu Sep 7 2000 copyright : (C) 2001 by Adaptec - See Documentation/scsi/dpti.txt for history, notes, license info + See Documentation/scsi/dpti.rst for history, notes, license info and credits ***************************************************************************/ diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c index ac27323ea135..02dff3a684e0 100644 --- a/drivers/scsi/dpt_i2o.c +++ b/drivers/scsi/dpt_i2o.c @@ -8,7 +8,7 @@ July 30, 2001 First version being submitted for inclusion in the kernel. V2.4 - See Documentation/scsi/dpti.txt for history, notes, license info + See Documentation/scsi/dpti.rst for history, notes, license info and credits ***************************************************************************/ diff --git a/drivers/scsi/dpti.h b/drivers/scsi/dpti.h index 72293b8450b6..8a079e8d7f65 100644 --- a/drivers/scsi/dpti.h +++ b/drivers/scsi/dpti.h @@ -5,7 +5,7 @@ begin : Thu Sep 7 2000 copyright : (C) 2001 by Adaptec - See Documentation/scsi/dpti.txt for history, notes, license info + See Documentation/scsi/dpti.rst for history, notes, license info and credits ***************************************************************************/ -- cgit v1.2.3 From cc0d9d3ad7e60ee0bc6f78809ef6f58f512a9cae Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:15:48 +0100 Subject: scsi: docs: convert FlashPoint.txt to ReST Link: https://lore.kernel.org/r/e755b9644047eed6be69fcc77eb797f0801fcb99.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/FlashPoint.rst | 176 ++++++++++++++++++++++++++++++++++++++ Documentation/scsi/FlashPoint.txt | 163 ----------------------------------- Documentation/scsi/index.rst | 1 + drivers/scsi/Kconfig | 2 +- 4 files changed, 178 insertions(+), 164 deletions(-) create mode 100644 Documentation/scsi/FlashPoint.rst delete mode 100644 Documentation/scsi/FlashPoint.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/FlashPoint.rst b/Documentation/scsi/FlashPoint.rst new file mode 100644 index 000000000000..ef3c07e94ad6 --- /dev/null +++ b/Documentation/scsi/FlashPoint.rst @@ -0,0 +1,176 @@ +.. SPDX-License-Identifier: GPL-2.0 + +=================================== +The BusLogic FlashPoint SCSI Driver +=================================== + +The BusLogic FlashPoint SCSI Host Adapters are now fully supported on Linux. +The upgrade program described below has been officially terminated effective +31 March 1997 since it is no longer needed. + +:: + + MYLEX INTRODUCES LINUX OPERATING SYSTEM SUPPORT FOR ITS + BUSLOGIC FLASHPOINT LINE OF SCSI HOST ADAPTERS + + + FREMONT, CA, -- October 8, 1996 -- Mylex Corporation has expanded Linux + operating system support to its BusLogic brand of FlashPoint Ultra SCSI + host adapters. All of BusLogic's other SCSI host adapters, including the + MultiMaster line, currently support the Linux operating system. Linux + drivers and information will be available on October 15th at + http://sourceforge.net/projects/dandelion/. + + "Mylex is committed to supporting the Linux community," says Peter Shambora, + vice president of marketing for Mylex. "We have supported Linux driver + development and provided technical support for our host adapters for several + years, and are pleased to now make our FlashPoint products available to this + user base." + +The Linux Operating System +========================== + +Linux is a freely-distributed implementation of UNIX for Intel x86, Sun +SPARC, SGI MIPS, Motorola 68k, Digital Alpha AXP and Motorola PowerPC +machines. It supports a wide range of software, including the X Window +System, Emacs, and TCP/IP networking. Further information is available at +http://www.linux.org and http://www.ssc.com/. + +FlashPoint Host Adapters +======================== + +The FlashPoint family of Ultra SCSI host adapters, designed for workstation +and file server environments, are available in narrow, wide, dual channel, +and dual channel wide versions. These adapters feature SeqEngine +automation technology, which minimizes SCSI command overhead and reduces +the number of interrupts generated to the CPU. + +About Mylex +=========== + +Mylex Corporation (NASDAQ/NM SYMBOL: MYLX), founded in 1983, is a leading +producer of RAID technology and network management products. The company +produces high performance disk array (RAID) controllers, and complementary +computer products for network servers, mass storage systems, workstations +and system boards. Through its wide range of RAID controllers and its +BusLogic line of Ultra SCSI host adapter products, Mylex provides enabling +intelligent I/O technologies that increase network management control, +enhance CPU utilization, optimize I/O performance, and ensure data security +and availability. Products are sold globally through a network of OEMs, +major distributors, VARs, and system integrators. Mylex Corporation is +headquartered at 34551 Ardenwood Blvd., Fremont, CA. + +Contact: +======== + +:: + + Peter Shambora + Vice President of Marketing + Mylex Corp. + 510/796-6100 + peters@mylex.com + + +:: + + ANNOUNCEMENT + BusLogic FlashPoint LT/BT-948 Upgrade Program + 1 February 1996 + + ADDITIONAL ANNOUNCEMENT + BusLogic FlashPoint LW/BT-958 Upgrade Program + 14 June 1996 + + Ever since its introduction last October, the BusLogic FlashPoint LT has + been problematic for members of the Linux community, in that no Linux + drivers have been available for this new Ultra SCSI product. Despite its + officially being positioned as a desktop workstation product, and not being + particularly well suited for a high performance multitasking operating + system like Linux, the FlashPoint LT has been touted by computer system + vendors as the latest thing, and has been sold even on many of their high + end systems, to the exclusion of the older MultiMaster products. This has + caused grief for many people who inadvertently purchased a system expecting + that all BusLogic SCSI Host Adapters were supported by Linux, only to + discover that the FlashPoint was not supported and would not be for quite + some time, if ever. + + After this problem was identified, BusLogic contacted its major OEM + customers to make sure the BT-946C/956C MultiMaster cards would still be + made available, and that Linux users who mistakenly ordered systems with + the FlashPoint would be able to upgrade to the BT-946C. While this helped + many purchasers of new systems, it was only a partial solution to the + overall problem of FlashPoint support for Linux users. It did nothing to + assist the people who initially purchased a FlashPoint for a supported + operating system and then later decided to run Linux, or those who had + ended up with a FlashPoint LT, believing it was supported, and were unable + to return it. + + In the middle of December, I asked to meet with BusLogic's senior + management to discuss the issues related to Linux and free software support + for the FlashPoint. Rumors of varying accuracy had been circulating + publicly about BusLogic's attitude toward the Linux community, and I felt + it was best that these issues be addressed directly. I sent an email + message after 11pm one evening, and the meeting took place the next + afternoon. Unfortunately, corporate wheels sometimes grind slowly, + especially when a company is being acquired, and so it's taken until now + before the details were completely determined and a public statement could + be made. + + BusLogic is not prepared at this time to release the information necessary + for third parties to write drivers for the FlashPoint. The only existing + FlashPoint drivers have been written directly by BusLogic Engineering, and + there is no FlashPoint documentation sufficiently detailed to allow outside + developers to write a driver without substantial assistance. While there + are people at BusLogic who would rather not release the details of the + FlashPoint architecture at all, that debate has not yet been settled either + way. In any event, even if documentation were available today it would + take quite a while for a usable driver to be written, especially since I'm + not convinced that the effort required would be worthwhile. + + However, BusLogic does remain committed to providing a high performance + SCSI solution for the Linux community, and does not want to see anyone left + unable to run Linux because they have a Flashpoint LT. Therefore, BusLogic + has put in place a direct upgrade program to allow any Linux user worldwide + to trade in their FlashPoint LT for the new BT-948 MultiMaster PCI Ultra + SCSI Host Adapter. The BT-948 is the Ultra SCSI successor to the BT-946C + and has all the best features of both the BT-946C and FlashPoint LT, + including smart termination and a flash PROM for easy firmware updates, and + is of course compatible with the present Linux driver. The price for this + upgrade has been set at US $45 plus shipping and handling, and the upgrade + program will be administered through BusLogic Technical Support, which can + be reached by electronic mail at techsup@buslogic.com, by Voice at +1 408 + 654-0760, or by FAX at +1 408 492-1542. + + As of 14 June 1996, the original BusLogic FlashPoint LT to BT-948 upgrade + program has now been extended to encompass the FlashPoint LW Wide Ultra + SCSI Host Adapter. Any Linux user worldwide may trade in their FlashPoint + LW (BT-950) for a BT-958 MultiMaster PCI Ultra SCSI Host Adapter. The + price for this upgrade has been set at US $65 plus shipping and handling. + + I was a beta test site for the BT-948/958, and versions 1.2.1 and 1.3.1 of + my BusLogic driver already included latent support for the BT-948/958. + Additional cosmetic support for the Ultra SCSI MultiMaster cards was added + subsequent releases. As a result of this cooperative testing process, + several firmware bugs were found and corrected. My heavily loaded Linux + test system provided an ideal environment for testing error recovery + processes that are much more rarely exercised in production systems, but + are crucial to overall system stability. It was especially convenient + being able to work directly with their firmware engineer in demonstrating + the problems under control of the firmware debugging environment; things + sure have come a long way since the last time I worked on firmware for an + embedded system. I am presently working on some performance testing and + expect to have some data to report in the not too distant future. + + BusLogic asked me to send this announcement since a large percentage of the + questions regarding support for the FlashPoint have either been sent to me + directly via email, or have appeared in the Linux newsgroups in which I + participate. To summarize, BusLogic is offering Linux users an upgrade + from the unsupported FlashPoint LT (BT-930) to the supported BT-948 for US + $45 plus shipping and handling, or from the unsupported FlashPoint LW + (BT-950) to the supported BT-958 for $65 plus shipping and handling. + Contact BusLogic Technical Support at techsup@buslogic.com or +1 408 + 654-0760 to take advantage of their offer. + + Leonard N. Zubkoff + lnz@dandelion.com diff --git a/Documentation/scsi/FlashPoint.txt b/Documentation/scsi/FlashPoint.txt deleted file mode 100644 index 5b5f29cb9f8b..000000000000 --- a/Documentation/scsi/FlashPoint.txt +++ /dev/null @@ -1,163 +0,0 @@ -The BusLogic FlashPoint SCSI Host Adapters are now fully supported on Linux. -The upgrade program described below has been officially terminated effective -31 March 1997 since it is no longer needed. - - - - MYLEX INTRODUCES LINUX OPERATING SYSTEM SUPPORT FOR ITS - BUSLOGIC FLASHPOINT LINE OF SCSI HOST ADAPTERS - - -FREMONT, CA, -- October 8, 1996 -- Mylex Corporation has expanded Linux -operating system support to its BusLogic brand of FlashPoint Ultra SCSI -host adapters. All of BusLogic's other SCSI host adapters, including the -MultiMaster line, currently support the Linux operating system. Linux -drivers and information will be available on October 15th at -http://sourceforge.net/projects/dandelion/. - -"Mylex is committed to supporting the Linux community," says Peter Shambora, -vice president of marketing for Mylex. "We have supported Linux driver -development and provided technical support for our host adapters for several -years, and are pleased to now make our FlashPoint products available to this -user base." - -The Linux Operating System - -Linux is a freely-distributed implementation of UNIX for Intel x86, Sun -SPARC, SGI MIPS, Motorola 68k, Digital Alpha AXP and Motorola PowerPC -machines. It supports a wide range of software, including the X Window -System, Emacs, and TCP/IP networking. Further information is available at -http://www.linux.org and http://www.ssc.com/. - -FlashPoint Host Adapters - -The FlashPoint family of Ultra SCSI host adapters, designed for workstation -and file server environments, are available in narrow, wide, dual channel, -and dual channel wide versions. These adapters feature SeqEngine -automation technology, which minimizes SCSI command overhead and reduces -the number of interrupts generated to the CPU. - -About Mylex - -Mylex Corporation (NASDAQ/NM SYMBOL: MYLX), founded in 1983, is a leading -producer of RAID technology and network management products. The company -produces high performance disk array (RAID) controllers, and complementary -computer products for network servers, mass storage systems, workstations -and system boards. Through its wide range of RAID controllers and its -BusLogic line of Ultra SCSI host adapter products, Mylex provides enabling -intelligent I/O technologies that increase network management control, -enhance CPU utilization, optimize I/O performance, and ensure data security -and availability. Products are sold globally through a network of OEMs, -major distributors, VARs, and system integrators. Mylex Corporation is -headquartered at 34551 Ardenwood Blvd., Fremont, CA. - - #### - -Contact: - -Peter Shambora -Vice President of Marketing -Mylex Corp. -510/796-6100 -peters@mylex.com - - ANNOUNCEMENT - BusLogic FlashPoint LT/BT-948 Upgrade Program - 1 February 1996 - - ADDITIONAL ANNOUNCEMENT - BusLogic FlashPoint LW/BT-958 Upgrade Program - 14 June 1996 - -Ever since its introduction last October, the BusLogic FlashPoint LT has -been problematic for members of the Linux community, in that no Linux -drivers have been available for this new Ultra SCSI product. Despite its -officially being positioned as a desktop workstation product, and not being -particularly well suited for a high performance multitasking operating -system like Linux, the FlashPoint LT has been touted by computer system -vendors as the latest thing, and has been sold even on many of their high -end systems, to the exclusion of the older MultiMaster products. This has -caused grief for many people who inadvertently purchased a system expecting -that all BusLogic SCSI Host Adapters were supported by Linux, only to -discover that the FlashPoint was not supported and would not be for quite -some time, if ever. - -After this problem was identified, BusLogic contacted its major OEM -customers to make sure the BT-946C/956C MultiMaster cards would still be -made available, and that Linux users who mistakenly ordered systems with -the FlashPoint would be able to upgrade to the BT-946C. While this helped -many purchasers of new systems, it was only a partial solution to the -overall problem of FlashPoint support for Linux users. It did nothing to -assist the people who initially purchased a FlashPoint for a supported -operating system and then later decided to run Linux, or those who had -ended up with a FlashPoint LT, believing it was supported, and were unable -to return it. - -In the middle of December, I asked to meet with BusLogic's senior -management to discuss the issues related to Linux and free software support -for the FlashPoint. Rumors of varying accuracy had been circulating -publicly about BusLogic's attitude toward the Linux community, and I felt -it was best that these issues be addressed directly. I sent an email -message after 11pm one evening, and the meeting took place the next -afternoon. Unfortunately, corporate wheels sometimes grind slowly, -especially when a company is being acquired, and so it's taken until now -before the details were completely determined and a public statement could -be made. - -BusLogic is not prepared at this time to release the information necessary -for third parties to write drivers for the FlashPoint. The only existing -FlashPoint drivers have been written directly by BusLogic Engineering, and -there is no FlashPoint documentation sufficiently detailed to allow outside -developers to write a driver without substantial assistance. While there -are people at BusLogic who would rather not release the details of the -FlashPoint architecture at all, that debate has not yet been settled either -way. In any event, even if documentation were available today it would -take quite a while for a usable driver to be written, especially since I'm -not convinced that the effort required would be worthwhile. - -However, BusLogic does remain committed to providing a high performance -SCSI solution for the Linux community, and does not want to see anyone left -unable to run Linux because they have a Flashpoint LT. Therefore, BusLogic -has put in place a direct upgrade program to allow any Linux user worldwide -to trade in their FlashPoint LT for the new BT-948 MultiMaster PCI Ultra -SCSI Host Adapter. The BT-948 is the Ultra SCSI successor to the BT-946C -and has all the best features of both the BT-946C and FlashPoint LT, -including smart termination and a flash PROM for easy firmware updates, and -is of course compatible with the present Linux driver. The price for this -upgrade has been set at US $45 plus shipping and handling, and the upgrade -program will be administered through BusLogic Technical Support, which can -be reached by electronic mail at techsup@buslogic.com, by Voice at +1 408 -654-0760, or by FAX at +1 408 492-1542. - -As of 14 June 1996, the original BusLogic FlashPoint LT to BT-948 upgrade -program has now been extended to encompass the FlashPoint LW Wide Ultra -SCSI Host Adapter. Any Linux user worldwide may trade in their FlashPoint -LW (BT-950) for a BT-958 MultiMaster PCI Ultra SCSI Host Adapter. The -price for this upgrade has been set at US $65 plus shipping and handling. - -I was a beta test site for the BT-948/958, and versions 1.2.1 and 1.3.1 of -my BusLogic driver already included latent support for the BT-948/958. -Additional cosmetic support for the Ultra SCSI MultiMaster cards was added -subsequent releases. As a result of this cooperative testing process, -several firmware bugs were found and corrected. My heavily loaded Linux -test system provided an ideal environment for testing error recovery -processes that are much more rarely exercised in production systems, but -are crucial to overall system stability. It was especially convenient -being able to work directly with their firmware engineer in demonstrating -the problems under control of the firmware debugging environment; things -sure have come a long way since the last time I worked on firmware for an -embedded system. I am presently working on some performance testing and -expect to have some data to report in the not too distant future. - -BusLogic asked me to send this announcement since a large percentage of the -questions regarding support for the FlashPoint have either been sent to me -directly via email, or have appeared in the Linux newsgroups in which I -participate. To summarize, BusLogic is offering Linux users an upgrade -from the unsupported FlashPoint LT (BT-930) to the supported BT-948 for US -$45 plus shipping and handling, or from the unsupported FlashPoint LW -(BT-950) to the supported BT-958 for $65 plus shipping and handling. -Contact BusLogic Technical Support at techsup@buslogic.com or +1 408 -654-0760 to take advantage of their offer. - - Leonard N. Zubkoff - lnz@dandelion.com diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index b553dd9904bf..aad8359357e6 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -19,5 +19,6 @@ Linux SCSI Subsystem cxgb3i dc395x dpti + FlashPoint scsi_transport_srp/figures diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 5e834fba7934..e47498f7627e 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -503,7 +503,7 @@ config SCSI_BUSLOGIC Adapters. Consult the SCSI-HOWTO, available from , and the files and - for more information. + for more information. Note that support for FlashPoint is only available for 32-bit x86 configurations. -- cgit v1.2.3 From 304a8b62707b4aa64f344ae5d5dc69b6b5ec1381 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:15:58 +0100 Subject: scsi: docs: convert ppa.txt to ReST Link: https://lore.kernel.org/r/3db8cd51d77fef6b66632249412969caa29dec40.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/index.rst | 1 + Documentation/scsi/ppa.rst | 18 ++++++++++++++++++ Documentation/scsi/ppa.txt | 14 -------------- drivers/scsi/Kconfig | 4 ++-- 4 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 Documentation/scsi/ppa.rst delete mode 100644 Documentation/scsi/ppa.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index eb2df0e0dcb7..17327f67af68 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -29,5 +29,6 @@ Linux SCSI Subsystem megaraid ncr53c8xx NinjaSCSI + ppa scsi_transport_srp/figures diff --git a/Documentation/scsi/ppa.rst b/Documentation/scsi/ppa.rst new file mode 100644 index 000000000000..5fe3859a6892 --- /dev/null +++ b/Documentation/scsi/ppa.rst @@ -0,0 +1,18 @@ +.. SPDX-License-Identifier: GPL-2.0 + +====================================== +Terse where to get ZIP Drive help info +====================================== + +General Iomega ZIP drive page for Linux: +http://web.archive.org/web/%2E/http://www.torque.net/~campbell/ + +Driver archive for old drivers: +http://web.archive.org/web/%2E/http://www.torque.net/~campbell/ppa + +Linux Parport page (parallel port) +http://web.archive.org/web/%2E/http://www.torque.net/parport/ + +Email list for Linux Parport +linux-parport@torque.net + diff --git a/Documentation/scsi/ppa.txt b/Documentation/scsi/ppa.txt deleted file mode 100644 index 05ff47dbe8d1..000000000000 --- a/Documentation/scsi/ppa.txt +++ /dev/null @@ -1,14 +0,0 @@ --------- Terse where to get ZIP Drive help info -------- - -General Iomega ZIP drive page for Linux: -http://web.archive.org/web/*/http://www.torque.net/~campbell/ - -Driver archive for old drivers: -http://web.archive.org/web/*/http://www.torque.net/~campbell/ppa - -Linux Parport page (parallel port) -http://web.archive.org/web/*/http://www.torque.net/parport/ - -Email list for Linux Parport -linux-parport@torque.net - diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index e47498f7627e..82462d6a4ce5 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -804,7 +804,7 @@ config SCSI_PPA newer drives)", below. For more information about this driver and how to use it you should - read the file . You should also read + read the file . You should also read the SCSI-HOWTO, which is available from . If you use this driver, you will still be able to use the parallel port for other tasks, @@ -831,7 +831,7 @@ config SCSI_IMM here and Y to "IOMEGA Parallel Port (ppa - older drives)", above. For more information about this driver and how to use it you should - read the file . You should also read + read the file . You should also read the SCSI-HOWTO, which is available from . If you use this driver, you will still be able to use the parallel port for other tasks, -- cgit v1.2.3 From 058595d58217fc062ed95c8a5621d2bc26a7a9bb Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:15:59 +0100 Subject: scsi: docs: convert qlogicfas.txt to ReST Link: https://lore.kernel.org/r/b69f795c781811b9a908abe43485f1dca0ee8ac5.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/index.rst | 1 + Documentation/scsi/qlogicfas.rst | 87 ++++++++++++++++++++++++++++++++++++++++ Documentation/scsi/qlogicfas.txt | 78 ----------------------------------- drivers/scsi/Kconfig | 2 +- 4 files changed, 89 insertions(+), 79 deletions(-) create mode 100644 Documentation/scsi/qlogicfas.rst delete mode 100644 Documentation/scsi/qlogicfas.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index 17327f67af68..29e211ee9145 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -30,5 +30,6 @@ Linux SCSI Subsystem ncr53c8xx NinjaSCSI ppa + qlogicfas scsi_transport_srp/figures diff --git a/Documentation/scsi/qlogicfas.rst b/Documentation/scsi/qlogicfas.rst new file mode 100644 index 000000000000..b17f1b3676c3 --- /dev/null +++ b/Documentation/scsi/qlogicfas.rst @@ -0,0 +1,87 @@ +.. SPDX-License-Identifier: GPL-2.0 + +================================= +Qlogic FASXXX Family Driver Notes +================================= + +This driver supports the Qlogic FASXXX family of chips. This driver +only works with the ISA, VLB, and PCMCIA versions of the Qlogic +FastSCSI! cards as well as any other card based on the FASXX chip +(including the Control Concepts SCSI/IDE/SIO/PIO/FDC cards). + +This driver does NOT support the PCI version. Support for these PCI +Qlogic boards: + + * IQ-PCI + * IQ-PCI-10 + * IQ-PCI-D + +is provided by the qla1280 driver. + +Nor does it support the PCI-Basic, which is supported by the +'am53c974' driver. + +PCMCIA Support +============== + +This currently only works if the card is enabled first from DOS. This +means you will have to load your socket and card services, and +QL41DOS.SYS and QL40ENBL.SYS. These are a minimum, but loading the +rest of the modules won't interfere with the operation. The next +thing to do is load the kernel without resetting the hardware, which +can be a simple ctrl-alt-delete with a boot floppy, or by using +loadlin with the kernel image accessible from DOS. If you are using +the Linux PCMCIA driver, you will have to adjust it or otherwise stop +it from configuring the card. + +I am working with the PCMCIA group to make it more flexible, but that +may take a while. + +All Cards +========= + +The top of the qlogic.c file has a number of defines that controls +configuration. As shipped, it provides a balance between speed and +function. If there are any problems, try setting SLOW_CABLE to 1, and +then try changing USE_IRQ and TURBO_PDMA to zero. If you are familiar +with SCSI, there are other settings which can tune the bus. + +It may be a good idea to enable RESET_AT_START, especially if the +devices may not have been just powered up, or if you are restarting +after a crash, since they may be busy trying to complete the last +command or something. It comes up faster if this is set to zero, and +if you have reliable hardware and connections it may be more useful to +not reset things. + +Some Troubleshooting Tips +========================= + +Make sure it works properly under DOS. You should also do an initial FDISK +on a new drive if you want partitions. + +Don't enable all the speedups first. If anything is wrong, they will make +any problem worse. + +Important +========= + +The best way to test if your cables, termination, etc. are good is to +copy a very big file (e.g. a doublespace container file, or a very +large executable or archive). It should be at least 5 megabytes, but +you can do multiple tests on smaller files. Then do a COMP to verify +that the file copied properly. (Turn off all caching when doing these +tests, otherwise you will test your RAM and not the files). Then do +10 COMPs, comparing the same file on the SCSI hard drive, i.e. "COMP +realbig.doc realbig.doc". Then do it after the computer gets warm. + +I noticed my system which seems to work 100% would fail this test if +the computer was left on for a few hours. It was worse with longer +cables, and more devices on the SCSI bus. What seems to happen is +that it gets a false ACK causing an extra byte to be inserted into the +stream (and this is not detected). This can be caused by bad +termination (the ACK can be reflected), or by noise when the chips +work less well because of the heat, or when cables get too long for +the speed. + +Remember, if it doesn't work under DOS, it probably won't work under +Linux. diff --git a/Documentation/scsi/qlogicfas.txt b/Documentation/scsi/qlogicfas.txt deleted file mode 100644 index c211d827fef2..000000000000 --- a/Documentation/scsi/qlogicfas.txt +++ /dev/null @@ -1,78 +0,0 @@ - -This driver supports the Qlogic FASXXX family of chips. This driver -only works with the ISA, VLB, and PCMCIA versions of the Qlogic -FastSCSI! cards as well as any other card based on the FASXX chip -(including the Control Concepts SCSI/IDE/SIO/PIO/FDC cards). - -This driver does NOT support the PCI version. Support for these PCI -Qlogic boards: - - * IQ-PCI - * IQ-PCI-10 - * IQ-PCI-D - -is provided by the qla1280 driver. - -Nor does it support the PCI-Basic, which is supported by the -'am53c974' driver. - -PCMCIA SUPPORT - -This currently only works if the card is enabled first from DOS. This -means you will have to load your socket and card services, and -QL41DOS.SYS and QL40ENBL.SYS. These are a minimum, but loading the -rest of the modules won't interfere with the operation. The next -thing to do is load the kernel without resetting the hardware, which -can be a simple ctrl-alt-delete with a boot floppy, or by using -loadlin with the kernel image accessible from DOS. If you are using -the Linux PCMCIA driver, you will have to adjust it or otherwise stop -it from configuring the card. - -I am working with the PCMCIA group to make it more flexible, but that -may take a while. - -ALL CARDS - -The top of the qlogic.c file has a number of defines that controls -configuration. As shipped, it provides a balance between speed and -function. If there are any problems, try setting SLOW_CABLE to 1, and -then try changing USE_IRQ and TURBO_PDMA to zero. If you are familiar -with SCSI, there are other settings which can tune the bus. - -It may be a good idea to enable RESET_AT_START, especially if the -devices may not have been just powered up, or if you are restarting -after a crash, since they may be busy trying to complete the last -command or something. It comes up faster if this is set to zero, and -if you have reliable hardware and connections it may be more useful to -not reset things. - -SOME TROUBLESHOOTING TIPS - -Make sure it works properly under DOS. You should also do an initial FDISK -on a new drive if you want partitions. - -Don't enable all the speedups first. If anything is wrong, they will make -any problem worse. - -IMPORTANT - -The best way to test if your cables, termination, etc. are good is to -copy a very big file (e.g. a doublespace container file, or a very -large executable or archive). It should be at least 5 megabytes, but -you can do multiple tests on smaller files. Then do a COMP to verify -that the file copied properly. (Turn off all caching when doing these -tests, otherwise you will test your RAM and not the files). Then do -10 COMPs, comparing the same file on the SCSI hard drive, i.e. "COMP -realbig.doc realbig.doc". Then do it after the computer gets warm. - -I noticed my system which seems to work 100% would fail this test if -the computer was left on for a few hours. It was worse with longer -cables, and more devices on the SCSI bus. What seems to happen is -that it gets a false ACK causing an extra byte to be inserted into the -stream (and this is not detected). This can be caused by bad -termination (the ACK can be reflected), or by noise when the chips -work less well because of the heat, or when cables get too long for -the speed. - -Remember, if it doesn't work under DOS, it probably won't work under -Linux. diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 82462d6a4ce5..d34c682e94cf 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -1117,7 +1117,7 @@ config SCSI_QLOGIC_FAS SCSI support"), below. Information about this driver is contained in - . You should also read the + . You should also read the SCSI-HOWTO, available from . -- cgit v1.2.3 From 731fc16c2fdd42d638900a4cd28c7db4beea1893 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:16:00 +0100 Subject: scsi: docs: convert scsi-changer.txt to ReST Link: https://lore.kernel.org/r/433d073fa982174a19783c2e59412b724e2cf946.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/index.rst | 1 + Documentation/scsi/scsi-changer.rst | 184 ++++++++++++++++++++++++++++++++++++ Documentation/scsi/scsi-changer.txt | 180 ----------------------------------- drivers/scsi/Kconfig | 2 +- 4 files changed, 186 insertions(+), 181 deletions(-) create mode 100644 Documentation/scsi/scsi-changer.rst delete mode 100644 Documentation/scsi/scsi-changer.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index 29e211ee9145..635a3b3c5e90 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -31,5 +31,6 @@ Linux SCSI Subsystem NinjaSCSI ppa qlogicfas + scsi-changer scsi_transport_srp/figures diff --git a/Documentation/scsi/scsi-changer.rst b/Documentation/scsi/scsi-changer.rst new file mode 100644 index 000000000000..ab60e7e61a6c --- /dev/null +++ b/Documentation/scsi/scsi-changer.rst @@ -0,0 +1,184 @@ +.. SPDX-License-Identifier: GPL-2.0 + +======================================== +README for the SCSI media changer driver +======================================== + +This is a driver for SCSI Medium Changer devices, which are listed +with "Type: Medium Changer" in /proc/scsi/scsi. + +This is for *real* Jukeboxes. It is *not* supported to work with +common small CD-ROM changers, neither one-lun-per-slot SCSI changers +nor IDE drives. + +Userland tools available from here: + http://linux.bytesex.org/misc/changer.html + + +General Information +------------------- + +First some words about how changers work: A changer has 2 (possibly +more) SCSI ID's. One for the changer device which controls the robot, +and one for the device which actually reads and writes the data. The +later may be anything, a MOD, a CD-ROM, a tape or whatever. For the +changer device this is a "don't care", he *only* shuffles around the +media, nothing else. + + +The SCSI changer model is complex, compared to - for example - IDE-CD +changers. But it allows to handle nearly all possible cases. It knows +4 different types of changer elements: + + =============== ================================================== + media transport this one shuffles around the media, i.e. the + transport arm. Also known as "picker". + storage a slot which can hold a media. + import/export the same as above, but is accessible from outside, + i.e. there the operator (you !) can use this to + fill in and remove media from the changer. + Sometimes named "mailslot". + data transfer this is the device which reads/writes, i.e. the + CD-ROM / Tape / whatever drive. + =============== ================================================== + +None of these is limited to one: A huge Jukebox could have slots for +123 CD-ROM's, 5 CD-ROM readers (and therefore 6 SCSI ID's: the changer +and each CD-ROM) and 2 transport arms. No problem to handle. + + +How it is implemented +--------------------- + +I implemented the driver as character device driver with a NetBSD-like +ioctl interface. Just grabbed NetBSD's header file and one of the +other linux SCSI device drivers as starting point. The interface +should be source code compatible with NetBSD. So if there is any +software (anybody knows ???) which supports a BSDish changer driver, +it should work with this driver too. + +Over time a few more ioctls where added, volume tag support for example +wasn't covered by the NetBSD ioctl API. + + +Current State +------------- + +Support for more than one transport arm is not implemented yet (and +nobody asked for it so far...). + +I test and use the driver myself with a 35 slot cdrom jukebox from +Grundig. I got some reports telling it works ok with tape autoloaders +(Exabyte, HP and DEC). Some People use this driver with amanda. It +works fine with small (11 slots) and a huge (4 MOs, 88 slots) +magneto-optical Jukebox. Probably with lots of other changers too, most +(but not all :-) people mail me only if it does *not* work... + +I don't have any device lists, neither black-list nor white-list. Thus +it is quite useless to ask me whenever a specific device is supported or +not. In theory every changer device which supports the SCSI-2 media +changer command set should work out-of-the-box with this driver. If it +doesn't, it is a bug. Either within the driver or within the firmware +of the changer device. + + +Using it +-------- + +This is a character device with major number is 86, so use +"mknod /dev/sch0 c 86 0" to create the special file for the driver. + +If the module finds the changer, it prints some messages about the +device [ try "dmesg" if you don't see anything ] and should show up in +/proc/devices. If not.... some changers use ID ? / LUN 0 for the +device and ID ? / LUN 1 for the robot mechanism. But Linux does *not* +look for LUNs other than 0 as default, because there are too many +broken devices. So you can try: + + 1) echo "scsi add-single-device 0 0 ID 1" > /proc/scsi/scsi + (replace ID with the SCSI-ID of the device) + 2) boot the kernel with "max_scsi_luns=1" on the command line + (append="max_scsi_luns=1" in lilo.conf should do the trick) + + +Trouble? +-------- + +If you insmod the driver with "insmod debug=1", it will be verbose and +prints a lot of stuff to the syslog. Compiling the kernel with +CONFIG_SCSI_CONSTANTS=y improves the quality of the error messages a lot +because the kernel will translate the error codes into human-readable +strings then. + +You can display these messages with the dmesg command (or check the +logfiles). If you email me some question because of a problem with the +driver, please include these messages. + + +Insmod options +-------------- + +debug=0/1 + Enable debug messages (see above, default: 0). + +verbose=0/1 + Be verbose (default: 1). + +init=0/1 + Send INITIALIZE ELEMENT STATUS command to the changer + at insmod time (default: 1). + +timeout_init= + timeout for the INITIALIZE ELEMENT STATUS command + (default: 3600). + +timeout_move= + timeout for all other commands (default: 120). + +dt_id=,,... / dt_lun=,,... + These two allow to specify the SCSI ID and LUN for the data + transfer elements. You likely don't need this as the jukebox + should provide this information. But some devices don't ... + +vendor_firsts=, vendor_counts=, vendor_labels= + These insmod options can be used to tell the driver that there + are some vendor-specific element types. Grundig for example + does this. Some jukeboxes have a printer to label fresh burned + CDs, which is addressed as element 0xc000 (type 5). To tell the + driver about this vendor-specific element, use this:: + + $ insmod ch \ + vendor_firsts=0xc000 \ + vendor_counts=1 \ + vendor_labels=printer + + All three insmod options accept up to four comma-separated + values, this way you can configure the element types 5-8. + You likely need the SCSI specs for the device in question to + find the correct values as they are not covered by the SCSI-2 + standard. + + +Credits +------- + +I wrote this driver using the famous mailing-patches-around-the-world +method. With (more or less) help from: + + - Daniel Moehwald + - Dane Jasper + - R. Scott Bailey + - Jonathan Corbet + +Special thanks go to + + - Martin Kuehne + +for a old, second-hand (but full functional) cdrom jukebox which I use +to develop/test driver and tools now. + +Have fun, + + Gerd + +Gerd Knorr diff --git a/Documentation/scsi/scsi-changer.txt b/Documentation/scsi/scsi-changer.txt deleted file mode 100644 index ade046ea7c17..000000000000 --- a/Documentation/scsi/scsi-changer.txt +++ /dev/null @@ -1,180 +0,0 @@ - -README for the SCSI media changer driver -======================================== - -This is a driver for SCSI Medium Changer devices, which are listed -with "Type: Medium Changer" in /proc/scsi/scsi. - -This is for *real* Jukeboxes. It is *not* supported to work with -common small CD-ROM changers, neither one-lun-per-slot SCSI changers -nor IDE drives. - -Userland tools available from here: - http://linux.bytesex.org/misc/changer.html - - -General Information -------------------- - -First some words about how changers work: A changer has 2 (possibly -more) SCSI ID's. One for the changer device which controls the robot, -and one for the device which actually reads and writes the data. The -later may be anything, a MOD, a CD-ROM, a tape or whatever. For the -changer device this is a "don't care", he *only* shuffles around the -media, nothing else. - - -The SCSI changer model is complex, compared to - for example - IDE-CD -changers. But it allows to handle nearly all possible cases. It knows -4 different types of changer elements: - - media transport - this one shuffles around the media, i.e. the - transport arm. Also known as "picker". - storage - a slot which can hold a media. - import/export - the same as above, but is accessible from outside, - i.e. there the operator (you !) can use this to - fill in and remove media from the changer. - Sometimes named "mailslot". - data transfer - this is the device which reads/writes, i.e. the - CD-ROM / Tape / whatever drive. - -None of these is limited to one: A huge Jukebox could have slots for -123 CD-ROM's, 5 CD-ROM readers (and therefore 6 SCSI ID's: the changer -and each CD-ROM) and 2 transport arms. No problem to handle. - - -How it is implemented ---------------------- - -I implemented the driver as character device driver with a NetBSD-like -ioctl interface. Just grabbed NetBSD's header file and one of the -other linux SCSI device drivers as starting point. The interface -should be source code compatible with NetBSD. So if there is any -software (anybody knows ???) which supports a BSDish changer driver, -it should work with this driver too. - -Over time a few more ioctls where added, volume tag support for example -wasn't covered by the NetBSD ioctl API. - - -Current State -------------- - -Support for more than one transport arm is not implemented yet (and -nobody asked for it so far...). - -I test and use the driver myself with a 35 slot cdrom jukebox from -Grundig. I got some reports telling it works ok with tape autoloaders -(Exabyte, HP and DEC). Some People use this driver with amanda. It -works fine with small (11 slots) and a huge (4 MOs, 88 slots) -magneto-optical Jukebox. Probably with lots of other changers too, most -(but not all :-) people mail me only if it does *not* work... - -I don't have any device lists, neither black-list nor white-list. Thus -it is quite useless to ask me whenever a specific device is supported or -not. In theory every changer device which supports the SCSI-2 media -changer command set should work out-of-the-box with this driver. If it -doesn't, it is a bug. Either within the driver or within the firmware -of the changer device. - - -Using it --------- - -This is a character device with major number is 86, so use -"mknod /dev/sch0 c 86 0" to create the special file for the driver. - -If the module finds the changer, it prints some messages about the -device [ try "dmesg" if you don't see anything ] and should show up in -/proc/devices. If not.... some changers use ID ? / LUN 0 for the -device and ID ? / LUN 1 for the robot mechanism. But Linux does *not* -look for LUNs other than 0 as default, because there are too many -broken devices. So you can try: - - 1) echo "scsi add-single-device 0 0 ID 1" > /proc/scsi/scsi - (replace ID with the SCSI-ID of the device) - 2) boot the kernel with "max_scsi_luns=1" on the command line - (append="max_scsi_luns=1" in lilo.conf should do the trick) - - -Trouble? --------- - -If you insmod the driver with "insmod debug=1", it will be verbose and -prints a lot of stuff to the syslog. Compiling the kernel with -CONFIG_SCSI_CONSTANTS=y improves the quality of the error messages a lot -because the kernel will translate the error codes into human-readable -strings then. - -You can display these messages with the dmesg command (or check the -logfiles). If you email me some question because of a problem with the -driver, please include these messages. - - -Insmod options --------------- - -debug=0/1 - Enable debug messages (see above, default: 0). - -verbose=0/1 - Be verbose (default: 1). - -init=0/1 - Send INITIALIZE ELEMENT STATUS command to the changer - at insmod time (default: 1). - -timeout_init= - timeout for the INITIALIZE ELEMENT STATUS command - (default: 3600). - -timeout_move= - timeout for all other commands (default: 120). - -dt_id=,,... -dt_lun=,,... - These two allow to specify the SCSI ID and LUN for the data - transfer elements. You likely don't need this as the jukebox - should provide this information. But some devices don't ... - -vendor_firsts= -vendor_counts= -vendor_labels= - These insmod options can be used to tell the driver that there - are some vendor-specific element types. Grundig for example - does this. Some jukeboxes have a printer to label fresh burned - CDs, which is addressed as element 0xc000 (type 5). To tell the - driver about this vendor-specific element, use this: - $ insmod ch \ - vendor_firsts=0xc000 \ - vendor_counts=1 \ - vendor_labels=printer - All three insmod options accept up to four comma-separated - values, this way you can configure the element types 5-8. - You likely need the SCSI specs for the device in question to - find the correct values as they are not covered by the SCSI-2 - standard. - - -Credits -------- - -I wrote this driver using the famous mailing-patches-around-the-world -method. With (more or less) help from: - - Daniel Moehwald - Dane Jasper - R. Scott Bailey - Jonathan Corbet - -Special thanks go to - Martin Kuehne -for a old, second-hand (but full functional) cdrom jukebox which I use -to develop/test driver and tools now. - -Have fun, - - Gerd - --- -Gerd Knorr diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index d34c682e94cf..6cb9abb0898d 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -149,7 +149,7 @@ config CHR_DEV_SCH don't need this for those tiny 6-slot cdrom changers. Media changers are listed as "Type: Medium Changer" in /proc/scsi/scsi. If you have such hardware and want to use it with linux, say Y - here. Check for details. + here. Check for details. If you want to compile this as a module ( = code which can be inserted in and removed from the running kernel whenever you want), -- cgit v1.2.3 From d4d79340fb7b3f6e9d69a47304b165207145b6d1 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:16:03 +0100 Subject: scsi: docs: convert scsi-generic.txt to ReST Link: https://lore.kernel.org/r/f57b8ddf30397c2c7213e49634e5e9cbd4246368.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/index.rst | 1 + Documentation/scsi/scsi-generic.rst | 118 ++++++++++++++++++++++++++++++++++++ Documentation/scsi/scsi-generic.txt | 101 ------------------------------ MAINTAINERS | 2 +- drivers/scsi/Kconfig | 2 +- include/scsi/sg.h | 2 +- 6 files changed, 122 insertions(+), 104 deletions(-) create mode 100644 Documentation/scsi/scsi-generic.rst delete mode 100644 Documentation/scsi/scsi-generic.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index 471982ef461d..119280f26da6 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -34,5 +34,6 @@ Linux SCSI Subsystem scsi-changer scsi_eh scsi_fc_transport + scsi-generic scsi_transport_srp/figures diff --git a/Documentation/scsi/scsi-generic.rst b/Documentation/scsi/scsi-generic.rst new file mode 100644 index 000000000000..258505e557a6 --- /dev/null +++ b/Documentation/scsi/scsi-generic.rst @@ -0,0 +1,118 @@ +.. SPDX-License-Identifier: GPL-2.0 + +======================================= +Notes on Linux SCSI Generic (sg) driver +======================================= + + 20020126 + +Introduction +============ +The SCSI Generic driver (sg) is one of the four "high level" SCSI device +drivers along with sd, st and sr (disk, tape and CDROM respectively). Sg +is more generalized (but lower level) than its siblings and tends to be +used on SCSI devices that don't fit into the already serviced categories. +Thus sg is used for scanners, CD writers and reading audio CDs digitally +amongst other things. + +Rather than document the driver's interface here, version information +is provided plus pointers (i.e. URLs) where to find documentation +and examples. + + +Major versions of the sg driver +=============================== +There are three major versions of sg found in the linux kernel (lk): + - sg version 1 (original) from 1992 to early 1999 (lk 2.2.5) . + It is based in the sg_header interface structure. + - sg version 2 from lk 2.2.6 in the 2.2 series. It is based on + an extended version of the sg_header interface structure. + - sg version 3 found in the lk 2.4 series (and the lk 2.5 series). + It adds the sg_io_hdr interface structure. + + +Sg driver documentation +======================= +The most recent documentation of the sg driver is kept at the Linux +Documentation Project's (LDP) site: + +- http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO + +This describes the sg version 3 driver found in the lk 2.4 series. + +The LDP renders documents in single and multiple page HTML, postscript +and pdf. This document can also be found at: + +- http://sg.danny.cz/sg/p/sg_v3_ho.html + +Documentation for the version 2 sg driver found in the lk 2.2 series can +be found at http://sg.danny.cz/sg/. A larger version +is at: http://sg.danny.cz/sg/p/scsi-generic_long.txt. + +The original documentation for the sg driver (prior to lk 2.2.6) can be +found at http://www.torque.net/sg/p/original/SCSI-Programming-HOWTO.txt +and in the LDP archives. + +A changelog with brief notes can be found in the +/usr/src/linux/include/scsi/sg.h file. Note that the glibc maintainers copy +and edit this file (removing its changelog for example) before placing it +in /usr/include/scsi/sg.h . Driver debugging information and other notes +can be found at the top of the /usr/src/linux/drivers/scsi/sg.c file. + +A more general description of the Linux SCSI subsystem of which sg is a +part can be found at http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO . + + +Example code and utilities +========================== +There are two packages of sg utilities: + + ========= ========================================================== + sg3_utils for the sg version 3 driver found in lk 2.4 + sg_utils for the sg version 2 (and original) driver found in lk 2.2 + and earlier + ========= ========================================================== + +Both packages will work in the lk 2.4 series however sg3_utils offers more +capabilities. They can be found at: http://sg.danny.cz/sg/sg3_utils.html and +freecode.com + +Another approach is to look at the applications that use the sg driver. +These include cdrecord, cdparanoia, SANE and cdrdao. + + +Mapping of Linux kernel versions to sg driver versions +====================================================== +Here is a list of linux kernels in the 2.4 series that had new version +of the sg driver: + + - lk 2.4.0 : sg version 3.1.17 + - lk 2.4.7 : sg version 3.1.19 + - lk 2.4.10 : sg version 3.1.20 [#]_ + - lk 2.4.17 : sg version 3.1.22 + +.. [#] There were 3 changes to sg version 3.1.20 by third parties in the + next six linux kernel versions. + +For reference here is a list of linux kernels in the 2.2 series that had +new version of the sg driver: + + - lk 2.2.0 : original sg version [with no version number] + - lk 2.2.6 : sg version 2.1.31 + - lk 2.2.8 : sg version 2.1.32 + - lk 2.2.10 : sg version 2.1.34 [SG_GET_VERSION_NUM ioctl first appeared] + - lk 2.2.14 : sg version 2.1.36 + - lk 2.2.16 : sg version 2.1.38 + - lk 2.2.17 : sg version 2.1.39 + - lk 2.2.20 : sg version 2.1.40 + +The lk 2.5 development series has recently commenced and it currently +contains sg version 3.5.23 which is functionally equivalent to sg +version 3.1.22 found in lk 2.4.17. + + +Douglas Gilbert + +26th January 2002 + +dgilbert@interlog.com diff --git a/Documentation/scsi/scsi-generic.txt b/Documentation/scsi/scsi-generic.txt deleted file mode 100644 index 51be20a6a14d..000000000000 --- a/Documentation/scsi/scsi-generic.txt +++ /dev/null @@ -1,101 +0,0 @@ - Notes on Linux SCSI Generic (sg) driver - --------------------------------------- - 20020126 -Introduction -============ -The SCSI Generic driver (sg) is one of the four "high level" SCSI device -drivers along with sd, st and sr (disk, tape and CDROM respectively). Sg -is more generalized (but lower level) than its siblings and tends to be -used on SCSI devices that don't fit into the already serviced categories. -Thus sg is used for scanners, CD writers and reading audio CDs digitally -amongst other things. - -Rather than document the driver's interface here, version information -is provided plus pointers (i.e. URLs) where to find documentation -and examples. - - -Major versions of the sg driver -=============================== -There are three major versions of sg found in the linux kernel (lk): - - sg version 1 (original) from 1992 to early 1999 (lk 2.2.5) . - It is based in the sg_header interface structure. - - sg version 2 from lk 2.2.6 in the 2.2 series. It is based on - an extended version of the sg_header interface structure. - - sg version 3 found in the lk 2.4 series (and the lk 2.5 series). - It adds the sg_io_hdr interface structure. - - -Sg driver documentation -======================= -The most recent documentation of the sg driver is kept at the Linux -Documentation Project's (LDP) site: -http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO -This describes the sg version 3 driver found in the lk 2.4 series. -The LDP renders documents in single and multiple page HTML, postscript -and pdf. This document can also be found at: -http://sg.danny.cz/sg/p/sg_v3_ho.html - -Documentation for the version 2 sg driver found in the lk 2.2 series can -be found at http://sg.danny.cz/sg/. A larger version -is at: http://sg.danny.cz/sg/p/scsi-generic_long.txt. - -The original documentation for the sg driver (prior to lk 2.2.6) can be -found at http://www.torque.net/sg/p/original/SCSI-Programming-HOWTO.txt -and in the LDP archives. - -A changelog with brief notes can be found in the -/usr/src/linux/include/scsi/sg.h file. Note that the glibc maintainers copy -and edit this file (removing its changelog for example) before placing it -in /usr/include/scsi/sg.h . Driver debugging information and other notes -can be found at the top of the /usr/src/linux/drivers/scsi/sg.c file. - -A more general description of the Linux SCSI subsystem of which sg is a -part can be found at http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO . - - -Example code and utilities -========================== -There are two packages of sg utilities: - - sg3_utils for the sg version 3 driver found in lk 2.4 - - sg_utils for the sg version 2 (and original) driver found in lk 2.2 - and earlier -Both packages will work in the lk 2.4 series however sg3_utils offers more -capabilities. They can be found at: http://sg.danny.cz/sg/sg3_utils.html and -freecode.com - -Another approach is to look at the applications that use the sg driver. -These include cdrecord, cdparanoia, SANE and cdrdao. - - -Mapping of Linux kernel versions to sg driver versions -====================================================== -Here is a list of linux kernels in the 2.4 series that had new version -of the sg driver: - lk 2.4.0 : sg version 3.1.17 - lk 2.4.7 : sg version 3.1.19 - lk 2.4.10 : sg version 3.1.20 ** - lk 2.4.17 : sg version 3.1.22 - -** There were 3 changes to sg version 3.1.20 by third parties in the - next six linux kernel versions. - -For reference here is a list of linux kernels in the 2.2 series that had -new version of the sg driver: - lk 2.2.0 : original sg version [with no version number] - lk 2.2.6 : sg version 2.1.31 - lk 2.2.8 : sg version 2.1.32 - lk 2.2.10 : sg version 2.1.34 [SG_GET_VERSION_NUM ioctl first appeared] - lk 2.2.14 : sg version 2.1.36 - lk 2.2.16 : sg version 2.1.38 - lk 2.2.17 : sg version 2.1.39 - lk 2.2.20 : sg version 2.1.40 - -The lk 2.5 development series has recently commenced and it currently -contains sg version 3.5.23 which is functionally equivalent to sg -version 3.1.22 found in lk 2.4.17 . - - -Douglas Gilbert -26th January 2002 -dgilbert@interlog.com diff --git a/MAINTAINERS b/MAINTAINERS index 5a831cc4916f..af7cc8b330c4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14797,7 +14797,7 @@ M: Doug Gilbert L: linux-scsi@vger.kernel.org W: http://sg.danny.cz/sg S: Maintained -F: Documentation/scsi/scsi-generic.txt +F: Documentation/scsi/scsi-generic.rst F: drivers/scsi/sg.c F: include/scsi/sg.h diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 6cb9abb0898d..bdf65b0bb78b 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -133,7 +133,7 @@ config CHR_DEV_SG quality digital reader of audio CDs (). For other devices, it's possible that you'll have to write the driver software yourself. Please read the file - for more information. + for more information. To compile this driver as a module, choose M here and read . The module will be called sg. diff --git a/include/scsi/sg.h b/include/scsi/sg.h index 29c7ad04d2e2..7327e12f3373 100644 --- a/include/scsi/sg.h +++ b/include/scsi/sg.h @@ -24,7 +24,7 @@ * http://sg.danny.cz/sg [alternatively check the MAINTAINERS file] * The documentation for the sg version 3 driver can be found at: * http://sg.danny.cz/sg/p/sg_v3_ho.html - * Also see: /Documentation/scsi/scsi-generic.txt + * Also see: /Documentation/scsi/scsi-generic.rst * * For utility and test programs see: http://sg.danny.cz/sg/sg3_utils.html */ -- cgit v1.2.3 From b7223d9bdecc1e589a8cbd79d6b7603337585a09 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:16:06 +0100 Subject: scsi: docs: convert scsi.txt to ReST Link: https://lore.kernel.org/r/c617b37769a82901def0fed3d236a25995c4e160.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/index.rst | 1 + Documentation/scsi/scsi.rst | 47 ++++++++++++++++++++++++++++++++++++++++++++ Documentation/scsi/scsi.txt | 44 ----------------------------------------- drivers/scsi/Kconfig | 16 +++++++-------- 4 files changed, 56 insertions(+), 52 deletions(-) create mode 100644 Documentation/scsi/scsi.rst delete mode 100644 Documentation/scsi/scsi.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index 4bf0bb26f3d5..97276e425f25 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -37,5 +37,6 @@ Linux SCSI Subsystem scsi-generic scsi_mid_low_api scsi-parameters + scsi scsi_transport_srp/figures diff --git a/Documentation/scsi/scsi.rst b/Documentation/scsi/scsi.rst new file mode 100644 index 000000000000..276918eb4d74 --- /dev/null +++ b/Documentation/scsi/scsi.rst @@ -0,0 +1,47 @@ +.. SPDX-License-Identifier: GPL-2.0 + +============================ +SCSI subsystem documentation +============================ + +The Linux Documentation Project (LDP) maintains a document describing +the SCSI subsystem in the Linux kernel (lk) 2.4 series. See: +http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO . The LDP has single +and multiple page HTML renderings as well as postscript and pdf. +It can also be found at: +http://web.archive.org/web/%2E/http://www.torque.net/scsi/SCSI-2.4-HOWTO + +Notes on using modules in the SCSI subsystem +============================================ +The scsi support in the linux kernel can be modularized in a number of +different ways depending upon the needs of the end user. To understand +your options, we should first define a few terms. + +The scsi-core (also known as the "mid level") contains the core of scsi +support. Without it you can do nothing with any of the other scsi drivers. +The scsi core support can be a module (scsi_mod.o), or it can be built into +the kernel. If the core is a module, it must be the first scsi module +loaded, and if you unload the modules, it will have to be the last one +unloaded. In practice the modprobe and rmmod commands (and "autoclean") +will enforce the correct ordering of loading and unloading modules in +the SCSI subsystem. + +The individual upper and lower level drivers can be loaded in any order +once the scsi core is present in the kernel (either compiled in or loaded +as a module). The disk driver (sd_mod.o), cdrom driver (sr_mod.o), +tape driver [1]_ (st.o) and scsi generics driver (sg.o) represent the upper +level drivers to support the various assorted devices which can be +controlled. You can for example load the tape driver to use the tape drive, +and then unload it once you have no further need for the driver (and release +the associated memory). + +The lower level drivers are the ones that support the individual cards that +are supported for the hardware platform that you are running under. Those +individual cards are often called Host Bus Adapters (HBAs). For example the +aic7xxx.o driver is used to control all recent SCSI controller cards from +Adaptec. Almost all lower level drivers can be built either as modules or +built into the kernel. + +.. [1] There is a variant of the st driver for controlling OnStream tape + devices. Its module name is osst.o . + diff --git a/Documentation/scsi/scsi.txt b/Documentation/scsi/scsi.txt deleted file mode 100644 index 3d99d38cb62a..000000000000 --- a/Documentation/scsi/scsi.txt +++ /dev/null @@ -1,44 +0,0 @@ -SCSI subsystem documentation -============================ -The Linux Documentation Project (LDP) maintains a document describing -the SCSI subsystem in the Linux kernel (lk) 2.4 series. See: -http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO . The LDP has single -and multiple page HTML renderings as well as postscript and pdf. -It can also be found at: -http://web.archive.org/web/*/http://www.torque.net/scsi/SCSI-2.4-HOWTO - -Notes on using modules in the SCSI subsystem -============================================ -The scsi support in the linux kernel can be modularized in a number of -different ways depending upon the needs of the end user. To understand -your options, we should first define a few terms. - -The scsi-core (also known as the "mid level") contains the core of scsi -support. Without it you can do nothing with any of the other scsi drivers. -The scsi core support can be a module (scsi_mod.o), or it can be built into -the kernel. If the core is a module, it must be the first scsi module -loaded, and if you unload the modules, it will have to be the last one -unloaded. In practice the modprobe and rmmod commands (and "autoclean") -will enforce the correct ordering of loading and unloading modules in -the SCSI subsystem. - -The individual upper and lower level drivers can be loaded in any order -once the scsi core is present in the kernel (either compiled in or loaded -as a module). The disk driver (sd_mod.o), cdrom driver (sr_mod.o), -tape driver ** (st.o) and scsi generics driver (sg.o) represent the upper -level drivers to support the various assorted devices which can be -controlled. You can for example load the tape driver to use the tape drive, -and then unload it once you have no further need for the driver (and release -the associated memory). - -The lower level drivers are the ones that support the individual cards that -are supported for the hardware platform that you are running under. Those -individual cards are often called Host Bus Adapters (HBAs). For example the -aic7xxx.o driver is used to control all recent SCSI controller cards from -Adaptec. Almost all lower level drivers can be built either as modules or -built into the kernel. - - -** There is a variant of the st driver for controlling OnStream tape - devices. Its module name is osst.o . - diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index bdf65b0bb78b..c705e2b951a4 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -33,7 +33,7 @@ config SCSI Channel, and FireWire storage. To compile this driver as a module, choose M here and read - . + . The module will be called scsi_mod. However, do not compile this as a module if your root file system @@ -79,7 +79,7 @@ config BLK_DEV_SD CD-ROMs. To compile this driver as a module, choose M here and read - . + . The module will be called sd_mod. Do not compile this driver as a module if your root file system @@ -98,7 +98,7 @@ config CHR_DEV_ST for SCSI CD-ROMs. To compile this driver as a module, choose M here and read - . The module will be called st. + . The module will be called st. config BLK_DEV_SR tristate "SCSI CDROM support" @@ -112,7 +112,7 @@ config BLK_DEV_SR Make sure to say Y or M to "ISO 9660 CD-ROM file system support". To compile this driver as a module, choose M here and read - . + . The module will be called sr_mod. config CHR_DEV_SG @@ -136,7 +136,7 @@ config CHR_DEV_SG for more information. To compile this driver as a module, choose M here and read - . The module will be called sg. + . The module will be called sg. If unsure, say N. @@ -154,7 +154,7 @@ config CHR_DEV_SCH If you want to compile this as a module ( = code which can be inserted in and removed from the running kernel whenever you want), say M here and read and - . The module will be called ch.o. + . The module will be called ch.o. If unsure, say N. config SCSI_ENCLOSURE @@ -604,7 +604,7 @@ config FCOE_FNIC This is support for the Cisco PCI-Express FCoE HBA. To compile this driver as a module, choose M here and read - . + . The module will be called fnic. config SCSI_SNIC @@ -614,7 +614,7 @@ config SCSI_SNIC This is support for the Cisco PCI-Express SCSI HBA. To compile this driver as a module, choose M here and read - . + . The module will be called snic. config SCSI_SNIC_DEBUG_FS -- cgit v1.2.3 From bf65c846476fd9e6965c4aea534db0ba96c19198 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:16:09 +0100 Subject: scsi: docs: convert st.txt to ReST Link: https://lore.kernel.org/r/6b2ddb36983e81e7028de6e5fd0c643c2fb4c6c9.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/index.rst | 1 + Documentation/scsi/scsi-parameters.rst | 4 +- Documentation/scsi/st.rst | 673 +++++++++++++++++++++++++++++++++ Documentation/scsi/st.txt | 592 ----------------------------- MAINTAINERS | 2 +- drivers/scsi/Kconfig | 2 +- drivers/scsi/st.c | 2 +- 7 files changed, 679 insertions(+), 597 deletions(-) create mode 100644 Documentation/scsi/st.rst delete mode 100644 Documentation/scsi/st.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index ff98919faed7..0cc2cfca7474 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -40,5 +40,6 @@ Linux SCSI Subsystem scsi sd-parameters smartpqi + st scsi_transport_srp/figures diff --git a/Documentation/scsi/scsi-parameters.rst b/Documentation/scsi/scsi-parameters.rst index 0c4bbb1aee94..9aba897c97ac 100644 --- a/Documentation/scsi/scsi-parameters.rst +++ b/Documentation/scsi/scsi-parameters.rst @@ -73,7 +73,7 @@ parameters may be changed at runtime by the command osst= [HW,SCSI] SCSI Tape Driver Format: , - See also Documentation/scsi/st.txt. + See also Documentation/scsi/st.rst. scsi_debug_*= [SCSI] See drivers/scsi/scsi_debug.c. @@ -105,7 +105,7 @@ parameters may be changed at runtime by the command See header of drivers/scsi/sim710.c. st= [HW,SCSI] SCSI tape parameters (buffers, etc.) - See Documentation/scsi/st.txt. + See Documentation/scsi/st.rst. wd33c93= [HW,SCSI] See header of drivers/scsi/wd33c93.c. diff --git a/Documentation/scsi/st.rst b/Documentation/scsi/st.rst new file mode 100644 index 000000000000..d3b28c28d74c --- /dev/null +++ b/Documentation/scsi/st.rst @@ -0,0 +1,673 @@ +.. SPDX-License-Identifier: GPL-2.0 + +==================== +The SCSI Tape Driver +==================== + +This file contains brief information about the SCSI tape driver. +The driver is currently maintained by Kai Mäkisara (email +Kai.Makisara@kolumbus.fi) + +Last modified: Tue Feb 9 21:54:16 2016 by kai.makisara + + +Basics +====== + +The driver is generic, i.e., it does not contain any code tailored +to any specific tape drive. The tape parameters can be specified with +one of the following three methods: + +1. Each user can specify the tape parameters he/she wants to use +directly with ioctls. This is administratively a very simple and +flexible method and applicable to single-user workstations. However, +in a multiuser environment the next user finds the tape parameters in +state the previous user left them. + +2. The system manager (root) can define default values for some tape +parameters, like block size and density using the MTSETDRVBUFFER ioctl. +These parameters can be programmed to come into effect either when a +new tape is loaded into the drive or if writing begins at the +beginning of the tape. The second method is applicable if the tape +drive performs auto-detection of the tape format well (like some +QIC-drives). The result is that any tape can be read, writing can be +continued using existing format, and the default format is used if +the tape is rewritten from the beginning (or a new tape is written +for the first time). The first method is applicable if the drive +does not perform auto-detection well enough and there is a single +"sensible" mode for the device. An example is a DAT drive that is +used only in variable block mode (I don't know if this is sensible +or not :-). + +The user can override the parameters defined by the system +manager. The changes persist until the defaults again come into +effect. + +3. By default, up to four modes can be defined and selected using the minor +number (bits 5 and 6). The number of modes can be changed by changing +ST_NBR_MODE_BITS in st.h. Mode 0 corresponds to the defaults discussed +above. Additional modes are dormant until they are defined by the +system manager (root). When specification of a new mode is started, +the configuration of mode 0 is used to provide a starting point for +definition of the new mode. + +Using the modes allows the system manager to give the users choices +over some of the buffering parameters not directly accessible to the +users (buffered and asynchronous writes). The modes also allow choices +between formats in multi-tape operations (the explicitly overridden +parameters are reset when a new tape is loaded). + +If more than one mode is used, all modes should contain definitions +for the same set of parameters. + +Many Unices contain internal tables that associate different modes to +supported devices. The Linux SCSI tape driver does not contain such +tables (and will not do that in future). Instead of that, a utility +program can be made that fetches the inquiry data sent by the device, +scans its database, and sets up the modes using the ioctls. Another +alternative is to make a small script that uses mt to set the defaults +tailored to the system. + +The driver supports fixed and variable block size (within buffer +limits). Both the auto-rewind (minor equals device number) and +non-rewind devices (minor is 128 + device number) are implemented. + +In variable block mode, the byte count in write() determines the size +of the physical block on tape. When reading, the drive reads the next +tape block and returns to the user the data if the read() byte count +is at least the block size. Otherwise, error ENOMEM is returned. + +In fixed block mode, the data transfer between the drive and the +driver is in multiples of the block size. The write() byte count must +be a multiple of the block size. This is not required when reading but +may be advisable for portability. + +Support is provided for changing the tape partition and partitioning +of the tape with one or two partitions. By default support for +partitioned tape is disabled for each driver and it can be enabled +with the ioctl MTSETDRVBUFFER. + +By default the driver writes one filemark when the device is closed after +writing and the last operation has been a write. Two filemarks can be +optionally written. In both cases end of data is signified by +returning zero bytes for two consecutive reads. + +Writing filemarks without the immediate bit set in the SCSI command block acts +as a synchronization point, i.e., all remaining data form the drive buffers is +written to tape before the command returns. This makes sure that write errors +are caught at that point, but this takes time. In some applications, several +consecutive files must be written fast. The MTWEOFI operation can be used to +write the filemarks without flushing the drive buffer. Writing filemark at +close() is always flushing the drive buffers. However, if the previous +operation is MTWEOFI, close() does not write a filemark. This can be used if +the program wants to close/open the tape device between files and wants to +skip waiting. + +If rewind, offline, bsf, or seek is done and previous tape operation was +write, a filemark is written before moving tape. + +The compile options are defined in the file linux/drivers/scsi/st_options.h. + +4. If the open option O_NONBLOCK is used, open succeeds even if the +drive is not ready. If O_NONBLOCK is not used, the driver waits for +the drive to become ready. If this does not happen in ST_BLOCK_SECONDS +seconds, open fails with the errno value EIO. With O_NONBLOCK the +device can be opened for writing even if there is a write protected +tape in the drive (commands trying to write something return error if +attempted). + + +Minor Numbers +============= + +The tape driver currently supports up to 2^17 drives if 4 modes for +each drive are used. + +The minor numbers consist of the following bit fields:: + + dev_upper non-rew mode dev-lower + 20 - 8 7 6 5 4 0 + +The non-rewind bit is always bit 7 (the uppermost bit in the lowermost +byte). The bits defining the mode are below the non-rewind bit. The +remaining bits define the tape device number. This numbering is +backward compatible with the numbering used when the minor number was +only 8 bits wide. + + +Sysfs Support +============= + +The driver creates the directory /sys/class/scsi_tape and populates it with +directories corresponding to the existing tape devices. There are autorewind +and non-rewind entries for each mode. The names are stxy and nstxy, where x +is the tape number and y a character corresponding to the mode (none, l, m, +a). For example, the directories for the first tape device are (assuming four +modes): st0 nst0 st0l nst0l st0m nst0m st0a nst0a. + +Each directory contains the entries: default_blksize default_compression +default_density defined dev device driver. The file 'defined' contains 1 +if the mode is defined and zero if not defined. The files 'default_*' contain +the defaults set by the user. The value -1 means the default is not set. The +file 'dev' contains the device numbers corresponding to this device. The links +'device' and 'driver' point to the SCSI device and driver entries. + +Each directory also contains the entry 'options' which shows the currently +enabled driver and mode options. The value in the file is a bit mask where the +bit definitions are the same as those used with MTSETDRVBUFFER in setting the +options. + +A link named 'tape' is made from the SCSI device directory to the class +directory corresponding to the mode 0 auto-rewind device (e.g., st0). + + +Sysfs and Statistics for Tape Devices +===================================== + +The st driver maintains statistics for tape drives inside the sysfs filesystem. +The following method can be used to locate the statistics that are +available (assuming that sysfs is mounted at /sys): + +1. Use opendir(3) on the directory /sys/class/scsi_tape +2. Use readdir(3) to read the directory contents +3. Use regcomp(3)/regexec(3) to match directory entries to the extended + regular expression "^st[0-9]+$" +4. Access the statistics from the /sys/class/scsi_tape//stats + directory (where is a directory entry from /sys/class/scsi_tape + that matched the extended regular expression) + +The reason for using this approach is that all the character devices +pointing to the same tape drive use the same statistics. That means +that st0 would have the same statistics as nst0. + +The directory contains the following statistics files: + +1. in_flight + - The number of I/Os currently outstanding to this device. +2. io_ns + - The amount of time spent waiting (in nanoseconds) for all I/O + to complete (including read and write). This includes tape movement + commands such as seeking between file or set marks and implicit tape + movement such as when rewind on close tape devices are used. +3. other_cnt + - The number of I/Os issued to the tape drive other than read or + write commands. The time taken to complete these commands uses the + following calculation io_ms-read_ms-write_ms. +4. read_byte_cnt + - The number of bytes read from the tape drive. +5. read_cnt + - The number of read requests issued to the tape drive. +6. read_ns + - The amount of time (in nanoseconds) spent waiting for read + requests to complete. +7. write_byte_cnt + - The number of bytes written to the tape drive. +8. write_cnt + - The number of write requests issued to the tape drive. +9. write_ns + - The amount of time (in nanoseconds) spent waiting for write + requests to complete. +10. resid_cnt + - The number of times during a read or write we found + the residual amount to be non-zero. This should mean that a program + is issuing a read larger thean the block size on tape. For write + not all data made it to tape. + +.. Note:: + + The in_flight value is incremented when an I/O starts the I/O + itself is not added to the statistics until it completes. + +The total of read_cnt, write_cnt, and other_cnt may not total to the same +value as iodone_cnt at the device level. The tape statistics only count +I/O issued via the st module. + +When read the statistics may not be temporally consistent while I/O is in +progress. The individual values are read and written to atomically however +when reading them back via sysfs they may be in the process of being +updated when starting an I/O or when it is completed. + +The value shown in in_flight is incremented before any statstics are +updated and decremented when an I/O completes after updating statistics. +The value of in_flight is 0 when there are no I/Os outstanding that are +issued by the st driver. Tape statistics do not take into account any +I/O performed via the sg device. + +BSD and Sys V Semantics +======================= + +The user can choose between these two behaviours of the tape driver by +defining the value of the symbol ST_SYSV. The semantics differ when a +file being read is closed. The BSD semantics leaves the tape where it +currently is whereas the SYS V semantics moves the tape past the next +filemark unless the filemark has just been crossed. + +The default is BSD semantics. + + +Buffering +========= + +The driver tries to do transfers directly to/from user space. If this +is not possible, a driver buffer allocated at run-time is used. If +direct i/o is not possible for the whole transfer, the driver buffer +is used (i.e., bounce buffers for individual pages are not +used). Direct i/o can be impossible because of several reasons, e.g.: + +- one or more pages are at addresses not reachable by the HBA +- the number of pages in the transfer exceeds the number of + scatter/gather segments permitted by the HBA +- one or more pages can't be locked into memory (should not happen in + any reasonable situation) + +The size of the driver buffers is always at least one tape block. In fixed +block mode, the minimum buffer size is defined (in 1024 byte units) by +ST_FIXED_BUFFER_BLOCKS. With small block size this allows buffering of +several blocks and using one SCSI read or write to transfer all of the +blocks. Buffering of data across write calls in fixed block mode is +allowed if ST_BUFFER_WRITES is non-zero and direct i/o is not used. +Buffer allocation uses chunks of memory having sizes 2^n * (page +size). Because of this the actual buffer size may be larger than the +minimum allowable buffer size. + +NOTE that if direct i/o is used, the small writes are not buffered. This may +cause a surprise when moving from 2.4. There small writes (e.g., tar without +-b option) may have had good throughput but this is not true any more with +2.6. Direct i/o can be turned off to solve this problem but a better solution +is to use bigger write() byte counts (e.g., tar -b 64). + +Asynchronous writing. Writing the buffer contents to the tape is +started and the write call returns immediately. The status is checked +at the next tape operation. Asynchronous writes are not done with +direct i/o and not in fixed block mode. + +Buffered writes and asynchronous writes may in some rare cases cause +problems in multivolume operations if there is not enough space on the +tape after the early-warning mark to flush the driver buffer. + +Read ahead for fixed block mode (ST_READ_AHEAD). Filling the buffer is +attempted even if the user does not want to get all of the data at +this read command. Should be disabled for those drives that don't like +a filemark to truncate a read request or that don't like backspacing. + +Scatter/gather buffers (buffers that consist of chunks non-contiguous +in the physical memory) are used if contiguous buffers can't be +allocated. To support all SCSI adapters (including those not +supporting scatter/gather), buffer allocation is using the following +three kinds of chunks: + +1. The initial segment that is used for all SCSI adapters including + those not supporting scatter/gather. The size of this buffer will be + (PAGE_SIZE << ST_FIRST_ORDER) bytes if the system can give a chunk of + this size (and it is not larger than the buffer size specified by + ST_BUFFER_BLOCKS). If this size is not available, the driver halves + the size and tries again until the size of one page. The default + settings in st_options.h make the driver to try to allocate all of the + buffer as one chunk. +2. The scatter/gather segments to fill the specified buffer size are + allocated so that as many segments as possible are used but the number + of segments does not exceed ST_FIRST_SG. +3. The remaining segments between ST_MAX_SG (or the module parameter + max_sg_segs) and the number of segments used in phases 1 and 2 + are used to extend the buffer at run-time if this is necessary. The + number of scatter/gather segments allowed for the SCSI adapter is not + exceeded if it is smaller than the maximum number of scatter/gather + segments specified. If the maximum number allowed for the SCSI adapter + is smaller than the number of segments used in phases 1 and 2, + extending the buffer will always fail. + + +EOM Behaviour When Writing +========================== + +When the end of medium early warning is encountered, the current write +is finished and the number of bytes is returned. The next write +returns -1 and errno is set to ENOSPC. To enable writing a trailer, +the next write is allowed to proceed and, if successful, the number of +bytes is returned. After this, -1 and the number of bytes are +alternately returned until the physical end of medium (or some other +error) is encountered. + +Module Parameters +================= + +The buffer size, write threshold, and the maximum number of allocated buffers +are configurable when the driver is loaded as a module. The keywords are: + +========================== =========================================== +buffer_kbs=xxx the buffer size for fixed block mode is set + to xxx kilobytes +write_threshold_kbs=xxx the write threshold in kilobytes set to xxx +max_sg_segs=xxx the maximum number of scatter/gather + segments +try_direct_io=x try direct transfer between user buffer and + tape drive if this is non-zero +========================== =========================================== + +Note that if the buffer size is changed but the write threshold is not +set, the write threshold is set to the new buffer size - 2 kB. + + +Boot Time Configuration +======================= + +If the driver is compiled into the kernel, the same parameters can be +also set using, e.g., the LILO command line. The preferred syntax is +to use the same keyword used when loading as module but prepended +with 'st.'. For instance, to set the maximum number of scatter/gather +segments, the parameter 'st.max_sg_segs=xx' should be used (xx is the +number of scatter/gather segments). + +For compatibility, the old syntax from early 2.5 and 2.4 kernel +versions is supported. The same keywords can be used as when loading +the driver as module. If several parameters are set, the keyword-value +pairs are separated with a comma (no spaces allowed). A colon can be +used instead of the equal mark. The definition is prepended by the +string st=. Here is an example:: + + st=buffer_kbs:64,write_threshold_kbs:60 + +The following syntax used by the old kernel versions is also supported:: + + st=aa[,bb[,dd]] + +where: + + - aa is the buffer size for fixed block mode in 1024 byte units + - bb is the write threshold in 1024 byte units + - dd is the maximum number of scatter/gather segments + + +IOCTLs +====== + +The tape is positioned and the drive parameters are set with ioctls +defined in mtio.h The tape control program 'mt' uses these ioctls. Try +to find an mt that supports all of the Linux SCSI tape ioctls and +opens the device for writing if the tape contents will be modified +(look for a package mt-st* from the Linux ftp sites; the GNU mt does +not open for writing for, e.g., erase). + +The supported ioctls are: + +The following use the structure mtop: + +MTFSF + Space forward over count filemarks. Tape positioned after filemark. +MTFSFM + As above but tape positioned before filemark. +MTBSF + Space backward over count filemarks. Tape positioned before + filemark. +MTBSFM + As above but ape positioned after filemark. +MTFSR + Space forward over count records. +MTBSR + Space backward over count records. +MTFSS + Space forward over count setmarks. +MTBSS + Space backward over count setmarks. +MTWEOF + Write count filemarks. +MTWEOFI + Write count filemarks with immediate bit set (i.e., does not + wait until data is on tape) +MTWSM + Write count setmarks. +MTREW + Rewind tape. +MTOFFL + Set device off line (often rewind plus eject). +MTNOP + Do nothing except flush the buffers. +MTRETEN + Re-tension tape. +MTEOM + Space to end of recorded data. +MTERASE + Erase tape. If the argument is zero, the short erase command + is used. The long erase command is used with all other values + of the argument. +MTSEEK + Seek to tape block count. Uses Tandberg-compatible seek (QFA) + for SCSI-1 drives and SCSI-2 seek for SCSI-2 drives. The file and + block numbers in the status are not valid after a seek. +MTSETBLK + Set the drive block size. Setting to zero sets the drive into + variable block mode (if applicable). +MTSETDENSITY + Sets the drive density code to arg. See drive + documentation for available codes. +MTLOCK and MTUNLOCK + Explicitly lock/unlock the tape drive door. +MTLOAD and MTUNLOAD + Explicitly load and unload the tape. If the + command argument x is between MT_ST_HPLOADER_OFFSET + 1 and + MT_ST_HPLOADER_OFFSET + 6, the number x is used sent to the + drive with the command and it selects the tape slot to use of + HP C1553A changer. +MTCOMPRESSION + Sets compressing or uncompressing drive mode using the + SCSI mode page 15. Note that some drives other methods for + control of compression. Some drives (like the Exabytes) use + density codes for compression control. Some drives use another + mode page but this page has not been implemented in the + driver. Some drives without compression capability will accept + any compression mode without error. +MTSETPART + Moves the tape to the partition given by the argument at the + next tape operation. The block at which the tape is positioned + is the block where the tape was previously positioned in the + new active partition unless the next tape operation is + MTSEEK. In this case the tape is moved directly to the block + specified by MTSEEK. MTSETPART is inactive unless + MT_ST_CAN_PARTITIONS set. +MTMKPART + Formats the tape with one partition (argument zero) or two + partitions (argument non-zero). If the argument is positive, + it specifies the size of partition 1 in megabytes. For DDS + drives and several early drives this is the physically first + partition of the tape. If the argument is negative, its absolute + value specifies the size of partition 0 in megabytes. This is + the physically first partition of many later drives, like the + LTO drives from LTO-5 upwards. The drive has to support partitions + with size specified by the initiator. Inactive unless + MT_ST_CAN_PARTITIONS set. +MTSETDRVBUFFER + Is used for several purposes. The command is obtained from count + with mask MT_SET_OPTIONS, the low order bits are used as argument. + This command is only allowed for the superuser (root). The + subcommands are: + + * 0 + The drive buffer option is set to the argument. Zero means + no buffering. + * MT_ST_BOOLEANS + Sets the buffering options. The bits are the new states + (enabled/disabled) the following options (in the + parenthesis is specified whether the option is global or + can be specified differently for each mode): + + MT_ST_BUFFER_WRITES + write buffering (mode) + MT_ST_ASYNC_WRITES + asynchronous writes (mode) + MT_ST_READ_AHEAD + read ahead (mode) + MT_ST_TWO_FM + writing of two filemarks (global) + MT_ST_FAST_EOM + using the SCSI spacing to EOD (global) + MT_ST_AUTO_LOCK + automatic locking of the drive door (global) + MT_ST_DEF_WRITES + the defaults are meant only for writes (mode) + MT_ST_CAN_BSR + backspacing over more than one records can + be used for repositioning the tape (global) + MT_ST_NO_BLKLIMS + the driver does not ask the block limits + from the drive (block size can be changed only to + variable) (global) + MT_ST_CAN_PARTITIONS + enables support for partitioned + tapes (global) + MT_ST_SCSI2LOGICAL + the logical block number is used in + the MTSEEK and MTIOCPOS for SCSI-2 drives instead of + the device dependent address. It is recommended to set + this flag unless there are tapes using the device + dependent (from the old times) (global) + MT_ST_SYSV + sets the SYSV semantics (mode) + MT_ST_NOWAIT + enables immediate mode (i.e., don't wait for + the command to finish) for some commands (e.g., rewind) + MT_ST_NOWAIT_EOF + enables immediate filemark mode (i.e. when + writing a filemark, don't wait for it to complete). Please + see the BASICS note about MTWEOFI with respect to the + possible dangers of writing immediate filemarks. + MT_ST_SILI + enables setting the SILI bit in SCSI commands when + reading in variable block mode to enhance performance when + reading blocks shorter than the byte count; set this only + if you are sure that the drive supports SILI and the HBA + correctly returns transfer residuals + MT_ST_DEBUGGING + debugging (global; debugging must be + compiled into the driver) + + * MT_ST_SETBOOLEANS, MT_ST_CLEARBOOLEANS + Sets or clears the option bits. + * MT_ST_WRITE_THRESHOLD + Sets the write threshold for this device to kilobytes + specified by the lowest bits. + * MT_ST_DEF_BLKSIZE + Defines the default block size set automatically. Value + 0xffffff means that the default is not used any more. + * MT_ST_DEF_DENSITY, MT_ST_DEF_DRVBUFFER + Used to set or clear the density (8 bits), and drive buffer + state (3 bits). If the value is MT_ST_CLEAR_DEFAULT + (0xfffff) the default will not be used any more. Otherwise + the lowermost bits of the value contain the new value of + the parameter. + * MT_ST_DEF_COMPRESSION + The compression default will not be used if the value of + the lowermost byte is 0xff. Otherwise the lowermost bit + contains the new default. If the bits 8-15 are set to a + non-zero number, and this number is not 0xff, the number is + used as the compression algorithm. The value + MT_ST_CLEAR_DEFAULT can be used to clear the compression + default. + * MT_ST_SET_TIMEOUT + Set the normal timeout in seconds for this device. The + default is 900 seconds (15 minutes). The timeout should be + long enough for the retries done by the device while + reading/writing. + * MT_ST_SET_LONG_TIMEOUT + Set the long timeout that is used for operations that are + known to take a long time. The default is 14000 seconds + (3.9 hours). For erase this value is further multiplied by + eight. + * MT_ST_SET_CLN + Set the cleaning request interpretation parameters using + the lowest 24 bits of the argument. The driver can set the + generic status bit GMT_CLN if a cleaning request bit pattern + is found from the extended sense data. Many drives set one or + more bits in the extended sense data when the drive needs + cleaning. The bits are device-dependent. The driver is + given the number of the sense data byte (the lowest eight + bits of the argument; must be >= 18 (values 1 - 17 + reserved) and <= the maximum requested sense data sixe), + a mask to select the relevant bits (the bits 9-16), and the + bit pattern (bits 17-23). If the bit pattern is zero, one + or more bits under the mask indicate cleaning request. If + the pattern is non-zero, the pattern must match the masked + sense data byte. + + (The cleaning bit is set if the additional sense code and + qualifier 00h 17h are seen regardless of the setting of + MT_ST_SET_CLN.) + +The following ioctl uses the structure mtpos: + +MTIOCPOS + Reads the current position from the drive. Uses + Tandberg-compatible QFA for SCSI-1 drives and the SCSI-2 + command for the SCSI-2 drives. + +The following ioctl uses the structure mtget to return the status: + +MTIOCGET + Returns some status information. + The file number and block number within file are returned. The + block is -1 when it can't be determined (e.g., after MTBSF). + The drive type is either MTISSCSI1 or MTISSCSI2. + The number of recovered errors since the previous status call + is stored in the lower word of the field mt_erreg. + The current block size and the density code are stored in the field + mt_dsreg (shifts for the subfields are MT_ST_BLKSIZE_SHIFT and + MT_ST_DENSITY_SHIFT). + The GMT_xxx status bits reflect the drive status. GMT_DR_OPEN + is set if there is no tape in the drive. GMT_EOD means either + end of recorded data or end of tape. GMT_EOT means end of tape. + + +Miscellaneous Compile Options +============================= + +The recovered write errors are considered fatal if ST_RECOVERED_WRITE_FATAL +is defined. + +The maximum number of tape devices is determined by the define +ST_MAX_TAPES. If more tapes are detected at driver initialization, the +maximum is adjusted accordingly. + +Immediate return from tape positioning SCSI commands can be enabled by +defining ST_NOWAIT. If this is defined, the user should take care that +the next tape operation is not started before the previous one has +finished. The drives and SCSI adapters should handle this condition +gracefully, but some drive/adapter combinations are known to hang the +SCSI bus in this case. + +The MTEOM command is by default implemented as spacing over 32767 +filemarks. With this method the file number in the status is +correct. The user can request using direct spacing to EOD by setting +ST_FAST_EOM 1 (or using the MT_ST_OPTIONS ioctl). In this case the file +number will be invalid. + +When using read ahead or buffered writes the position within the file +may not be correct after the file is closed (correct position may +require backspacing over more than one record). The correct position +within file can be obtained if ST_IN_FILE_POS is defined at compile +time or the MT_ST_CAN_BSR bit is set for the drive with an ioctl. +(The driver always backs over a filemark crossed by read ahead if the +user does not request data that far.) + + +Debugging Hints +=============== + +Debugging code is now compiled in by default but debugging is turned off +with the kernel module parameter debug_flag defaulting to 0. Debugging +can still be switched on and off with an ioctl. To enable debug at +module load time add debug_flag=1 to the module load options, the +debugging output is not voluminous. Debugging can also be enabled +and disabled by writing a '0' (disable) or '1' (enable) to the sysfs +file /sys/bus/scsi/drivers/st/debug_flag. + +If the tape seems to hang, I would be very interested to hear where +the driver is waiting. With the command 'ps -l' you can see the state +of the process using the tape. If the state is D, the process is +waiting for something. The field WCHAN tells where the driver is +waiting. If you have the current System.map in the correct place (in +/boot for the procps I use) or have updated /etc/psdatabase (for kmem +ps), ps writes the function name in the WCHAN field. If not, you have +to look up the function from System.map. + +Note also that the timeouts are very long compared to most other +drivers. This means that the Linux driver may appear hung although the +real reason is that the tape firmware has got confused. diff --git a/Documentation/scsi/st.txt b/Documentation/scsi/st.txt deleted file mode 100644 index ec0acf6acccd..000000000000 --- a/Documentation/scsi/st.txt +++ /dev/null @@ -1,592 +0,0 @@ -This file contains brief information about the SCSI tape driver. -The driver is currently maintained by Kai Mäkisara (email -Kai.Makisara@kolumbus.fi) - -Last modified: Tue Feb 9 21:54:16 2016 by kai.makisara - - -BASICS - -The driver is generic, i.e., it does not contain any code tailored -to any specific tape drive. The tape parameters can be specified with -one of the following three methods: - -1. Each user can specify the tape parameters he/she wants to use -directly with ioctls. This is administratively a very simple and -flexible method and applicable to single-user workstations. However, -in a multiuser environment the next user finds the tape parameters in -state the previous user left them. - -2. The system manager (root) can define default values for some tape -parameters, like block size and density using the MTSETDRVBUFFER ioctl. -These parameters can be programmed to come into effect either when a -new tape is loaded into the drive or if writing begins at the -beginning of the tape. The second method is applicable if the tape -drive performs auto-detection of the tape format well (like some -QIC-drives). The result is that any tape can be read, writing can be -continued using existing format, and the default format is used if -the tape is rewritten from the beginning (or a new tape is written -for the first time). The first method is applicable if the drive -does not perform auto-detection well enough and there is a single -"sensible" mode for the device. An example is a DAT drive that is -used only in variable block mode (I don't know if this is sensible -or not :-). - -The user can override the parameters defined by the system -manager. The changes persist until the defaults again come into -effect. - -3. By default, up to four modes can be defined and selected using the minor -number (bits 5 and 6). The number of modes can be changed by changing -ST_NBR_MODE_BITS in st.h. Mode 0 corresponds to the defaults discussed -above. Additional modes are dormant until they are defined by the -system manager (root). When specification of a new mode is started, -the configuration of mode 0 is used to provide a starting point for -definition of the new mode. - -Using the modes allows the system manager to give the users choices -over some of the buffering parameters not directly accessible to the -users (buffered and asynchronous writes). The modes also allow choices -between formats in multi-tape operations (the explicitly overridden -parameters are reset when a new tape is loaded). - -If more than one mode is used, all modes should contain definitions -for the same set of parameters. - -Many Unices contain internal tables that associate different modes to -supported devices. The Linux SCSI tape driver does not contain such -tables (and will not do that in future). Instead of that, a utility -program can be made that fetches the inquiry data sent by the device, -scans its database, and sets up the modes using the ioctls. Another -alternative is to make a small script that uses mt to set the defaults -tailored to the system. - -The driver supports fixed and variable block size (within buffer -limits). Both the auto-rewind (minor equals device number) and -non-rewind devices (minor is 128 + device number) are implemented. - -In variable block mode, the byte count in write() determines the size -of the physical block on tape. When reading, the drive reads the next -tape block and returns to the user the data if the read() byte count -is at least the block size. Otherwise, error ENOMEM is returned. - -In fixed block mode, the data transfer between the drive and the -driver is in multiples of the block size. The write() byte count must -be a multiple of the block size. This is not required when reading but -may be advisable for portability. - -Support is provided for changing the tape partition and partitioning -of the tape with one or two partitions. By default support for -partitioned tape is disabled for each driver and it can be enabled -with the ioctl MTSETDRVBUFFER. - -By default the driver writes one filemark when the device is closed after -writing and the last operation has been a write. Two filemarks can be -optionally written. In both cases end of data is signified by -returning zero bytes for two consecutive reads. - -Writing filemarks without the immediate bit set in the SCSI command block acts -as a synchronization point, i.e., all remaining data form the drive buffers is -written to tape before the command returns. This makes sure that write errors -are caught at that point, but this takes time. In some applications, several -consecutive files must be written fast. The MTWEOFI operation can be used to -write the filemarks without flushing the drive buffer. Writing filemark at -close() is always flushing the drive buffers. However, if the previous -operation is MTWEOFI, close() does not write a filemark. This can be used if -the program wants to close/open the tape device between files and wants to -skip waiting. - -If rewind, offline, bsf, or seek is done and previous tape operation was -write, a filemark is written before moving tape. - -The compile options are defined in the file linux/drivers/scsi/st_options.h. - -4. If the open option O_NONBLOCK is used, open succeeds even if the -drive is not ready. If O_NONBLOCK is not used, the driver waits for -the drive to become ready. If this does not happen in ST_BLOCK_SECONDS -seconds, open fails with the errno value EIO. With O_NONBLOCK the -device can be opened for writing even if there is a write protected -tape in the drive (commands trying to write something return error if -attempted). - - -MINOR NUMBERS - -The tape driver currently supports up to 2^17 drives if 4 modes for -each drive are used. - -The minor numbers consist of the following bit fields: - -dev_upper non-rew mode dev-lower - 20 - 8 7 6 5 4 0 -The non-rewind bit is always bit 7 (the uppermost bit in the lowermost -byte). The bits defining the mode are below the non-rewind bit. The -remaining bits define the tape device number. This numbering is -backward compatible with the numbering used when the minor number was -only 8 bits wide. - - -SYSFS SUPPORT - -The driver creates the directory /sys/class/scsi_tape and populates it with -directories corresponding to the existing tape devices. There are autorewind -and non-rewind entries for each mode. The names are stxy and nstxy, where x -is the tape number and y a character corresponding to the mode (none, l, m, -a). For example, the directories for the first tape device are (assuming four -modes): st0 nst0 st0l nst0l st0m nst0m st0a nst0a. - -Each directory contains the entries: default_blksize default_compression -default_density defined dev device driver. The file 'defined' contains 1 -if the mode is defined and zero if not defined. The files 'default_*' contain -the defaults set by the user. The value -1 means the default is not set. The -file 'dev' contains the device numbers corresponding to this device. The links -'device' and 'driver' point to the SCSI device and driver entries. - -Each directory also contains the entry 'options' which shows the currently -enabled driver and mode options. The value in the file is a bit mask where the -bit definitions are the same as those used with MTSETDRVBUFFER in setting the -options. - -A link named 'tape' is made from the SCSI device directory to the class -directory corresponding to the mode 0 auto-rewind device (e.g., st0). - - -SYSFS AND STATISTICS FOR TAPE DEVICES - -The st driver maintains statistics for tape drives inside the sysfs filesystem. -The following method can be used to locate the statistics that are -available (assuming that sysfs is mounted at /sys): - -1. Use opendir(3) on the directory /sys/class/scsi_tape -2. Use readdir(3) to read the directory contents -3. Use regcomp(3)/regexec(3) to match directory entries to the extended - regular expression "^st[0-9]+$" -4. Access the statistics from the /sys/class/scsi_tape//stats - directory (where is a directory entry from /sys/class/scsi_tape - that matched the extended regular expression) - -The reason for using this approach is that all the character devices -pointing to the same tape drive use the same statistics. That means -that st0 would have the same statistics as nst0. - -The directory contains the following statistics files: - -1. in_flight - The number of I/Os currently outstanding to this device. -2. io_ns - The amount of time spent waiting (in nanoseconds) for all I/O - to complete (including read and write). This includes tape movement - commands such as seeking between file or set marks and implicit tape - movement such as when rewind on close tape devices are used. -3. other_cnt - The number of I/Os issued to the tape drive other than read or - write commands. The time taken to complete these commands uses the - following calculation io_ms-read_ms-write_ms. -4. read_byte_cnt - The number of bytes read from the tape drive. -5. read_cnt - The number of read requests issued to the tape drive. -6. read_ns - The amount of time (in nanoseconds) spent waiting for read - requests to complete. -7. write_byte_cnt - The number of bytes written to the tape drive. -8. write_cnt - The number of write requests issued to the tape drive. -9. write_ns - The amount of time (in nanoseconds) spent waiting for write - requests to complete. -10. resid_cnt - The number of times during a read or write we found - the residual amount to be non-zero. This should mean that a program - is issuing a read larger thean the block size on tape. For write - not all data made it to tape. - -Note: The in_flight value is incremented when an I/O starts the I/O -itself is not added to the statistics until it completes. - -The total of read_cnt, write_cnt, and other_cnt may not total to the same -value as iodone_cnt at the device level. The tape statistics only count -I/O issued via the st module. - -When read the statistics may not be temporally consistent while I/O is in -progress. The individual values are read and written to atomically however -when reading them back via sysfs they may be in the process of being -updated when starting an I/O or when it is completed. - -The value shown in in_flight is incremented before any statstics are -updated and decremented when an I/O completes after updating statistics. -The value of in_flight is 0 when there are no I/Os outstanding that are -issued by the st driver. Tape statistics do not take into account any -I/O performed via the sg device. - -BSD AND SYS V SEMANTICS - -The user can choose between these two behaviours of the tape driver by -defining the value of the symbol ST_SYSV. The semantics differ when a -file being read is closed. The BSD semantics leaves the tape where it -currently is whereas the SYS V semantics moves the tape past the next -filemark unless the filemark has just been crossed. - -The default is BSD semantics. - - -BUFFERING - -The driver tries to do transfers directly to/from user space. If this -is not possible, a driver buffer allocated at run-time is used. If -direct i/o is not possible for the whole transfer, the driver buffer -is used (i.e., bounce buffers for individual pages are not -used). Direct i/o can be impossible because of several reasons, e.g.: -- one or more pages are at addresses not reachable by the HBA -- the number of pages in the transfer exceeds the number of - scatter/gather segments permitted by the HBA -- one or more pages can't be locked into memory (should not happen in - any reasonable situation) - -The size of the driver buffers is always at least one tape block. In fixed -block mode, the minimum buffer size is defined (in 1024 byte units) by -ST_FIXED_BUFFER_BLOCKS. With small block size this allows buffering of -several blocks and using one SCSI read or write to transfer all of the -blocks. Buffering of data across write calls in fixed block mode is -allowed if ST_BUFFER_WRITES is non-zero and direct i/o is not used. -Buffer allocation uses chunks of memory having sizes 2^n * (page -size). Because of this the actual buffer size may be larger than the -minimum allowable buffer size. - -NOTE that if direct i/o is used, the small writes are not buffered. This may -cause a surprise when moving from 2.4. There small writes (e.g., tar without --b option) may have had good throughput but this is not true any more with -2.6. Direct i/o can be turned off to solve this problem but a better solution -is to use bigger write() byte counts (e.g., tar -b 64). - -Asynchronous writing. Writing the buffer contents to the tape is -started and the write call returns immediately. The status is checked -at the next tape operation. Asynchronous writes are not done with -direct i/o and not in fixed block mode. - -Buffered writes and asynchronous writes may in some rare cases cause -problems in multivolume operations if there is not enough space on the -tape after the early-warning mark to flush the driver buffer. - -Read ahead for fixed block mode (ST_READ_AHEAD). Filling the buffer is -attempted even if the user does not want to get all of the data at -this read command. Should be disabled for those drives that don't like -a filemark to truncate a read request or that don't like backspacing. - -Scatter/gather buffers (buffers that consist of chunks non-contiguous -in the physical memory) are used if contiguous buffers can't be -allocated. To support all SCSI adapters (including those not -supporting scatter/gather), buffer allocation is using the following -three kinds of chunks: -1. The initial segment that is used for all SCSI adapters including -those not supporting scatter/gather. The size of this buffer will be -(PAGE_SIZE << ST_FIRST_ORDER) bytes if the system can give a chunk of -this size (and it is not larger than the buffer size specified by -ST_BUFFER_BLOCKS). If this size is not available, the driver halves -the size and tries again until the size of one page. The default -settings in st_options.h make the driver to try to allocate all of the -buffer as one chunk. -2. The scatter/gather segments to fill the specified buffer size are -allocated so that as many segments as possible are used but the number -of segments does not exceed ST_FIRST_SG. -3. The remaining segments between ST_MAX_SG (or the module parameter -max_sg_segs) and the number of segments used in phases 1 and 2 -are used to extend the buffer at run-time if this is necessary. The -number of scatter/gather segments allowed for the SCSI adapter is not -exceeded if it is smaller than the maximum number of scatter/gather -segments specified. If the maximum number allowed for the SCSI adapter -is smaller than the number of segments used in phases 1 and 2, -extending the buffer will always fail. - - -EOM BEHAVIOUR WHEN WRITING - -When the end of medium early warning is encountered, the current write -is finished and the number of bytes is returned. The next write -returns -1 and errno is set to ENOSPC. To enable writing a trailer, -the next write is allowed to proceed and, if successful, the number of -bytes is returned. After this, -1 and the number of bytes are -alternately returned until the physical end of medium (or some other -error) is encountered. - - -MODULE PARAMETERS - -The buffer size, write threshold, and the maximum number of allocated buffers -are configurable when the driver is loaded as a module. The keywords are: - -buffer_kbs=xxx the buffer size for fixed block mode is set - to xxx kilobytes -write_threshold_kbs=xxx the write threshold in kilobytes set to xxx -max_sg_segs=xxx the maximum number of scatter/gather - segments -try_direct_io=x try direct transfer between user buffer and - tape drive if this is non-zero - -Note that if the buffer size is changed but the write threshold is not -set, the write threshold is set to the new buffer size - 2 kB. - - -BOOT TIME CONFIGURATION - -If the driver is compiled into the kernel, the same parameters can be -also set using, e.g., the LILO command line. The preferred syntax is -to use the same keyword used when loading as module but prepended -with 'st.'. For instance, to set the maximum number of scatter/gather -segments, the parameter 'st.max_sg_segs=xx' should be used (xx is the -number of scatter/gather segments). - -For compatibility, the old syntax from early 2.5 and 2.4 kernel -versions is supported. The same keywords can be used as when loading -the driver as module. If several parameters are set, the keyword-value -pairs are separated with a comma (no spaces allowed). A colon can be -used instead of the equal mark. The definition is prepended by the -string st=. Here is an example: - - st=buffer_kbs:64,write_threshold_kbs:60 - -The following syntax used by the old kernel versions is also supported: - - st=aa[,bb[,dd]] - -where - aa is the buffer size for fixed block mode in 1024 byte units - bb is the write threshold in 1024 byte units - dd is the maximum number of scatter/gather segments - - -IOCTLS - -The tape is positioned and the drive parameters are set with ioctls -defined in mtio.h The tape control program 'mt' uses these ioctls. Try -to find an mt that supports all of the Linux SCSI tape ioctls and -opens the device for writing if the tape contents will be modified -(look for a package mt-st* from the Linux ftp sites; the GNU mt does -not open for writing for, e.g., erase). - -The supported ioctls are: - -The following use the structure mtop: - -MTFSF Space forward over count filemarks. Tape positioned after filemark. -MTFSFM As above but tape positioned before filemark. -MTBSF Space backward over count filemarks. Tape positioned before - filemark. -MTBSFM As above but ape positioned after filemark. -MTFSR Space forward over count records. -MTBSR Space backward over count records. -MTFSS Space forward over count setmarks. -MTBSS Space backward over count setmarks. -MTWEOF Write count filemarks. -MTWEOFI Write count filemarks with immediate bit set (i.e., does not - wait until data is on tape) -MTWSM Write count setmarks. -MTREW Rewind tape. -MTOFFL Set device off line (often rewind plus eject). -MTNOP Do nothing except flush the buffers. -MTRETEN Re-tension tape. -MTEOM Space to end of recorded data. -MTERASE Erase tape. If the argument is zero, the short erase command - is used. The long erase command is used with all other values - of the argument. -MTSEEK Seek to tape block count. Uses Tandberg-compatible seek (QFA) - for SCSI-1 drives and SCSI-2 seek for SCSI-2 drives. The file and - block numbers in the status are not valid after a seek. -MTSETBLK Set the drive block size. Setting to zero sets the drive into - variable block mode (if applicable). -MTSETDENSITY Sets the drive density code to arg. See drive - documentation for available codes. -MTLOCK and MTUNLOCK Explicitly lock/unlock the tape drive door. -MTLOAD and MTUNLOAD Explicitly load and unload the tape. If the - command argument x is between MT_ST_HPLOADER_OFFSET + 1 and - MT_ST_HPLOADER_OFFSET + 6, the number x is used sent to the - drive with the command and it selects the tape slot to use of - HP C1553A changer. -MTCOMPRESSION Sets compressing or uncompressing drive mode using the - SCSI mode page 15. Note that some drives other methods for - control of compression. Some drives (like the Exabytes) use - density codes for compression control. Some drives use another - mode page but this page has not been implemented in the - driver. Some drives without compression capability will accept - any compression mode without error. -MTSETPART Moves the tape to the partition given by the argument at the - next tape operation. The block at which the tape is positioned - is the block where the tape was previously positioned in the - new active partition unless the next tape operation is - MTSEEK. In this case the tape is moved directly to the block - specified by MTSEEK. MTSETPART is inactive unless - MT_ST_CAN_PARTITIONS set. -MTMKPART Formats the tape with one partition (argument zero) or two - partitions (argument non-zero). If the argument is positive, - it specifies the size of partition 1 in megabytes. For DDS - drives and several early drives this is the physically first - partition of the tape. If the argument is negative, its absolute - value specifies the size of partition 0 in megabytes. This is - the physically first partition of many later drives, like the - LTO drives from LTO-5 upwards. The drive has to support partitions - with size specified by the initiator. Inactive unless - MT_ST_CAN_PARTITIONS set. -MTSETDRVBUFFER - Is used for several purposes. The command is obtained from count - with mask MT_SET_OPTIONS, the low order bits are used as argument. - This command is only allowed for the superuser (root). The - subcommands are: - 0 - The drive buffer option is set to the argument. Zero means - no buffering. - MT_ST_BOOLEANS - Sets the buffering options. The bits are the new states - (enabled/disabled) the following options (in the - parenthesis is specified whether the option is global or - can be specified differently for each mode): - MT_ST_BUFFER_WRITES write buffering (mode) - MT_ST_ASYNC_WRITES asynchronous writes (mode) - MT_ST_READ_AHEAD read ahead (mode) - MT_ST_TWO_FM writing of two filemarks (global) - MT_ST_FAST_EOM using the SCSI spacing to EOD (global) - MT_ST_AUTO_LOCK automatic locking of the drive door (global) - MT_ST_DEF_WRITES the defaults are meant only for writes (mode) - MT_ST_CAN_BSR backspacing over more than one records can - be used for repositioning the tape (global) - MT_ST_NO_BLKLIMS the driver does not ask the block limits - from the drive (block size can be changed only to - variable) (global) - MT_ST_CAN_PARTITIONS enables support for partitioned - tapes (global) - MT_ST_SCSI2LOGICAL the logical block number is used in - the MTSEEK and MTIOCPOS for SCSI-2 drives instead of - the device dependent address. It is recommended to set - this flag unless there are tapes using the device - dependent (from the old times) (global) - MT_ST_SYSV sets the SYSV semantics (mode) - MT_ST_NOWAIT enables immediate mode (i.e., don't wait for - the command to finish) for some commands (e.g., rewind) - MT_ST_NOWAIT_EOF enables immediate filemark mode (i.e. when - writing a filemark, don't wait for it to complete). Please - see the BASICS note about MTWEOFI with respect to the - possible dangers of writing immediate filemarks. - MT_ST_SILI enables setting the SILI bit in SCSI commands when - reading in variable block mode to enhance performance when - reading blocks shorter than the byte count; set this only - if you are sure that the drive supports SILI and the HBA - correctly returns transfer residuals - MT_ST_DEBUGGING debugging (global; debugging must be - compiled into the driver) - MT_ST_SETBOOLEANS - MT_ST_CLEARBOOLEANS - Sets or clears the option bits. - MT_ST_WRITE_THRESHOLD - Sets the write threshold for this device to kilobytes - specified by the lowest bits. - MT_ST_DEF_BLKSIZE - Defines the default block size set automatically. Value - 0xffffff means that the default is not used any more. - MT_ST_DEF_DENSITY - MT_ST_DEF_DRVBUFFER - Used to set or clear the density (8 bits), and drive buffer - state (3 bits). If the value is MT_ST_CLEAR_DEFAULT - (0xfffff) the default will not be used any more. Otherwise - the lowermost bits of the value contain the new value of - the parameter. - MT_ST_DEF_COMPRESSION - The compression default will not be used if the value of - the lowermost byte is 0xff. Otherwise the lowermost bit - contains the new default. If the bits 8-15 are set to a - non-zero number, and this number is not 0xff, the number is - used as the compression algorithm. The value - MT_ST_CLEAR_DEFAULT can be used to clear the compression - default. - MT_ST_SET_TIMEOUT - Set the normal timeout in seconds for this device. The - default is 900 seconds (15 minutes). The timeout should be - long enough for the retries done by the device while - reading/writing. - MT_ST_SET_LONG_TIMEOUT - Set the long timeout that is used for operations that are - known to take a long time. The default is 14000 seconds - (3.9 hours). For erase this value is further multiplied by - eight. - MT_ST_SET_CLN - Set the cleaning request interpretation parameters using - the lowest 24 bits of the argument. The driver can set the - generic status bit GMT_CLN if a cleaning request bit pattern - is found from the extended sense data. Many drives set one or - more bits in the extended sense data when the drive needs - cleaning. The bits are device-dependent. The driver is - given the number of the sense data byte (the lowest eight - bits of the argument; must be >= 18 (values 1 - 17 - reserved) and <= the maximum requested sense data sixe), - a mask to select the relevant bits (the bits 9-16), and the - bit pattern (bits 17-23). If the bit pattern is zero, one - or more bits under the mask indicate cleaning request. If - the pattern is non-zero, the pattern must match the masked - sense data byte. - - (The cleaning bit is set if the additional sense code and - qualifier 00h 17h are seen regardless of the setting of - MT_ST_SET_CLN.) - -The following ioctl uses the structure mtpos: -MTIOCPOS Reads the current position from the drive. Uses - Tandberg-compatible QFA for SCSI-1 drives and the SCSI-2 - command for the SCSI-2 drives. - -The following ioctl uses the structure mtget to return the status: -MTIOCGET Returns some status information. - The file number and block number within file are returned. The - block is -1 when it can't be determined (e.g., after MTBSF). - The drive type is either MTISSCSI1 or MTISSCSI2. - The number of recovered errors since the previous status call - is stored in the lower word of the field mt_erreg. - The current block size and the density code are stored in the field - mt_dsreg (shifts for the subfields are MT_ST_BLKSIZE_SHIFT and - MT_ST_DENSITY_SHIFT). - The GMT_xxx status bits reflect the drive status. GMT_DR_OPEN - is set if there is no tape in the drive. GMT_EOD means either - end of recorded data or end of tape. GMT_EOT means end of tape. - - -MISCELLANEOUS COMPILE OPTIONS - -The recovered write errors are considered fatal if ST_RECOVERED_WRITE_FATAL -is defined. - -The maximum number of tape devices is determined by the define -ST_MAX_TAPES. If more tapes are detected at driver initialization, the -maximum is adjusted accordingly. - -Immediate return from tape positioning SCSI commands can be enabled by -defining ST_NOWAIT. If this is defined, the user should take care that -the next tape operation is not started before the previous one has -finished. The drives and SCSI adapters should handle this condition -gracefully, but some drive/adapter combinations are known to hang the -SCSI bus in this case. - -The MTEOM command is by default implemented as spacing over 32767 -filemarks. With this method the file number in the status is -correct. The user can request using direct spacing to EOD by setting -ST_FAST_EOM 1 (or using the MT_ST_OPTIONS ioctl). In this case the file -number will be invalid. - -When using read ahead or buffered writes the position within the file -may not be correct after the file is closed (correct position may -require backspacing over more than one record). The correct position -within file can be obtained if ST_IN_FILE_POS is defined at compile -time or the MT_ST_CAN_BSR bit is set for the drive with an ioctl. -(The driver always backs over a filemark crossed by read ahead if the -user does not request data that far.) - - -DEBUGGING HINTS - -Debugging code is now compiled in by default but debugging is turned off -with the kernel module parameter debug_flag defaulting to 0. Debugging -can still be switched on and off with an ioctl. To enable debug at -module load time add debug_flag=1 to the module load options, the -debugging output is not voluminous. Debugging can also be enabled -and disabled by writing a '0' (disable) or '1' (enable) to the sysfs -file /sys/bus/scsi/drivers/st/debug_flag. - -If the tape seems to hang, I would be very interested to hear where -the driver is waiting. With the command 'ps -l' you can see the state -of the process using the tape. If the state is D, the process is -waiting for something. The field WCHAN tells where the driver is -waiting. If you have the current System.map in the correct place (in -/boot for the procps I use) or have updated /etc/psdatabase (for kmem -ps), ps writes the function name in the WCHAN field. If not, you have -to look up the function from System.map. - -Note also that the timeouts are very long compared to most other -drivers. This means that the Linux driver may appear hung although the -real reason is that the tape firmware has got confused. diff --git a/MAINTAINERS b/MAINTAINERS index 7107ff6ecf92..bc6d68bc555a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14817,7 +14817,7 @@ SCSI TAPE DRIVER M: Kai Mäkisara L: linux-scsi@vger.kernel.org S: Maintained -F: Documentation/scsi/st.txt +F: Documentation/scsi/st.rst F: drivers/scsi/st.* F: drivers/scsi/st_*.h diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index c705e2b951a4..5bde34020b3a 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -94,7 +94,7 @@ config CHR_DEV_ST If you want to use a SCSI tape drive under Linux, say Y and read the SCSI-HOWTO, available from , and - in the kernel source. This is NOT + in the kernel source. This is NOT for SCSI CD-ROMs. To compile this driver as a module, choose M here and read diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c index 393f3019ccac..2cff8a7349a7 100644 --- a/drivers/scsi/st.c +++ b/drivers/scsi/st.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* SCSI Tape Driver for Linux version 1.1 and newer. See the accompanying - file Documentation/scsi/st.txt for more information. + file Documentation/scsi/st.rst for more information. History: Rewritten from Dwayne Forsyth's SCSI tape driver by Kai Makisara. -- cgit v1.2.3 From f02e84d29e1d0ca512ae48e6599641038380ea16 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 2 Mar 2020 09:16:11 +0100 Subject: scsi: docs: convert sym53c8xx_2.txt to ReST Link: https://lore.kernel.org/r/08202c87294d61d147ec4ac784219d20805cdeb5.1583136624.git.mchehab+huawei@kernel.org Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Martin K. Petersen --- Documentation/scsi/index.rst | 1 + Documentation/scsi/sym53c8xx_2.rst | 1209 ++++++++++++++++++++++++++++++++++++ Documentation/scsi/sym53c8xx_2.txt | 1048 ------------------------------- drivers/scsi/Kconfig | 2 +- 4 files changed, 1211 insertions(+), 1049 deletions(-) create mode 100644 Documentation/scsi/sym53c8xx_2.rst delete mode 100644 Documentation/scsi/sym53c8xx_2.txt (limited to 'drivers/scsi/Kconfig') diff --git a/Documentation/scsi/index.rst b/Documentation/scsi/index.rst index 00584fb0588c..238dd0ac36a6 100644 --- a/Documentation/scsi/index.rst +++ b/Documentation/scsi/index.rst @@ -42,5 +42,6 @@ Linux SCSI Subsystem smartpqi st sym53c500_cs + sym53c8xx_2 scsi_transport_srp/figures diff --git a/Documentation/scsi/sym53c8xx_2.rst b/Documentation/scsi/sym53c8xx_2.rst new file mode 100644 index 000000000000..8de44a7baa9b --- /dev/null +++ b/Documentation/scsi/sym53c8xx_2.rst @@ -0,0 +1,1209 @@ +.. SPDX-License-Identifier: GPL-2.0 + +========================================= +The Linux SYM-2 driver documentation file +========================================= + +Written by Gerard Roudier + +21 Rue Carnot + +95170 DEUIL LA BARRE - FRANCE + +Updated by Matthew Wilcox + +2004-10-09 + +.. Contents + + 1. Introduction + 2. Supported chips and SCSI features + 3. Advantages of this driver for newer chips. + 3.1 Optimized SCSI SCRIPTS + 3.2 New features appeared with the SYM53C896 + 4. Memory mapped I/O versus normal I/O + 5. Tagged command queueing + 6. Parity checking + 7. Profiling information + 8. Control commands + 8.1 Set minimum synchronous period + 8.2 Set wide size + 8.3 Set maximum number of concurrent tagged commands + 8.4 Set debug mode + 8.5 Set flag (no_disc) + 8.6 Set verbose level + 8.7 Reset all logical units of a target + 8.8 Abort all tasks of all logical units of a target + 9. Configuration parameters + 10. Boot setup commands + 10.1 Syntax + 10.2 Available arguments + 10.2.1 Default number of tagged commands + 10.2.2 Burst max + 10.2.3 LED support + 10.2.4 Differential mode + 10.2.5 IRQ mode + 10.2.6 Check SCSI BUS + 10.2.7 Suggest a default SCSI id for hosts + 10.2.8 Verbosity level + 10.2.9 Debug mode + 10.2.10 Settle delay + 10.2.11 Serial NVRAM + 10.2.12 Exclude a host from being attached + 10.3 Converting from old options + 10.4 SCSI BUS checking boot option + 11. SCSI problem troubleshooting + 15.1 Problem tracking + 15.2 Understanding hardware error reports + 12. Serial NVRAM support (by Richard Waltham) + 17.1 Features + 17.2 Symbios NVRAM layout + 17.3 Tekram NVRAM layout + + +1. Introduction +=============== + +This driver supports the whole SYM53C8XX family of PCI-SCSI controllers. +It also support the subset of LSI53C10XX PCI-SCSI controllers that are based +on the SYM53C8XX SCRIPTS language. + +It replaces the sym53c8xx+ncr53c8xx driver bundle and shares its core code +with the FreeBSD SYM-2 driver. The 'glue' that allows this driver to work +under Linux is contained in 2 files named sym_glue.h and sym_glue.c. +Other drivers files are intended not to depend on the Operating System +on which the driver is used. + +The history of this driver can be summarized as follows: + +1993: ncr driver written for 386bsd and FreeBSD by: + + - Wolfgang Stanglmeier + - Stefan Esser + +1996: port of the ncr driver to Linux-1.2.13 and rename it ncr53c8xx. + + - Gerard Roudier + +1998: new sym53c8xx driver for Linux based on LOAD/STORE instruction and that + adds full support for the 896 but drops support for early NCR devices. + + - Gerard Roudier + +1999: port of the sym53c8xx driver to FreeBSD and support for the LSI53C1010 + 33 MHz and 66MHz Ultra-3 controllers. The new driver is named 'sym'. + + - Gerard Roudier + +2000: Add support for early NCR devices to FreeBSD 'sym' driver. + Break the driver into several sources and separate the OS glue + code from the core code that can be shared among different O/Ses. + Write a glue code for Linux. + + - Gerard Roudier + +2004: Remove FreeBSD compatibility code. Remove support for versions of + Linux before 2.6. Start using Linux facilities. + +This README file addresses the Linux version of the driver. Under FreeBSD, +the driver documentation is the sym.8 man page. + +Information about new chips is available at LSILOGIC web server: + + http://www.lsilogic.com/ + +SCSI standard documentations are available at T10 site: + + http://www.t10.org/ + +Useful SCSI tools written by Eric Youngdale are part of most Linux +distributions: + + ============ ========================== + scsiinfo command line tool + scsi-config TCL/Tk tool using scsiinfo + ============ ========================== + +2. Supported chips and SCSI features +==================================== + +The following features are supported for all chips: + + - Synchronous negotiation + - Disconnection + - Tagged command queuing + - SCSI parity checking + - PCI Master parity checking + +Other features depends on chip capabilities. + +The driver notably uses optimized SCRIPTS for devices that support +LOAD/STORE and handles PHASE MISMATCH from SCRIPTS for devices that +support the corresponding feature. + +The following table shows some characteristics of the chip family. + ++--------+-----------+-----+-----------+------------+------------+---------+ +| | | | | |Load/store |Hardware | +| |On board | | | |scripts |phase | +|Chip |SDMS BIOS |Wide |SCSI std. | Max. sync | |mismatch | ++--------+-----------+-----+-----------+------------+------------+---------+ +|810 | N | N | FAST10 | 10 MB/s | N | N | ++--------+-----------+-----+-----------+------------+------------+---------+ +|810A | N | N | FAST10 | 10 MB/s | Y | N | ++--------+-----------+-----+-----------+------------+------------+---------+ +|815 | Y | N | FAST10 | 10 MB/s | N | N | ++--------+-----------+-----+-----------+------------+------------+---------+ +|825 | Y | Y | FAST10 | 20 MB/s | N | N | ++--------+-----------+-----+-----------+------------+------------+---------+ +|825A | Y | Y | FAST10 | 20 MB/s | Y | N | ++--------+-----------+-----+-----------+------------+------------+---------+ +|860 | N | N | FAST20 | 20 MB/s | Y | N | ++--------+-----------+-----+-----------+------------+------------+---------+ +|875 | Y | Y | FAST20 | 40 MB/s | Y | N | ++--------+-----------+-----+-----------+------------+------------+---------+ +|875A | Y | Y | FAST20 | 40 MB/s | Y | Y | ++--------+-----------+-----+-----------+------------+------------+---------+ +|876 | Y | Y | FAST20 | 40 MB/s | Y | N | ++--------+-----------+-----+-----------+------------+------------+---------+ +|895 | Y | Y | FAST40 | 80 MB/s | Y | N | ++--------+-----------+-----+-----------+------------+------------+---------+ +|895A | Y | Y | FAST40 | 80 MB/s | Y | Y | ++--------+-----------+-----+-----------+------------+------------+---------+ +|896 | Y | Y | FAST40 | 80 MB/s | Y | Y | ++--------+-----------+-----+-----------+------------+------------+---------+ +|897 | Y | Y | FAST40 | 80 MB/s | Y | Y | ++--------+-----------+-----+-----------+------------+------------+---------+ +|1510D | Y | Y | FAST40 | 80 MB/s | Y | Y | ++--------+-----------+-----+-----------+------------+------------+---------+ +|1010 | Y | Y | FAST80 |160 MB/s | Y | Y | ++--------+-----------+-----+-----------+------------+------------+---------+ +|1010_66 | Y | Y | FAST80 |160 MB/s | Y | Y | +|[1]_ | | | | | | | ++--------+-----------+-----+-----------+------------+------------+---------+ + +.. [1] Chip supports 33MHz and 66MHz PCI bus clock. + + +Summary of other supported features: + +:Module: allow to load the driver +:Memory mapped I/O: increases performance +:Control commands: write operations to the proc SCSI file system +:Debugging information: written to syslog (expert only) +:Serial NVRAM: Symbios and Tekram formats + +- Scatter / gather +- Shared interrupt +- Boot setup commands + + +3. Advantages of this driver for newer chips. +============================================= + +3.1 Optimized SCSI SCRIPTS +-------------------------- + +All chips except the 810, 815 and 825, support new SCSI SCRIPTS instructions +named LOAD and STORE that allow to move up to 1 DWORD from/to an IO register +to/from memory much faster that the MOVE MEMORY instruction that is supported +by the 53c7xx and 53c8xx family. + +The LOAD/STORE instructions support absolute and DSA relative addressing +modes. The SCSI SCRIPTS had been entirely rewritten using LOAD/STORE instead +of MOVE MEMORY instructions. + +Due to the lack of LOAD/STORE SCRIPTS instructions by earlier chips, this +driver also incorporates a different SCRIPTS set based on MEMORY MOVE, in +order to provide support for the entire SYM53C8XX chips family. + +3.2 New features appeared with the SYM53C896 +-------------------------------------------- + +Newer chips (see above) allows handling of the phase mismatch context from +SCRIPTS (avoids the phase mismatch interrupt that stops the SCSI processor +until the C code has saved the context of the transfer). + +The 896 and 1010 chips support 64 bit PCI transactions and addressing, +while the 895A supports 32 bit PCI transactions and 64 bit addressing. +The SCRIPTS processor of these chips is not true 64 bit, but uses segment +registers for bit 32-63. Another interesting feature is that LOAD/STORE +instructions that address the on-chip RAM (8k) remain internal to the chip. + +4. Memory mapped I/O versus normal I/O +====================================== + +Memory mapped I/O has less latency than normal I/O and is the recommended +way for doing IO with PCI devices. Memory mapped I/O seems to work fine on +most hardware configurations, but some poorly designed chipsets may break +this feature. A configuration option is provided for normal I/O to be +used but the driver defaults to MMIO. + +5. Tagged command queueing +========================== + +Queuing more than 1 command at a time to a device allows it to perform +optimizations based on actual head positions and its mechanical +characteristics. This feature may also reduce average command latency. +In order to really gain advantage of this feature, devices must have +a reasonable cache size (No miracle is to be expected for a low-end +hard disk with 128 KB or less). + +Some known old SCSI devices do not properly support tagged command queuing. +Generally, firmware revisions that fix this kind of problems are available +at respective vendor web/ftp sites. + +All I can say is that I never have had problem with tagged queuing using +this driver and its predecessors. Hard disks that behaved correctly for +me using tagged commands are the following: + +- IBM S12 0662 +- Conner 1080S +- Quantum Atlas I +- Quantum Atlas II +- Seagate Cheetah I +- Quantum Viking II +- IBM DRVS +- Quantum Atlas IV +- Seagate Cheetah II + +If your controller has NVRAM, you can configure this feature per target +from the user setup tool. The Tekram Setup program allows to tune the +maximum number of queued commands up to 32. The Symbios Setup only allows +to enable or disable this feature. + +The maximum number of simultaneous tagged commands queued to a device +is currently set to 16 by default. This value is suitable for most SCSI +disks. With large SCSI disks (>= 2GB, cache >= 512KB, average seek time +<= 10 ms), using a larger value may give better performances. + +This driver supports up to 255 commands per device, and but using more than +64 is generally not worth-while, unless you are using a very large disk or +disk arrays. It is noticeable that most of recent hard disks seem not to +accept more than 64 simultaneous commands. So, using more than 64 queued +commands is probably just resource wasting. + +If your controller does not have NVRAM or if it is managed by the SDMS +BIOS/SETUP, you can configure tagged queueing feature and device queue +depths from the boot command-line. For example:: + + sym53c8xx=tags:4/t2t3q15-t4q7/t1u0q32 + +will set tagged commands queue depths as follow: + +- target 2 all luns on controller 0 --> 15 +- target 3 all luns on controller 0 --> 15 +- target 4 all luns on controller 0 --> 7 +- target 1 lun 0 on controller 1 --> 32 +- all other target/lun --> 4 + +In some special conditions, some SCSI disk firmwares may return a +QUEUE FULL status for a SCSI command. This behaviour is managed by the +driver using the following heuristic: + +- Each time a QUEUE FULL status is returned, tagged queue depth is reduced + to the actual number of disconnected commands. + +- Every 200 successfully completed SCSI commands, if allowed by the + current limit, the maximum number of queueable commands is incremented. + +Since QUEUE FULL status reception and handling is resource wasting, the +driver notifies by default this problem to user by indicating the actual +number of commands used and their status, as well as its decision on the +device queue depth change. +The heuristic used by the driver in handling QUEUE FULL ensures that the +impact on performances is not too bad. You can get rid of the messages by +setting verbose level to zero, as follow: + +1st method: + boot your system using 'sym53c8xx=verb:0' option. +2nd method: + apply "setverbose 0" control command to the proc fs entry + corresponding to your controller after boot-up. + +6. Parity checking +================== + +The driver supports SCSI parity checking and PCI bus master parity +checking. These features must be enabled in order to ensure safe +data transfers. Some flawed devices or mother boards may have problems +with parity. The options to defeat parity checking have been removed +from the driver. + +7. Profiling information +======================== + +This driver does not provide profiling information as did its predecessors. +This feature was not this useful and added complexity to the code. +As the driver code got more complex, I have decided to remove everything +that didn't seem actually useful. + +8. Control commands +=================== + +Control commands can be sent to the driver with write operations to +the proc SCSI file system. The generic command syntax is the +following:: + + echo " " >/proc/scsi/sym53c8xx/0 + (assumes controller number is 0) + +Using "all" for "" parameter with the commands below will +apply to all targets of the SCSI chain (except the controller). + +Available commands: + +8.1 Set minimum synchronous period factor +----------------------------------------- + + setsync + + :target: target number + :period: minimum synchronous period. + Maximum speed = 1000/(4*period factor) except for special + cases below. + + Specify a period of 0, to force asynchronous transfer mode. + + - 9 means 12.5 nano-seconds synchronous period + - 10 means 25 nano-seconds synchronous period + - 11 means 30 nano-seconds synchronous period + - 12 means 50 nano-seconds synchronous period + +8.2 Set wide size +----------------- + + setwide + + :target: target number + :size: 0=8 bits, 1=16bits + +8.3 Set maximum number of concurrent tagged commands +---------------------------------------------------- + + settags + + :target: target number + :tags: number of concurrent tagged commands + must not be greater than configured (default: 16) + +8.4 Set debug mode +------------------ + + setdebug + + Available debug flags: + + ======== ======================================================== + alloc print info about memory allocations (ccb, lcb) + queue print info about insertions into the command start queue + result print sense data on CHECK CONDITION status + scatter print info about the scatter process + scripts print info about the script binding process + tiny print minimal debugging information + timing print timing information of the NCR chip + nego print information about SCSI negotiations + phase print information on script interruptions + ======== ======================================================== + + Use "setdebug" with no argument to reset debug flags. + + +8.5 Set flag (no_disc) +---------------------- + + setflag + + :target: target number + + For the moment, only one flag is available: + + no_disc: not allow target to disconnect. + + Do not specify any flag in order to reset the flag. For example: + + setflag 4 + will reset no_disc flag for target 4, so will allow it disconnections. + setflag all + will allow disconnection for all devices on the SCSI bus. + + +8.6 Set verbose level +--------------------- + + setverbose #level + + The driver default verbose level is 1. This command allows to change + th driver verbose level after boot-up. + +8.7 Reset all logical units of a target +--------------------------------------- + + resetdev + + :target: target number + + The driver will try to send a BUS DEVICE RESET message to the target. + +8.8 Abort all tasks of all logical units of a target +---------------------------------------------------- + + cleardev + + :target: target number + + The driver will try to send a ABORT message to all the logical units + of the target. + + +9. Configuration parameters +=========================== + +Under kernel configuration tools (make menuconfig, for example), it is +possible to change some default driver configuration parameters. +If the firmware of all your devices is perfect enough, all the +features supported by the driver can be enabled at start-up. However, +if only one has a flaw for some SCSI feature, you can disable the +support by the driver of this feature at linux start-up and enable +this feature after boot-up only for devices that support it safely. + +Configuration parameters: + +Use normal IO (default answer: n) + Answer "y" if you suspect your mother board to not allow memory mapped I/O. + May slow down performance a little. + +Default tagged command queue depth (default answer: 16) + Entering 0 defaults to tagged commands not being used. + This parameter can be specified from the boot command line. + +Maximum number of queued commands (default answer: 32) + This option allows you to specify the maximum number of tagged commands + that can be queued to a device. The maximum supported value is 255. + +Synchronous transfers frequency (default answer: 80) + This option allows you to specify the frequency in MHz the driver + will use at boot time for synchronous data transfer negotiations. + 0 means "asynchronous data transfers". + +10. Boot setup commands +======================= + +10.1 Syntax +----------- + +Setup commands can be passed to the driver either at boot time or as +parameters to modprobe, as described in Documentation/admin-guide/kernel-parameters.rst + +Example of boot setup command under lilo prompt:: + + lilo: linux root=/dev/sda2 sym53c8xx.cmd_per_lun=4 sym53c8xx.sync=10 sym53c8xx.debug=0x200 + +- enable tagged commands, up to 4 tagged commands queued. +- set synchronous negotiation speed to 10 Mega-transfers / second. +- set DEBUG_NEGO flag. + +The following command will install the driver module with the same +options as above:: + + modprobe sym53c8xx cmd_per_lun=4 sync=10 debug=0x200 + +10.2 Available arguments +------------------------ + +10.2.1 Default number of tagged commands +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + - cmd_per_lun=0 (or cmd_per_lun=1) tagged command queuing disabled + - cmd_per_lun=#tags (#tags > 1) tagged command queuing enabled + + #tags will be truncated to the max queued commands configuration parameter. + +10.2.2 Burst max +^^^^^^^^^^^^^^^^ + + ========== ====================================================== + burst=0 burst disabled + burst=255 get burst length from initial IO register settings. + burst=#x burst enabled (1<<#x burst transfers max) + + #x is an integer value which is log base 2 of the burst + transfers max. + ========== ====================================================== + + By default the driver uses the maximum value supported by the chip. + +10.2.3 LED support +^^^^^^^^^^^^^^^^^^ + + ===== =================== + led=1 enable LED support + led=0 disable LED support + ===== =================== + + Do not enable LED support if your scsi board does not use SDMS BIOS. + (See 'Configuration parameters') + +10.2.4 Differential mode +^^^^^^^^^^^^^^^^^^^^^^^^ + + ====== ================================= + diff=0 never set up diff mode + diff=1 set up diff mode if BIOS set it + diff=2 always set up diff mode + diff=3 set diff mode if GPIO3 is not set + ====== ================================= + +10.2.5 IRQ mode +^^^^^^^^^^^^^^^ + + ====== ================================================ + irqm=0 always open drain + irqm=1 same as initial settings (assumed BIOS settings) + irqm=2 always totem pole + ====== ================================================ + +10.2.6 Check SCSI BUS +^^^^^^^^^^^^^^^^^^^^^ + + buschk=