Slashdot Mirror


ACPI Forced On & Option Disabled in WinXP-Certified Motherboards

stealth_zipper asks: "I just got off the phone with a rep from Soyo Computer Inc trying to get the ability to change IRQs for the onboard hardware. It turns out that because of a deal to get WindowsXP certification, the Dragon-series motherboard ended up having the ability of Enabling/Disabling ACPI in the BIOS disabled. Now FreeBSD has complications with multiple devices on the same IRQs (especially sound, video, and nic all off the same one). Is there a way to get around this for new hardware? Has anyone else encountered this?" Why in the world does XP need this feature disabled, and are there workarounds to get OSes like FreeBSD working properly with motherboards of this sort?

17 of 532 comments (clear)

  1. wouldn't this by 2MuchC0ffeeMan · · Score: 5, Insightful

    wouldn't this easily add to their antitrust case?

    microsoft makes so many smart moves.

    --
    Runnin' On Empty .... I'm Still Alive
  2. Soyo Dragon by kwishot · · Score: 5, Insightful

    Are you sure that's the problem? These boards are having *tons* of problems, the P4 ones in particular.
    I work at a computer shop in Wisconsin and we've gone so far as to stop carrying them because of the problems.
    DOA.... bad slots.... bad ps/2 ports... "nothing after POST"... you name it.
    I'd just make sure that it's ACPI causing the problem and not a defective board.

    -kwishot

    1. Re:Soyo Dragon by Com2Kid · · Score: 5, Interesting

      In general yes, but Abit and Asus are not only middle line as far as quality goes, they are still running off of the steam of past glories.

      (woh, did I mix enough metaphors for ya? :) )

      Soyo has come out with some rather good boards, and some rather bad boards. Asus and Abit also have come out with some rather craptacular boards.

      Hell who knows it may just be one faulty little part that once it is found everybody will be going "Duh!" and slapping their hand against their forehead.

      Disabling ACPI does suck though. :)

      Especially since anybody who is going to go into the BIOS setup screen and change that sort of settings (which requires reinstalling Windows, at least on 2000 it does, so it is NOT something that you just go ahead and do without a thought for it) aaah screw it.

      Basically Win2k (and I am extrapolating for XP here, since it is awfully simular... ) required two separate kernels, one for ACPI, one without ACPI.

      I am sure that MS was just getting friggin annoyed with having to support two kernels, not to mention run support for two completely different ways of doing the IRQ thang (WTF is up with backwards support and IRQs? Current x86 OSs support the old way of IRQs to work with current motherboards, current motherboards support it to work with current OSs, WHAT THE FUCK IS GOING ON HERE FOLKS???? YEESH! Catch(22+(1/0)) --- for you TI calc people out there. ) ).

      *NOTE* I read someplace that it is a different Kernel, other places just mention a HAL, either way it must be a pain in the ass to support and I can understand Microsoft not wanting to have to support both ways of doing things, after all, this is the twenty first century, IRQ conflicts should not be a problem. I agree that at times how Microsoft Windows tends to, uh, arrange your IRQs is rather bad, but that piss poor sound quality you hear may very well be a SB:Live, which sucks, horribly.

      Turn off Plug and Play OS in your BIOS, as is recommended, if installing Windows2k+. Your PCI slots are most likely already setup to separate a few of them by IRQ, use that if Windows will allow you too. If necessary install devices one by one (recommended in any scenario), yes it is a pain, but it is about the only way of having so many friggin devices installed in a computer at once.

      Hell I ran out of IRQs WITH IRQ sharing, I have so many devices that do not like to share IRQs at all. (Dual Head Video Card, TV Tuner, Sound Card, SCSI Card, woh, there goes 4 IRQs already!!! ... needless to say Standby mode is not an option. Hehe. :) )

  3. Re:Because... by braindead · · Score: 5, Informative
    • Because ACPI is deprecated, in favour of APM. Is that a good enough reason? God forbid we should actually move forward and embrace new standards.
    Good try, but in fact the reverse is true: APM is deprecated, and ACPI is the new standard.
  4. A taste of the future by b.foster · · Score: 5, Informative
    I work at a company that (among other things) produces PC-compatible hardware. Although I am primarily a coder, many of my friends work on the hardware side of the business and they have remarked in the past about Microsoft's increasing willingness to "tighten the screws" on hardware manufacturers who include features in their products that have a negative impact on Windows compatibility. Although it would be quite a damning allegation to imply that this is an anticompetitive measure, it certainly seems like Microsoft's efforts to make hardware incompatible with alternative PC operating systems could fit into their overall strategy quite well, especially when faced with such credible threats as GNOME and Nautilas on the desktop.

    Some of the things that Microsoft has forced us to change in the past few years include:

    • One of our main products was in full compliance with the IEEE specification for the USB interface. However, because Windows 2000 used a while() loop for a timing operation, it was sometimes flaky when dealing with our product. As a result, we needed to re-engineer an ASIC (this was damn expensive) to make it compatible. The original version, of couse, was fully compatible with Linux.
    • Normally Windows communicates in a little-endian fashion. However, for two particular device status operations, Windows inexplicably violates yet another published spec and forces the device into big-endian (mac fag) mode. We needed to change firmware to fix this, and delay the release of our product by 3 weeks.
    • Microsoft required that the source code to our Windows drivers got audited in order for the product to be approved. Hmm, why don't they let us audit their code?
    Naturally, though, since the DoJ has dropped the ball on Microsoft, this sort of thing will only get worse. Get used to it, and vote Democratic in 2004.

    Bill

    1. Re:A taste of the future by phutureboy · · Score: 5, Interesting

      Naturally, though, since the DoJ has dropped the ball on Microsoft, this sort of thing will only get worse. Get used to it, and vote Democratic in 2004.

      Not to point out obvious stuff, but if producers of Windows compatible motherboards consistently take longer to deliver product and charge more to cover their R&D and production expenses because of incompatibilities like these, it means that Linux-only mobos are gonna come to market faster and cheaper. In other words, it adds one more reason that it's cheaper and more efficient to run Linux instead of 'doze. That's just gonna hurt MS in the long run. DOJ action is entirely unnecessary.

  5. Read carefully, it says ACPI cannot be disabled by beakster · · Score: 5, Informative

    If you read the article it says "It turns out that because of a deal to get WindowsXP certification, the Dragon-series motherboard ended up having the ability of Enabling/Disabling ACPI in the BIOS disabled."

    This means that ACPI is always ON, not off.

  6. Here's how 2000/XP Handles IRQ resources in ACPI by cscx · · Score: 5, Informative

    In the shortest way I can explain it, changing ACPI from on to off or vice versa on a current install of Windows 2000 or XP will... "fuck shit up." A more detailed description of how/why "shit gets fucked up" follows:

    In Windows, peripheral component interconnect (PCI) devices can share IRQs. In accord with the Plug and Play capability that is defined by the PCI specification, adapters are configured by the computer BIOS and are then examined by the operating system and changed if necessary. It is normal behavior for PCI devices to have IRQs shared among them, especially on Advanced Configuration and Power Interface (ACPI) computers that have Windows ACPI support enabled.

    In Windows XP, Device Manager may list some or all of the devices on your ACPI motherboard as using the same IRQ (IRQ 9). (To view the list of resources, click either Resources by type or Resources by connection on the View menu). No option is available to change the IRQ setting. Windows takes advantage of the ACPI features of the motherboard, including advanced PCI sharing. The PCI bus uses IRQ 9 for IRQ steering. This feature lets you add more devices without generating IRQ conflicts.

    Note that Windows XP cannot rebalance resources in the same way that Microsoft Windows 98 does. After PCI resources are set, they generally cannot be changed. If you change to an invalid IRQ setting or I/O range for the bus that a device is on, Windows XP cannot compensate by rebalancing the resource that was assigned to that bus.

    Windows XP does not have this ability because of the more complex hardware schemas that Windows XP is designed to support. Windows 98 does not have to support IOAPICs, multiple root PCI buses, multiple-processor systems, and so on. When you are dealing with these hardware schemas, rebalancing becomes risky and therefore is not implemented in Windows XP except for very specific scenarios. However, PCI devices are required to be able to share IRQs. In general, the ability to share IRQs does not prevent any hardware from working.

    The Plug and Play operating system settings in the computer BIOS do not generally affect how Windows XP handles the hardware. However, Microsoft recommends that you set the Plug and Play operating system setting to No or Disabled in the computer BIOS. For information about viewing or modifying the computer BIOS settings, consult the computer documentation or contact the computer manufacturer.

    Manually assigning IRQs to PCI slots in the system BIOS as a troubleshooting method may work on some non-ACPI systems that use a standard PC hardware abstraction layer (HAL), but these settings are ignored by Plug and Play in Windows if ACPI support is enabled. If you need to manually assign IRQ addresses through the BIOS to a device on an ACPI motherboard, you must reinstall Windows to force the installation to use a Standard PC HAL. For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

    More info can be found he'a...

  7. ACPI rocks, but can cause severe instability. by SlashChick · · Score: 5, Informative

    First of all, ACPI was created to a) make computers that "boot" instantly by always being in sleep mode and b) end the IRQ conflicts so common with earlier versions of Windows and hardware. So yes, ACPI, when working right, simply rocks.

    However, ACPI on certain motherboards, especially AMD motherboards, can cause severe system instability with Windows 2000 and Windows XP. (Please note that these OSes don't freeze/BSOD under normal circumstances, so if you're seeing this, you probably have a hardware issue which could be related to ACPI.)

    The most common scenario I have seen is this:

    -- Someone decently technically savvy builds his/her own PC with an AMD chip;
    -- Said person installs Windows XP;
    -- Said person wonders why IRQs are all set to 9;
    -- Said person goes and manually messes with IRQ settings, thus wreaking havoc on the poor commputer that functioned perfectly before.

    It can also go the other way:
    -- Said person installs Windows XP with AMD chip;
    -- Said person experiences weird freezes;
    -- Said person's computer works fine with Windows 98 because Win98 doesn't have full ACPI support, so person is left wondering why everyone says that Windows 2000 and Windows XP are so stable since that person's computer crashes constantly.

    To turn off ACPI, reinstall Windows and set your computer type to "Standard PC." Here is an excellent guide on how to set your PC to a Standard PC. As mentioned in the guide, this gives you the added benefit of increased framerates in Quake 3. However, you have to manually turn your computer off, and it might not go into powersave mode properly. Here is another comment regarding ACPI.

    So, to summarize:

    -- If you're having problems with Windows 2000/XP freezing, try this fix. Freezes are indicative of a hardware issue. Your computer should be stable with these OSes (except for application crashes, which happen with every OS.) My current uptime with Windows 2000 is 27 days; I have seen over 100 days uptime. If you're not seeing this type of stability with 2000/XP, it's time to do some hardware diagnostics.
    -- If you're not having problems, leave well enough alone and leave ACPI turned on.
    -- Do NOT mess with your IRQs on an ACPI computer! By messing with IRQs manually, you're asking for weird system problems. Leave them all on 9 -- it won't hurt the computer.
    -- Due to the problems mentioned above, I personally will not buy AMD chips and motherboards. I have yet to see ACPI problems crop up on an Intel motherboard. It's unfortunate, because I like AMD and like to encourage competition, but their chips and motherboards have strange issues that have yet to be resolved.

    I hope this helps all of you who are having problems with Windows XP or 2000.

    1. Re:ACPI rocks, but can cause severe instability. by sheldon · · Score: 5, Informative

      I don't think this has anything to do with processors, but rather with the VIA chipsets.

      I experienced the exact same problems you are talking about using a Tyan Trinity 400 motherboard with a Intel Pentium III 850Mhz processor. I fought with this issue for quite some time, and was never able to get any stability out of the machine. I had all of the PCI slots filled with expansion cards, and I believe this made the problem substantially worse.

      I ended up replacing that motherboard with an Intel D815EPEA2U board, and have experienced zero problems. In fact this Intel board supports high IRQ settings as some of my cards are reporting being at IRQ 23, etc. Yes, now my computer simply rocks.

      I also have an Intel SE440BX board in another computer, which is pretty solid but that one doesn't work with my Adaptec 2940(known issue) so I can't say it rocks. :)

      Again, I think this is a VIA problem. This is one of the reasons why I am reluctant to buy AMD processors, although I have not heard if people experience similar problems with boards built upon the AMD 761 chipset, etc.

    2. Re:ACPI rocks, but can cause severe instability. by CaptainSuperBoy · · Score: 5, Informative

      It's unfortunate that you blame ACPI and AMD.. in all likelihood, these problems are due to old PCI devices that can't play nice with shared IRQ's. If you have one of these unfortunate cards, you may have to disable ACPI just so you can get it onto its own IRQ line.

      You may also be blaming VIA for AMD's problems.. their earlier AMD chipsets were much more unstable than the kt266a, their current one, and kt333, the upcoming chipset. It used to be a necessity to put their 4in1 chipset drivers on a new OS install ASAP. You still need the drivers for Win2000 and below, but Windows XP has native VIA drivers that are WHQL certified and are very stable.

      I'm a happy AMD/VIA user. I have a Shuttle AK31A (KT266A) board with an AthlonXP, running WinXP. I have had my problems with AMD/VIA however.. my first AMD/VIA was an Abit KT7 which had the KT133 chipset. It was much more unstable and it had major issues with some of my older PCI cards.

    3. Re:ACPI rocks, but can cause severe instability. by dublin · · Score: 5, Informative

      Someone mod up parent - there's some good stuff there, although I'm not sure she realizes *why* the problem exists, and that the problem is NOT only with AMD systems.

      (Note: I am not an ACPI expert, but I know far more than most posters here, since I was once program manager in charge of Win98 and NT5(W2K) for a large computer company here in Austin. ACPI was a major PITA for me for about a year, and a key hurdle to the Win98 product launch.)

      There are several points that need to be made about ACPI, Microsoft, and hardware:

      1. ACPI support as been required by Microsoft since Windows 98. Win2K and XP *really* want it. MS wants APM to have died back in 1998, along with the rest of the "legacy" stuff. Yes, Virginia, Microsoft dictates with an iron fist the features of the hardware you buy, right down to the behavior of the power switch. Even (or especially?) the largest OEMs must comply with the MS hardware dictates, or face losing the OS discounts that they *must* have. (When MS says "You Must Comply", they mean it: In general, losing the OEM discount more than consumes the entire margin on a box, putting the OEM immediately out of business!) This is probably the area where MS most flagrantly and illegally leverages its monopoly, but it gets very little attention - even many people in the industry don't realize the extent of MS' power and control over computer hardware and the companies that build it.

      2. ACPI is very different in 98 and W2K/XP. For reasons that boggle the mind, the Win98 team built their own terribly broken ACPI implementation rather than using the properly conforming, standards-compliant ACPI code written by the NT group. It's not a stretch to say that the Win98 ACPI code is some of the most profoundly broken code ever released on a large scale. Microsoft knew it was that badly broken, but the decree came down that it *would* ship by the RTM date as an in-your-face message to Janet Reno and the DoJ. (Although I have to laugh at the Microserf that once joked, "Q: What's the best thing about Janet Reno? A: Her looks.")

      As a result, even though the ACPI code was known to be broken and non-functional in Win98, it shipped anyway, and the OEMs had only 90 days to begin shipping machines with Win98 (or lose that discount again - the stick, at least, is consistent.) It was essentially left to the OEMs to work around the twisted wreckage of the Win98 ACPI code. This in turn, forced some very bad decisions, because a BIOS that worked with NT (which was correctly engineered) would NOT work with 98, and vice versa. (This is when many just started putting ACPI on/off switches in the BIOS, which was an effective, but terribly ugly way to deal with the problem, given that a major purpose of ACPI was to eliminate user intervention with the BIOS!) In our case, a brilliant and observant BIOS programmer noticed something wierd, and used it to create a truly scary, but effective work-around: He noticed that NT and 98 made the initial ACPI call very slightly differently - in essence, it was possible for the BIOS to tell which OS it was serving. This led to a crash re-write of huge tracts of the BIOS to support a truly bizarre behavior: Instead of writing the ACPI tables at initialization, the BIOS would wait for the first ACPI call to see what OS is running, then re-write the ACPI tables on the fly to either work correctly (NT), or work around grisly broken code (98). This is NOT the sort of thing a BIOs should be doing, and explains why some modern BIOses are so large and complex - they are essentially workarounds for bugs Microsoft has rendered more or less permanent. It also explains why virtually every new MS OS release requires yet another BIOS upgrade, and why the correct BIOS for your machine may be determined by the OS you are running. Obviously, unless the dynamic approach above is used, it can be effectively impossible to have a properly functioning dual-boot machine...

      3. Now that MS senses that they are just getting a slap on the wrist from the feds, I'm told they are starting thier strong-arm tactics again. It wouldn't surprise me a bit if .NET Passport/DRM hardware soon became required for OEMs to stay in the game. You'll notice the OEMs that dance closest to the MS party line do the best in the "open" marketplace. It's funny how that always happens, but not so funny how no one has really tried to stand up to MS since they prectically killed Acer for non-compliance a few years back.

      ACPI is a pretty good thing, far better than the kludgey APM, but it got botched by MS' own ineptitude. Linux and BSD implementors need to use NT/2K/XP as their model, not 98. Sadly, we've seen similar faux pas with USB, device bays in laptops, and more recently, Bluetooth.

      I think perhaps the most frustrating thing is how MS claims to be driving innovation, when in relaity the are holding the industry back by years.

      --
      "The future's good and the present is nothing to sneeze at." - Roblimo's last ./ post
  8. Misleading headline / DRM by quantum+bit · · Score: 5, Interesting

    That headline really needs to be changed. It should read something like "ACPI Forced On in WinXP Certified Mobos"

    Also, did anyone else notice this little gem on the requirements page?

    • Audio devices must implement Digital Rights Management, which is supported by Windows XP. [B3.1.4.11]

    Does this mean hardware support for DRM in sound cards?

    1. Re:Misleading headline / DRM by Alsee · · Score: 5, Interesting

      Audio devices must implement Digital Rights Management

      Does this mean hardware support for DRM in sound cards?


      This means implementing SAP (SECURE AUDIO PATH). Not only must the hardware contain DRM, but the software must be approved and signed by Microsoft. If the driver is not signed it won't work. Read this Wired article explaining SAP. Wired: "SAP adds 'static' interference to media files that require video and audio cards to authenticate themselves with Windows software before they can be played."

      What happens when you take your pefectly good sound card out of your Win98 500mhz system and stick it in your shiny new XP 2000mhz system?

      You can't play your windows media player files.

      Why? Two reasons.

      Number one) It is your sound card that is incompatible. Therefore it is not Microsoft's fault. Blame the sound card manufacturer.

      Number two) You are a Pirate. Therefore it is not Microsoft's fault. It is your fault for being a Pirate.

      It's just another case of Microsoft leveraging it's operating system monopoly to enforce a new DigitalRightsManagementSystem monopoly. In other words, nothing out of the ordinary. Nothing to see here, please move along...

      -

      --
      - - You can't take something off the Internet! That's like trying to take pee out of a swimming pool.
  9. Why sharing interrupt lines is stupid by ka9dgx · · Score: 5, Informative
    Interrupt lines can be plentiful in a PC, even the 8088 was capable of supporting 254 of them... (reset and NMI taking the other two vectors)... the original IBM PC hardware specs started us in this road to hell. When PCI came along, they brought in the ability to do level or edge triggered interrupts, which makes devices of the same priority able to share an IRQ without much grief, which is good. This could let you have 4 comm ports on a single IRQ, for example. What it's NOT good for is for putting everything on one line.

    If a device only generates an interrupt every second or two, but the CPU takes 500mSec to service that interrupt, that means that everything else using that IRQ is left out in the cold for that time. (This is the Interrupt Latency)... even a 1Ghz P4 won't be able to play sound without breaking up if this happens... which is just plain stupid.

    Video, Network, and Disk devices obviously have different requirements and should each have their own interrupt. This insane sharing of IRQs should end.

    --Mike--

  10. Re:ACPI doesn't rock (LONG) by sconeu · · Score: 5, Informative

    This was posted by an MS guy to the OSR NTDEV listserv:

    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.

    --
    General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
  11. Comment removed by account_deleted · · Score: 5, Interesting

    Comment removed based on user account deletion