With a tool, I dumped the registers of IOAPIC in my thinkpad laptop as followings.
Code: Select all
[14508.865716] RT Entry 1 : 0001000000000001
[14508.865721] Dest : 00
[14508.865725] EDID : 01
[14508.865729] Mask : not masked
[14508.865733] Trigger mode : edge
[14508.865736] Remote IRR mode: 0
[14508.865740] Polarity : active high
[14508.865744] Delivery status: idle
[14508.865747] Dest mode : physical
[14508.865751] Delivery mode : 000
[14508.865754] vector : 01
[14508.865778] RT Entry 2 : 0003000000000002
[14508.865792] Dest : 00
[14508.865806] EDID : 03
[14508.865821] Mask : not masked
[14508.865833] Trigger mode : edge
[14508.865847] Remote IRR mode: 0
[14508.865859] Polarity : active high
[14508.865871] Delivery status: idle
[14508.865881] Dest mode : physical
[14508.865884] Delivery mode : 000
[14508.865888] vector : 02
[14508.865979] RT Entry 8 : 000f000000000008
[14508.865983] Dest : 00
[14508.865987] EDID : 0F
[14508.865990] Mask : not masked
[14508.865994] Trigger mode : edge
[14508.865997] Remote IRR mode: 0
[14508.866001] Polarity : active high
[14508.866005] Delivery status: idle
[14508.866008] Dest mode : physical
[14508.866011] Delivery mode : 000
[14508.866015] vector : 08
[14508.866035] RT Entry 9 : 0011000000008009
[14508.866039] Dest : 00
[14508.866043] EDID : 11
[14508.866047] Mask : not masked
[14508.866050] Trigger mode : level
[14508.866054] Remote IRR mode: 0
[14508.866057] Polarity : active high
[14508.866072] Delivery status: idle
[14508.866086] Dest mode : physical
[14508.866101] Delivery mode : 000
[14508.866115] vector : 09
[14508.866171] RT Entry12 : 001700000000000c
[14508.866175] Dest : 00
[14508.866179] EDID : 17
[14508.866183] Mask : not masked
[14508.866187] Trigger mode : edge
[14508.866190] Remote IRR mode: 0
[14508.866194] Polarity : active high
[14508.866197] Delivery status: idle
[14508.866201] Dest mode : physical
[14508.866205] Delivery mode : 000
[14508.866208] vector : 0c
[14508.866269] RT Entry16 : 001f00000000a010
[14508.866282] Dest : 00
[14508.866296] EDID : 1F
[14508.866308] Mask : not masked
[14508.866312] Trigger mode : level
[14508.866315] Remote IRR mode: 0
[14508.866319] Polarity : active low
[14508.866323] Delivery status: idle
[14508.866327] Dest mode : physical
[14508.866330] Delivery mode : 000
[14508.866333] vector : 10
[14508.866433] RT Entry23 : 002300000000a017
[14508.866438] Dest : 00
[14508.866441] EDID : 23
[14508.866445] Mask : not masked
[14508.866449] Trigger mode : level
[14508.866453] Remote IRR mode: 0
[14508.866465] Polarity : active low
[14508.866475] Delivery status: idle
[14508.866479] Dest mode : physical
[14508.866482] Delivery mode : 000
[14508.866486] vector : 17
At the same time, the /proc/interrupts in Linux shows something like below,
Code: Select all
CPU0 CPU1 CPU2 CPU3
0: 23 0 0 0 IO-APIC 2-edge timer
1: 13 0 471 0 IO-APIC 1-edge i8042
8: 1 0 0 0 IO-APIC 8-edge rtc0
9: 0 0 0 0 IO-APIC 9-fasteoi acpi
12: 20 0 2144 0 IO-APIC 12-edge i8042
14: 0 0 0 0 IO-APIC 14-edge ata_piix
15: 0 0 0 0 IO-APIC 15-edge ata_piix
Or is the vector number in IOAPIC directly delivered to the CPU core?
What are 24 redirection table entries in IOAPIC are used for?
The 1st entry is IRQ0, 2nd entry is IRQ1, 24th entry is IRQ25, is this correct?
Thanks,
-Tao