[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] translate pirq to irq
hi Andrew, On Jan 13, 2014, at 1:10 AM, Andrew Cooper wrote: > On 12/01/2014 21:01, Igor Kozhukhov wrote: >> 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 ? > > No. > >> 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. > > Nothing in a dom0 system should know/care about apic vectors. Dom0 > cannot use the IDT, nor can it even write to MSI/MSI-X configuration > registers (they get trapped and fixed-up by Xen). > > Even if there were a hypercall to map an event channel back to an > apic-id/vector, it is possible that the data would be stale by the time > the vcpu ran again. thanks for your details. I have found and fixed a problem. now i have finished illumos side and have to fork with xen-4.2 sources. it was interest problem. details: i have array: #define APIC_MAX_VECTOR 255 uchar_t msi_vector_to_pirq[APIC_MAX_VECTOR+1] i have received map_irq.pirq = 279(0x117) it is more then 255(0xff) i have operation: msi_vector_to_pirq[vector] = (uchar_t)pirq; by this operation i have msi_vector_to_pirq[vector] = 0x17; :) it was a mistake, because i tried to use APIC IRQs from reserved space with additional PIRQs. i have replaced it by: get free APIC IRQ from range 0x10 - 0xff and update info about IRQ with additional field for PIRQ for mapping by event. now i have correct APIC IRQs with sync it for PIRQ map. > ~Andrew -Igor _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |