The recent thread Pyro posted asking for information about systems/configurations in order to help them look into what the crashes and lockups are about lead me to do some testing.
The following is a rather long post, and I have done the best I can to make sure it is accurate,....but (a disclaimer) your mileage may vary
.
First, I was able to reliably setup a system that would lock and randomly crash. I also was able to put together a system that you could not set the joystick up to work no matter how many times you tried to calibrate it.
This system configuration:
Motherboard: Abit BF6 (BIOS 6.00PG)
CPU: Intel PIII 600/100 fsb
Memory: 128MB SD100 Ram (Crucial Memory)
SCSI Host Adapter: Adaptec AHA-2940AU (Driver Version 2.21a, IRQ 14, PCI Slot 3)
SCSI Drive: Seagate 18GB Cheetah (LC model)
SCSI CDROM: Toshiba 40X
Sound Card: Sound Blaster Live! (Latest Drivers from WEB site 5/2000, IRQ "we'll talk later", PCI slot 5)
Ethernet Card: DEC 21041 PCI Bus Master Card (Driver Version 4.10.2222, IRQ 15, PCI Slot 4)
Joystick: MS Sidewinder PRO (Software Version 3.20)
Video: ATI Rage MAXX (dual chip enabled, Driver Version 4.12.7940, IRQ 10 and 11, AGP Slot)
Floppy: 3 1/2 1.44MB
Monitor: NEC FP950 (Scan Rate 100hz)
Operating System: Win98 SE (Version 4.10.2222A)
Windows Desktop Video Setting: 1024x768
ATI Rage MAXX settings (
"wait for vertical sync" - disabled
"anti-alias" - disabled
"dual-chip" - enabled
NOTE: all monitor power management is disabled
)
You notice I said we needed to talk about the IRQ for the SBLive card. Well, here is where the problems with this configuration started. The problems were bad enough I ended up pulling the SBLive! card and installing an ISA based SB AWE64 in order to get the system stable.
It all has to do with interrupt conflicts. Even though the PCI BIOS and Windows will merrily accept interrupts being shared, the system will not perform reliably.
You need to understand that the PCI bus only has 3 hardware interrupts available to it. Even though most motherboards have more slots than that, they can only use 3 interrupts.
So lets start there. The BF6 m/b has 6 PCI slots. The slots are configured to share interrupts as follows:
Slot 1: shares interrupts with the AGP bus
Slot 2: shares interrupts with Slot 5
Slot 3: shares interrupts with Slot 6
Slot 4: shares interrupts with the USB port
Slot 5: shares interrupts with Slot 2
Slot 6: shares interrupts with Slot 3
The Award BIOS rom allows you to set the order the slots are assigned interrupts at boot time. I left the BIOS at default of "First to Last".
You will note the ATI Rage MAXX video card uses 2 interrupts, one for each chip on the card, if you leave the second chip enabled.
Now at boot time, the Award BIOS will assign an interrupt to the AGP bus, if you set the option to assign an interrupt to the video card in the BIOS setup. But the Award BIOS does not know the MAXX video card needs 2 interrupts. The second interrupt is assigned by the ATI/Windows driver after booting.
In my crash/lockup configuration, I had installed the various adapters as follows:
Slot 1: SCSI Host Adapter
Slot 2: Network Card
Slot 3: SBLive!
The system booted and Windows ran fine. Unreal Tournament would even work well. Aces High would start, but I could not calibrate the joystick and if I tried to fly, I would get random hard lockups or crash back to the desktop. I tried Aces High at 1024x768x32, 1024x768x16, 1280x1024x32, 1280x1024x16, with and without triple buffering. No luck.
OK, so I RTM (read the manual) for the motherboard, and hidden in the back of the manual I discovered that the AGP slot was sharing an interrupt with Slot 1. AH HAH! me bad
So I pulled the system apart, and changed the order of the PCI adapters as follows:
Slot 1: Empty
Slot 2: SCSI Adapter
Slot 3: Network Card
Slot 4: SBLive!
I also went into the BIOS configuration and disabled the USB port. I don't have any USB peripherals, so I figured that Slot 4, with the SBLive! card would be fine.
Rebooted and went through the reinstallation of drivers for Windows, as you have to do this when you re-order the PCI adapters in a system.
After booting, I went into the Windows "System" folder and disabled the USB device. Rebooted to be sure it would be disabled, then tried Aces High again.
Got a bit further this time. I was still getting joystick spikes, but managed to get some of the joystick calibration done. The wheel worked fine, but the hat would not work correctly. I still got lockups and crashed back to the desktop though. Tried all the above mentioned settings, and nothing mattered. Unreal Tournament was working ok though.
Now, this time I went to the Windows "System" folder and went through each of the peripheral boards and checked the interrupt assignments.
NOTE: The Award BIOS always starts with IRQ 10, when assigning interrupts to the various PCI/AGP buses.
Here is how the interrupts lined up in this configuration:
AGP: IRQ 10 and 11
Slot 1: Empty
Slot 2: IRQ 11 SCSI Adapter
Slot 3: IRQ 14 Network Card
Slot 4: IRQ 15 SBLive!
You can see the problem. Windows allowed the ATI driver to use IRQ11 for the second chip of the MAXX card, which meant it was sharing with the SCSI adapter. Not good.
Now I was in a quandry. Checking the interrupt usage in the system, there were no more available interrupts.
Thus, I removed the SBLive! card and re-ordered the peripherals as follows:
Slot 1: Empty
Slot 2: Empty
Slot 3: SCSI Adapter
Slot 4: Network adapter
ISA Slot: SB AWE64
I then went and manually set the IRQ,s in the BIOS Rom setup utility, gambling the second IRQ for the MAXX adapter would stay at 11, I set slot 3 to 14, and slot 4 to 15.
I also set the IRQ to 5 for the ISA bus, by setting the interrupt type to "Legacy ISA" in the BIOS rom settings, for IRQ 5.
Rebooted, reinstalled the peripheral drivers and BINGO!. She WORKS!
I went through the Windows "System" folder and checked the interrupt assignments and all the peripherals had thier own interrupt.
Aces high at 1280x1024x32, with triple buffering enabled and I get a solid 37 to 45 FPS. The joystick calibrated without a hitch.
About the only problem is with my network card. I do experience some packet loss now, even though the USB port is disabled, in both the BIOS and Windows device configuration, it appears Windows still assigns and chains the interrupt for that bus to both the network card and the USB bus.
Bottomline: If you are having lockups and/or crashes, go to "Start", then "Settings", then "Control Panel".
Open the "System" folder, then check each peripheral you have in your system and note the IRQ it is using. This is listed in the "Resources" tab for each device.
If you see some interrupts being shared, I would bet your paycheck (yours is probably bigger than mine
) that those shared interrupts are causing you your problems.
What do you do about it? Just like I did, RTM the motherboard manual, or call the OEM, if the information is not available for your computer and find out what AGP/PCI slots are sharing interrupts, then do the best ya can to move the peripherals around to insure no interrupts are being shared.
Those of you using IDE/ATA drives, be sure to check what interrupt they are using.
Hope this helps.
[This message has been edited by Skuzzy (edited 07-15-2000).]
[This message has been edited by Skuzzy (edited 07-15-2000).]