Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp9824433rwl; Sun, 1 Jan 2023 10:56:20 -0800 (PST) X-Google-Smtp-Source: AMrXdXuyIp+lZWg9CNUwm1I0MUbmKPLjtTxawYmYU5dptLxr9BTfNbNuzwnAs/IpBeI/dkC3VQcS X-Received: by 2002:a17:903:240b:b0:192:991f:d8e8 with SMTP id e11-20020a170903240b00b00192991fd8e8mr17324668plo.53.1672599379942; Sun, 01 Jan 2023 10:56:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672599379; cv=none; d=google.com; s=arc-20160816; b=Oc6AAnXV8NdL08QTeV+hcHvZNdvXCfHvRC5lw7vTIeTZr125XiWNJ/6cEFZsj6Xpss 8io1IZzq6G49W+XrDUaWiZAxY8oxgwpMgQbbtcOaZzRTb2oIgr0XIcvlvyLPHDH7fFqA /9Yw1KD+fb2XuHVAKak66rnLtm98A+JSoKjx/YQ3dopetyqbku9tXK+S9bFglYH6eA0x IyX+O4n3H9MfbjuzVcYrI2pJsXreV1R5xDt2lOF4MLXhGgekPgfy9a9DI2sUI0OJQ/UW 8/KPtWxYo7JM/8+TGSnlUFTrkLZni1vbb7kase+jBmdoHTcG5h/ZmpNHMRWnEJPhR6X5 Numw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=zV+r8U+uyILbJMrsnc8nz4otj7n7TRZfcA159F36ua8=; b=x5jJ/NYVJTPvAqgnF1rgbYmRj0ucZ15tC1F5dj0/nWGejxMEJRa11nI7v+PtK+fBbB uw9L871eRUfTrU9c9PWdQ/wPgZF5kz8tHy/T/DcuOEJFIBqEVqLeDU+uH3zmvlzjmS3R 0Zw98bNcIaqI33Qyzil9GoEQ1gjO2pqhSidxJ4T8v1dBULHIOw6S2bxbZr09Ziyqmqve iGYkcWorzSePpz261ZbzQSlDqF3xPq1mW8wyDXkiZXbDv0N1EJ3BKehIuh4LP38UcSk5 r28u8ETntHRIuzYI1xVtBcyKrC62Qy7uzYYNBHR7OWNe9fRMVCZgDKdQz1mFwDmrCnFP jzSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=aiOdnmjL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g7-20020a1709026b4700b00192cf466319si362405plt.12.2023.01.01.10.56.12; Sun, 01 Jan 2023 10:56:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=aiOdnmjL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230033AbjAASci (ORCPT + 60 others); Sun, 1 Jan 2023 13:32:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60532 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229447AbjAAScf (ORCPT ); Sun, 1 Jan 2023 13:32:35 -0500 Received: from mail-il1-x129.google.com (mail-il1-x129.google.com [IPv6:2607:f8b0:4864:20::129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2F1826DD for ; Sun, 1 Jan 2023 10:32:31 -0800 (PST) Received: by mail-il1-x129.google.com with SMTP id o8so14864495ilo.1 for ; Sun, 01 Jan 2023 10:32:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=zV+r8U+uyILbJMrsnc8nz4otj7n7TRZfcA159F36ua8=; b=aiOdnmjLVqsJa494JxM/Z8J/2spEVF+y1wt2A6OzAuUccZOkKsyAAwpqxxAxNReF8F PpLvjst6s5Hu5V6DloGawRphoxOKOeMeEftlJKALLfENcUsLNTzv1HBNMoDou+WKbP8r d0dStqr7e6BwVcKgMDQ7PR32V3/wly+iAWkF07eKcEtKSEfNJ/av5fVyU/7qlLHMw55d dwgQo34Ur9NRAzPgJ5Gj2InhtxI37NA6/DVgZY0rcWZMts8WtBG3Yk3OcUhHWTIMqUF2 aLISP92WT8/+hFmxk/rNdvTSN4wM3rFlp9/S48d7/4Rz/zFpZPDcr4am0tvnfBEK4qCt DOzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zV+r8U+uyILbJMrsnc8nz4otj7n7TRZfcA159F36ua8=; b=focmd2ZOTalx8lSuMbuceAldsLsYT1TsdpqnZHqy1Q0tbVhpqmh6NxULhziQN1POvb YOrmwh6U1xoiTGNdijNBiYHptp7oVz5hfTMMA7yxKFd8A3UGIT8PjrswBppFIa6HIs44 v4Vmcn6Abp+pfDLo9MfCV9QWgqSZF9frBtK6TEFwNypM4Omcq/Q/TLWLz/r8NbRRZP+k buWlfKZOYf9VaIJ++32MAwRqeDXtAeYv5BBEFt3n8wyq2YaWWkbCJ07g9EdlqnOX4z52 sYZD02OxqWPF2GomJeLM8YEXoFtmoYZtsxrD3w41xTM84sA6mlYTXpy/u3PL9xvV3+Qg Ky/Q== X-Gm-Message-State: AFqh2koDjj6S9KtEAcN4yc4cyN3co21K6Qt7pHRYf4NtQ6HGX+giVl39 g+gLZG2RiZcA0RCXCS1pP/Mdlg== X-Received: by 2002:a05:6e02:525:b0:30c:2bb4:a2ea with SMTP id h5-20020a056e02052500b0030c2bb4a2eamr7454639ils.13.1672597950897; Sun, 01 Jan 2023 10:32:30 -0800 (PST) Received: from [10.211.55.3] ([98.61.227.136]) by smtp.gmail.com with ESMTPSA id x2-20020a92d642000000b0030c053fb7ccsm5797894ilp.47.2023.01.01.10.32.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 01 Jan 2023 10:32:30 -0800 (PST) Message-ID: Date: Sun, 1 Jan 2023 12:32:28 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH net-next 3/6] net: ipa: enable IPA interrupt handlers separate from registration To: Caleb Connolly , Alex Elder , davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: mka@chromium.org, evgreen@chromium.org, andersson@kernel.org, quic_cpratapa@quicinc.com, quic_avuyyuru@quicinc.com, quic_jponduru@quicinc.com, quic_subashab@quicinc.com, elder@kernel.org, netdev@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org References: <20221230232230.2348757-1-elder@linaro.org> <20221230232230.2348757-4-elder@linaro.org> Content-Language: en-US From: Alex Elder In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 12/31/22 11:56 AM, Caleb Connolly wrote: > > > On 30/12/2022 23:22, Alex Elder wrote: >> Expose ipa_interrupt_enable() and have functions that register >> IPA interrupt handlers enable them directly, rather than having the >> registration process do that.  Do the same for disabling IPA >> interrupt handlers. > > Hi, >> >> Signed-off-by: Alex Elder >> --- >>   drivers/net/ipa/ipa_interrupt.c |  8 ++------ >>   drivers/net/ipa/ipa_interrupt.h | 14 ++++++++++++++ >>   drivers/net/ipa/ipa_power.c     |  6 +++++- >>   drivers/net/ipa/ipa_uc.c        |  4 ++++ >>   4 files changed, 25 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/net/ipa/ipa_interrupt.c >> b/drivers/net/ipa/ipa_interrupt.c >> index 7b7388c14806f..87f4b94d02a3f 100644 >> --- a/drivers/net/ipa/ipa_interrupt.c >> +++ b/drivers/net/ipa/ipa_interrupt.c >> @@ -135,7 +135,7 @@ static void ipa_interrupt_enabled_update(struct >> ipa *ipa) >>   } >>   /* Enable an IPA interrupt type */ >> -static void ipa_interrupt_enable(struct ipa *ipa, enum ipa_irq_id >> ipa_irq) >> +void ipa_interrupt_enable(struct ipa *ipa, enum ipa_irq_id ipa_irq) >>   { >>       /* Update the IPA interrupt mask to enable it */ >>       ipa->interrupt->enabled |= BIT(ipa_irq); >> @@ -143,7 +143,7 @@ static void ipa_interrupt_enable(struct ipa *ipa, >> enum ipa_irq_id ipa_irq) >>   } >>   /* Disable an IPA interrupt type */ >> -static void ipa_interrupt_disable(struct ipa *ipa, enum ipa_irq_id >> ipa_irq) >> +void ipa_interrupt_disable(struct ipa *ipa, enum ipa_irq_id ipa_irq) >>   { >>       /* Update the IPA interrupt mask to disable it */ >>       ipa->interrupt->enabled &= ~BIT(ipa_irq); >> @@ -232,8 +232,6 @@ void ipa_interrupt_add(struct ipa_interrupt >> *interrupt, >>           return; >>       interrupt->handler[ipa_irq] = handler; >> - >> -    ipa_interrupt_enable(interrupt->ipa, ipa_irq); >>   } >>   /* Remove the handler for an IPA interrupt type */ >> @@ -243,8 +241,6 @@ ipa_interrupt_remove(struct ipa_interrupt >> *interrupt, enum ipa_irq_id ipa_irq) >>       if (WARN_ON(ipa_irq >= IPA_IRQ_COUNT)) >>           return; >> -    ipa_interrupt_disable(interrupt->ipa, ipa_irq); >> - >>       interrupt->handler[ipa_irq] = NULL; >>   } >> diff --git a/drivers/net/ipa/ipa_interrupt.h >> b/drivers/net/ipa/ipa_interrupt.h >> index f31fd9965fdc6..5f7d2e90ea337 100644 >> --- a/drivers/net/ipa/ipa_interrupt.h >> +++ b/drivers/net/ipa/ipa_interrupt.h >> @@ -85,6 +85,20 @@ void ipa_interrupt_suspend_clear_all(struct >> ipa_interrupt *interrupt); >>    */ >>   void ipa_interrupt_simulate_suspend(struct ipa_interrupt *interrupt); >> +/** >> + * ipa_interrupt_enable() - Enable an IPA interrupt type >> + * @ipa:    IPA pointer >> + * @ipa_irq:    IPA interrupt ID >> + */ >> +void ipa_interrupt_enable(struct ipa *ipa, enum ipa_irq_id ipa_irq); > > I think you forgot a forward declaration for enum ipa_irq_id Thanks, I'll verify this and will send v2 with a fix once net-next is open for business again. -Alex > > Kind Regards, > Caleb >> + >> +/** >> + * ipa_interrupt_disable() - Disable an IPA interrupt type >> + * @ipa:    IPA pointer >> + * @ipa_irq:    IPA interrupt ID >> + */ >> +void ipa_interrupt_disable(struct ipa *ipa, enum ipa_irq_id ipa_irq); >> + >>   /** >>    * ipa_interrupt_config() - Configure the IPA interrupt framework >>    * @ipa:    IPA pointer >> diff --git a/drivers/net/ipa/ipa_power.c b/drivers/net/ipa/ipa_power.c >> index 8420f93128a26..9148d606d5fc2 100644 >> --- a/drivers/net/ipa/ipa_power.c >> +++ b/drivers/net/ipa/ipa_power.c >> @@ -337,10 +337,13 @@ int ipa_power_setup(struct ipa *ipa) >>       ipa_interrupt_add(ipa->interrupt, IPA_IRQ_TX_SUSPEND, >>                 ipa_suspend_handler); >> +    ipa_interrupt_enable(ipa, IPA_IRQ_TX_SUSPEND); >>       ret = device_init_wakeup(&ipa->pdev->dev, true); >> -    if (ret) >> +    if (ret) { >> +        ipa_interrupt_disable(ipa, IPA_IRQ_TX_SUSPEND); >>           ipa_interrupt_remove(ipa->interrupt, IPA_IRQ_TX_SUSPEND); >> +    } >>       return ret; >>   } >> @@ -348,6 +351,7 @@ int ipa_power_setup(struct ipa *ipa) >>   void ipa_power_teardown(struct ipa *ipa) >>   { >>       (void)device_init_wakeup(&ipa->pdev->dev, false); >> +    ipa_interrupt_disable(ipa, IPA_IRQ_TX_SUSPEND); >>       ipa_interrupt_remove(ipa->interrupt, IPA_IRQ_TX_SUSPEND); >>   } >> diff --git a/drivers/net/ipa/ipa_uc.c b/drivers/net/ipa/ipa_uc.c >> index 0a890b44c09e1..af541758d047f 100644 >> --- a/drivers/net/ipa/ipa_uc.c >> +++ b/drivers/net/ipa/ipa_uc.c >> @@ -187,7 +187,9 @@ void ipa_uc_config(struct ipa *ipa) >>       ipa->uc_powered = false; >>       ipa->uc_loaded = false; >>       ipa_interrupt_add(interrupt, IPA_IRQ_UC_0, >> ipa_uc_interrupt_handler); >> +    ipa_interrupt_enable(ipa, IPA_IRQ_UC_0); >>       ipa_interrupt_add(interrupt, IPA_IRQ_UC_1, >> ipa_uc_interrupt_handler); >> +    ipa_interrupt_enable(ipa, IPA_IRQ_UC_1); >>   } >>   /* Inverse of ipa_uc_config() */ >> @@ -195,7 +197,9 @@ void ipa_uc_deconfig(struct ipa *ipa) >>   { >>       struct device *dev = &ipa->pdev->dev; >> +    ipa_interrupt_disable(ipa, IPA_IRQ_UC_1); >>       ipa_interrupt_remove(ipa->interrupt, IPA_IRQ_UC_1); >> +    ipa_interrupt_disable(ipa, IPA_IRQ_UC_0); >>       ipa_interrupt_remove(ipa->interrupt, IPA_IRQ_UC_0); >>       if (ipa->uc_loaded) >>           ipa_power_retention(ipa, false);