Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp2137921pxk; Mon, 14 Sep 2020 05:52:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwVB1sQpGcjQUevF+MGVY/jx5fwcBUrRMcRcIdUolYHvbb9klfX9CyWVseHCbFoO8cLI2kZ X-Received: by 2002:a17:906:d0c9:: with SMTP id bq9mr14396112ejb.352.1600087939211; Mon, 14 Sep 2020 05:52:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600087939; cv=none; d=google.com; s=arc-20160816; b=TLVIMacLWqFBBy7DwuOYlbx+Z8Z90qGFXPDI1/beTRv0iZw6IvLEyw5hc3SxWRQB9F rtzNl/toy1YaL6k6gb+kqnqsjTx1SriHncaMgAOABHy8e+SkmyW/t54LYw0lfUTPb3pf RfV0e7ePFNWiMSybBh3Hl3o9ckNzqFjC6zW8IhO2fjQ0VCJLd7LrbLkDsgmet7A9G6nx s+AWmzNo7/QWosQk9nTEqtCSktUD0I+h7+3Mni/OMsLObFwIE6MTUfrs68+BCU6uwMy8 QgNU1HuxnsxbaixUiGV2+zlQqYsNZfUPe9aRaPLQxzr+oHKD/qtoG4jQb4yVZaz1SWOA 6RVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=OgGiEsLuSuiUe7mlIYYTMOaSRD7tRf9jAKMOWkJf9zs=; b=e9MUUxkwrxMEOky+Ybpvw7A/o5QAcdslZJ7Bkxzl+MfqG1vHP37x/GIWjFSOErqcVU BMc4gJDSw4tB4/6Qb7XoVuOzPf2uwme3Cej21jDd2fA3VY6tpFeDY5KmHO+oB7PWwxcB Ztz5xb/TP9fzl8XfUPUPBYaEypQQoU15EFG7UOfBiK1fQQT9Uvr1xdcFSehqGc7+Gljv Q3ZsCH8KTQBvZXawZ/14H6J9UJEnIm6GbolowMHsZsL8kaS+tCM/2rzWyS9UHRgPntoY zBspCNhvPGeJ+Bttbv88xzmiN9bHThkDPfkAvWbrv+VsXcYsLDiMiQnPP3C+PYTz1L7T E1rA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=QFRPSGVQ; 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 a14si7362290edn.42.2020.09.14.05.51.56; Mon, 14 Sep 2020 05:52:19 -0700 (PDT) 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; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=QFRPSGVQ; 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 S1726568AbgINMuu (ORCPT + 99 others); Mon, 14 Sep 2020 08:50:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50390 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726563AbgINMsd (ORCPT ); Mon, 14 Sep 2020 08:48:33 -0400 Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 404F1C06174A for ; Mon, 14 Sep 2020 05:47:59 -0700 (PDT) Received: by mail-ed1-x544.google.com with SMTP id a12so17403174eds.13 for ; Mon, 14 Sep 2020 05:47:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=OgGiEsLuSuiUe7mlIYYTMOaSRD7tRf9jAKMOWkJf9zs=; b=QFRPSGVQl7B+K/P2IZsQvAYmbAXW++iaHs8RsX8FifHoNzVt3vliZEMqSv3Pfsje0z hT+PZPy+mnzak0iEQzBnudiUlAAuaw4S/vdxGSbTErE2Py23lR2yE+gtgjE2oOjfgcKY VinxEusaZtclWKO2KNMMXkoZC+8cIlxLvQrHESJcDLNDzAr9VmWljDq+ARl6w6Bat4Ug CkULXJ2fYOw9EDT8sc/mZvxHj3aPeIkWeijRG8MvsJeDGflDMidBb0wEBko/bLbcEzK8 V93heRhefUiy/8fBCPvOWy8bPjbsQKivmyGFHpTH5wkMGveB1vel91jKtI45KPKF5rqc ZrSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=OgGiEsLuSuiUe7mlIYYTMOaSRD7tRf9jAKMOWkJf9zs=; b=Qd90yQlwgyT3u004ovBmC3UjqhdtaOLn7CJrUi03DKerM09ykaLtih0E1T2q9mmwaK TWOfsE4Cm3813G2e0TlAzusiu6awl86O573B2PZMx91ise1ScVLEtPic48aR5H0IDbYp KFUM0dsmdfg4wBvscZf3Hsp04bakPIP3Pga/kU/Ry+9wJiJY0vVjVhpiLaDx/3ioh9iM k6HANpdt+QHXzgGdUcubs/XjSjpsH6m7Q8gYS0B+5K+cm1IhE2ykO3lzsk/R1W9srWeF ypHnDVYZBZCCzAeqdVtwkENhCw+GRFTsVycEmmkRje9Am9ll0lf/kvweAX97X3a5OHuS gp7A== X-Gm-Message-State: AOAM533P3S2ZpO7bcVpjrutuQY8htetkN7V+ktV7v77oO6mdi/1wHskJ eTULiGlq2r2dOs9jJjkntLJ+YpswxfGaXbbaRORNztWfll8= X-Received: by 2002:a05:6402:17ec:: with SMTP id t12mr16394883edy.328.1600087677902; Mon, 14 Sep 2020 05:47:57 -0700 (PDT) MIME-Version: 1.0 References: <20200909102640.1657622-1-warthog618@gmail.com> In-Reply-To: <20200909102640.1657622-1-warthog618@gmail.com> From: Bartosz Golaszewski Date: Mon, 14 Sep 2020 14:47:47 +0200 Message-ID: Subject: Re: [PATCH v8 00/20] gpio: cdev: add uAPI v2 To: Kent Gibson , Arnd Bergmann Cc: LKML , linux-gpio , Linus Walleij Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Sep 9, 2020 at 12:27 PM Kent Gibson wrote: > > This patchset defines and implements a new version of the > GPIO CDEV uAPI to address existing 32/64-bit alignment issues, add > support for debounce, event sequence numbers, and allow for requested > lines with different configurations. > It provides some future proofing by adding optional configuration fields > and padding reserved for future use. > > The series can be partitioned into three blocks; the first two patches > are minor fixes that impact later patches, the next eleven contain the > v2 uAPI definition and implementation, and the final seven port the GPIO > tools to the v2 uAPI and extend them to use new uAPI features. > > The more complicated patches include their own commentary where > appropriate. > > Cheers, > Kent. > > Changes for v8: > - fix BUILD_BUG_ON conditions and relocate them before the return in > gpiolib_cdev_register() (patch 07) > > Changes for v7: > - use _BITULL for ULL flag definitions (patch 04) > - add check on kmalloc_array return value in linereq_get_values() > (patch 07) and linereq_set_values_unlocked() (patch 11) > - restore v1 functions used by gpio-mockup selftests (patch 17) > > Changes for v6: > - flags variable in linereq_create() should be u64 not unsigned long > (patch 07) > - remove restrictions on configuration changes - any change from one > valid state to another valid state is allowed. (patches 09, 10, 12) > > Changes for v5: > > All changes for v5 fix issues with the gpiolib-cdev.c implementation, > in patches 07-12. > The uAPI is unchanged from v4, as is the port of the tools. > > - use IS_ALIGNED in BUILD_BUG_ON checks (patch 07) > - relocate BUILD_BUG_ON checks to gpiolib_cdev_register (patch 07) > - s/requies/requires/ (patch 07) > - use unsigned int for variables that are never negative > - change lineinfo_get() parameter from cmd to bool watch (patch 08) > - flagsv2 in gpio_v2_line_info_to_v1() should be u64, not int (patch 08) > - change "_locked" suffixed function names to "_unlocked" (patch 10 and > 11) > - be less eager breaking long lines > - move commentary into checkin comment where appropriate - particularly > patch 12 > - restructure the request/line split - rename struct line to > struct linereq, and struct edge_detector to struct line, and relocate > the desc field from linereq to line. The linereq name was selected > over line_request as function names such as linereq_set_values() are > more clearly associated with requests than line_request_set_values(), > particularly as there is also a struct line. And linereq is as > informative as linerequest, so I went with the shortened form. > > Changes for v4: > - bitmap width clarification in gpiod.h (patch 04) > - fix info offset initialisation bug (patch 08 and inserting patch 01) > - replace strncpy with strscpy to remove compiler warnings > (patch 08 and inserting patch 02) > - fix mask handling in line_get_values (patch 07) > > Changes for v3: > - disabling the character device from the build requires EXPERT > - uAPI revisions (see patch 02) > - replace padding_not_zeroed with calls to memchr_inv > - don't use bitops on 64-bit flags as that doesn't work on BE-32 > - accept first attribute matching a line in gpio_v2_line_config.attrs > rather than the last > - rework lsgpio port to uAPI v2 as flags reverted to v1 like layout > (since patch v2) > - swapped patches 17 and 18 to apply debounce to multiple monitored > lines > > Changes for v2: > - split out cleanup patches into a separate series. > - split implementation patch into a patch for each ioctl or major feature. > - split tool port patch into a patch per tool. > - rework uAPI to allow requested lines with different configurations. > Kent Gibson (20): > gpiolib: cdev: desc_to_lineinfo should set info offset > gpiolib: cdev: replace strncpy with strscpy > gpio: uapi: define GPIO_MAX_NAME_SIZE for array sizes > gpio: uapi: define uAPI v2 > gpiolib: make cdev a build option > gpiolib: add build option for CDEV v1 ABI > gpiolib: cdev: support GPIO_V2_GET_LINE_IOCTL and > GPIO_V2_LINE_GET_VALUES_IOCTL > gpiolib: cdev: support GPIO_V2_GET_LINEINFO_IOCTL and > GPIO_V2_GET_LINEINFO_WATCH_IOCTL > gpiolib: cdev: support edge detection for uAPI v2 > gpiolib: cdev: support GPIO_V2_LINE_SET_CONFIG_IOCTL > gpiolib: cdev: support GPIO_V2_LINE_SET_VALUES_IOCTL > gpiolib: cdev: support setting debounce > gpio: uapi: document uAPI v1 as deprecated > tools: gpio: port lsgpio to v2 uAPI > tools: gpio: port gpio-watch to v2 uAPI > tools: gpio: rename nlines to num_lines > tools: gpio: port gpio-hammer to v2 uAPI > tools: gpio: port gpio-event-mon to v2 uAPI > tools: gpio: add multi-line monitoring to gpio-event-mon > tools: gpio: add debounce support to gpio-event-mon > > drivers/gpio/Kconfig | 29 +- > drivers/gpio/Makefile | 2 +- > drivers/gpio/gpiolib-cdev.c | 1278 +++++++++++++++++++++++++++++++++-- > drivers/gpio/gpiolib-cdev.h | 15 + > drivers/gpio/gpiolib.c | 5 + > drivers/gpio/gpiolib.h | 6 + > include/uapi/linux/gpio.h | 317 ++++++++- > tools/gpio/gpio-event-mon.c | 146 ++-- > tools/gpio/gpio-hammer.c | 56 +- > tools/gpio/gpio-utils.c | 176 ++++- > tools/gpio/gpio-utils.h | 48 +- > tools/gpio/gpio-watch.c | 16 +- > tools/gpio/lsgpio.c | 60 +- > 13 files changed, 1949 insertions(+), 205 deletions(-) > > > base-commit: feeaefd378cae2f6840f879d6123ef265f8aee79 > -- > 2.28.0 > Hi Arnd, If you have a moment: could you take a look at this series - especially the uAPI header (patch 4)? If you don't have it in your inbox then let us know and we'll ask Kent to resend it with you in copy. Best regards, Bartosz Golaszewski