From mboxrd@z Thu Jan 1 00:00:00 1970 From: "tip-bot for Tian, Kevin" Subject: [tip:x86/irq] x86: Don't unmask disabled irqs when migrating them Date: Thu, 19 May 2011 12:55:29 GMT Message-ID: Reply-To: linux-kernel@vger.kernel.org, mingo@redhat.com, hpa@zytor.com, fengzhe.zhang@intel.com, Ian.Campbell@citrix.com, JBeulich@novell.com, kevin.tian@intel.com, tglx@linutronix.de, xen-devel@lists.xensource.com Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: linux-tip-commits@vger.kernel.org Cc: kevin.tian@intel.com, xen-devel@lists.xensource.com, Ian.Campbell@citrix.com, fengzhe.zhang@intel.com, JBeulich@novell.com, mingo@redhat.com, hpa@zytor.com, tglx@linutronix.de List-Id: xen-devel@lists.xenproject.org Commit-ID: 983bbf1af0664b78689612b247acb514300f62c7 Gitweb: http://git.kernel.org/tip/983bbf1af0664b78689612b247acb514300f62c7 Author: Tian, Kevin AuthorDate: Fri, 6 May 2011 14:43:56 +0800 Committer: Thomas Gleixner CommitDate: Thu, 19 May 2011 14:51:08 +0200 x86: Don't unmask disabled irqs when migrating them It doesn't make sense to unconditionally unmask a disabled irq when migrating it from offlined cpu to another. If the irq triggers then it will be disabled in the interrupt handler anyway. So we can just avoid unmasking it. [ tglx: Made masking unconditional again and fixed the changelog ] Signed-off-by: Fengzhe Zhang Signed-off-by: Kevin Tian Cc: Ian Campbell Cc: Jan Beulich Cc: "xen-devel@lists.xensource.com" Link: http://lkml.kernel.org/r/%3C625BA99ED14B2D499DC4E29D8138F1505C8ED7F7E3%40shsmsx502.ccr.corp.intel.com%3E Signed-off-by: Thomas Gleixner --- arch/x86/kernel/irq.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index 544efe2..6c0802e 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c @@ -276,7 +276,8 @@ void fixup_irqs(void) else if (!(warned++)) set_affinity = 0; - if (!irqd_can_move_in_process_context(data) && chip->irq_unmask) + if (!irqd_can_move_in_process_context(data) && + !irqd_irq_disabled(data) && chip->irq_unmask) chip->irq_unmask(data); raw_spin_unlock(&desc->lock);