[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] About GSI and IRQ?

Hi all,
I am confused by the concept  GSI and IRQ.
what I figure out is as below,

 IRQ is for PIC, PIN is for IOAPIC.  
GSI is short for "Global System Interrupt", it is the unique number of one interrupt.   
GSI=GSI base + pin.  
16 IRQ of ISA are mapped to GSI[0,15]  
if number > 15, IRQ = GSI.  
Vector is the concept of CPU, it is the index of IDT.

I found one function like 

int ioapic_guest_write(unsigned long physbase, unsigned int reg, u32 val)

irq = apic_pin_2_gsi_irq(apic, pin);

static int apic_pin_2_gsi_irq(int apic, int pin)
    int idx;

    if (apic < 0)
       return -EINVAL;

    idx = find_irq_entry(apic, pin, mp_INT);

    return idx >= 0 ? pin_2_irq(idx, apic, pin)
                    : apic_gsi_base(apic) + pin;

what make me most confued is the function name of "apic_pin_2_gsi_irq", is the returned value  a GSI or a IRQ?
when to use GSI? when to use IRQ?

anyone can explain it for me ? or maybe give me some URL to read.

Best Regards,

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.