Linux PCI-HOWTO by Michael Will, Michael.Will@student.uni-tuebingen.de v0.6h, 24 June 2001 ------------------------------------------------------------------------------- Information on what works with Linux and PCI-boards and what does not. Please get the latest version of this document at The_Linux_Documentation_Project ------------------------------------------------------------------------------- 1. Introduction Many people, including me, would like to run Linux on a PCI-based machine. Since it is not obvious which PCI motherboards and PCI cards will work with Linux and which do not, I conducted a survey and spent some hours to compile the information contained herein. Most of this was done before 1997 and more uptodate technology might be covered in the device specific howtos such as the XFree86, Xinerama, Networking and Hardware-HOWTO. If you have information to add, please mail me. If you have questions, feel free to ask. Help with my style/grammar/language is welcome as well. I am not a native- speaker of English and expect to make occasional mistakes. Note: "on-board chip" refers to a SCSI chip integrated onto the motherboard rather than on a PCI expansion card. Also, "quotes" herein may have slight context editing. 2. Why PCI? 2.1 General overview The PC-architecture has several BUS-Systems to choose from: ISA 16 or 8bit, cheap, slow (usually 8Mhz), standard, many cards available> EISA 32bit, expensive, fast, few cards available, fading> MCA 32 or 16bit ex-IBM-proprietary, fast, becoming rare> VESA-Local-Bus 32bit, based on 486 architecture, cheap, fast, many cards available> PCI-Local-Bus 32bit (64 bit coming), cheap, fast, many cards available, nowadays standard> MCA worked fine, but never achieved much market, being used on only some early IBM PS/2 machines. There were very few cards. EISA was reliable, but rather expensive, and intended more for servers, than for the average user. It has the next fewest cards available. VESA-Local-Bus (VLB) had some problems with high bus-speeds, and was not very reliable, but mainly due to its low price and better-than-ISA performance, sold very well. Technically, it's almost a direct map of the 486 processor bus. Most VESA boards should be stable by now. At the beginning of 1996, many 486 motherboards still support VESA, but PCI is growing. VESA busses are tied directly to the speed of the memory bus for 486's, or half the speed for Pentiums. PCI now has the advantage. Like EISA it is not proprietary. It is as faster than EISA or MCA, and cheaper. Most current Pentium motherboards use the PCI bus; VESA is fading. Virtualy all PCI motherboards and cards sold at the beginning of 1996 are 32 bit, and run at 0-33 MHz. Currently, most Pentium motherboards run the PCI bus at 1/2 the memory speed (ie: 33 MHz for the 66 MHz memory bus on the P66,P100,P133,P166; 30 MHz for the 60 MHz memory bus on the P60,P90,P120,P150; and 25 Mhz on the 50 MHz memory bus of the P75). This is probably true of Cyrix 6x86 motherboards too. NexGen 5x86 implemention isn't known. The PCI spec does allow the PCI bus to be run asynchronously from the processor, (eg: 33 Mhz bus on P75), but this is not common yet. PCI 2.1 has been defined, allowing 64 bit PCI, and/or 0-66 MHz operations, but no x86 chipsets yet support these options. 64 bit PCI will probably appear first, in 32/64 bit dual compatible versions. That is, you will be able to mix 32 and 64 bit cards. 66 MHz PCI will take longer, as it's technically demanding, can only support one or maybe two slots per bridge, and may not work well with 33 MHz cards. PCI is not processor dependent like the VESA Local-Bus. This means you can use the winner-1000-PCI in an Alpha-driven-PCI computer as well as in a i486/ Pentium-driven PCI computer, with the appropriate BIOS and software. Beside Intel and DEC Alpha platforms, PCI is used on some PowerPC's. Some PCI variations to be aware of: some implementations support "Bus Master" cards in all PCI slots, some in only one slot, and some not at all; some implementations support "bridging" on cards and some do not. 2.2 Performance taken from Craig Sutphin's early Pro-PCI-Propaganda Unlike some local buses, which are aimed at speeding up graphics alone, the PCI Local Bus is a total system solution, providing increased performance for networks, disk drives, full-motion video, graphics and the full range of high-speed peripherals. At 33 MHz, the synchronous PCI Local Bus transfers 32 bits of data at up to 132 Mbytes/sec. A transparent 64-bit extension of the 32-bit data and address buses can double the bus bandwidth (264 Mbytes/sec) and offer forward and backwards compatibility for 32 and 64-bit PCI Local Bus peripherals. Because it is processor-independent, the PCI Local Bus is optimized for I/O functions, enabling the local bus to operate concurrent with the processor/memory subsystem. For users of high-end desktop PC's, PCI makes high reliability, high performance and ease of use more affordable than ever before; no trivial task at 33 MHz bus-clock rates. Variable length linear or toggle mode bursting for both reads and writes improves write dependent graphics performance. By comprehending the loading and frequency requirements of the local bus at the component level, buffers and glue logic are eliminated. See the chapter about Benchmarks for some crude (and perhaps meaningless) benchmarks on ASUS PCI Boards with 486 and 586. 2.3 The onboard-SCSI-II-chip NCR53c810 One very nice feature of some PCI mother boards is the NCR onboard-SCSI-II- chip, which is said to be as fast as the EISA-Adaptec-1742, but much cheaper. Drivers for DOS/OS2 are available. Drew Eckard has released his version of his NCR53c810-driver, which is in the standard kernel since v1.2. This works so well I sold my adaptec-1542B-ISA soon after I bought the ASUS SP3-saturn-chipset II PCI board, and found the onboard NCR-SCSI controller to be much faster. The NCR53c810-chip is onboard on some PCI-motherboards. There are add-on-boards available too, for about US$ 70.00. There is only one thing I noticed did not work with the NCR-drivers when I tried them. Disconnect/Reconnect did not work, so using a SCSI-tape could be a pain, especially when using "mt erase" or the like blocks the whole SCSI-bus until it has finished. Since this was very unsatisfying for me, I bought one of these nice but expensive DPT PCI SCSI controller and had no such problems anymore. People have reported this problem has been solved by Drew by now. FreeBSD does support the NCR53c810 for quite a long time already, including Tagged Command Queues, FAST, WIDE and Disconnect for NCR 53c810, 815, 825. Drew said, it would be possible to adapt the FreeBSD driver to Linux. I somewhere saw some patches to do exactly this, any pointer to the location? I personaly have the impression there are some important wheels invented more than once because of the differently evolving of FreeBSD and Linux. Some more cooperation could do both systems very well... 2.4 Drew Eckhardt on PCI-SCSI: Drew said on end of March 95 about the SCSI on PCI: (slightly edited for clarity in context) The Adaptec 2940, Buslogic BT946, BT946W, DPT PCI boards, Future Domain 3260, NCR53c810, NCR53c815, NCR53c820, and NCR53c825 all work for some definition of the word works. * The Adaptec 2940 suffers from the same cabling sensitivity that plagues all recent boards, but otherwise works fine. * The Future Domain boards are not busmasters, and the driver doesn't support multiple simultaenous commands. If you don't (currently) need multiple simultaneous commands, get a NCR board, which will be cheaper and is busmastering. If you need multiple simultaneous commands, get a Buslogic. * The Buslogic BT956W will do WIDE SCSI with the Linux drivers (although you can't use targets 8-15), the Adaptec 2940W (with one line patch to the 2940 driver) won't, nor will the NCR53c820 and NCR53c825. * The NCR boards are dirt cheap (< $ 70 US), are generally quite fast, but the driver currently doesn't support multiple simultaenous commands. Alpha which do neat things like disconnect/reconnect and synchronous transfer are now publicly available, see below. * Emulux, Forex, and other unmentioned PCI SCSI controllers will not work. 2.5 New Alpha Version of the NCR driver Well, this is not exactly *that* new anymore, please try to he versions which are in the kernel by version 2.0.x before going for this entry. Alpha versions of the NCR driver which do neat things like disconnect/reconnect and synchronous transfers are now publically available. Any one interested in playing with them should * Join the NCR mailing list, by sending mail to majordomo@colorado.edu with subscribe ncr53c810 in the text. * Get all of the readmes, and latest diffs file from ftp://tsx-11.mit.edu/pub/ ALPHA/linux/SCSI/ncr53c810 2.6 The EATA-DMA driver and the PCI SCSI controllers from DPT The EATA-DMA scsi driver has undergone extensive changes and now also supports PCI SCSI controllers, multiple controllers and all SCSI channels on the multichannel SmartCache/Raid boards in all combinations of WIDE, FAST-20 (ULTRA) and DIFFERENTIAL. The driver supports all EATA-DMA Protocol (CAM document CAM/89-004 rev. 2.0c) compliant SCSI controllers and has been tested with many of those controllers in mixed combinations. Those are: (ISA) (EISA) (PCI) DPT Smartcache: PM2011 PM2012B Smartcache III: PM2021 PM2022 PM2024 PM2122 PM2124 PM2322 Smartcache IV: PM2041 PM2042 PM2044 PM2142 PM2144 PM2322 SmartRAID : PM3021 PM3122 PM3222 PM3224 PM3334 and some controllers from NEC, AT&T, SNI, AST, Olivetti and Alphatronix. On a "base" DPT card (no caching or RAID module), a MC680x0 controls the bus- mastering DMA chip(s) and the SCSI controller chip. The DPT SCSI card almost works like a SCSI coprocessor. The DPT card also will emulate an IDE controller/drive (ST506 interface), which enables you to use it with all operating systems even if they don't have an EATA driver. On a card with the caching module, the 680x0 maintains and manages the on-board cacheing. The DPT card supports up to 64 MB RAM for disk-cacheing. On a card with the RAID module, the 680x0 also performs the management of the RAID, doing the mirroring on RAID-1, doing the striping and ECC info generation on RAID-5, etc. The entry level boards utilize a Motorola 68000, the high-end, more raid specific DPT cards use a 68020, 68030 or 68040/40MHz processor. Official list prices range from $ 265 to $1.645 (January 18, 1996) Since I've been asked numerous times where you can buy those boards in Europe, I asked DPT to send me a list of their official European distributors. Here is a small excerpt: Austria: Macrotron GmbH Tel:+43 1 408 15430 Fax:+43 1 408 1545 Denmark: Tallgrass Technologies A/S Tel:+45 86 14 7000 Fax:+45 86 14 7333 Finland: Computer 2000 Finnland OY Tel:+35 80 887 331 Fax:+35 80 887 333 43 France : Chip Technologies Tel:+33 1 49 60 1011 Fax:+33 1 49 599350 Germany: Akro Datensysteme GmbH Tel:+49 (0)89 3178701 Fax:+49 (0)89 31787299 Russia : Soft-tronik Tel:+7 812 315 92 76 Fax:+7 812 311 01 08 U.K. : Ambar Systems Ltd. Tel:+44 1296 311 300 Fax:+44 296 479 461 "IMHO, the DPT cards are the best-designed SCSI cards available for a PC. And I've written code for just about every type of SCSI card for the PC. (Although, in retrospect, I don't know why!) ;-)" Jon R. Taylor (jtaylor@magicnet.net) President, Visionix, Inc. The latest version of the EATA-DMA driver and a Slackware bootdisk is available on: ftp.i-Connect.Net:/pub/Local/EATA Since patchlevel 1.1.81 the driver is included in the standard kernel distribution. The author can be reached under these addresses: neuffer@mail.uni-mainz.de or mike@i-Connect.Net 2.7 BT-946C fully supported with kernel 1.3.x and newer There is a driver in the 1.3.x kernels (available as a patch for the 1.2.13 kernel) written by someone associated with buslogic that fully supports the 946C and ALL of it's features including strict round robin, tagged queueing, multiple scatter/gather, multiple mailboxes, IRQ sharing, and yes, 15 devices on Fast/Wide. It is no longer necessary to use any ISA emulation with the driver (no DMA channel, no ISA address), and the driver is /fast/ and /stable/ (it's out of BETA and into full release). The driver is available on ftp.dandelion.com (the newest version can always be got by doing "get BusLogic*"). It supports ALL BusLogic controllers with the exception of the FlashPoint LT, which uses a different interface. The driver is included in the 1.3.x kernels as standard for BusLogic devices. 2.8 Future Domain TMC-3260 PCI SCSI Rik Faith (faith@cs.unc.edu) informed me on Wed, 1 Feb 1995 about the Future Domain TMC-3260 PCI SCSI card being supported by the Future Domain 16x0 SCSI driver. Newer information might be contained in the SCSI-HOWTO. * Detection is not done well, and does not use standard PCI BIOS detection methods (someone who has a PCI board needs to send me patches to fix this problem). So, you might have to fiddle with the detection routine in the kernel to get it detected. * The driver still does not support multiple outstanding commands, so your system will hang while your tape rewinds. * The driver does not support the enhanced pseudo-32bit transfer mode supported by recent Future Domain chips, so you will not get transfer rates as high as under DOS. * The driver only supports the SCSI-I protocol, so your really fast hard disks will not get used at the highest possible throughput. (Again, fixes for all these problems are solicited -- no one is working on them at this time.) 2.9 other thoughts on scsi James Soutter (J.K.Soutter1@lut.ac.uk) asked me to add the following information on Fast-Wide-SCSI-2: Fast Wide SCSI-2 is sometimes incorrectly called SCSI-3. It differs from the normal Fast SCSI-2 (like the Adapted 1542B?) because it uses a 16 bit data bus rather than the more usual 8 bit bus. This improves the maximum transfer rate from 10 MB/s to 20 MB/s but requires the use of special Fast Wide SCSI-2 drives. The added performance of Fast Wide SCSI-2 will not necessarily improve the speed of your system. Most hard disk drives have a maximum internal transfer rate of less than 10 MB/s and so one drive alone can not flood a FAST SCSI-2 bus. In Seagate's Oct 1993 product overview, only one Fast Wide SCSI- 2 drive has an internal transfer rate of more than 10 MB/s (the ST12450W). Most of the drives have a maximum internal transfer rate of 6 MB/s or less, although the ST12450W is not the only exception to the rule. In conclusion, Fast Wide SCSI is designed for the file server market and will not necessarily benefit a single user workstation style system. Rather than buying a PCI system with a SCSI interface on the motherboard, or rather than waiting for the NCR driver, you could purchase a separate PCI based SCSI card. According to Drew, the only PCI SCSI option that stands a chance of working is the Buslogic 946. It purports to be Adaptec 1540 compatible, like the EISA/VESA/ISA boards in the series. Drew commented that other PCI based SCSI controllers are unlikely to be supported under Linux or the BSD's because the NCR based controllers are cheaper and more prevalent. I definitly recommend reading the SCSI HOWTO in regards to newer information about PCI SCSI drivers. Ernst Kloecker (ernst@cs.tu-berlin.de) wrote: (edited) Talus Corporation has finished a NS/FIP driver for PCI boards with NCR SCSI. It will be shipping very soon, might even be free because a third party might pay for the work and donate the driver to NeXT. Not every PCI-Board has got the chip. The old ASUS do, and one of the J-Bond boards does, too. (Most of the boards nowadays (6/95) do expect you to buy the NCR53c810 seperately.) Some vendors provide an alternative as you can read in Drew's text... The NCR-Chip is clever enough to work with drives formatted by other controllers, and should be no problem. 3. ASUS-Boards 3.1 ASUS and the NMI (Parity) -- impact on Gravis-Ultrasound The newer trition PCI-Mainboards in 1995 did not seem to support parity-SIMMS anymore. Since I usualy took the cheaper nonparity-SIMMS anyway, I did not consider this a problem until I put the Gravis-Ultrasound into my machine. Under DOS the SBOS-Driver and Setup/Test utility does complain about "nmi procedure disabled on this p.c.". The manual says I'd better get a better mainboard in that case, not very helpful. The gravis-ultrasound did work nice in the ASUS-SP3 and ASUS-SP4, inspite of this, but the gravis-ultrasound-max I have here got gmod to kernel panic on both boards, and sometimes when playing au-files via /dev/audio did strange things, like playing the rest of an older, previously played sound after the new one. The sounddriver does recommend a buffer of 65536 with the GUS Max instead of the small one like the GUS - why I do not know. I do not have such a problem with the newer ASUS TP4 XE boards, though. Both are equipped with 1M DRAM onboard. These problems are probably not related to the NMI-problem, but because of the sounddriver? I heard not only ASUS but most of the newer PCI-Mainboards are lacking in parity/NMI-support. Strange enough - the ASUS-TP4 (Trition Chipset) does work with the GUS Max - it does load the SBOS-Driver. I have to admit, I am confused. 3.2 Various types of ASUS Boards ASUS SP3 with saturn chipset I (rev. 2) for 486, * 2 x rs232 with 16550 * NCR53c810 onboard, * slightly broken saturn-chipset I (rev. 2) ASUS SP3G with saturn chipset II (rev. 4) for 486, like SP3, but less buggy saturn chipset ASUS SP3-SiS chipset, for 486 like AP4, but newer, SiS chipset, green functions and all the EIDE, rs232 with 2 16550 and centronics. Only 2 SIMM Slots, Does seem to work with AMD486DX4/ 120, but was not very reliably on NCR53c810 and various operating systems (Windows-NT, Windows95, OS2), after upgrading to a PentiumBoard ASUS SP4, all the problems vanished, so it must have been the board. Still does seem to work nice for Linux, though. ASUS AP4, for 486, with PCI/ISA/VesaLocalbus green functions, 1VL, 3 ISA, 4 PCI slots, only EIDE onboard, no fd-controller, no rs232/centronics. Very small size. does recognice AMD486DX2/66 as DX4/100 only. This can be corrected with soldering one pin (which?) to ground, but I would not recommend a board like this anyway. The one I tested was broken for OS2 and Linux, but people are said to use it for both. The VesaLocalbus-Slot is expected to be slower than the normal vesa-localbus boards because of the PCI2VL bridge, but without penalty to the PCI section. ASUS SP4-SiS, for Pentium90, PCI/ISA like SP3-SiS, but for Pentium90/100. ASUS TP4 with Triton chipset and EDO-Support has the Triton-Chipset for better performance and supports normal PS2-Simms as well as Fast-Page-Mode and EDO modules. ASUS TP4XE with Triton chipset and additional SRAM/EDORAM support supports the new EDORAM and upcoming SRAM standards. At least SRAM is said to considerabely increase performance. Did for some reason not accept the 8M PS2- SIMMS working ok in ASUS SP4, after changing them against others, bigger looking ones, (16 chips instead of 8 if I remember right) it worked ok. Has been tested with P90 and P100. ...and many others now. if you have new information on problems with them, please report. 3.3 Benchmarks on ASUS Mainboards I tried to compare the speed of CPUs in two ASUS Mainboards: for 486 I tested the SP3 SiS (the one with one vesa-local-bus slot) and for 586 I tested the ASUS TP4/XE, each with 16M RAM, always the same unloaded system with another CPU, with whetstone and dhrystone. I must admit, I have not read the benchmarks-faq yet, and will probably edit the section a loot soon. If you have any comments, please mail me. I am especially confused about the amd486DX4/100 being faster on dhrystones than the DX4/120 version? I did not see that kind of inconsistency on comparing the P90 and P100. Perhaps this was at fault: when I plugged in the amdDX4-100, I had the board jumpered for DX2-66. While the BIOS did report it as an DX4-100, the board might have used the wrong clockspeeds... but since DX2-66 uses 33Mhz * 2 and DX4 uses 33Mhz * 3, this would have been correct? The board running with DX4-120 is jumpered to 40Mhz * 3 = 120 Mhz. Another thing I wonder about is why the whetstones-result does yield so even numbers on some machines? ASUS SP3 with amd486DX4-100 * Dhrystone time for 500000 passes = 7 by 63559 dhrystones/second * Whetstone time for 1000 passes = 5 by 200.0000 Whetstones/second ASUS SP3 with amd486DX4-120 * Dhrystone time for 500000 passes = 8 by 56074 dhrystones/second * Whetstone time for 1000 passes = 4 by 250.0000 Whetstones/second ASUS SP3 with intel486DX2-66 * Dhrystone time for 500000 passes = 9 by 50761 dhrystones/second * Whetstone time for 1000 passes = 7 by 142.8571 Whetstones/second ASUS TP4/XE with intel586-90 * Dhrystone time for 500000 passes = 4 by 101010 dhrystones/second * Whetstone time for 1000 passes = 3 by 333.3333 Whetstones/second ASUS TP4/XE with intel586-100 * Dhrystone time for 500000 passes = 4 by 102040 dhrystones/second * Whetstone time for 1000 passes = 2 by 500.0000 Whetstones/second 3.4 Detailed information on the old ASUS PCI-I-SP3 with saturn chipset from heinrich@zsv.gmd.de: * 3 PCI, 4 ISA Slots (3x16, 1x8 Bit) * ZIF Socket for the CPU * room for 4 72pin-SIMMs (max. 128M) * Award BIOS in Flash-Eprom * Onboard: NCR-SCSI, 1par, 2ser (with FIFO), AT-Bus, Floppy The board does like most in that price class -- write-through cache, no write- back. This should not be significant, maybe 3% of performance. The BIOS supports scsi-drives under DOS/Windows without additional drivers, but with the board come additional drivers which are said to give better performance, for DOS/Windows(ASPI), OS2, Windows-NT, SCO-Unix, Netware (3.11 and 4, if interpreted correctly) Gert Doering (gert@greenie.muc.de) was saying the SCO-Unix-driver for the onboard-SCSI-Chip was not working properly. After two or three times doing: "time dd if=/dev/rhd20 of=/dev/null bs=100k count=500" it kernel-paniced... The trouble some people experienced with this board might be due to them using an outboard Adaptec-SCSI-Controller with "sync negotiation" turned on. (This predates the NCR driver release; hence the use of the Adaptec.) Please check that in the BIOS-Setup of the Adaptec-1542C if you use one and have problems with occasional hangups! There is a new version of the ASUS-Board which should have definitely less problems. It is called ASUS-PCI-I/SP3G, the G is important. It has the new Saturn-chipset rev. 4 and the bugs should be gone. They use the Saturn-ZX- variant and the new SP3G has fully PCI conforming level-triggered (thus shareable), BIOS-configurable interrupts. It has an on-board PS/2-mouseport, EPA-power-saving-modes and DX4-support, too. It performs excellently. If you can get the German computer magazine C't from July (?), you will find a test report where the ASUS-Board is the best around. Latest information about ASUS-SP3-G: You might experience crashes when using PCI-to-Memory-Posting. If you disable this, all works perfect. jw@peanuts.informatik.uni-tuebingen.de said he believed it to be a problem of the current Linux-kernel rather than the hardware, because part of the system still works when crashing, looking like a deadlock in the swapper, and OS2/DOS/ WINDOZE don't crash at all. Someone else with a very old ASUS-SP3 (saturn-I chipset) reported crashes with using XFree86, which went away when he installed the very latest betaversion which seems to work around a bit of the problems. 3.5 Pat Dowler (dowler@pt1B1106.FSH.UVic.CA) with ASUS SP3G * ASUS SP3G board (it is rev.4 == saturn II) * AMD DX4-100 CPU (need to set jumper 36 to 1&2 rather than 2&3, otherwise it's set the same as other 486DXn chips) * 256K cache (comes with 15ns cache :-) * 16meg RAM (2x8meg) * ET4000 ISA video card * quantum IDE hard drive * SMC Elitel16 combo ethernet card Unlike some other reports, I find the mouse pointer moves very smoothy under X (just like the ol' 386) - it is jumpy under some, but not all, DOS games though... Performance is great!! I ran some large floating point tests and found the performance in 3x33 (100MHz) mode to be almost 1.5x that in 2x (66MHz) mode (large being 500x500 doubles - 4meg or so)... I was a little dubious about clock-tripling but I seem to be getting full benefit :-) The heavily configurable energy star stuff doesn't work with the current AMD DX4 chips - you need an SL chip I really need a SCSI disk and a PCI video card :-) (I had a phonecall by a person who had this problem with the buggy SMC FIFO chipset, after using X-window they hung.) 4. confusion about saturn chipsets Pat Duffy (duffy@theory.chem.ubc.ca) said: Saturn I: these are revisions 1 and 2 of the Saturn chipsets. Saturn II: This is also called rev. 4 of the Saturn chipsets. As far as I know, rev. 3 never actually shipped, and (from a few people who have it) the SP3G now has rev. 4 (or Saturn II) in it. Confused? Well, the only real definitive answer is to get ahold of the board and run the debug script in the PCI chipset list on it. As far as I know, though, the SP3G board is indeed shipping with rev. 4 (Saturn II). 5. Video-Cards Linux people have successfully used # 9 XGE Level 12, ELSA Winner 1000, and S3- 928 video cards. The XFree86(tm)-3.1.1 does support boards with the tseng et4000/w32 in accelerated mode, as well as S3 Vision 864 and 964 chipsets including boards like the ELSA Winner 1000Pro and 2000Pro, Number Nine GXE64 and GXE64Pro, Miro Crystal 20SV). Support in the S3 Server for the Chrontel8391 clock chip has been added. Trio32 and Trio64 S3 Boards like the SPEA V7 Mirage P64 PCI and MIRO Crystal 40SV, are also supported, the Mach32 and Mach64 are supported in accelerated mode, too. The SVGA Driver 16bpp mode (65K colors instead of the usual 256) support for Mach32 boards as well as 32bpp for some S3 boards and the P9000 boards has been added. tldraben@teleport.com reported: * Diamond Stealth W32 (et4000/W32) -- Text mode works, X11 suffered from "pixel dust", unbearable never got it to work and returned it. * # 9GXE L12 -- Works, virtual consoles corrupted when switched, fixed this with disabling the "fast dram mode" feature in his BIOS. Does not get a dot clock above 85, though. Genoa Phantom 8900PCI card seems to work well. Genoa Phantom/W32 2MB does not work in an ASUS-Board. Tseng 3000/W32i chipset seems to work well. Spea-v7 mercury-lite works perfectly since XFree86(tm)-2.1. Spea V7 Mirage P64 PCI 2M with Trio64 works nice since XFree86(tm)-3.1.1 ATI Graphics Ultra Pro for PCI with 2MB VRAM and an ATI68875C DAC run well as dem@skyline.dayton.oh.us tells us: "It's humming right along at 1280x1024 w/256 colors @74Hz non-interlaced. Looks great." Paradise WD90C33 PCI did lock up on screensaver/X - this has been solved in the newer versions of the kernel. jbauer@badlands.NoDak.edu (John Edward Bauer) miroChrystal 8S/PCI (1MB) S3 - no problem. Stephen Tweedie reported his Cirrus Logics 5434 PCI card works well. It is a 64bit with 2M and runs perfectly with the SVGA driver in 8, 16 and 32 bit per pixel. 6. Ethernet Cards Of course the ISA-ethernet-cards still work, but people are asking for PCI- based ones. The author of many (if not most) ethernet- drivers said the following some time ago (unfortunately I have not managed to contact him about new information): From: Donald Becker (becker@cesdis.gsfc.nasa.gov) Subject: PCI ethernet cards supported? The LANCE code has been extended to handle the PCI version. I hope to get the PCI probe code (about a dozen extra lines in the LANCE driver) into the next kernel version. I'm working on the 32 bit mode code. I haven't yet started the 21040 code. I'll write drivers for the PCnet32 mode and the DEC 21040. That will cover most of the PCI ethercard market. file://cesdis.gsfc.nasa.gov/pub/people/becker/whoiam.html In the new testkernels of 1.1.50 and above, the AMD-singlechip ethernetadapters are supported. With a pentium, they ought to then see 900K/second ftps + (assuming an NCR PCI scsi controller) at about 20% cpu load. (AMD Lance). Anything based on the AMD PCnet/PCI chip should work at the time being. In the US the Boca board costs under US$ 70 Geoffry Coram reported in the news that he got his 3com 590 TPO to work. He had to get the alpha driver from http://cesdis.gsfc.nasa.gov/linux/drivers. Other drivers would be there as well. Note http://cesdis.gsfc.nasa.gov/linux/drivers/ vortex.html Donald Holmgren said he successfully attached his DEC DE435 (PCI) card to the local network on thin coax (BNC). The DE435 driver checks the twisted pair connection first, then switches to the alternate port (jumper selectable as AUI or BNC) if the 10BaseT port fails. Jim Cusick uses the Boca BEN 1PI card on a thin coax network. It works just fine. You might want to check out: http://cesdis.gsfc.nasa.gov/linux/misc/boca- failure.html for details on the early failures of this card. My second card, after sending one back for replacement, was marked "PN 4186". The old one that did not work was "PN 4185". Mandate this newer model when you order from you vendor. At $ 70, the card is a good deal. Dave Platt recommends to stay off the Boca BEN1PI card at all costs. It would be unreliable due to design flaws, and Boca seems unable to really fix the problem. The 3Com 3c590 "Vortex" PCI card is available in a combo version (10BaseT, thin coax, and AUI). The Linux driver for this card is not yet part of the release kernel, but is available from http://cesdis.gsfc.nasa.gov/linux/ drivers/vortex.html and can be patched into the later 1.2.x kernels (as well as 1.3.x) without much difficulty. The Linux driver does not support the interface autodetect feature of this card - you must use the DOS utility to configure the card for the interface you wish to use (thin coax in this case). Once you've done that, the Linux driver will use the correct interface. He has been using a 3c590 for several weeks, and it is working fine. Dave Kennedy said he got two of the above Boca boards and they work fine under light load, but under heavy work like ftping two 16M files into both directions, they failed. He sent the boards back to Boca for a hardwarefix. After they soldered a couple of things (diodes/resistors) onto the card and sent them back, the cards worked fine regardless of load. The two cards have been in 7/24 use in two P90 systems without problems for 6 months now. Craig does not recommend it since Boca seems not to follow the AMD specs but he has been running them for 2 weeks without problems. He tested his NFS performance and has been moving large files to and from server (16M, 8M). He also tried to do all his workin localy using his data files mounted by NFS and has had no problems. Performance seems to be 100 percent better (wrt to NFS performance) over his NE2000 ISA board. (editors note: but so would probably have been the ISA SMC Elite Ultra?) 6.1 3com-3c590-tpo Someone on usenet mentioned ht used the 3Com-3C590-TPO (EtherLink III - PCI). He had to get the "3c59x.c" driver and "vortex.patch" to make it work with his 1.2.8 Linux kernel. 6.2 DEC435 PCI NIC The DEC435 PCI NIC is said to work great with the drivers included in the Slackwaredistribution - I'd say they are in the standard-kernel? 7. Motherboards The people who answered were using the following boards: 7.1 ASUS * Ruediger.Funck@Physik.TU-Muenchen.DE - successful. * strauss@dagoba.escape.de - half-successful, works, but... * krypton@netzservice.de (Ulrich Teichert), - successful. * heinrich@zsv.gmd.de - successful * CARSTEN@AWORLD.aworld.de - successful * egooch@mc.com - successful - but trouble with the serial port * archie@CS.Berkeley.EDU and his friend - successful after solving IDE-puzzle * Lars Heinemann (lars@uni-paderborn.de) successful * Michael Will (Michael.Will@student.uni-tuebingen.de) - successful. 7.2 Micronics P54i-90 root@intellibase.gte.com succesful bill.foster@mccaw.com successful karpens@ncssm-server.ncssm.edu successful 7.3 SA486P AIO-II ah@doc.ic.ac.uk successful 7.4 Sirius SPACE hi86@rz.uni-karlsruhe.de - successful 7.5 Gateway-2000 kenf@clark.net - no problems except the soundcard he tries to swap dmarples@comms.eee.strathclyde.ac.uk - successful, but... robert logan (rl@de- montfort.ac.uk) - flawless. James D. Levine (jdl@netcom.com) - flawless. 7.6 Intel-Premiere grif@cs.ucr.edu - successful jeromem@amiserv.xnet.com - successful demarest@rerf.or.jp - successful (Premier-II) 7.7 DELL Poweredge SP4100 gbelow@pmail.sams.ch - successful 7.8 DELL OptiPlex Gl+ 575 torsten@videonetworks.com - successful when turning off plug and play 7.9 Comtrade Best Buy PCI / PCI48X MB Rev 1.0 tldraben@Teleport.Com - "Works, I believe it has buggy Saturn chipset. I would also like to add: I strongly recommend not buying from Contrade. Their service is horrible. " 7.10 IDeal PCI / PCI48X MB Rev 1.0 tldraben@Teleport.Com - "Did not work with PCI48X motherboard" 7.11 CMD Tech. PCI IDE / CSA-6400C tldraben@TelePort.com - "Works" 7.12 GA-486iS (Gigabyte) Stefan.Dalibor@informatik.uni-erlangen.de - success with problems. 7.13 GA-586-ID (Gigabyte) 90 Mhz Pentium PCI/EISA Board kkeyte@esoc.bitnet - succesful 7.14 ESCOM 486dx2/66 - which board? Works perfect except the ftape-streamer (archive) 7.15 J-Bond with i486dx2/66 Drew Eckhardt (drew@kinglear.cs.Colorado.EDU) uses Diamond Stealth 64 VRAM with 4M of memory (964 based). It works great, he usualy runs it at 1024x768 72hz in 32bpp; 16 and 8bpp also work. He needed to get the X311u2S3.tgz server from ftp.xfree86.org; people with 968 based Diamond boards will definately need to do this. 7.16 super micro 011895 03:50 SUPER P54CI-PCI rev 1.3 (Opti) Manuel de Vega Barreiro * board super micro 011895 03:50 SUPER P54CI-PCI rev 1.3 * Opti chipset: 82c557,82c556,82c558,82c621. * 4 PCI, 4 ISA Slots (4x16 Bit) * ZIF Socket for CPU (120,100,90,75 mHz) * 4 72 pin-SIMMs (max 128Mb) * cache 256,512,1024 Kb L2-cache * Ami WinBIOS in Flash-Eprom (101094-VIPER-P) * onboard: EIDE for 4 drives * Pentium with 90Mhz, 8M (now 16M) RAM and 256K L2-cache. * 1 maxtor 540 Mb, 1 st3122A 1Gb * Number Nine 9GXE64pro with 2Mb * Sound blaster 16 + cdrom Matsushita * 17" microscan 5ep ADI monitor I run linux 1.1.57 (now 1.2.1) without problems. dosemu0.53 work fine (com. software like kermit and xtalk) XFree86 3.1 at 1024x768 resolution 8. reports on success 8.1 GigaByte GA486-AM with AMD Am5x86-133-WB @ 160MHz (40MHz PCI) GigaByte GA486-AM * AMD Am5x86-133-WB @ 160MHz (40MHz PCI) * BIOS as of 11/07/95 (Rev.A) * 256KB 2nd level cache (15ns) * 48MB RAM (Mixed 60/70ns) Hercules Terminator 64/VIDEO (S3 765 or "Trio 64V+") Sound Blaster 16 * Panasonic CR563 CD-ROM drive Silicon 4Ser/3Par I/O * Mouse * Terminal * Terminal * Modem (14k4) * HP Laserjet III Mitsumi CD-ROM controller * FX001D drive Longshine 1MBit Floppy controller * IOMega Tape Insider 250 * 3,5" Floppy * 5,25" Floppy No Network card, because the 4 ISA slots are full, and I don't have a PCI card. I (now) use kernel 2.0.22 with APM enabled, and the hard drives power down and up properly without panics. The system is 24hrs up a day and still running. Kernel compilation takes between 5 and 7 minutes, depending on options. 8.2 California Graphics - Sunray II Pro Guido Trentalancia (guido@gulliver.unian.it) reported the California Graphics - Sunray II Pro with Triton chipset to work well with Pentium100, Hd: Conner cfs420a, Conner cfs210a, crunching numbers at 147492 dhrystones/second. 8.3 Micronics P54i-90 (root@intellibase.gte.com) Pentium with 90Mhz, 32M RAM and 512K L2-cache. Works extremely well (a kernel recompile takes 10 minutes :-). The board includes: * UART - two 16550A high speed UARTS * ECP - one enhanced parallel port * Onboard IDE controller * Onboard floppy controller Pros: Currently, I'm using it with an Adaptec 1542CF and a 1G Seagate drive, No problems. Graphics is ATI Graphics Pro Turbo (PCI). Very fast. The serial ports can keep up with a TeleBit T3000 modem (38400) without overruns. Caching above 16M does occur. There are 3 banks of SIMM slots (2 SIMM's per bank), with each bank capable of 64M each (2 32M 72-pin SIMM's). Each bank must be filled completely to be used (I'm only using bank 0 with 2 16Mx72-pin SIMM's). The CPU socket is a ZIF type socket. The BIOS is Phoenix, FLASH type. Drawbacks: RAM is expandable to 192M, but the L2 cache is maxed at 512K. While the graphics are very fast, there is currently no XF86 server for the Mach64 (well, actually there is, but it doesn't use any of the accelerator features; it's just an SVGA server). I don't know if the onboard IDE hard drive controller works; I'm prejudiced against a standard that won't allow my peripherals to operate across platforms, so I didn't buy an IDE disk; instead, I got a Seagate 31200N and a NEC 3Xi. Mitch 8.4 Angelo Haritsis (ah@doc.ic.ac.uk) about SA486P AIO-II: The motherboard I eventually bought (in the UK) is one supporting 486 SX/DX/ DX2/DX4 chips. It is called SA486P AIO-II. Features include: * Intel Saturn v2 chipset * Phoenix BIOS (flash eprom option) * NCR scsi BIOS v 3.04.00 * 256K 15ns cache (max 512) write back and write through * 4 72-pin SIMM slots in 2 banks * 3 PCI slots, 4 ISA * On-board NCR 53c810 scsi controller * On-board IDE / floppy / 2 x 16550A uarts / enhanced parallel I bought it from a company (UK) called ICS, (note I have no connections whatsoever with the company, just a happy customer). I use a 486/DX2-66 CPU. Before I had a VLB 486 m/board with a buslogic BT-445S controller that I was borrowing. I have 2 scsi devices: 1 barracuda 2.1GB ST12550N disk and a Wangtek 5525ES tape drive. I was expecting a lot of adventures by switching to the new motherboard, esp after hearing all these non-success stories on the net. To my surprise everything worked flawlessly on the 1st boot! (1.1.50). And it has been doing so for about a month now. I did not even have to repartition the disk: apparently the disk geometry bios translation of the 2 controllers is the same. Linux has had no problems at all. SCSI is visibly much faster as well (sorry, I have no actual performance measurements). The only problems (related to Drew's linux ncr53c7,810 scsi driver - thanks for the good work Drew!) are: * no synchronous transfers are yet supported => performance hit * disconnect/reconnect is disabled => disk scsi ops "hold" during certain slow scsi device opeartions (eg tape rewind) * tagged queuing is not there (?) => performance hit If you get Windows complainingg about 32-bit disk driver problems, just disable 32-bit disk access via Control Panel. This should not hurt performance. (What I did is remove the WDCTRL driver from my SYSTEM.INI). All else is fine. I tried the serial ports with some dos/windows s/w and worked ok. The IDE/floppy work ok as well. I have not tried the parallel yet. The motherboard is quite fast and so far I am very pleased with the upgrade. I have not yet tried a PCI graphics board. I will later on. I am using an old ISA S3 which is fine at the moment. PS: the NCR drivers in the 2.0.x kernels should have no problems of that kind anymore. please consult the SCSI-HOWTO for further and hopefully more uptodate information. 8.5 bill.foster@mccaw.com about his Micronics M5Pi Micronics M5Pi motherboard with 60 MHz Pentium, PCI bus having the following components: 16Mb RAM/512k cache onboard IDE, parallel, 16550A UARTS 2 X 340MB Maxtor IDE Hard Drives Soundblaster 16 SCSI-II Toshiba 3401B SCSI CD-ROM Archive Viper 525MB SCSI Tape Drive Viewsonic 17 monitor Cardex Challenger PCI video card (ET4000/W32P) A4-Tech Serial Mouse Everything works great, Slackware installation was very easy, I can run Quicken 7 for DOS under DOSEMU. I run X at 1152x900 resolution at 67Hz. 8.6 Simon Karpen (karpens@ncssm-server.ncssm.edu) with Micronics M54pi I have had no problems with the above board, the on-board PCI IDE (hopefully soon will also have SCSI), and an ATI Mach32 (GUP) with 2MB of VRAM. 8.7 Goerg von Below (gbelow@pmail.sams.ch) about DELL Poweredge - Intel 486DX4/100 - 16 MB RAM - DELL SCSI array (DSA) with Firmware A07, DSA-Manager 1.7 - 1 GB SCSI HD DIGITAL - NEC SCSI CD-ROM - 2 GB internal SCSI streamer - 3-Com C579 EISA Ethernet card - ATI 6800AX PCI VGA subsystem, 1024 MB RAM CAVE! DELL SCSI Array controller (DSA) runs only with firmware Rev. A07 ! A06 is buggy, impossible to reboot ! To get it: ftp dell.com , file is /dellbbs/dsa/dsaman17.zip Apart from this firmware-problem there where no problems for the last 2 months, running with linux 1.1.42 as primary nameserver, newsserver and www-server on internet. 8.8 zenon@resonex.com about Gateway2000 P-66 Gateway2000's P5-66 system with Intel's PCI motherboard, with 5 ISA slots and 3 PCI slots. The only PCI card I am using is the # 9 GXe level 12 PCI card (2 MB VRAM and 1 MB DRAM). This card was bought from Dell. Under Linux I am using the graphics in the 80x25 mode only (I am waiting for some XFree86 refinements before using it in 1280x1024 resolution), but under DOS/Windows I have used the card in 1280x1024x256 mode without problems. Etherlink 3C509 Ethernet card, Mitsumi bus-interface card, Adaptec 1542C SCSI interface card and additional serial/parallel ports card (which makes the total of serial ports 3). I have total of 32 MB RAM (recognized and used by both Linux and DOS). There is also a bus mouse (Microsoft in the PS2 mode). No problems so far. 8.9 James D. Levine (jdl@netcom.com) with Gateway2000 Gateway 2000 P5-60 with an Intel Mercury motherboard, AMI-Flash-BIOS, (1.00.03.AF1, (c)'92) 16M RAM, on-board IDE controller and an ATI AX0 (Mach32 Ultra XLR) PCI display adapter. He had absolutely no problems with the hardware so far but has not tried anything fancy, such as accelerated IDE drivers or SCSI support. 8.10 hi86@rz.uni-karlsruhe.de with SPACE SPACE-board, 8MB RAM, S3 805 1MB DRAM PCI 260MB Seagate IDE-hard disk because of lack of NCR53c810-Driver, 0.99pl15d, does seem to work well. 8.11 grif@cs.ucr.edu with INTEL 17 machines running a 60Mhz-i586 on Intel-Premier-PCI-Board 8.12 Jermoe Meyers (jeromem@amiserv.xnet.com) with Intel Premiere Motherboard - Intel Premiere Plato-babyAT 90mhz with Buslogic bt946c w/4.86 mcode w/4.22 autoSCSI firmware, (note, mine came with 4.80 mcode and 4.17 autoSCSI firmware. (interrupt pins A,B,C conform to respective PCI slots!) ATI Xpression (Mach64) - using driver from sunsite, (running AcerView 56L monitor). The motherboard has 4 IDE drives, Linux (Slackware 2.0) sees the first two and everything on the Buslogic as it emulates an adaptec 1542. Uh, yes, Dos sees them all. Buslogic is VERY accomodating in regards to shipping upgraded chips (you will have to know how to change PLCC (plastic leaded chip carrier) chips, 3 of them. Though, don't let that scare you :-) it's not that tough. Get a low end PLCC removal tool, and your in business. You also might want to "flash upgrade your system bios from Intel's IPAN BBS, a trivial process. Whats even more interesting is I also have a Sound Blaster SCSI-2 running a scsi CDROM drive off it's adaptech 1522 onboard controller. So thats 4 IDE drives (2 under Linux) and 2 SCSI-2 controllers. I hope this helps others who are struggling with PCI technology use Linux! Jerry (jeromem@xnet.com) 8.13 Timothy Demarest (demarest@rerf.or.jp) Intel Plato Premiere II My system is configured as follows: 16Mb 60ns RAM, 3Com Etherlink-III 53C809 ethernet card (using 10base2), ATI Mach 64 2Mb VRAM, Toshiba 2x SCSI CDROM, NCR 53c810 PCI SCSI, Syquest 3270 270Mb Cartridge Drive, Viewsonic 17 monitor, Pentium-90 (FDIV Bug Free). Running Slackware 2.1.0, Kernel 1.2.0, with other misc patches/upgrades. Everything is functioning flawlessly. I dont recommend the Syquest drives. I have used the 3105 and the 3270 and both a very, very fragile. Also, the cartridges are easily damaged and I have had frequent problems with them. I am in the process of looking for alternative removable storage (MO, Zip, Minidisc, etc). Some information you might need: Flash Bios upgrades Flash Bios updates can be ftp'd from wuarchive.wustl.edu:/pub/MSDOS_UPLOADS/ plato. The current version is 1.00.12.AX1. The BIOS upgrades *must* be done in order. 1.00.03.AZ1 to 1.00.06.AX1 to 1.00.08.AX1 to 1.00.10.AX1 to 1.00.12.AX1. The Flash BIOS updates can also be downloaded from the Intel BBS. I do not have that number right now. NCR 53c810 BIOSless PCI SCSI If you are using an NCR 53c810 BIOSless PCI SCSI card in the Plato, you may have trouble getting the card to be recognized. I had to change one of the jumpers on the NCR card: the jumper that controls whether there is 1 or 2 NCR SCSI cards in your system must be set to "2". I dont know why, but this is how I got it to work. The other jumper controls the INT setting (A,B,C,D). I left mine at A (the default). apart from that - plug and play! There are no settings in the motherboard BIOS for setting the NCR 53c810. Dont worry - once the card is jumpered correctly, it will be recognized! So much for PCI Plug-n-Play! 8.14 heinrich@zsv.gmd.de with ASUS ASUS-PCI-Board (SP3) having: * -- Asus PCI-Board with AMD 486/dx2-66 and 16M RAM * -- Fujitsu 2196ESA 1G SCSI-II * -- Future Domain 850MEX Controller (cheap-SCSI-Controller, almost a clone to Seagate's ST01... want's to use ncr53c810 as soon as the driver comes out * -- ATI Graphics Ultra (the older one with Mach-8 Chip, ISA-Bus) * -- Slackware 1.1.1 He just exchanged the boards, plugged his cards in, connected the cables, and it worked perfect. He does not use any PCI-Cards yet, though. 8.15 CARSTEN@AWORLD.aworld.de with ASUS ASUS-PCI-Board with 486DX66/2, miro-crystal 8s PCI driven by the S3-drivers of XFree86-2.0, using the onboard SCSI-Chip. No problems with compatibility at all. 8.16 Lars Heinemann (lars@uni-paderborn.de) with ASUS ASUS PCI/I-486SP3 Motherboard w/ 486DX2/66 and 16M RAM (2x8), miroChrystal 8S/ PCI (1MB) S3, Soundblaster PRO, Adaptec 1542b (3.20 ROM) SCSI host adapter with two hard disks (Fujitsu M2694ESA u. Quantum LPS52) and a QIC-150 Streamer attached. No problems at all! 8.17 Ruediger.Funck@Physik.TU-Muenchen.DE with ASUS ASUS PCI/I-486SP3 / i486DX2-66 / 8 MB PS/2 70 ns BIOS: Award v 4.50 CPU TO DRAM write buffer: enabled CPU TO PCI write buffer: enabled PCI TO DRAM write buffer: disabled, unchangeable CPU TO PCI burst write: enabled Miro Crystal 8s PCI - S3 P86C805 - 1MB DRAM Quantum LPS 540S SCSI-Harddisk on NCR53c810-controller. 8.18 robert logan (rl@de-montfort.ac.uk with GW/2000) Gateway 2000 4DX2-66P 16 Megs RAM, PCI ATI AX0 2MB DRAM (ATI GUP). WD 2540 Hard Disk (528 Megs) CrystalScan 1776LE 17inch. (Runs up to 1280x1024) Slackware 1.1.2 (0.99pl15f) It is giving no problems. He uses SLIP for networking and an Orchid-Soundwave- 32 for niceties, awaiting the NCR-Driver. The only problem he has is that the IDE-Drive could be much faster on the PCI-IDE. It is one of the new Western Digital fast drives and in DOS/WfW it absolutely screams - on Linux it is just as slow as a good IDE-Drive. 8.19 archie@CS.Berkeley.EDU and his friend use ASUS Archie and his friend have rather similar configurations: * ASUS PCI-SP3 board (4 ISA, 3 PCI) * Intel 486DX2/66 * Genoa Phantom 8900PCI card (friend: Tseng 3000/W32i chipset) * Maxtor 345 MB IDE hard drive * Supra 14.4 internal modem * ViewSonic 6e monitor (Archie) * NEC Multisync 4fge (friend) * Slackware 1.2.0 The onboard-SCSI is disabled. First there were problems with the IDE-drive: ``on the board there's a jumper which selects whether IRQ14 comes from the ISA bus or the PCI bus. The manual has an example where they show connecting it to PCI INT-A. Well, we did that just like the example... but then later our IDE drive would not work (the IDE controller is on board). Had to take it back. The guys at NCA were puzzled, then traced it back to this jumper. I guess the IDE controller uses IRQ14 or something? That's not documented anywhere in the manual. Other than that, seems to be kicking ass nicely now. Running X, modeming, etc. (for the Supra you have to explicitly tell the kernel that the COM port has a 16550A using setserial (in Slackware /etc/rc.d/rc.serial))''. 8.20 Michael Will with ASUS-SP3 486 (the old one) used the following: * ASUS PCI-SP3-Board with 486dx2/66 and 16M RAM * NCR53c810-SCSI-II chip driving a 1GB-Seagate-SCSI-II disk and a Wangtec-tape * ATI-GUP PCI Mach32 Graphics card with 2M VRAM running perfectly with XFree86 (tm)-3.1 8bpp and 16bpp * Linux kernel 1.1.69 It runs perfectly and I am content with the speed, the ATI-GUP-PCI (Mach32) does not give as good benchmarks as expected, though. Since I got the money by now, I got me an ASUS-SP4 with P90 which gives me better throughput on Mach32- PCI... If I had even more money I'd get me another 16M of RAM and a Mach64-PCI with 4M RAM, though... I still keep on dreaming :-) 8.21 Mike Frisch (mfrisch@saturn.tlug.org) Giga-Byte 486IM * Motherboard: Giga-Byte 486IM * Configuration: 4 ISA slots (2 double as VLB) and 4 PCI slots * CPU: Intel 486DX/33 * BIOS: Award 4.50G * PCI EIDE Disk Controller: Giga-Byte GA-107 (CMD 640x PCI Multi-I/O) * PCI Video card: ATI Graphics eXpression PCI 2MB DRAM * Linux Kernel: 1.2.9 * Linux Dist'n: Highly modified Slackware 2.2.0 I have been running this board 24 hours a day for the past 5-6 months. It has worked flawlessly for me under DOS/Windows, OS/2 Warp, and Linux (with Linux being run usually 24 hours a day). 8.22 Karl Keyte (kkeyte@esoc.bitnet) Gigabyte GA586 Pentium * PCI/EISA Board Gigabyte GA586-ID 90MHz Pentium (dual processor, one fitted) * 32M RAM * SCSI - no scsi-NCR-chip on-board, using Adaptec 1542C, * PCI ATI GUP 2M VRAM * Adaptec 1742 EISA SCSI controller * Soundblaster 16 * usual I/O Everything under DOS AND Linux works perfectly. No problem whatsoever. A VERY fast machine! BYTE Unix benchmarks place it about the same as a Sun SuperSPARC- 20 running Solaris 2.3. The PC is faster for integer arithmetic and process stuff (including context switching). The SPARC is faster for floating point and one of the disk benchmarks. 8.23 kenf@clark.net with G/W 2000 He uses a Gateway 2000 with no problems, except the soundcard (which one?). He is trading it in for a genuine soundblaster in hopes that will help. 8.24 Joerg Wedeck (jw@peanuts.informatik.uni-tuebingen.de) / ESCOM originaly buyed a 486 DX2/66 from ESCOM (which board?) with onboard IDE and without (!) onboard NCR-SCSI-chip. ISA-adaptec 1542cf scsi-controller instead spea v7 mercury lite (s3, PCI, 1MB), ISA-Soundblaster-16, mitsumi-cdrom (the slower one). Everything except the archive-streamer works with no problems. The spea-v7 works perfectly since XFree86-2.1 He abandoned the Intel-board in favour of an ASUS-SP3-g and has some problems with PCI-to-Memory burstmode which is crashing only on Linux, "looking like a deadlock in the swapper". If you have any information on this, please eMail the maintainer of the PCI-HOWTO. After turning off the PCI-to-Memory posting feature it just works perfect. Rather than sending him mail please read his http-homepage at "http:// wsiserv.informatik.uni-tuebingen.de/ jw" where he keeps information about his PCI-system, too. 8.25 Ulrich Teichert / ASUS ASUS-PCI board with AMD486dx40 (but actually running at 33Mhz?!) His ISA-ET3000 Optima 1024A ISA works nice. No problems with Quantum540S SCSI Harddisk attached to the onboard NCR53c810. 9. Reports of problems 9.1 Compaq PCI systems, especially Presarios Patrick Yaner (p_yaner@eos.ncsu.edu) reported a Compaq-speciality to me. It seems they are mapping the PCI BIOS data area to an obscure area of memory, one that Linux (or OS2) cannot access. It can usually find it, but it can't get in, and gives a message on startup (something like "pcibios_init: entry in high memory area, unable to access"). Although this is alright with the display (which is on the PCI bus) and the IDE controller (also PCI), it means any other PCI devices -- such as an Ethernet card -- cannot be detected by Linux. Compaq offers a driver for DOS at ftp://ftp.compaq.com/pub/softpaq/Drivers/ SP1116.ZIP but using this with linux would mean using the program that boots linux from DOS, instead of LILO. Note that Compaq occasionally updates the software in this archive, so the file ftp://ftp.compaq.com/pub/softpaq/allfiles.html (also available as allfiles.txt) might be handy in checking to see that they haven't upgraded. Oddly, this information can also be found in the SCSI HOWTO, although the Pressarios come with IDE built in. 9.2 VLSI Wildcat PCI chipset like in Zeos P120 box Paul Bame (bame@sde.hp.com) reported: The Wildcat PCI chipset works fine in late 1.3 and all 2.0 kernels. 9.3 dmarples@comms.eee.strathclyde.ac.uk G/W 2000 Gateway 2000 G/W 2000 4DX2/66 PCI ATI-Graphics-Ultra-Pro IDE of indeterminate make It works well - only the IDE-Card runs in ISA-compatibility-mode, and works a lot faster when switched into PCI-Mode by a DOS-program... thus it's not that fast in Linux, and a patch would be nice. 9.4 cip574@wpax01.physik.uni-wuerzburg.de (Frank Hofmann) / ASUS He uses the ASUS-board with 16MB-RAM, ISA-based S3/928, and the onboard-IDE- controller with a Seagate ST4550A harddisk. He's had no trouble with the newer Linux-kernels. His problem: using X, my mouse is not responding the way I was used to before. It's sometimes behind movement and makes jumps if moved quickly. I think this was discussed In a Linux newsgroup before (I don't know which one) and is due to the use of 16550 serial chips for the onboard serial interfaces. After two weeks, I got used to it :-) Reducing the threshold of the 16550 should help. There should be a patch to setserial available somewhere, but I do not know where. 9.5 axel@avalanche.cs.tu-berlin.de (Axel Mahler) / ASUS ASUS PCI/I-486SP3 Motherboard (Award BIOS 4.50), 16 MB RAM the on-Board NCR Chip is disabled, he had the Genoa Phantom/W32 2MB for PCI and a Adaptec AHA- 1542CF (BIOS v2.01) connected to: * an IBM 1.05 GB Harddisk * a Toshiba CD-ROM (XM4101-B) * a HP DAT-Streamer (2GB) when creating the filesystems, 'mke2fs' (0.4, v. 1.11.93) hung and installation was impossible. After replacing the Genoa Phantom/W32 2MB PCI with an ELSA Winner 1000 2MB PCI it worked perfectly. He tested it with an old Eizo VGA-ISA and it worked as well, so the problem was in the Genoa-PCI-card. 9.6 Frank Strauss (strauss@dagoba.escape.de) / ASUS ASUS SP3 Board i486DX2/66 NCR53c810 disabled Adaptec 1542B in ISA Slot with 2 hard drives (200MB Maxtor, 420MB Fijutsu), SyQuest 88MB and Tandberg Streamer ELSA Winner 1000 PCI, 1MB-VRAM Soundblaster Pro in ISA Slot at IRQ 5 Onboard IDE disabled Onboard serial, parallel, FD enabled After a reset, the machine sometimes 'hangs' (soft and hard-reset the same) - this is probably not related to the Adaptec and the Soundcard, because even without these the system sometimes fails to come up. But if it runs, (and the ELSA-WINNER-1000-PCI-message appears) it runs ok. The two serial ports are detected as 16550 as they should, but at some mailbox- sessions there was heavy data-loss at V42bis... The problem seems to be in the hardware... CPU>-PCI-Burst seems to work well with DOS/MS-Windows CPU->PCI-Burst does not work properly with linux0.99p15, Messing up when switching the virtual-consoles, crashing completely when calling big apps like ghostview, or xdvi, leaving the SCSI-LED on (!). (I suspect these apps would be using a lot of CPU->PCI-burst because of the big heap of data to transmit to the PCI-Winner-1000) After disabling CPU->PCI-Burst, it works well, the Winner-1000 at 1152x846 (not much font cache with 1MB) does 93k xstones. OpaqueMove with twm is more than just endureable :-) He has got a SATURN.EXE which he loads under DOS before starting Linux, helping to turn on burst without hangs... Someone stated that these problems might go away when turning off "sync negotiation" on the Adaptec - I do not know if this is possible with the adaptec1542B too? But I guess so. With CPU->PCI-Burst it yielded 95k xstones, so he considers it as not too grave to do without. His only problem is that he would like to run his Winner-1000 at 1152x900 which fails because it seems to take any x-resolution higher than 1024pixels as a 1280pixel-resolution, thus wasting a lot end resulting in a y- resolution of 816pixels... but this is probably no PCI-related problem. It should have gone away with XFree86-2.1 9.7 egooch@mc.com / ASUS * BOARD ASUS PCI/I-486 SP3 RAM: 16MB (4x4M-SIMM) * CPU 486DX33 CPU * BIOS Ver. 4.50 (12/30/93) * Floppy Two floppy drives (1.2 and 1.44), using ASUS on-board floppy controller * SCSI tried both WD7000 SCSI controller and Adaptec 1542CF and worked. * Two SCSI 320M hard drives * SCSI NEC84 CDROM drive * SCSI QIC150 Archive tape drive * Video - Tseng ET4000 ISA graphics card * Sound PAS16 sound card * Printer attached to on-board ASUS parallel port He has nothing in the PCI-Slots yet, but wants to buy a PCI-Video-Card, currently uses WD7000 SCSI controller but will switch to the NCR-Chip onboard as soon as the driver is out. Everything works perfectly - the first serial port which has a 14.4K-Modem attached does hang occasionally when reconnecting with the modem after having used it previously. He says that would not be unique to ASUS but rather a bug in the SMC-LSI device with its 16550UART. The logitech-serial-mouse on the second port works fine. Setting down the threshold of the 16550 for the mouseport would definitely help, one does seem to need a special patched setserial for that? I have not got the information yet, please contact me if you know more! 9.8 Stefan.Dalibor@informatik.uni-erlangen.de / GigaByte * Board - GA-486iS from Gigabyte w/ 256Kb 2L-Cache, i486-DX2 * Bios - AMI, 93/8 * SCSI - no scsi-NCR-chip on-board, using Adaptec 1542C, * Video - ELSA Winner 1000 * Linux 0.99pl14 + SCSI-Clustering-Patches / Slackware 1.1.1 All seems to go well, but he has not tried neither networking, printing or a streamer yet. Before applying the clustering- patches he had some problems with hangs triggered by "find", but this no longer is the case - perhaps it was an older kernel-bug. The ELSA-Winner-1000 sometimes hangs, with very strange patterns on the screen resolved only by rebooting... The dealer has told him it was a bug in the ELSA- Card, but the manufacturer claims it had solved the problem. The bug is not reproducible so he does not plan to take any action at the moment. All in all the machine seems to work very well under heavy text processing (emacs, LaTeX, xfig, ghostview) usage. Interaction is surprisingly responsive, little difference between it and the 3-4X as expensive Sun he works on... CPU->PCI-Burst is still disabled because the bios does not support the PCI- things well? A problem with his new modem (v32 terbo) arose: it looses characters. Especially when using SLIP it complains a lot about RX and TX errors. As soon as he runs X it gets unusable. He said he activated FIFO and RTS/CTS with stty, but to no avail... 9.9 Steve Durst (sdurst@burns.rl.af.mil) with UMC 8500 mainboard Running Linux 1.2.12 on the UMC8500-100Mhz motherboard with the dreaded CMD PCIO640B (E)IDE controller, when booting the screen wiggles a few seconds, as if the Diamond Stealth64-DRAM (S3 864) has to warm up first, but he can live with that. 9.10 Tom Drabenstott (tldraben@Teleport.Com) with Comtrade / PCI48IX PCI48IX Motherboard Rev. 1.0. Made by ??? documentation copyrighted by "exrc". The BIOS says not very much about PCI. His E-315E Super IDE UMC (863+865) ISA-Controller-card does have problems. (It is a multifunction controller-card). It seems to work well under DOS/OS2 but not under Linux. 10. General tips for PCI-Motherboard + Linux NCR PCI SCSI This was compiled by Angelo Haritsis (ah@doc.ic.ac.uk) from various people's postings: 10.1 DON'Ts: Do *NOT* go for combination VLB/PCI motherboards. They usually have a lot of problems. Get a plain PCI version (with ISA slots as well of course). A lot of bad things have been heard about OPTI chipset PCI motherboards. Someone hints: "Avoid the OPTi (82C596/82C597/82C822) chipset based motherboards like the TMC PCI54PV". (I know of at least one person having no problems with his TMC PCI54PV motherboard. He just had to put the NCR53c810 addonboard into slot-A which is the only slot capable of busmastering as it seems.) Rumours say that Intel chipset PCI motherboards will have problems with more than one bus-mastering PCI board. I have not tried this one yet on mine and have nothing to suggest. I also heard that the Saturn II chipset is problematic, but this is the one I use and it is perfectly ok! Advice: Try to negotiate a 1-2 week money back agreement with your supplier, in case the motherboard you get has problems with the use you plan for it. 10.2 SIMM slots Go for 72-pin only SIMMs for speed: Some (all?) of the mainboards which take 30 pin SIMMs use a 32 bit main memory interface, and will be significantly slower than the Intel based boards which all use a 64 bit or permantly interleaved memory interface. You might want to keep that in mind. 10.3 Praised PCI Pentium motherboard The P90 Intel motherboard with the Intel Premiere II chipset (aka Plato). Get the latest BIOS which has concatenated NCR scsi BIOS 3.04.00. Otherwise DOS won't see your scsi disk(s) if you use a BIOS-less 53c810 based controller. NCR SCSI BIOS exists in the AMI BIOS of the plato after version 1.00.08 (or maybe verion 1.00.06). This BIOS is FLASH upgradeable so you should be able to get the upgrade on a floppy from your supplier. The current version is 1.00.10 and has all early problems fixed. (Bios files should be available at ftp.demon.co.uk:/pub/ibmpc/intel, but I did not check that myself. the Autor.) 10.4 irq-lines The value in the interrupt line PCI configuration register is usually set manually (for compatability with legacy ISA boards) in the extended CMOS setup screens on a per-slot or per-device basis. Older PCI mainboards also force you to set jumpers for each PCI slot/device which select how PCI INTA and perhaps INTB, INTC, and INTD are mapped to an 8259 IRQ line, Obviously, if these jumpers exist on your board, they must match the settings in the extended CMOS setup. Also note that some boards (notably Viglens) have silkscreens and instruction manuals which disagree with the wiring, and some experimentation may be in order. 10.5 Info about the different NCR 8xx family scsi chips: All NCR 8XX Chips are dircet connect PCI bus mastering devices, that have no preformance difference wether on motherboard or add in option card. All devices comply with PCI 2.0 Specification, and can burst 32 bit data at the full 33 MHz (133Mbytes/Sec) 53C810 53C810 = 8 bit Fast SCSI-2 (10 MB/Sec) Single ended only Requires Integrated Mother board BIOS 100 pin Quad Flat Pack (PQFP) Worlds first PCI SCSI Chip, Volumes make it the most inexpensive. 53C815 53C815 = 8 bit Fast SCSI-2 (10 MB/Sec) Single Ended only Support ROM BIOS interface, which makes it ideal for add-in card Designs. 128 Pin QFP 53C825 53C825 = 8 bit Fast SCSI-2, Single ended or Differential 16 bit Fast SCSI-2 (20 MB/Sec), Single ended or Differetial Also has support for external Rom, making it a good candidate for add in cards. 160 pin QFP Not supported by linux yet. (See section below on news about the 825). Must have devices with wide or differential scsi to use these features. 10.6 future of 53c8xx There are 4 new devices planned for announcement late this year and into early next year. Footprint compitible with 810 and 825 with some new features. All the Chips require a BIOS in DOS/Intel applications. The 810 is the only chip that needs it resident on the motherboard. Latest NCR SCSI BIOS version: 3.04.00 The bios supports disks >1GB, indeed up to 8G under MS-LOSS. 10.7 Performance of the 53c810 C't magazine's DOS benchmarks showed that it was significantly faster than the Buslogic BT-946, one user noted a 10-15% performance increase versus an Adaptec 2940, and with a very fast disk it may be 2.5X as fast as an Adaptec 1540. 10.8 News about NCR53c825 support works. period. 10.9 Frederic POTTER (Frederic.Potter@masi.ibp.fr) about Pentium+NCR+Strap_bug On some Intel Plato board, the NCR bios doesn't recognize the board, because it needs to see the board as a "secondary SCSI controller", and because on most SCSI board the jumper to select between primary/secondary has been ironed to primary (to spare 1 cent, presumably). Solution: near the NCR chip, they are 3 via ( kind of holes ) with a strap like that O--O O this mean primary is selected as default setting. For the Plato Intel Mainboard, it should be like that O O--O The best solution is to get rid of the strap and to put a 2 position jumper instead. 10.10 PCIprobe in the latest Linux Kernels by Frederic Potter Frederic Potter has added a PCI-Probe into the latest kernels. If you do a "cat /proc/pci" it should list all your cards. If you own cards which are not properly recogniced, please contact him via mail as "Frederic.Potter@masi.ibp.fr". See arch/i386/kernel/bios32.c and include/linux/pci.h in the kernel source for more information on PCI-Probe-Stuff. 10.11 Other PCI Devices What other PCI-cards are supported? Apart from various graphicscards, I would like to know about other cards like ethernet, framegrabber, or the TSET boards Cyclades is about to beta-test at the moment: Cyclades: a 16-port PCI RISC-based multiport card. The product is called Cyclom-Ye, and has the following characteristics: * PCI host card based on the PLX chip-set. This host card supports 8 to 32 serial ports, utilizing 8 or 16-port external boxes. * SCSI II cable. * 8 or 16-port external boxes with RJ45 or DB25 connectors (your choice). You can start with 8 ports and expand to 32, by just adding more boxes. Each external box contains 2 or 4 CD-1400 RISC Serial controllers (each CD-1400 controls 4 serial ports). * Up to 4 Host cards can be installed in the PC system, allowing a maximum of 128 serial ports per system. The product is being in the beta-test phase at July the 26th, 1995, and should be available by Octobre or something. eMail them at sales@cyclades.com. 11. Conclusion If you have some moneny to put into your machine, you'd be well off with a Pentium90, ASUS-SP4, which is what I use at the moment. If you can afford 32M RAM that would be much better than 16M RAM. Real soon now the upcoming standard will be the Triton Chipset with support for special SIMMS called EDODRAM, and SRAM. Both will be more expensive than PS2- RAM, and at the time of writing (28-June-1995) SRAM is not available. While EDO-DRAM is more expensive, this is not because of the production costs, they are said to be the same. For a highperformance system I would still choose an ASUS-TP4/XE with EDO-DRAM, but if you do not need to use it at the moment, I d rather wait some more. For Graphic-boards I'd say the best cheap board fitting perfectly on a good Multisync-15 like the Samsung SyncMaster 15Gli, is the SPEA V7 Mirage P64 with Trio64 Chipset and 2M DRAM. For more sophisticated Display like the Iiyama-IDEK 8617A-T I think the PCI Mach64 ATI-GUP-Turbo (not the cheaper GUP-Turbo- Windows) would be a good choice, with 4M RAM you can have truecolor in higher resolutions. It is well supported in the XFree86(tm)-3.1.1, and there are commercial X-Servers available of which I'd recommend Accelerated/X by Roell, which supports the Mach64 very well and fast. For SCSI I'd take the DPT rather than the (much cheaper and very fast) NCR53c810 in case you plan to use SCSI-Tapes a lot. The NCR53c810 driver on Linux does lack disconnect/reconnect support, thus blocking the SCSIbus on operations like "mt rewind", "mt fsf" etc. It bears a performance penalty on tar-operations - but check out Drews new alpha drivers before making a decision, perhaps it does solve all the problems. For building servers, the DPT would be the controller of choice anyway because of all the nifty hardware cache (with elevator sorting on accesses, so cache it is not a silly thing even in a Linux enviroment where the OS does the caching) and RAID-Support up to raid level 5. If you do not want to spend that much money on computer equipment (e.g.: you are having a life) you might go for an ASUS-SP3-SiS with AMD-DX2/66 or DX4/100. The SPEA V7 Mirage P64 PCI with 2M DRAM would be a good choice, since it uses the Trio64 S3 Chip, which is well supported by XFree86(tm)-3.1.1, quite cheap to buy and fast, too. Another fine card since XFree86(tm)-3.1 is the fast and cheap et4000/w32-PCI- card. 12. Thanks I want to thank the following people for supporting this document: * David Lesher (wb8foz@netcom.com) for extensive help with the english language * Nathanael MAKAREVITCH (nat@nataa.frmug.fr.net) for translating into french * Jun Morimoto (morimoto@lab.imagica.co.jp) for translating into japanese * Marco Melgazzi (marco@vcldec1.polito.it) for translating into italian * Donald Becker (becker@cesdis.gsfc.nasa.gov) for ethernet-informations * Drew Eckhardt (drew@kinglear.cs.Colorado.EDU) for SCSI-informations * Zhahai Stewart (zhahai@hisys.com) for help with the intro section and many more peole adding information mostly by mail and by posts, some of them will be named here: CARSTEN@AWORLD.aworld.de, dmarples@comms.eee.strathclyde.ac.uk, drew@kinglear.cs.Colorado.EDU (Working at the PCI-NCR53c810-Driver), duncan@spd.eee.strathclyde.ac.uk, fm3@irz.inf.tu-dresden.de, grif@ucrengr.ucr.edu, heinrich@zsv.gmd.de, hm@ix.de (iX-Magazine), hm@seneca.ix.de, kebsch.pad@sni.de, kenf@clark.net, matthias@penthouse.boerde.de, ortloff@omega.informatik.uni-dortmund.de, preberle@cip.informatik.uni-erlangen.de, rob@me62.lbl.gov, rsi@netcom.com, sk001sp@unidui.uni-duisburg.de, strauss@dagoba.escape.de, strauss@dagoba.priconet.de, hi86@rz.uni-karlsruhe.de, Ulrich Teichert, krypton@netzservice.de, Stefan.Dalibor@informatik.uni-erlangen.de, tldraben@teleport.com mundkur@eagle.ece.uci.edu, ooch@jericho.mc.com, Gert Doering (gert@greenie.muc.de), James D. Levine (jdl@netcom.com), Georg von Below (gbelow@pmail.sams.ch), Jerome Meyers (jeromem@quake.xnet.com), Angelo Haritsis (ah@doc.ic.ac.uk), archie@CS.Berkeley.EDU and his friend kenf@clark.net. 13. copyright/legalese (c)opyright 1993,94,97,2001 by Michael Will - the GPL (Gnu Public License) applies. See last section about this. If you sell this HOWTO on a CD or in a book I would be happy to have a copy for reference. (Michael.Will@student.uni-tuebingen.de) Contact me, either via eMail or call +49-7071-889710. Trademarks are owned by their owners. There is no warranty on the information in this document. For german users I am offering tested, preinstalled / preconfigured and supported Linux-PCI-machines. Call me at 07071-889710 14. GPL - Gnu Public License GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy (name of author) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. (signature of Ty Coon), 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.