From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from www.linutronix.de ([62.245.132.108]:43492 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754623AbaIPRsI (ORCPT ); Tue, 16 Sep 2014 13:48:08 -0400 Date: Tue, 16 Sep 2014 10:47:27 -0700 (PDT) From: Thomas Gleixner To: Jiang Liu cc: Benjamin Herrenschmidt , Ingo Molnar , "H. Peter Anvin" , "Rafael J. Wysocki" , Bjorn Helgaas , Randy Dunlap , Yinghai Lu , Borislav Petkov , Grant Likely , Marc Zyngier , Konrad Rzeszutek Wilk , Andrew Morton , Tony Luck , Joerg Roedel , Greg Kroah-Hartman , x86@kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [RFC Part2 v1 03/21] x86, irq: Save destination CPU ID in irq_cfg In-Reply-To: <1410444228-3134-4-git-send-email-jiang.liu@linux.intel.com> Message-ID: References: <1410444228-3134-1-git-send-email-jiang.liu@linux.intel.com> <1410444228-3134-4-git-send-email-jiang.liu@linux.intel.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-pci-owner@vger.kernel.org List-ID: On Thu, 11 Sep 2014, Jiang Liu wrote: > Cache destination CPU APIC ID into struct irq_cfg when assigning vector > for interrupt. Upper layer just needs to read the cached APIC ID instead > of calling apic->cpu_mask_to_apicid_and(), it helps to hide APIC driver > details from IOAPIC/HPET/MSI drivers.. > > Signed-off-by: Jiang Liu > --- > arch/x86/include/asm/hw_irq.h | 1 + > arch/x86/kernel/apic/vector.c | 4 ++++ > 2 files changed, 5 insertions(+) > > diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h > index 7624fffc2822..3d51d74d6c01 100644 > --- a/arch/x86/include/asm/hw_irq.h > +++ b/arch/x86/include/asm/hw_irq.h > @@ -116,6 +116,7 @@ struct irq_data; > struct irq_cfg { > cpumask_var_t domain; > cpumask_var_t old_domain; > + unsigned int dest_apicid; > u8 vector; > u8 move_in_progress : 1; > #ifdef CONFIG_IRQ_REMAP > diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c > index 7562cb15b3bd..287ae4e8d500 100644 > --- a/arch/x86/kernel/apic/vector.c > +++ b/arch/x86/kernel/apic/vector.c > @@ -188,6 +188,10 @@ next: > } > free_cpumask_var(tmp_mask); Lacks a comment what this call is actually doing. > + if (!err) > + err = apic->cpu_mask_to_apicid_and(mask, cfg->domain, > + &cfg->dest_apicid); > + Thanks, tglx