All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philip Oberfichtner <pro@denx.de>
To: Vasileios Amoiridis <vassilisamir@gmail.com>
Cc: trini@konsulko.com, hs@denx.de, vasileios.amoiridis@cern.ch,
	u-boot@lists.denx.de
Subject: Re: [RFC PATCH] drivers: bootcount: Add support for FAT filesystem
Date: Thu, 6 Jun 2024 09:58:36 +0200	[thread overview]
Message-ID: <ZmFsLMEAQPFuP_aA@eryximachos> (raw)
In-Reply-To: <20240605181041.68317-2-vassilisamir@gmail.com>

Hi,

On Wed, Jun 05, 2024 at 08:10:41PM +0200, Vasileios Amoiridis wrote:
> From: Vasileios Amoiridis <vasileios.amoiridis@cern.ch>
> 
> Add support to save boot count variable in a file in a FAT filesystem.
> 
> Signed-off-by: Vasileios Amoiridis <vasileios.amoiridis@cern.ch>
> ---
>  doc/README.bootcount              | 12 ++++----
>  drivers/bootcount/Kconfig         | 49 +++++++++++++++++++++++--------
>  drivers/bootcount/Makefile        |  2 +-
>  drivers/bootcount/bootcount_ext.c | 18 ++++++++----
>  4 files changed, 56 insertions(+), 25 deletions(-)
> 
> diff --git a/doc/README.bootcount b/doc/README.bootcount
> index f6c5f82f98..cce66d4d70 100644
> --- a/doc/README.bootcount
> +++ b/doc/README.bootcount
> @@ -23,15 +23,17 @@ It is the responsibility of some application code (typically a Linux
>  application) to reset the variable "bootcount" to 0 when the system booted
>  successfully, thus allowing for more boot cycles.
>  
> -CONFIG_BOOTCOUNT_EXT
> +CONFIG_BOOTCOUNT_FS
>  --------------------
>  
> -This adds support for maintaining boot count in a file on an EXT filesystem.
> +This adds support for maintaining boot count in a file on a filesystem.
> +Supported filesystems are FAT and EXT.
> +
>  The file to use is defined by:
>  
> -CONFIG_SYS_BOOTCOUNT_EXT_INTERFACE
> -CONFIG_SYS_BOOTCOUNT_EXT_DEVPART
> -CONFIG_SYS_BOOTCOUNT_EXT_NAME
> +CONFIG_SYS_BOOTCOUNT_FS_INTERFACE
> +CONFIG_SYS_BOOTCOUNT_FS_DEVPART
> +CONFIG_SYS_BOOTCOUNT_FS_NAME
>  
>  The format of the file is:
>  
> diff --git a/drivers/bootcount/Kconfig b/drivers/bootcount/Kconfig
> index 3c56253b1e..a39a7556bb 100644
> --- a/drivers/bootcount/Kconfig
> +++ b/drivers/bootcount/Kconfig
> @@ -25,10 +25,9 @@ config BOOTCOUNT_GENERIC
>  	    Set to the address where the bootcount and bootcount magic
>  	    will be stored.
>  
> -config BOOTCOUNT_EXT
> -	bool "Boot counter on EXT filesystem"
> -	depends on FS_EXT4
> -	select EXT4_WRITE
> +config BOOTCOUNT_FS
> +	bool "Boot counter on filesystem"
> +	depends on FS_EXT4 || FS_FAT
>  	help
>  	  Add support for maintaining boot count in a file on an EXT
>  	  filesystem.

The help message refers to EXT only, not mentioning FAT.

