On Thu, 26 Aug 2010, M A Young wrote:
Okay, here is my first attempt at dirty debugging. I have made a patch to try
to track where vector_irq is being changed (attached) and have also attached.
I have looked at it quickly, and I don't think some low IRQs are getting set
on the second CPU.
My next thoughts on this are that almost all IRQs allocated on the first
cpu before the second is started aren't initialized on the second CPU. I
presume that __setup_vector_irq from xen/arch/x86/irq.c is where it is
supposed to happen
void __setup_vector_irq(int cpu)
{
int irq, vector;
struct irq_cfg *cfg;
/* Clear vector_irq */
for (vector = 0; vector < NR_VECTORS; ++vector) {
per_cpu(vector_irq, cpu)[vector] = -1;
printk("__setup_irq_vector: setting vector_irq[%d]=-1 for
cpu=%d\n",
vector, cpu);
}
/* Mark the inuse vectors */
for (irq = 0; irq < nr_irqs; ++irq) {
cfg = irq_cfg(irq);
if (!cpu_isset(cpu, cfg->domain))
continue;
vector = irq_to_vector(irq);
per_cpu(vector_irq, cpu)[vector] = irq;
printk("__setup_irq_vector2: setting vector_irq[%d]=%d for
cpu=%d\n",
vector, irq, cpu);
}
}
but my debugging suggests it is only actually happening for irq[240]
Michael Young
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|