From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751155AbbJAVqD (ORCPT ); Thu, 1 Oct 2015 17:46:03 -0400 Received: from www.linutronix.de ([62.245.132.108]:39307 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751101AbbJAVqB (ORCPT ); Thu, 1 Oct 2015 17:46:01 -0400 Date: Thu, 1 Oct 2015 23:45:23 +0200 (CEST) From: Thomas Gleixner To: Mika Westerberg cc: Jiang Liu , linux-kernel@vger.kernel.org Subject: Re: CPU hotplug and chained interrupts on x86 In-Reply-To: Message-ID: References: <20151001142147.GO1551@lahna.fi.intel.com> User-Agent: Alpine 2.11 (DEB 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 1 Oct 2015, Thomas Gleixner wrote: > On Thu, 1 Oct 2015, Mika Westerberg wrote: > > Now if I plug/unplug the card I may get few interrupts to CPU0 but rest > > of the interrupts never happen. Probably because IO-APIC forwards them > > to the lowest priority CPU which is offline at this point. > > > > There is following check in fixup_irqs(): > > > > if (!irq_has_action(irq) || irqd_is_per_cpu(data) || > > cpumask_subset(affinity, cpu_online_mask)) { > > raw_spin_unlock(&desc->lock); > > continue; > > } > > > > If an interrupt is requested by a driver it will force new affinity and > > everything works fine. However if the interrupt is chained (it does not > > have ->action) this is skipped and the current affinity remains. > > > > We could detect here if the interrupt is chained but there seems to be > > no easy way to determine it currently so we would need to add a new flag > > to desc->status_use_accessors that gets set in __irq_do_set_handler() > > when is_chained is 1. > > Either there or in irq_data. Need to look at it in detail. desc->status_use_accessors is the place where this wants to go. Thanks, tglx