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

Re: [Xen-devel] translate pirq to irq



On Jan 13, 2014, at 12:34 AM, Andrew Cooper wrote:

> On 12/01/2014 19:26, Igor Kozhukhov wrote:
>> Hi Andrew,
>> 
>> On Jan 12, 2014, at 10:29 PM, Andrew Cooper wrote:
>> 
>>> On 11/01/2014 22:59, Igor Kozhukhov wrote:
>>>> Hello All,
>>>> 
>>>> I see a comment in physdev.h for 'struct physdev_map_pirq', var 'pirq':
>>>> /* IN - high 16 bits hold segment for MAP_PIRQ_TYPE_MSI_SEG */
>>>> 
>>>> i have received 'pirq' from hypervisor > 255.
>>>> 
>>>> map_irq.domid = DOMID_SELF;                                                
>>>>    
>>>> map_irq.type = MAP_PIRQ_TYPE_MSI;                                          
>>>>    
>>>> map_irq.index = -1; /* hypervisor auto allocates vector */                 
>>>>    
>>>> map_irq.pirq = -1;                                                         
>>>>    
>>>> map_irq.bus = busnum;                                                      
>>>>    
>>>> map_irq.devfn = devfn;                                                     
>>>>    
>>>> map_irq.entry_nr = i;                                                      
>>>>    
>>>> map_irq.table_base = 0;                                              
>>>> rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq);                  
>>>>    
>>>> irqno = map_irq.pirq;
>>>> 
>>>> i have:
>>>> irqno = 279 - it is more APIC_MAX_VECTOR(255)
>>>> 
>>>> i have a question: how to correct translate pirq to irq for APIC map table 
>>>> ?
>>>> 
>>>> all work well on xen-3.4, but it has another realization in function 
>>>> physdev_map_pirq() then for xen-4.2.
>>> Is this for a PV or HVM guest?  I suspect PV, in which case the irqno
>>> handed back will be the event channel on which the notification will
>>> arrive, and has nothing to do with regular IDT vectors.
>> it is for dom0.
>> 
>> full boot log with xen debug info and DDI_DEBUG on illumos you can find here 
>> :
>> http://apt2.dilos.org/dilos/logs/putty.log.dom0.txt
>> 
>> 
>> if it is possible - could you please let me know how to work MSI irq 
>> translation to APIC irq table for xen-4.2 ?
>> 
>> i see - in xen code we have a range from 16 to 784 for 4 CPU for MSI IRQ 
>> (irq_create() function)
>> but - how to correct translate it to APIC IRQ (physical irq)?
> 
> Why do you need to know?
> 
> Xen controls all interrupts on the system.  Event channels which you
> register with Xen have no mapping/relation to local apic vectors.  Your
> device drivers should not expect to have an apic vector in their hand.
> 
> The reason behind this is that as virtual cpus get scheduled around
> physical cpus, Xen needs to move the interrupts from IDT to IDT at which
> point their vector will change.
is it possible to receive IRQ from APIC table from Xen as index ?
i need it for local APIC pointer to APIC table array as index.
all others functions is using index from apic_irq_table[] as APIC IRQ.

i have function apic_find_irq() for this. 
it is not my realization - it is original code.

> ~Andrew

-Igor


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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