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=-6.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no 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 6F82FC432BE for ; Fri, 6 Aug 2021 08:01:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 560E960EE5 for ; Fri, 6 Aug 2021 08:01:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241950AbhHFIBR (ORCPT ); Fri, 6 Aug 2021 04:01:17 -0400 Received: from mail.kernel.org ([198.145.29.99]:39192 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230119AbhHFIBQ (ORCPT ); Fri, 6 Aug 2021 04:01:16 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9554E61164; Fri, 6 Aug 2021 08:01:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1628236860; bh=ztwkXxuWZMz/g6yZbgT0o5O4xY3oCyRVtcaRxW+vzjc=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=GJcB4WYC17pGs7DrCFLhOVLYml6GF4ytUAgy+rJpR/UpPv+ykfP9B+7FDb65CjZMf EQ9P7LssjEowBvl7E+IYCesSfHJUBCNu4sMbwbNkQ8Wl4+cB4lmB6xoB/pj+J5UHSV mm+XML2WZBrGO0/3DMsY2W40k8Qjng1CqIAHlhMmdhC6/ISkLC4AQXRtJ/dJc9bRVp 73yeP//jZ6tpI7O6cYQW6riWzLkTH15TVGrbOz7d+kk/8PEMKcEbnEMUuNyfxe70M3 Ksy0Y+uOxu3/6mmIpHDgzBN2KpCySBf2GTMbp6MddPn4cn+oIxVJ0Zxiu1qpJ5XRkZ H8/5hxq6Tfqog== Received: by mail-wr1-f49.google.com with SMTP id c9so9884393wri.8; Fri, 06 Aug 2021 01:01:00 -0700 (PDT) X-Gm-Message-State: AOAM531nGkBErkA5AQucV+qGafBwBE99QHbCBm5qxq2HdzBQ4kU5kbD4 cAeYvSalAoPPiy03zt0vbNYeFbm6LXZdgnQ7cJE= X-Google-Smtp-Source: ABdhPJwo6F2j4b2SHDNHGQozJB+IoZwYRfg4nlpJNBaRYbtLxX3J/PyAE2/Fn575dufIMYN5qJa9QILoPOtN4acsUKE= X-Received: by 2002:a5d:44c7:: with SMTP id z7mr9646198wrr.286.1628236859101; Fri, 06 Aug 2021 01:00:59 -0700 (PDT) MIME-Version: 1.0 References: <75c8e6e5e8dfa1889938f3a6b2d991763c7a3717.1627989586.git.viresh.kumar@linaro.org> <0100017b1610f711-c53c79f2-9e28-4c45-bb42-8db09688b18e-000000@email.amazonses.com> <20210805124922.j7lts7tfmm4t2kpf@vireshk-i7> <0100017b1a6c0a05-e41dc16c-b326-4017-a63d-a24a6c1fde70-000000@email.amazonses.com> In-Reply-To: <0100017b1a6c0a05-e41dc16c-b326-4017-a63d-a24a6c1fde70-000000@email.amazonses.com> From: Arnd Bergmann Date: Fri, 6 Aug 2021 10:00:42 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [Stratos-dev] [PATCH V4 2/2] gpio: virtio: Add IRQ support To: Viresh Kumar Cc: "Michael S. Tsirkin" , Viresh Kumar , Linus Walleij , Cornelia Huck , Linux Kernel Mailing List , "open list:DRM DRIVER FOR QEMU'S CIRRUS DEVICE" , Bartosz Golaszewski , Geert Uytterhoeven , "open list:GPIO SUBSYSTEM" , Marc Zyngier , Thomas Gleixner , "Enrico Weigelt, metux IT consult" , Jason Wang , Stratos Mailing List Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Aug 6, 2021 at 9:44 AM Viresh Kumar via Stratos-dev wrote: > > On 05-08-21, 15:10, Arnd Bergmann wrote: > > I hope this can still be simplified by working out better which state > > transitions are needed exactly. In particular, I would expect that we > > can get away with not sending a VIRTIO_GPIO_MSG_IRQ_TYPE > > for 'mask' state changes at all, but use that only for forcing 'enabled' > > state changes. > > Something like this ? > static void virtio_gpio_irq_mask(struct irq_data *d) > { > /* Nothing to do here */ > } You'd have to do /something/ here I think, if only setting the flag that we don't want to deliver the next interrupt. > static void virtio_gpio_irq_unmask(struct irq_data *d) > { > struct gpio_chip *gc = irq_data_get_irq_chip_data(d); > struct virtio_gpio *vgpio = gpiochip_get_data(gc); > > /* Queue the buffer unconditionally on unmask */ > virtio_gpio_irq_prepare(vgpio, d->hwirq); > } And check the flag here to not requeue it if it's masked. Now, there is already a flag in the irq descriptor, so rather than having double accounting, the easy way may be to just use irqd_irq_masked()/irq_state_set_masked(), or have the irq core take care of this. Arnd