> @@ -177,6 +176,30 @@ config BOOTCOUNT_BOOTLIMIT
>  	  counter being cleared.
>  	  If set to 0, do not set a boot limit in the environment.
>  
> +if BOOTCOUNT_FS
> +choice
> +	prompt "Filesystem type"
> +	default BOOTCOUNT_EXT
> +
> +config BOOTCOUNT_EXT
> +	bool "Boot counter on EXT filesystem"
> +	depends on FS_EXT4
> +	select EXT4_WRITE
> +	help
> +	  Add support for maintaining boot count in a file on an EXT
> +	  filesystem.
> +
> +config BOOTCOUNT_FAT
> +	bool "Boot counter on FAT filesystem"
> +	depends on FS_FAT
> +	select FAT_WRITE
> +	help
> +	  Add support for maintaining boot count in a file on a FAT
> +	  filesystem.
> +
> +endchoice
> +endif
> +
>  config SYS_BOOTCOUNT_SINGLEWORD
>  	bool "Use single word to pack boot count and magic value"
>  	depends on BOOTCOUNT_GENERIC
> @@ -184,26 +207,26 @@ config SYS_BOOTCOUNT_SINGLEWORD
>  	  This option enables packing boot count magic value and boot count
>  	  into single word (32 bits).
>  
> -config SYS_BOOTCOUNT_EXT_INTERFACE
> +config SYS_BOOTCOUNT_FS_INTERFACE
>  	string "Interface on which to find boot counter EXT filesystem"

Same here.

>  	default "mmc"
> -	depends on BOOTCOUNT_EXT
> +	depends on BOOTCOUNT_FS
>  	help
>  	  Set the interface to use when locating the filesystem to use for the
>  	  boot counter.
>  
> -config SYS_BOOTCOUNT_EXT_DEVPART
> +config SYS_BOOTCOUNT_FS_DEVPART
>  	string "Partition of the boot counter EXT filesystem"

And here.

>  	default "0:1"
> -	depends on BOOTCOUNT_EXT
> +	depends on BOOTCOUNT_FS
>  	help
>  	  Set the partition to use when locating the filesystem to use for the
>  	  boot counter.
>  
> -config SYS_BOOTCOUNT_EXT_NAME
> +config SYS_BOOTCOUNT_FS_NAME
>  	string "Path and filename of the EXT filesystem based boot counter"

And here. Other than that
Reviewed-by: Philip Oberfichtner <pro@denx.de>

>  	default "/boot/failures"
> -	depends on BOOTCOUNT_EXT
> +	depends on BOOTCOUNT_FS
>  	help
>  	  Set the filename and path of the file used to store the boot counter.
>  
> @@ -211,18 +234,18 @@ config SYS_BOOTCOUNT_ADDR
>  	hex "RAM address used for reading and writing the boot counter"
>  	default 0x44E3E000 if BOOTCOUNT_AM33XX || BOOTCOUNT_AM33XX_NVMEM
>  	default 0xE0115FF8 if ARCH_LS1043A || ARCH_LS1021A
> -	depends on BOOTCOUNT_AM33XX || BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
> +	depends on BOOTCOUNT_AM33XX || BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \
>  		   BOOTCOUNT_AM33XX_NVMEM
>  	help
>  	  Set the address used for reading and writing the boot counter.
>  
>  config SYS_BOOTCOUNT_MAGIC
>  	hex "Magic value for the boot counter"
> -	default 0xB001C041 if BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
> +	default 0xB001C041 if BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \
>  			      BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \
>  			      BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT
>  	default 0xB0 if BOOTCOUNT_AM33XX_NVMEM
> -	depends on BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
> +	depends on BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \
>  		   BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \
>  		   BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT || \
>  		   BOOTCOUNT_AM33XX_NVMEM
> diff --git a/drivers/bootcount/Makefile b/drivers/bootcount/Makefile
> index e7771f5b36..c0427434d7 100644
> --- a/drivers/bootcount/Makefile
> +++ b/drivers/bootcount/Makefile
> @@ -6,7 +6,7 @@ obj-$(CONFIG_BOOTCOUNT_AT91)	+= bootcount_at91.o
>  obj-$(CONFIG_BOOTCOUNT_AM33XX)	+= bootcount_davinci.o
>  obj-$(CONFIG_BOOTCOUNT_RAM)	+= bootcount_ram.o
>  obj-$(CONFIG_BOOTCOUNT_ENV)	+= bootcount_env.o
> -obj-$(CONFIG_BOOTCOUNT_EXT)	+= bootcount_ext.o
> +obj-$(CONFIG_BOOTCOUNT_FS)	+= bootcount_ext.o
>  obj-$(CONFIG_BOOTCOUNT_AM33XX_NVMEM)	+= bootcount_nvmem.o
>  
>  obj-$(CONFIG_DM_BOOTCOUNT)      += bootcount-uclass.o
> diff --git a/drivers/bootcount/bootcount_ext.c b/drivers/bootcount/bootcount_ext.c
> index 9639e638e9..660bea2db2 100644
> --- a/drivers/bootcount/bootcount_ext.c
> +++ b/drivers/bootcount/bootcount_ext.c
> @@ -19,14 +19,20 @@ typedef struct {
>  
>  static u8 upgrade_available = 1;
>  
> +#ifdef BOOTCOUNT_EXT
> +static u8 bootcount_fstype = FS_TYPE_EXT;
> +#else
> +static u8 bootcount_fstype = FS_TYPE_FAT;
> +#endif
> +
>  void bootcount_store(ulong a)
>  {
>  	bootcount_ext_t *buf;
>  	loff_t len;
>  	int ret;
>  
> -	if (fs_set_blk_dev(CONFIG_SYS_BOOTCOUNT_EXT_INTERFACE,
> -			   CONFIG_SYS_BOOTCOUNT_EXT_DEVPART, FS_TYPE_EXT)) {
> +	if (fs_set_blk_dev(CONFIG_SYS_BOOTCOUNT_FS_INTERFACE,
> +			   CONFIG_SYS_BOOTCOUNT_FS_DEVPART, bootcount_fstype)) {
>  		puts("Error selecting device\n");
>  		return;
>  	}
> @@ -42,7 +48,7 @@ void bootcount_store(ulong a)
>  	buf->upgrade_available = upgrade_available;
>  	unmap_sysmem(buf);
>  
> -	ret = fs_write(CONFIG_SYS_BOOTCOUNT_EXT_NAME,
> +	ret = fs_write(CONFIG_SYS_BOOTCOUNT_FS_NAME,
>  		       CONFIG_SYS_BOOTCOUNT_ADDR, 0, sizeof(bootcount_ext_t),
>  		       &len);
>  	if (ret != 0)
> @@ -55,13 +61,13 @@ ulong bootcount_load(void)
>  	loff_t len_read;
>  	int ret;
>  
> -	if (fs_set_blk_dev(CONFIG_SYS_BOOTCOUNT_EXT_INTERFACE,
> -			   CONFIG_SYS_BOOTCOUNT_EXT_DEVPART, FS_TYPE_EXT)) {
> +	if (fs_set_blk_dev(CONFIG_SYS_BOOTCOUNT_FS_INTERFACE,
> +			   CONFIG_SYS_BOOTCOUNT_FS_DEVPART, bootcount_fstype)) {
>  		puts("Error selecting device\n");
>  		return 0;
>  	}
>  
> -	ret = fs_read(CONFIG_SYS_BOOTCOUNT_EXT_NAME, CONFIG_SYS_BOOTCOUNT_ADDR,
> +	ret = fs_read(CONFIG_SYS_BOOTCOUNT_FS_NAME, CONFIG_SYS_BOOTCOUNT_ADDR,
>  		      0, sizeof(bootcount_ext_t), &len_read);
>  	if (ret != 0 || len_read != sizeof(bootcount_ext_t)) {
>  		puts("Error loading bootcount\n");
> 
> base-commit: c0ea27bccfb7d2d37fd36806ac2a2f7389099420
> -- 
> 2.34.1
> 

-- 
=====================================================================
DENX Software Engineering GmbH,        Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-22  Fax: +49-8142-66989-80   Email: pro@denx.de
=====================================================================

  reply	other threads:[~2024-06-06  7:58 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-05 18:10 [RFC PATCH 0/1] drivers: bootcount: Add support for FAT filesystem Vasileios Amoiridis
2024-06-05 18:10 ` [RFC PATCH] " Vasileios Amoiridis
2024-06-06  7:58   ` Philip Oberfichtner [this message]
2024-06-06 17:11     ` Vasileios Amoiridis
2024-06-06 15:34   ` Quentin Schulz
2024-06-06 17:33     ` Vasileios Amoiridis
2024-06-05 18:48 ` [RFC PATCH 0/1] " Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZmFsLMEAQPFuP_aA@eryximachos \
    --to=pro@denx.de \
    --cc=hs@denx.de \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=vasileios.amoiridis@cern.ch \
    --cc=vassilisamir@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.