Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2386627pxb; Tue, 23 Feb 2021 06:03:24 -0800 (PST) X-Google-Smtp-Source: ABdhPJzsz1xSkjoky1DwdmPsmP8HTVx2B93Kh9/OtmO289cxAayuukqdeRkO1SljCK1TmmscSLfo X-Received: by 2002:a17:906:2e89:: with SMTP id o9mr23286756eji.223.1614089004124; Tue, 23 Feb 2021 06:03:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614089004; cv=none; d=google.com; s=arc-20160816; b=vj5rnsFPSA6/nerJq8gDpPud/uK/Q8wG/L1fVkq5Uh99Sj0QIHI/nIixw9+i8nslr0 u1r83L6njxHeCOuLyai2K7gwcq31K/csF7GxiwK2JT5ATu2JeKrBFB9ABGEguQnksNX1 5g2Nbjad24HHm6SajjgLokujqZC26/Eqa7jufxmE6Ty+LdavAwF1T0ayZovJgROWPeaS vhjkvCBs1qs2GuQ5d1JHgQvzbNloxwd/F4KzFs0pb0h4YCYg67UOgljmsHdFvDq6/QKg of8g19Ll5mF1ar4HZNsKE9l3SAgpFjtmBGmWjxBNU47oR4AC0aAuZu0sh0N8RWMrUsMw yL1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=a7aSOAnwKktvxLeoIXzwcl3KJF8cAZNV4A9g5hJYMYU=; b=TvLyQ7s9r0bqJtuw6oldr47MJ652uYPyqPP4b9t6Rf6lmLlxX+kIS4Y6qq3AWG/M9p Z+3h09v1EUmlnIlewpg2OQU8PXk7Ipal0vo0GKnSPao/1vurET/Xq4SalUKwsh1NM9Sq mCUMMW6h8P6FLHn199M6GBESUzRbklXUNZL0SM0YVpRoaOY6Hm+Xm2WGBUSOf+0jGWgI dOZXqB/HA10NpdrqFC8UfIEiDGEoFfrUkbQxDdgWF4HG5NnfWAWMFfBJi9W7Hmj/Mjp4 fa69ry21d5SPxcVwJA1dHZcb+37vRgDDQTvB/HW3R0eCwrU7DPbdp0LTqdpyf8c9o+ze +nfA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l12si9741865edi.52.2021.02.23.06.02.48; Tue, 23 Feb 2021 06:03:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232173AbhBWKIK (ORCPT + 99 others); Tue, 23 Feb 2021 05:08:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232202AbhBWKHm (ORCPT ); Tue, 23 Feb 2021 05:07:42 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB583C06174A for ; Tue, 23 Feb 2021 02:07:02 -0800 (PST) Received: from pty.hi.pengutronix.de ([2001:67c:670:100:1d::c5]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lEUan-0005RW-MQ; Tue, 23 Feb 2021 11:06:57 +0100 Received: from ore by pty.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1lEUam-00035o-RS; Tue, 23 Feb 2021 11:06:56 +0100 Date: Tue, 23 Feb 2021 11:06:56 +0100 From: Oleksij Rempel To: William Breathitt Gray Cc: Rob Herring , Ahmad Fatoum , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Pengutronix Kernel Team , David Jander , Robin van der Gracht , linux-iio@vger.kernel.org, Linus Walleij , Jonathan Cameron Subject: Re: [PATCH v5 2/2] counter: add IRQ or GPIO based event counter Message-ID: <20210223100656.efbshsh5bz66uhj5@pengutronix.de> References: <20210208135347.18494-1-o.rempel@pengutronix.de> <20210208135347.18494-3-o.rempel@pengutronix.de> <20210215091737.fx6dwiz7tt56wbkr@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-IRC: #ptxdist @freenode X-Accept-Language: de,en X-Accept-Content-Type: text/plain X-Uptime: 10:39:14 up 82 days, 23:45, 41 users, load average: 0.02, 0.05, 0.06 User-Agent: NeoMutt/20170113 (1.7.2) X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c5 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Feb 22, 2021 at 10:43:00AM +0900, William Breathitt Gray wrote: > On Mon, Feb 15, 2021 at 10:17:37AM +0100, Oleksij Rempel wrote: > > > > +static irqreturn_t event_cnt_isr(int irq, void *dev_id) > > > > +{ > > > > + struct event_cnt_priv *priv = dev_id; > > > > + > > > > + atomic_inc(&priv->count); > > > > > > This is just used to count the number of interrupts right? I wonder if > > > we can do this smarter. For example, the kernel already keeps track of > > > number of interrupts that has occurred for any particular IRQ line on a > > > CPU (see the 'kstat_irqs' member of struct irq_desc, and the > > > show_interrupts() function in kernel/irq/proc.c). Would it make sense to > > > simply store the initial interrupt count on driver load or enablement, > > > and then return the difference during a count_read() callback? > > > > This driver do not makes a lot of sense without your chardev patches. As > > soon as this patches go mainline, this driver will be able to send > > event with a timestamp and counter state to the user space. > > > > With other words, we will need an irq handler anyway. In this case we > > can't save more RAM or CPU cycles by using system irq counters. > > It's true that this driver will need an IRQ handler when the timestamp > functionality is added, but deriving the count value is different matter > regardless. There's already code in the kernel to retrieve the number of > interrupts, so it makes sense that we use that rather than rolling our > own -- at the very least to ensure the value we provide to users is > consistent with the ones already provided by other areas of the kernel. We are talking about one or two code lines. If we will take some duplication search engine, it will find that major part of the kernel is matching against it. Newer the less, this driver provides a way to reset the counter. Why should we drop this functionality no advantage? > To that end, I'd like to see your cnt_isr() function removed for this > patchset (you can bring it back once timestamp support is added). Are you suggesting to enable IRQ without interrupt handler? May be i'm missing some thing.. I do not understand it. > Reimplement your cnt_read/cnt_write() functions to instead use > kstat_irqs_usr() from to get the current number of > interrupts the IRQ line and use it to derive your count value for this > driver. I can follow the counter read way, but overwriting system wide counter for local use is bad idea. > > > > +static struct counter_signal event_cnt_signals[] = { > > > > + { > > > > + .id = 0, > > > > + .name = "Channel 0 signal", > > > > > > You should choose a more description name for this Signal; > > > "Channel 0 signal" isn't very useful information for the user. Is this > > > signal the respective GPIO line state? > > > > Sounds plausible. How about "Channel 0, GPIO line state"? > > Ideally, this would match the GPIO name (or I suppose the IRQ number if > not a GPIO line). So in your probe() function you can do something like > this I believe: > > cnt_signals[0].name = priv->gpio->name; to make this possible, i would need hack gpiolib framework and add name/label exporter. But after endless rounds of pingponging me for renaming the driver and removing interrupt handler, i feel like we are not having serious discussion for mainlining this driver. Is it some expensive way to prepare me for 1. April joke? > Of course, you should first check whether this is a GPIO line or IRQ > line and set the name accordingly. Please, let's stop bike-shed for now. This driver has no limitless budget. If there are serious problem, I would love to fix it, but if we still discussing name of the driver or how to misuse kernel interrupt handling, then it makes no sense to continue. Regards, Oleksij -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |