From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.3 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A80CEC282C4 for ; Mon, 4 Feb 2019 22:47:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6F4B92083B for ; Mon, 4 Feb 2019 22:47:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=lunn.ch header.i=@lunn.ch header.b="WYMTClUZ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728238AbfBDWrg (ORCPT ); Mon, 4 Feb 2019 17:47:36 -0500 Received: from vps0.lunn.ch ([185.16.172.187]:38649 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727975AbfBDWrf (ORCPT ); Mon, 4 Feb 2019 17:47:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lunn.ch; s=20171124; h=In-Reply-To:Content-Transfer-Encoding:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=yXQVOzuDK/SsNOW/xQdrapCyPQYa8BriOM7pxEMpfEA=; b=WYMTClUZtIpwnyJLJDyCC82tpo lYBAaW+/V09lp9Z3Y2NAaHjCV43Qk8SkY3dX1e8c61UlG3//V0m8ogKBYhtJhmgRSxGTtFx498uk9 BNJLi9+TTa97lfjreFOYoEW/1af2zRJYqVslT7lPrdjEiP401WfCe7r1u/Hk0vsx6dOc=; Received: from andrew by vps0.lunn.ch with local (Exim 4.89) (envelope-from ) id 1gqn1U-0001jd-6I; Mon, 04 Feb 2019 23:47:28 +0100 Date: Mon, 4 Feb 2019 23:47:28 +0100 From: Andrew Lunn To: John David Anglin Cc: Russell King , Vivien Didelot , Florian Fainelli , netdev@vger.kernel.org Subject: Re: [PATCH] net: phylink: dsa: mv88e6xxx: Revise irq setup ordering Message-ID: <20190204224728.GF3397@lunn.ch> References: <20190130172818.GJ21904@lunn.ch> <2ea9fd81-f92d-9505-dd0b-bdd0f67d8ce7@bell.net> <20190130223846.GB30115@lunn.ch> <9415d82e-965b-7777-0ad0-f23d6c9f177e@bell.net> <53b49df8-53ed-704f-9197-230b18d83090@bell.net> <20190204193518.GE24989@lunn.ch> <2d8c0eff-00cd-31c7-9906-89ff9d3c7dd4@bell.net> <20190204201905.GA2488@lunn.ch> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Mon, Feb 04, 2019 at 04:38:53PM -0500, John David Anglin wrote: > On 2019-02-04 3:19 p.m., Andrew Lunn wrote: > > The IRQ core would do this if it was needed. > > > > How many other irq thread work functions can you point to which do > > something similar? > This is comment for handle_edge_irq: > > /** >  *    handle_edge_irq - edge type IRQ handler >  *    @desc:    the interrupt description structure for this irq >  * >  *    Interrupt occures on the falling and/or rising edge of a hardware >  *    signal. The occurrence is latched into the irq controller hardware >  *    and must be acked in order to be reenabled. After the ack another >  *    interrupt can happen on the same source even before the first one >  *    is handled by the associated event handler. If this happens it >  *    might be necessary to disable (mask) the interrupt depending on the >  *    controller hardware. This requires to reenable the interrupt inside >  *    of the loop which handles the interrupts which have arrived while >  *    the handler was running. If all pending interrupts are handled, the >  *    loop is left. >  */ > > As can be seen, the above comment suggests that it may be necessary to > disable (mask) interrupt > as I proposed. Hi Dave This comment is describing what handle_edge_irq() actually does. Read the code. It does not say anything about that the handling thread function should do. Andrew