From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932911AbZDHPqV (ORCPT ); Wed, 8 Apr 2009 11:46:21 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756652AbZDHPqE (ORCPT ); Wed, 8 Apr 2009 11:46:04 -0400 Received: from mail-fx0-f158.google.com ([209.85.220.158]:60547 "EHLO mail-fx0-f158.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752485AbZDHPqD (ORCPT ); Wed, 8 Apr 2009 11:46:03 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=t0CzLuk4QtxANzj/EGASGIedI+cHiYnx9od/PAB+IBfhE7YzbaZH0KFwPFZF4/W1Fy M23HTPbzxfenvliKT4XizfNaIdcIvmSK2BwUxfT0+sbroQN0KMyy3wkdFZwvzNAf/WSU JDBQeoartLQMATq+ZX8EM5wMGs9buHYLrEUoo= Date: Wed, 8 Apr 2009 19:45:58 +0400 From: Cyrill Gorcunov To: Ingo Molnar Cc: "H. Peter Anvin" , Thomas Gleixner , LKML , Suresh Siddha Subject: Re: [PATCH -tip] x86: do_IRQ - send EOI for x86-32 on irq without handler v2 Message-ID: <20090408154558.GC7556@lenovo> References: <20090408145017.GB7556@lenovo> <20090408145218.GM12931@elte.hu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090408145218.GM12931@elte.hu> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [Ingo Molnar - Wed, Apr 08, 2009 at 04:52:18PM +0200] | | * Cyrill Gorcunov wrote: | | > Ingo, I think introducing additional dummy here would be a bit | > expencive -- a number of callers of ack_APIC_irq just should not | > check for disable_apic since it's not needed. disable_apic is to | > depend on CONFIG_X86_LOCAL_APIC rather then CONFIG_X86_64 | > actually. So make it then. Or you mean something else? Like new | > apic->write_eoi operation? (I'm a bit tired so brain is a half | > functional now :) | | no, i meant a dummy apic->write() method in the !apic case. Check | what ack_APIC_irq() does internally. | | Ingo | Of course I saw how ack_APIC_irq implemented :) It's already guarded by CONFIG_X86_LOCAL_APIC and I could just move check for disable_apic right here (ie it could be like static inline void ack_APIC_irq(void) { #ifdef CONFIG_X86_LOCAL_APIC /* * ack_APIC_irq() actually gets compiled as a single instruction * ... yummie. */ if (!disable_apic) /* Docs say use 0 for future compatibility */ apic_write(APIC_EOI, 0); #endif } but what is bothering me is that a number of ack_APIC_irq callers will pass execution with always disable_apic=0 and as result this checking would be just spedning cycles for free. So Ingo, it seems I miss something on what you mean. apic->write is already called only for CONFIG_X86_LOCAL_APIC here as well and the arguable point is where to check for disable_apic variable. But do_IRQ is a special case (wrt to say smp_apic_timer_interrupt or setup_local_APIC. I mean as example -- setup_local_APIC is not even called for disable_apic=1). /me: scratching the head heavily Cyrill