Subject: ci_isources confusion?
To: None <port-amd64@NetBSD.org>
From: =?ISO-8859-1?Q?Edgar_Fu=DF?= <ef@math.uni-bonn.de>
List: port-amd64
Date: 03/23/2007 19:22:18
Either I'm confused again or there's some confusion regarding the
usage of ci_isources in the IOAPIC case.
As I understand it, the index into struct cpuinfo's ci_isources is
just some "slot" number with no relation to any IRQ number or the like.
However, in sys/arch/amd64/amd64/vectors.S, in the INTRSTUB macro,
the macros "num" argument (which is per-IOAPIC) is used as an index
to that table to calculate %r14 as a pointer to the relevant struct
intrsource. From that pointer, the ioapic_mask and ioapic_unmasc
macros (in sys/arch/amd64/include/i82093reg.h) get the pic an pin
number. I don't understand why those must actually correspond to the
IOAPIC interrupt we're just servicing.
But it can't be that broken as it appears to me. I must be missing
something.