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=-11.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 AA2A6C433FE for ; Wed, 22 Sep 2021 08:47:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8F2946136F for ; Wed, 22 Sep 2021 08:47:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233969AbhIVIt0 (ORCPT ); Wed, 22 Sep 2021 04:49:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32824 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233792AbhIVItZ (ORCPT ); Wed, 22 Sep 2021 04:49:25 -0400 Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0097BC061574 for ; Wed, 22 Sep 2021 01:47:56 -0700 (PDT) Received: by mail-wr1-x431.google.com with SMTP id w17so4411694wrv.10 for ; Wed, 22 Sep 2021 01:47:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=pAYhvdbQhEpv1Wh9q8xT8e96qoX2U7Z2ejQBgBlK0iM=; b=swzIFR7CrUc4mZ5LIpIhb7zGqJLxmdwk6OugTiBtghMuQB8EvVhU14VWZSYAMRt05F MkumWHQ5Ks6U8ix9+15Hvas02OJnP4lJsChxShwXfcska7QBxDjxX0TitfOYmLNBzCRx PYR0lsyCTfx8bbSzbl9v56oISholDxIvAezSZ2PG4lYXcsdfTZrdT2t860kssrGwu7WI IzmQCTEDr3KsPQWvnF04SyR4dWoZcveBXvEtOmVVvy66PlkFeLnNuwLCsN8VSQ4vwwjF x3ap5/+bpjdwOfQRYMy1/O0pSGaSDeRisi6XSufUmWb/8+/MjZAFu9Scbgdq1l8r7HDl +RUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=pAYhvdbQhEpv1Wh9q8xT8e96qoX2U7Z2ejQBgBlK0iM=; b=QSHs7e2U6BPFJMiOtNm6BsBnebwi2Uf/VxZoeGk6V6I//ueZschhsB6Y1ObUW1dq65 rejG/s/ziOW5DKiUkr7wbpD6Pdnw51c5X3SQ0mnEl3AMtsZZW6Tz1mxhdMYSuIsRvCo6 BD0QlNLLp8Uk0LAZ/RnLjmOhjmgbkKyLYF0Qo8SkugCvX/qqwibOzYQHrYS+Ss5YWTbb VMdmq4XpuzwgXo/D7TCp9fGX9PbOSyBSW0HwtrJv8GJXAZLJ3O+22/XwUqkXJFZP1Xvo 4UKilf0pg5p7AGyd6NcUXVsYty4+h4XC8pX/NomQIxbnz3c98NT7k/YunwaPlr7+K+gZ g7ng== X-Gm-Message-State: AOAM5320L6yIxDA/0TGnmgEN+SLa4mM+1G3l1S6jcTHKdSoriVQ5+qAg fvDY7IFxteWPbOwQ9213/EwV5g== X-Google-Smtp-Source: ABdhPJzQIuzkLsUt7UAAr4H02X/gRK5SZ2Wy5Yh2LP4KGwipxvO7Kzusr3V3KnaDMhQX63crA26wAg== X-Received: by 2002:a05:600c:3506:: with SMTP id h6mr9298334wmq.62.1632300474417; Wed, 22 Sep 2021 01:47:54 -0700 (PDT) Received: from debian-brgl.home ([2a01:cb1d:334:ac00:7d50:ff5:f5c1:e225]) by smtp.gmail.com with ESMTPSA id v10sm1591048wri.29.2021.09.22.01.47.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Sep 2021 01:47:54 -0700 (PDT) From: Bartosz Golaszewski To: Joel Becker , Christoph Hellwig , Shuah Khan , Linus Walleij , Andy Shevchenko , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Geert Uytterhoeven , Kent Gibson , Jonathan Corbet , Greg Kroah-Hartman , Al Viro , Jack Winch , Viresh Kumar Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH v6 0/8] gpio: implement the configfs testing module Date: Wed, 22 Sep 2021 10:47:25 +0200 Message-Id: <20210922084733.5547-1-brgl@bgdev.pl> X-Mailer: git-send-email 2.30.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-doc@vger.kernel.org From: Bartosz Golaszewski I'm respinning this series now because I noticed that I need to start writing tests for my work on the new libgpiod v2 code to make sense (it's just becoming too complicated to make even remotely functional without test coverage). At the same time I don't want to rewrite the tests using gpio-mockup if the goal is to replace it with gpio-sim anyway. I fixed issues pointed out by Al Viro and made sure that references are correctly counted (including error paths) and that memory allocated for the pending and live groups gets freed. === Cc'ing Viresh too. Viresh: while there's still a long way to go before the libgpio v2.0 release, in order to merge the Rust bindings, we'll need a test-suite similar to what we have now for C++ and Python bindings, except that it will have to be based on the gpio-sim module when it makes its way into mainline. === This series adds a new GPIO testing module based on configfs committable items and sysfs. The goal is to provide a testing driver that will be configurable at runtime (won't need module reload) and easily extensible. The control over the attributes is also much more fine-grained than in gpio-mockup. This series also contains a respin of the patches I sent separately to the configfs maintainers - these patches implement the concept of committable items that was well defined for a long time but never actually completed. Apart from the new driver itself, its selftests and the configfs patches, this series contains some changes to the bitmap API - most importantly: it adds devres managed variants of bitmap_alloc() and bitmap_zalloc(). v1 -> v2: - add selftests for gpio-sim - add helper programs for selftests - update the configfs rename callback to work with the new API introduced in v5.11 - fix a missing quote in the documentation - use !! whenever using bits operation that are required to return 0 or 1 - use provided bitmap API instead of reimplementing copy or fill operations - fix a deadlock in gpio_sim_direction_output() - add new read-only configfs attributes for mapping of configfs items to GPIO device names - and address other minor issues pointed out in reviews of v1 v2 -> v3: - use devm_bitmap_alloc() instead of the zalloc variant if we're initializing the bitmap with 1s - drop the patch exporting device_is_bound() - don't return -ENODEV from dev_nam and chip_name configfs attributes, return a string indicating that the device is not available yet ('n/a') - fix indentation where it makes sense - don't protect IDA functions which use their own locking and where it's not needed - use kmemdup() instead of kzalloc() + memcpy() - collected review tags - minor coding style fixes v3 -> v4: - return 'none' instead of 'n/a' from dev_name and chip_name before the device is registered - use sysfs_emit() instead of s*printf() - drop GPIO_SIM_MAX_PROP as it's only used in an array's definition where it's fine to hardcode the value v4 -> v5: - drop lib patches that are already upstream - use BIT() instead of (1UL << bit) for flags - fix refcounting for the configfs_dirent in rename() - drop d_move() from the rename() callback - free memory allocated for the live and pending groups in configfs_d_iput() and not in detach_groups() - make sure that if a group of some name is in the live directory, a new group with the same name cannot be created in the pending directory v5 -> v6: - go back to using (1UL << bit) instead of BIT() - if the live group dentry doesn't exist for whatever reason at the time when mkdir() in the pending group is called (would be a BUG()), return -ENOENT instead of -EEXIST which should only be returned if given subsystem already exists in either live or pending group Bartosz Golaszewski (8): configfs: increase the item name length configfs: use (1UL << bit) for internal flags configfs: implement committable items samples: configfs: add a committable group gpio: sim: new testing module selftests: gpio: provide a helper for reading chip info selftests: gpio: add a helper for reading GPIO line names selftests: gpio: add test cases for gpio-sim Documentation/admin-guide/gpio/gpio-sim.rst | 72 ++ Documentation/filesystems/configfs.rst | 6 +- drivers/gpio/Kconfig | 8 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio-sim.c | 877 ++++++++++++++++++ fs/configfs/configfs_internal.h | 22 +- fs/configfs/dir.c | 276 +++++- include/linux/configfs.h | 3 +- samples/configfs/configfs_sample.c | 153 +++ tools/testing/selftests/gpio/.gitignore | 2 + tools/testing/selftests/gpio/Makefile | 4 +- tools/testing/selftests/gpio/config | 1 + tools/testing/selftests/gpio/gpio-chip-info.c | 57 ++ tools/testing/selftests/gpio/gpio-line-name.c | 55 ++ tools/testing/selftests/gpio/gpio-sim.sh | 229 +++++ 15 files changed, 1743 insertions(+), 23 deletions(-) create mode 100644 Documentation/admin-guide/gpio/gpio-sim.rst create mode 100644 drivers/gpio/gpio-sim.c create mode 100644 tools/testing/selftests/gpio/gpio-chip-info.c create mode 100644 tools/testing/selftests/gpio/gpio-line-name.c create mode 100755 tools/testing/selftests/gpio/gpio-sim.sh -- 2.30.1