WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] RE: [PATCH v2 1/2] x86: skip migrating IRQF_PER_CPU irq in f

To: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Subject: [Xen-devel] RE: [PATCH v2 1/2] x86: skip migrating IRQF_PER_CPU irq in fixup_irqs
From: "Tian, Kevin" <kevin.tian@xxxxxxxxx>
Date: Sat, 7 May 2011 05:41:02 +0800
Accept-language: en-US
Acceptlanguage: en-US
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>, "JBeulich@xxxxxxxxxx" <JBeulich@xxxxxxxxxx>, Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx>, "mingo@xxxxxxxxxx" <mingo@xxxxxxxxxx>, "hpa@xxxxxxxxx" <hpa@xxxxxxxxx>, "tglx@xxxxxxxxxxxxx" <tglx@xxxxxxxxxxxxx>
Delivery-date: Fri, 06 May 2011 14:42:03 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20110506135828.GC5500@xxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <625BA99ED14B2D499DC4E29D8138F1505C8ED7F7E2@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20110506135828.GC5500@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcwL9buc9g3ESUzmSDy3ruiTS7ILVQAQBMnA
Thread-topic: [PATCH v2 1/2] x86: skip migrating IRQF_PER_CPU irq in fixup_irqs
> From: Konrad Rzeszutek Wilk [mailto:konrad.wilk@xxxxxxxxxx]
> Sent: Friday, May 06, 2011 9:58 PM
> 
> On Fri, May 06, 2011 at 02:43:36PM +0800, Tian, Kevin wrote:
> > x86: skip migrating IRQF_PER_CPU irq in fixup_irqs
> >
> > IRQF_PER_CPU marks a irq binding to a specific cpu, and can never be
> > moved away from that cpu. So it shouldn't be migrated when fixup irqs
> > to offline a cpu. Xen pvops guest is one source using IRQF_PER_CPU
>   ^- are called
> > on a set of virtual interrupts. Previously no error is observed
>                                                       ^^- was
> Which ones? Can you be more specific here of which type of virtual interrupts?
>  spinlock? timer?

all of them: spinlock, timer, resched, callfunc, ...

> > because Xen event chip silently fails the set_affinity ops, and
> > logically IRQF_PER_CPU should be recognized here.
> 
> OK, so what if the set_affinity ops was implemented?

it was implemented: (drivers/xen/event.c, rebind_irq_to_cpu)
        /*
         * If this fails, it usually just indicates that we're dealing with a
         * virq or IPI channel, which don't actually need to be rebound. Ignore
         * it, but don't do the xenlinux-level rebind in that case.
         */
        if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_vcpu, &bind_vcpu) >= 0)
                bind_evtchn_to_cpu(evtchn, tcpu);
Hypervisor doesn't allow to change affinity for virq and ipi.

Thanks,
Kevin

> >
> > Signed-off-by: Fengzhe Zhang <fengzhe.zhang@xxxxxxxxx>
> > Signed-off-by: Kevin Tian <kevin.tian@xxxxxxxxx>
> > CC: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> > CC: Ingo Molnar <mingo@xxxxxxxxxx>
> > CC: H. Peter Anvin <hpa@xxxxxxxxx>
> > CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
> > CC: Jan Beulich <JBeulich@xxxxxxxxxx>
> >
> > --- linux-2.6.39-rc6.orig/arch/x86/kernel/irq.c     2011-05-04
> 10:59:13.000000000 +0800
> > +++ linux-2.6.39-rc6/arch/x86/kernel/irq.c  2011-05-06 09:20:25.563963000
> +0800
> > @@ -249,7 +250,7 @@ void fixup_irqs(void)
> >
> >             data = irq_desc_get_irq_data(desc);
> >             affinity = data->affinity;
> > -           if (!irq_has_action(irq) ||
> > +           if (!irq_has_action(irq) || irqd_is_per_cpu(data) ||
> >                 cpumask_subset(affinity, cpu_online_mask)) {
> >                     raw_spin_unlock(&desc->lock);
> >                     continue;
> > --
> > To unsubscribe from this list: send the line "unsubscribe
> > linux-kernel" in the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel