From patchwork Thu Jul 22 11:58:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Babic X-Patchwork-Id: 1508662 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::43d; helo=mail-wr1-x43d.google.com; envelope-from=swupdate+bncbcxploxj6ikrb5n24wdqmgqedpnpk7i@googlegroups.com; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20161025 header.b=lb4VHstH; dkim-atps=neutral Received: from mail-wr1-x43d.google.com (mail-wr1-x43d.google.com [IPv6:2a00:1450:4864:20::43d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4GVrZk0GH4z9sfR for ; Thu, 22 Jul 2021 21:58:52 +1000 (AEST) Received: by mail-wr1-x43d.google.com with SMTP id 5-20020a0560001565b029013fe432d176sf2354651wrz.23 for ; Thu, 22 Jul 2021 04:58:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1626955126; cv=pass; d=google.com; s=arc-20160816; b=W5iRZ6FKmeVKccBEbVImScLBwXAPKwrVB1MXI+v2eh2gMPWPdk+kBBuzGyZ+K6jBLu f+DqS2EyERa7V/KtvNAi6m+4tPLcIGt+hgn/TM80hZAs+karwemIjky4oLZIIssqFC+U Q1FG0SxnjtCQou9vDnRs9QKb4qDBtX+QeB8GjbFvP59q4V+dEEGaJq6NxJx/HPFiL2bn OwSUdcTkuZ4QAPviGTaIE84pu42nGfQBbbK3JUEylJaRZK9uDbomyB8kMamtJb+ZA9aN S4Ca6/KbJleBqupiW++UWvlXTPUPGvbo9HUcLXpwE1rD6RSfLt4UU4f8hCKfzwPuZbFB 3MiQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:message-id:date :subject:cc:to:from:sender:dkim-signature; bh=pYLDkUX7sBP0Fe5P5vsxIa3K8iL+P5E6Fkjm+3Qae9Q=; b=fjhVGzGNVPrTgX2IBH8kN6NoM5V1kbufZx6L3+rEUbZWws5PsVMaLByARHkhThzkc9 GYAc2b77j0fh30HG8f6mdi8uWcIpmQeffDgwrA1akuUdgSkdgIjjAUGQzm4u2RgQOjcy amxVYzv6e+NlDuO7R40OCnP9/RWU7yWP/Q6P8GE2wdF5ByoSoyRzehpN+hbiq2t0QHf5 zXAWmeIbw/2P0ayxyNSFXIFU/FKOvTvqKDn+es/hlW6LEkZfa0G+FHs6xBYo4Lpm2Raq g3j2DJfyEjgRmPeypOLLR2z8CWfVtafP5JjBqICVOBQ8gsbpLuJhagEjRwzDrOJRohbE vHNQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=neutral (google.com: 212.18.0.9 is neither permitted nor denied by domain of sbabic@denx.de) smtp.mailfrom=sbabic@denx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :x-original-sender:x-original-authentication-results:precedence :mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=pYLDkUX7sBP0Fe5P5vsxIa3K8iL+P5E6Fkjm+3Qae9Q=; b=lb4VHstHunnAv7OZQbtZtPbqdffj/d01EmuIP8S+02x3TQw32+F4IK4DfNoufN5shh Oc8lByJv/zOZdzOBqHTZ25WRnqbQsGAzuOQQijGZe/mqx3lOkt0auHG8ZcKKmMWWfHtf 67tlH0U8/lIy9+yF5D3c35VgzkfWDKPd/V/UQEQ33Icua80GmtDqRjlW/ZHY/HGpOlt5 KE8PJ7Fg8Pf3bSrlTuD5FOps9VLczWcYdhUBR8CRO3N7iYq2/lDWyILmD/h0S7zrO+a2 Fnp5EILKRR3xSRCgwU/tlG1RCzBQQpNT4/3bI92TbBgxJSHgpzo9yQb9WMigVpauKIPx UGhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:x-spam-checked-in-group:list-post :list-help:list-archive:list-subscribe:list-unsubscribe; bh=pYLDkUX7sBP0Fe5P5vsxIa3K8iL+P5E6Fkjm+3Qae9Q=; b=ig5T6rCB3FELwHtcv1BPTjPpENZBynB0+gQ0ozmLQwLGfKy2o3ikIDnX09Qc6kV0jj /TyJmCPZH4/dvtQSjHMjA1CJa1vZXswTRDmaUVv5FZIP6VYDmWgVKorRjTl2XNQtdmKX wjjUDjVrMx/oIBJv22so+DkOLfzBNEv85got8AQV2JKS8JCBl3yaHmpJ0gqIYNnOTrhl Wgz+9I7+VKAqyT5jFEo9TOPEegSPZMpn4/qGrhJt3CScOfl9ipQQ5gJGLulkIljk6sqv iE2+1lVztzJj1KyCHJnOd5tKfYCIkmUlD9tYo4iyo/s98IyMfySR8Lg1QinSsbVS3j3d vlkw== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOAM533UetSqgr3f/u+eKl1d1gF7tjdiWj02IXSnB69L9WaecKJx2CmT UXhWbQ4WRYkIjsWhwMQFqgU= X-Google-Smtp-Source: ABdhPJw49+8jcOPAp+EdGID0+7qO05KKIcYymCCSUWTTo0IM8Sc4EyiKwF3xehsl2Incrq7kFrOlPw== X-Received: by 2002:a5d:4912:: with SMTP id x18mr49481132wrq.310.1626955125995; Thu, 22 Jul 2021 04:58:45 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:adf:dd86:: with SMTP id x6ls860138wrl.1.gmail; Thu, 22 Jul 2021 04:58:45 -0700 (PDT) X-Received: by 2002:adf:c448:: with SMTP id a8mr47584565wrg.103.1626955125062; Thu, 22 Jul 2021 04:58:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626955125; cv=none; d=google.com; s=arc-20160816; b=MhNMl+BzLIViNV4Ni8FSuT8/ZqdLL4UTTQMNaNvuCVa1E1EdmK7diPRgHarSkY5YjR hnTXtgb93CgmV8+qETue3njfKqPyXscl1D7vzTwI3qPi1RywW9VKOaNHgod1L5oTXNQr 62H9SNeG64FBheOQw1IEil8PD095u0oElew/wMAwag+C2xq9jYLZltq/yhJ4wunEZle1 QR6rn+0+4Usm76CH9KLlzc3Mo474skeuidgzu8x9ImktwF5FPfYRupSxF8VbK6fhmbP5 k8ySoLXe+0NFjHXnb9pW/5hIulq85NtrDBBRI48g9rOhrx7ZlXuU7ClmFh3/kTs/6fUQ njPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from; bh=zFBOISYnm244GbRGw/9KNmQhbj2mugXV87Y1CEVkTsc=; b=git7LPBbDMmEhTjy4MKWSHYdp628mdMts5bcU041RXz8LN5LxkXtNMwy7cKpMrH+nJ 1aHw+SMg8wxVfBKcl8N/DUSsyEO4fMGLThtzvO/CTJsUICd94P0JAmkuvu0JaprySYy/ KTS7J2U2he+3s+qa6tlheT6EHI8TxLh9ZET+UfKwAVt09AOyIBxTcy0wg+nzO79hPjqJ xXZOqI1Cz/2zEZ36F7X4lbdKHu0NLEvwJJaMHoBb25AKv9lat9RUjnEldEqkrroo0iZG tqOO7DnilikY58em6oDOHAm0CTGyRuc6KKMHVB8UV2HjrJ7vvJGO/T994XKEGZR7V8w3 4BlQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 212.18.0.9 is neither permitted nor denied by domain of sbabic@denx.de) smtp.mailfrom=sbabic@denx.de Received: from mail-out.m-online.net (mail-out.m-online.net. [212.18.0.9]) by gmr-mx.google.com with ESMTPS id v4si1307876wrg.2.2021.07.22.04.58.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 22 Jul 2021 04:58:45 -0700 (PDT) Received-SPF: neutral (google.com: 212.18.0.9 is neither permitted nor denied by domain of sbabic@denx.de) client-ip=212.18.0.9; Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4GVrZX65kbz1qxln; Thu, 22 Jul 2021 13:58:44 +0200 (CEST) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4GVrZX5qy5z1qwYc; Thu, 22 Jul 2021 13:58:44 +0200 (CEST) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id hGguDIjUGcEt; Thu, 22 Jul 2021 13:58:44 +0200 (CEST) Received: from babic.homelinux.org (host-88-217-136-221.customer.m-online.net [88.217.136.221]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPS; Thu, 22 Jul 2021 13:58:43 +0200 (CEST) Received: from localhost (mail.babic.homelinux.org [127.0.0.1]) by babic.homelinux.org (Postfix) with ESMTP id 5F8874542983; Thu, 22 Jul 2021 13:58:43 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at babic.homelinux.org Received: from babic.homelinux.org ([IPv6:::1]) by localhost (mail.babic.homelinux.org [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id TG2ybCMAvrPB; Thu, 22 Jul 2021 13:58:41 +0200 (CEST) Received: from paperino.fritz.box (paperino.fritz.box [192.168.178.48]) by babic.homelinux.org (Postfix) with ESMTP id DD8A84540D40; Thu, 22 Jul 2021 13:58:40 +0200 (CEST) From: Stefano Babic To: swupdate@googlegroups.com Cc: Stefano Babic Subject: [swupdate] [[libubootenv] [PATCH 1/2] Add configuration for disabling MTD lock Date: Thu, 22 Jul 2021 13:58:38 +0200 Message-Id: <20210722115839.223096-1-sbabic@denx.de> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Original-Sender: sbabic@denx.de X-Original-Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 212.18.0.9 is neither permitted nor denied by domain of sbabic@denx.de) smtp.mailfrom=sbabic@denx.de Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Some flashes have issue by locking/unlocking. The additional flag in configuration file allows to disable the LOCK/UNLOCK mechanism in MTD. Signed-off-by: Stefano Babic --- src/uboot_env.c | 18 ++++++++++++------ src/uboot_private.h | 2 ++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/uboot_env.c b/src/uboot_env.c index b97507a..34962e6 100644 --- a/src/uboot_env.c +++ b/src/uboot_env.c @@ -51,6 +51,11 @@ ((tvar) = LIST_NEXT((var), field), 1); \ (var) = (tvar)) +#define MTDLOCK(dev, psector) \ + if (!dev->disable_mtd_lock) ioctl (dev->fd, MEMLOCK, psector) +#define MTDUNLOCK(dev, psector) \ + if (!dev->disable_mtd_lock) ioctl (dev->fd, MEMUNLOCK, psector) + /* * The lockfile is the same as defined in U-Boot for * the fw_printenv utilities @@ -739,7 +744,7 @@ static int mtdwrite(struct uboot_flash_env *dev, void *data) /* * unlock could fail, no check */ - ioctl(dev->fd, MEMUNLOCK, &erase); + MTDUNLOCK(dev, &erase); if (ioctl(dev->fd, MEMERASE, &erase) != 0) { ret =-EIO; goto devwrite_out; @@ -752,7 +757,7 @@ static int mtdwrite(struct uboot_flash_env *dev, void *data) ret =-EIO; goto devwrite_out; } - ioctl(dev->fd, MEMLOCK, &erase); + MTDLOCK(dev, &erase); start += dev->sectorsize; buf += blocksize; count -= blocksize; @@ -832,13 +837,13 @@ static int set_obsolete_flag(struct uboot_flash_env *dev) } erase.start = dev->offset; erase.length = dev->sectorsize; - ioctl(dev->fd, MEMUNLOCK, &erase); + MTDUNLOCK(dev, &erase); ret = write(dev->fd, &flag, sizeof(flag)); if (ret == sizeof(flag)) ret = 0; else if (ret >= 0) ret = -EIO; - ioctl (dev->fd, MEMLOCK, &erase); + MTDLOCK(dev, &erase); close(dev->fd); return ret; @@ -1216,12 +1221,13 @@ int libuboot_read_config(struct uboot_ctx *ctx, const char *config) if (line[0] == '#') continue; - ret = sscanf(line, "%ms %lli %zx %zx %lx", + ret = sscanf(line, "%ms %lli %zx %zx %lx %d", &tmp, &dev->offset, &dev->envsize, &dev->sectorsize, - &dev->envsectors); + &dev->envsectors, + &dev->disable_mtd_lock); /* * At least name offset and size should be set diff --git a/src/uboot_private.h b/src/uboot_private.h index 4b7a9f9..a179584 100644 --- a/src/uboot_private.h +++ b/src/uboot_private.h @@ -87,6 +87,8 @@ struct uboot_flash_env { enum flags_type flagstype; /** type of device (mtd, ubi, file, ....) */ enum device_type device_type; + /** Disable lock mechanism (required by some flashes */ + int disable_mtd_lock; }; /** Internal structure for an environment variable