Hi,
Mike wrote:I don't have an IMCR... and there is definitely no entry for IRQ0... or IRQ2 for that matter. I was able to get a periodic interrupt by connecting to INTIN2 on the IOAPIC so it would seem to be the timer interrupt - but nowhere does it specify anything about it!
This may be correct - there's no requirement for the PIT IRQ to be connected to the I/O APIC, so I guess the MP tables could ignore IRQ0 regardless of whether it's connected to the I/O APIC or not.
Mike wrote:Here are the contents of my MP tables, all values in hex
A few things here seems odd to me. For example, all I/O APIC interrupt assignments have "interrupt type = 0" and all local APIC interrupt assignments have "interrupt type = 1". I'm wondering if this is the table type and not the interrupt type.
The last 2 lines don't make much sense:
Code: Select all
LINT type=1 pol=0 trig=0 srcbus=9 srcirq=0 destid=FF destlint=01
type=1 pol=0 trig=0 srcbus=9 srcirq=0 destid=FF destlint=01
Both of these lines are identical (but both are what I'd expect for the local APICs LINTIN1 input, which is usually an NMI).
There is nothing marked as "extINT" (or interrupt type 0x03), which is very unusual AFAIK. Given that the PIT is connected to INTIN2, I'd expect that the master PIC's INTR is connected to INTIN0, but then there should be an I/O APIC interrupt assignment saying:
Code: Select all
type=3 pol=0 trig=0 srcbus=9 srcirq=00 destid=8 destirq=0
And possibly a local APIC interrupt assignment entry (for all local APICs LINTIN0 inputs) saying:
Code: Select all
type=3 pol=0 trig=0 srcbus=9 srcirq=00 destid=FF destirq=0
Also, it's reporting a total of 28 PCI interrupt sources - usually you'd get one per PCI device. A computer with 28 PCI devices is possible, but it does seem unusual to me - does your computer have a lot of devices?
Then the "FeatureFlags=3FEBFBFF" seems wrong too, as reserved bits should be clear (and most of these bits are reserved).
I've got
my own utility to parse and display the MP specification tables. It's written for pure DOS (i.e. it'll crash in a DOS box under windows), so you'd need a DOS boot disk. Would you mind giving it a try and posting the results? To start it I normally use "
mpdump > results.txt" to create a file of the output, rather than just displaying it on the screen.
I've also got the results from this utility for 4 seperate computers (every computer I have that creates MP tables). It might be interesting to see how different some of them are..
An older single CPU Pentium 4 machine
A newer single CPU Pentium 4 machine
A dual CPU Pentium III machine
A dual CPU Pentium II machine
Of these, the Pentium III is interesting because it has 2 seperate I/O APICs with 16 inputs each.
The Pentium II is a Compaq Proliant, and most closely resembles your machine. The APIC ID's, APIC versions and PCI/ISA bus numbers are all identical (except you have an additional PCI bus). The interesting thing here is that there's a group of I/O APIC interrupt assignment entries, then a group of local APIC interrupt assignment entries, followed by one more I/O APIC interrupt assignment entry - i.e. all of the I/O APIC entries aren't in one group.
The last I/O APIC entry, which isn't part of the main group, is the one with type=3 (extINT), but there's also a local APIC interrupt assignment entry for type=3 (extINT). This shows the master PIC's INTR line connected to the I/O APICs INTIN0 input
and the local APICs LINTIN0 input.
Also there is an I/O APIC interrupt assignment entry showing the ISA IRQ0 being connected to the I/O APICs INTIN2, but there are no entries for PCI IRQs for this machine (which is unusual).
Anyway, it'd be good to compare the results you've posted with the results my utility shows for your machine, just to make sure they are both reporting correct information....
[EDIT]
Ignore what I said about "FeatureFlags=3FEBFBFF" - I got the CPUs feature flags mixed up with the MP floating point structure's feature flags!
[/EDIT]
Cheers,
Brendan