Page 1 of 3 1 2 3 LastLast
Results 1 to 10 of 24

Thread: Disabling PCI steering in Win 2000

  1. #1
    neirbo is offline Dedicated Member
    Join Date
    Oct 2001
    Location
    Silver Spring, MD
    Age
    46
    Posts
    276
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    13

    Question Disabling PCI steering in Win 2000

    Sign in to disable this ad
    I've been having trouble with my sound card locking up on me. I think that the trouble is an IRQ conflict with my video card, which shares the same IRQ. In Win 98, this was easily fixed, but now I have Windows 2000 which won't allow me to assign IRQs manually. I know there is some way to disable PCI steering in 2000 so I can assign the IRQs in BIOS, but I'm not sure of the exact procedure, and the Windows 2000 support webpage is useless (they just say it can't be done, which is BS). Can anyone help?

    My system:
    Aardvark Q10
    Athlon 1.4
    Asus A7m266 mobo
    256 DDR ram
    Matrox g450 video
    Windows 2000 professsional
    -------------
    Dave

    Aardvark Q10
    Cakewalk PA 9
    Athlon 1.4 Ghz
    Asus A7M266 MoBo with integrated sound
    Matrox G450 video
    256 meg Ddram
    700 meg WD Caviar C: drive
    40 GIG Quantum Fireball data drive

  2. #2
    elevate's Avatar
    elevate is offline 1K Silver Member
    Join Date
    Feb 2002
    Location
    cenla
    Age
    41
    Posts
    1,170
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    777
    I think if you set the IRQ values in the BIOS, then that's what Win2k will use.

    If that doesn't work you can try the following. Open up your Device Manager, expand Computer, and right click on Standard PC*. Click Properties and select the IRQ Steering tab. The rest should be self explanatory.

    *If you don't have 'Standard PC' under Computer (ie, you have ACPI or some variant), then you can switch to Standard PC by right clicking whatever you do have and going to Properties. Click the Driver tab and then click Update Driver. Select 'Display a list of the known drivers....', click Next, then select 'Show all hardware of this device class.' Standard PC should be in the list.

    I haven't tried doing this, but it should work (ie - don't come crying to me when your computer bursts into flames ). I would try adjusting some BIOS settings or rearranging the PCI cards before trying to disable IRQ steering.

  3. #3
    Kaydis is offline Junior Member
    Join Date
    Apr 2001
    Location
    Madison, WI
    Posts
    72
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    14
    If Win 2K is using the ACPI HAL, which it does by default, then it totally ignores any IRQ setting you make in the BIOS and makes it's own. It also has a tendancy to stack all your PCI devices on one IRQ. Sound crazy... well...

    Here is an interesting artcle I ran across related to this. It apparently was written by someone from Microsoft, and from the way he talks it seems to be the guy who wrote the interrupt code for Win 2K. As someone who has written plenty of interrupt handlers myself I can tell you it makes perfect technical sense, so I tend to believe him.

    The early ACPI machines were mostly laptops. And the laptops of that generation had most of their devices either embedded in the chipset or on the ISA bus. The PCI or AGP buses were used only for video, and to connect the north bridge with the south bridge. (In Intel's chipset terms, the North bridge has all the fast gates of the chipset, including the memory controller, AGP and in that generation, the PCI bus generation logic. The south bridge contains all the slow gates, including the IDE controller, the ISA bridge, all the PC legacy stuff and probably a USB controller. Today, the south bridge probably also has audio and a few other random odds and ends.) Because the laptops of that era had all of their devices on the ISA bus, interrupt sharing worked poorly. If you bought a mid-'90s laptop from IBM or Toshiba, the serial port and possibly IR would be disabled. There would be a utility packaged with the machine that allowed you to turn on your serial or IR, but at the cost of the bi-directional parallel port, or one of the PCMCIA slots, since there just weren't enough IRQs in the machine to guarantee that all of the peripherals worked, especially if you filled both PCMCIA slots with combo cards.
    I once debugged a Toshiba 750CDT in a docking station that had two PCMCIA cards plugged into the machine, two PCMCIA cards plugged into the slots in dock, two ISA cards in the dock and an extra IDE device in the dock, too. This meant that the total demand on the machine was 20 IRQs, when only 16 were actually available.

    (As an aside, I've been trying to convince Intel to put APIC interrupt controllers, which would allow many more IRQs, in their laptop chipsets since 1997. My predecessor had been trying since '94. They may actually manage it soon.)

    Along comes ACPI. When you turn on ACPI in a machine, it suddenly switches all the power management logic in the machine from delivering its interrupts as BIOS-visible, non-vectored System Management Interrupts over to OS-visible, vectored interrupts. And that interrupt is delivered level-triggered, active-low, which means that it can be shared with a PCI interrupt.

    Now consider that these early ACPI machines were already over-committed in terms of interrupts. There was no way to make them work with PCI devices spread out on lots of IRQs. So I just made the code collapse all the sharable devices onto the ACPI interrupt, which was fixed in the chipset by Intel at IRQ 9. By doing it this way, I could hide the fact that ACPI had just created a demand for one more IRQ. (If you use a non-Intel chipset that has ACPI coming in on some other IRQ, you'll see all the PCI devices in Win2K go to that IRQ, not 9.)

    Further complicating this story was that I was trying to get ACPI machines to work back in 1997, when the people working on Plug and Play in Win2K hadn't yet gotten their stuff going yet. At time, it wasn't possible to move a device from one set of resources to another after it had been started. This meant that any IRQ solution that I came up with had to work from the first try, so it had to be conservative.

    The everything-on-IRQ-9 solution worked. It got the machines to run, as long as none of the device drivers mis-handled their ISRs. (Later, this turned out to be a huge debugging problem, since when you chain eight or nine devices, you'll get somebody who fails.) The solution wasn't optimal, but it did work. I meant to go back and change it later, before we shipped Windows 2000.

    A couple of years passed. I had been working on multi-processor problems and on other aspects of ACPI. It got close to the time to ship Windows 2000 and somebody brought up the old question of IRQ stacking. I worked up a more-elegant solution, one that spread out interrupts on most machines. By that time, Plug and Play had been mostly completed, and that wasn't a bottleneck any more. But the test team told me that they wouldn't let me put it into the product, since they didn't have time to re-test the thousands of machines that had already been tested with the old algorithm.

    At the time, I thought that this was somewhat ridiculous. I thought that my code would work just fine. I thought that their fears were un-justified. But I was overruled, and I just put the code into what became Windows XP, letting Windows 2000 ship with the simple, safe, yet frustrating stacking.

    This is a good point in the story to explain that, in ACPI machines, the IRQ steering is accomplished by interpreting BIOS-supplied P-code called ASL. The IRQ routers are completely abstracted by the BIOS. The OS doesn't need to know about the actual hardware. The old IRQ steering code in Win9x, which was dropped into the non-ACPI HAL in Win2K, had to have code specific to each chipset, which meant that it didn't work when new chipsets were shipped. It was also written in a way that it assumed that there were exactly four IRQs coming from PCI. ACPI machines sometimes have many more. (This is the reason that you don't see the IRQ steering tab in ACPI machines. It just wasn't flexible enough and we didn't have time to re-do it.)

    What we discovered with Windows XP was that all of those ACPI machines that had been tested with their IRQs stacked on IRQ 9 tended to fail when you spread the IRQs out. A typical example of a failure would work like this: WinXP doesn't need the IRQ for the parallel port unless you're using one of the extended modes. So the parallel driver releases its IRQ until it's needed. The IRQ choosing logic (called an IRQ "arbiter") would move a PCI device onto the parallel IRQ. This action depends on re-programming the chipset so that the parallel port isn't actually triggering the IRQ. This is supposed to happen by interpreting even more BIOS P-code that manipulates the chipset, since there is no standard for parallel port configuration.

    If your chipset comes from Intel, this probably works, since the mere act of setting a PCI device to an IRQ also disconnects that IRQ from the ISA bus. But if your chipset comes from VIA or ALi, there is another step involved. The problem is that nearly all of the BIOS P-code out there is copied from old Intel example code. So they are almost all missing the extra step necessary in VIA and ALi machines.

    If the BIOS fails to stop the IRQ coming from the parallel port, the machine hangs, since the parallel port, which sends its IRQs active-high, edge-triggered, will ground the interrupt signal in the passive state. And grounding an interrupt which is enabled active-low, level-triggered will cause an endless stream of interrupts. The parallel port is just an example. Pick any device that is in the legacy SuperIO chip and the story repeats itself.

    In Windows XP, I made a bunch of changes. In machines without cardbus controllers, (which don't have the IRQ problems created by PCMCIA,) it will try to keep the PCI devices on the IRQs that the BIOS used during boot. If the BIOS didn't set the device up, then any IRQ may be chosen. But if your machine has a VIA chipset, or if it has a BIOS that we know to be broken, then we fall back to the Win2K-style stacking behavior. The unfortunate truth is that you guys on this list mostly build your own machines, rather than buying them from reputable manufacturers, which means that you guys own the machines with broken BIOSes and VIA chipsets. So even with WindowsXP, you'll see the same old stacking behavior.

    One notable addendum is that any machine with an APIC interrupt controller, and thus more than 16 IRQs, will spread interrupts out, even in Win2K. In the past, this was mostly limited to SMP machines. But any desktop machine shipping today that gets the Windows logo has to have an APIC. (This was another reason that I hadn't gone back to re-write this code earlier. Intel had promised that all machines would have APICs by 1998. If this had materialized, then none of you would have had any complaints by now.) I'm actually currently working on software for some future NT that will let an administrator configure the
    machine in any way he or she desires.
    Last edited by Kaydis; 04-16-2002 at 19:22.

  4. #4
    Kaydis is offline Junior Member
    Join Date
    Apr 2001
    Location
    Madison, WI
    Posts
    72
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    14
    Opps, forgot to include anything truely helpful. The good news is you can configure Win 2K so that you control interrupt sterring. You do this by disabling the ACPI HAL. The bad news is the only method I've heard to do this is to rebuild Win 2K, using the Standard PC HAL. This is done by hitting F5 during install and selecting the Standard PC HAL Here's some more info.

    On interrupt steering in Win 2K:

    http://support.microsoft.com/default...;en-us;Q252420

    On how to choose a different HAL during setup:

    http://support.microsoft.com/default...;en-us;Q216251

    BTW: I know all this stuff because I upgraded to Win XP yesterday and was ticked when I couldn't select my own IRQs, so I went searching for more info. Sharing interrupts is a horrible, horrible idea for any real time application like audio. It results in a N squared degradation in interrupt service performance (i.e. sharing two IRQs makes interrupt servicing 4 times slower, 3 sharred IRQs makes it 9 times slower, 4 makes it 16 times slower and so on). This is something no real time programmer would put up with. It makes no sense for an OS trying to handle a time critical interrupt to have to run through gobs of video, usb, firewire, etc interrupt code on each audio interrupt. Grrr.

  5. #5
    JMarcomb's Avatar
    JMarcomb is offline  
    Join Date
    Sep 2000
    Age
    38
    Posts
    883
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    119969
    I use 2000 and the sharing of resources is crazy. I changed up every Pci and its always the same. 2000 overrides
    IRQ Bios setting.

    System Information report written at: 04/16/2002 11:22:33 PM
    [Conflicts/Sharing]

    Resource Device
    IRQ 11 Microsoft ACPI-Compliant System
    IRQ 11 WinFast GeForce2 MX
    IRQ 11 VIA USB Universal Host Controller
    IRQ 11 VIA USB Universal Host Controller
    IRQ 11 Linksys LNE100TX Fast Ethernet Adapter(LNE100TX v4)
    IRQ 11 Creative SB Audigy
    IRQ 11 OHCI Compliant IEEE 1394 Host Controller
    IRQ 11 HPT370 UDMA/ATA100 RAID Controller


    my computer seems to run normal though. Microsoft site says its normal... it doesnt look normal to me because my sound card has to run at the same time as my video controller
    I wish I could break windows 2000's legs

  6. #6
    neirbo is offline Dedicated Member
    Join Date
    Oct 2001
    Location
    Silver Spring, MD
    Age
    46
    Posts
    276
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    13

    Talking

    Thanks all!

    Kaydis, I think you nailed it. I knew there was some way to do this at the installation phase, but I couldn't remember what key to hit when. I'll give that a try. Thanks man.

    Elevate, what you wrote sounds perfectly logical, and you would think that would work. But, the Windows fools decided otherwise. Even if I disable Plug and Play, assign IRQs in BIOS and even force them to use resource exclusion, 2000 puts the sound card and video card on the same IRQ.

    Jmarcomb, just be glad your system works! Mine has been variably inoperable for months.

    Ya know, I used to consider myself a musician, now I've become a tech weenie. If I spent as much time practicing as I have tweaking my computer these past months, I might actually get somewhere musically
    -------------
    Dave

    Aardvark Q10
    Cakewalk PA 9
    Athlon 1.4 Ghz
    Asus A7M266 MoBo with integrated sound
    Matrox G450 video
    256 meg Ddram
    700 meg WD Caviar C: drive
    40 GIG Quantum Fireball data drive

  7. #7
    rpe's Avatar
    rpe
    rpe is offline NM - Land of Excrement
    Join Date
    Feb 2002
    Location
    New Mexico
    Age
    61
    Posts
    651
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    21719

    I had the same problem........

    and as elevate suggested earlier in this post, I switched PCI slots and Win2K assigned a new, solo, IRP to my SB Audigy Platinum.

    rpe

  8. #8
    neirbo is offline Dedicated Member
    Join Date
    Oct 2001
    Location
    Silver Spring, MD
    Age
    46
    Posts
    276
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    13
    I really should learn to read more carefully before I write. From Elevate's post it sounds like I can change to the "standard PC" HAL without reintalling 2K. I'll try that first. Thanks.

    RPE, that sounds strange. I thought that PCI steering applied to all the PCI slots, so that switching cards around would not matter. But, it is certainly worth a shot if changing to "standard PC" doesn't work. It is easier than reinstalling 2K.
    -------------
    Dave

    Aardvark Q10
    Cakewalk PA 9
    Athlon 1.4 Ghz
    Asus A7M266 MoBo with integrated sound
    Matrox G450 video
    256 meg Ddram
    700 meg WD Caviar C: drive
    40 GIG Quantum Fireball data drive

  9. #9
    rpe's Avatar
    rpe
    rpe is offline NM - Land of Excrement
    Join Date
    Feb 2002
    Location
    New Mexico
    Age
    61
    Posts
    651
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    21719

    It worked for me.......

    you're right, it's easier than reinstalling.

  10. #10
    elevate's Avatar
    elevate is offline 1K Silver Member
    Join Date
    Feb 2002
    Location
    cenla
    Age
    41
    Posts
    1,170
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    777
    RPE, that sounds strange. I thought that PCI steering applied to all the PCI slots, so that switching cards around would not matter.
    It seems that Win2k is consistently inconsistent about assigning IRQ's. I had an IRQ conflict when I installed my Audiophile, but I too was able to resolve it by rearranging my PCI cards. Though, I can now only use one of my NIC's, but that's not a big deal.

Page 1 of 3 1 2 3 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Special 93% Offer

Got beats? Samples? Mixing and mastering services? Get a head start with this 93% OFF special offer!