Software Archive
Read-only legacy content
17061 Discussions

What is the relationship of Vector in IOAPIC and IRQ# in X86

Tao_W_
Beginner
708 Views

Hi,

I am checking IOAPIC in my virtual machine (Ubuntu16.04_64bit), and with my own utility to dump the IOREDTAB of IOAPIC, i got,

# ./dumpioapic
Reg[0] = 0x01000000
Reg[1] = 0x00170011
Reg[2] = 0x01000000
Redir[12] = 300000000000931: vec = 31, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[14] = 300000000000930: vec = 30, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[16] = 300000000000933: vec = 33, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[18] = 300000000000934: vec = 34, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[1a] = 300000000000935: vec = 35, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[1c] = 300000000000936: vec = 36, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[1e] = 300000000000937: vec = 37, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[20] = 300000000000938: vec = 38, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[22] = 30000000000a939: vec = 39, d_mode = 1, dest_mode = 1, pin_pol = 1, tr_mode = 1
Redir[24] = 30000000000093a: vec = 3a, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[26] = 30000000000093b: vec = 3b, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[28] = 30000000000093c: vec = 3c, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[2a] = 30000000000093d: vec = 3d, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[2c] = 30000000000093e: vec = 3e, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[2e] = 10000000000093f: vec = 3f, d_mode = 1, dest_mode = 1, pin_pol = 0, tr_mode = 0
Redir[30] = 30000000000a954: vec = 54, d_mode = 1, dest_mode = 1, pin_pol = 1, tr_mode = 1

With cat /proc/interrupts, i got,

# cat /proc/interrupts | grep -i "IO-APIC"
  0:         16          0   IO-APIC   2-edge      timer
  1:          2          7   IO-APIC   1-edge      i8042
  6:          4          0   IO-APIC   6-edge      floppy
  8:          1          0   IO-APIC   8-edge      rtc0
  9:          0          0   IO-APIC   9-fasteoi   acpi
12:        148          3   IO-APIC  12-edge      i8042
14:          0          0   IO-APIC  14-edge      ata_piix
15:     227096        238   IO-APIC  15-edge      ata_piix
16:          1          0   IO-APIC  16-fasteoi   vmwgfx
17:       4330      29827   IO-APIC  17-fasteoi   ioc0

I got help from OSDev forum that Vector number in IOAPIC is NOT the number of IRQ shown in /proc/interrupts.

Then, my question comes.

What is the usage of Vector number in IOAPIC, and what is the relationship between the vector number and IRQ number?

 

Thanks,

-Tao

0 Kudos
0 Replies
Reply