Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753922AbdDFRx0 (ORCPT ); Thu, 6 Apr 2017 13:53:26 -0400 Received: from foss.arm.com ([217.140.101.70]:46938 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752252AbdDFRxS (ORCPT ); Thu, 6 Apr 2017 13:53:18 -0400 Date: Thu, 6 Apr 2017 18:52:52 +0100 From: Mark Rutland To: Fu Wei Cc: "Rafael J. Wysocki" , Len Brown , Daniel Lezcano , Thomas Gleixner , Marc Zyngier , Lorenzo Pieralisi , Sudeep Holla , Hanjun Guo , linux-arm-kernel@lists.infradead.org, Linaro ACPI Mailman List , Linux Kernel Mailing List , ACPI Devel Maling List , rruigrok@codeaurora.org, "Abdulhamid, Harb" , Christopher Covington , Timur Tabi , G Gregory , Al Stone , Jon Masters , Wei Huang , Arnd Bergmann , Catalin Marinas , Will Deacon , Suravee Suthikulpanit , Leo Duran , Wim Van Sebroeck , Guenter Roeck , linux-watchdog@vger.kernel.org, Tomasz Nowicki , Christoffer Dall , Julien Grall Subject: Re: [PATCH v23 09/11] acpi/arm64: Add memory-mapped timer support in GTDT driver Message-ID: <20170406175252.GB11871@leverpostej> References: <20170331175105.8370-1-fu.wei@linaro.org> <20170331175105.8370-10-fu.wei@linaro.org> <20170405183808.GB27550@leverpostej> <20170406172410.GA11871@leverpostej> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1491 Lines: 44 On Fri, Apr 07, 2017 at 01:39:09AM +0800, Fu Wei wrote: > On 7 April 2017 at 01:24, Mark Rutland wrote: > > On Fri, Apr 07, 2017 at 12:47:47AM +0800, Fu Wei wrote: > >> On 6 April 2017 at 02:38, Mark Rutland wrote: > >> > On Sat, Apr 01, 2017 at 01:51:03AM +0800, fu.wei@linaro.org wrote: > > However, I would prefer to simplify this such that we only free the > > IRQs in the error path. > > > > We should be able to iterate over all freams, freeing any non-zero > > interrupt, since !valid frames shouldn't have non-zero interrupts. > > Yes, that is what I am doing : > > if (!frame->valid) > continue; What I meant was that we won't look at the frame->valid flag at all; only the interrupts. e.g. for (int i = 0; i < ARCH_TIMER_MEM_MAX_FRAMES; i++) { if (frame->phys_irq > 0) free_the_phys_irq_somehow(); if (frame->virt_irq > 0) free_the_virt_irq_somehow(); } ... where we somehow figure out the GSI, or we introduce an api like unregister_gsi_for_irq(irq). Since the !valid frames should all have zero for their interrupt fields, no special handling is necessary. That way, we only free the IRQs in one place, it's obvious that we consistently free all of them, etc. > Lorenzo addressed the API issue, we may can fix it by getting GSI info > from DT, then register it until we figure the best frame. > It may need some big change in DT code I'd prefer to keep this constrained to the ACPI code. ;) Thanks, Mark.