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.