Jake,
Anton, this isn’t strictly true. The algorithms were changed in Vista to share less often even without MSI.
No matter how you want to do things, you just cannot do something that is not allowed by motherboard…
The actual truth is that most motherboards have at least four routing groups.
This is exactly my point. There are four programmable interrupt request (PIRQ) input signals. Any PCI interrupt source (either onboard or from a PCI add-in card) connects to one of these PIRQ signals. Because there are only four signals, some PCI interrupt sources are mechanically tied together on the motherboard and, therefore, share the same interrupt. For example, on my desktop with VIA chipset IRQ 21 (or GSI 21 if you want to call it this way) is shared by NIC, SATA controller, EHCI and one instance of UHCI (there are 4 of them on my machine), and IRQ 20 is shared by 1394 controller and another instance of UHCI. What can you do about it. from the OS’s perspective???
Certainly, some platforms may allow more flexibility. You spoke about laptops that allow hot-pluggable PCI buses. ACPI specifications even speak about “hot-plugged I/O APIC device”, although, to be honest, I just cannot imagine how someone could hot-plug IOAPIC However, again, everything depends on motherboard vendor - this is the only thing I am saying…
Anton Bassov
Yes, I wrote that part of the ACPI specification. And I wrote code
that allowed an I/O APIC to be hot-plugged. Unfortunately, I wrote it
in 2001 and between then and when Windows Server 2008 shipped (which
was the first delivery vehicle that might have included the code)
chipset vendors mostly stopped building hot-plug I/O APICs (because
Windows didn’t support them) so the code was removed before Server
2008 shipped.
If you want to imagine how this might have worked, go find the specs
for Intel’s “P64H2” PCI-X bridge. It was a component that attached to
a north bridge. It contained two PCI-X bridges and one I/O APIC.
Several machines were built that were capable of putting one of these
on an I/O rack that was hot-plugged into the server.
wrote in message news:xxxxx@ntdev…
>
> Certainly, some platforms may allow more flexibility. You spoke
> about laptops that allow hot-pluggable PCI buses. ACPI
> specifications even speak about “hot-plugged I/O APIC device”,
> although, to be honest, I just cannot imagine how someone could
> hot-plug IOAPIC However, again, everything depends on motherboard
> vendor - this is the only thing I am saying…
>
>
>
> Anton Bassov
>
Maxim S. Shatskih wrote:
Surely the modern OSes rely on ACPI table and ACPI bytecode from the BIOS,
but the machine code from the BIOS is never executed after the kernel is loaded
(with the exception of int 10h in Windows for some older video chips, usually
for power management on them).
Actually, the drivers for many modern graphics chips still call into INT
10 to set the video mode. It’s a matter of economy.
There are a huge number of details in setting up the timing registers
(e.g., memory timing varies based on depth, resolution; LCDs take
special timing; TV takes special timing; clocks need to be skewed or
inverted). Commonly, the video engineers in the factory will come up
with the ideal set of timing parameters for a given resolution and embed
that in the BIOS for their testing. Once you’ve done that, it doesn’t
necessarily make sense to re-invent the wheel in your Windows driver.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
> It was a component that attached to a north bridge. It contained two PCI-X bridges and one
I/O APIC. Several machines were built that were capable of putting one of these on an I/O
rack that was hot-plugged into the server.
It looks like at some point in not-so-distant future the maximum of 255 vectors that x86 allows (in actuality, just 223 are available, because first 32 vectors are reserved for dealing with exceptions) may become quite a limitation - there is a good chance that some machines, particularly high-end servers ,may be forced to share interrupts not because of motherboard layout but because the number of vectors is limited…
Anton Bassov
I’m sorry there are something wrong during my testing.
Finally I found that ISR routine returns FALSE sometimes in Vista also.
So there may be some other bug that caused system crashed when run app for a period of time in XP.[I will state it in another topic] Thanks.
> I’m sorry there are something wrong during my testing. Finally I found that ISR routine returns
FALSE sometimes in Vista also.
This is what I suspected from the very beginning. In any case, thanks a lot for posting your question - it somehow lead to exciting discussion of interactions between the OS and BIOS …
Anton Bassov