[Skiboot] [PATCH 3/7] libflash/blocklevel: add blocklevel flags.

Alistair Popple alistair at popple.id.au
Mon Jun 22 19:16:54 AEST 2015


This looks the same as last time so still:

Reviewed-By: Alistair Popple <alistair at popple.id.au>

On Fri, 5 Jun 2015 14:11:27 Cyril Bur wrote:
> It has become apparent that communication between blocklevel and its
> backend may be necessarily, at least so that the backend can inform
> blocklevel as to if an erase must be done before a write.
> 
> An erase before flag isn't strictly necessary as erases can be performed
> regardless of whether they need to be or not, however, the caveat with that
> is that when erases don't need to be performed, this is likely due to the
> backend not having erase blocks and therefore it may be impossible to set a
> sane value for erase blocks which would be used to erase before write.
> 
> This flag saves backends that don't need erases before write to have to lie
> about an erase block size.
> 
> Signed-off-by: Cyril Bur <cyril.bur at au1.ibm.com>
> ---
>  libflash/blocklevel.h | 6 ++++++
>  libflash/libflash.c   | 1 +
>  2 files changed, 7 insertions(+)
> 
> diff --git a/libflash/blocklevel.h b/libflash/blocklevel.h
> index 3a20677..d2995ce 100644
> --- a/libflash/blocklevel.h
> +++ b/libflash/blocklevel.h
> @@ -23,6 +23,10 @@ struct bl_prot_range {
>  	uint32_t len;
>  };
>  
> +enum blocklevel_flags {
> +	WRITE_NEED_ERASE = 1,
> +};
> +
>  /*
>   * libffs may be used with different backends, all should provide these for
>   * libflash to get the information it needs
> @@ -39,6 +43,7 @@ struct blocklevel_device {
>  	 * Keep the erase mask so that blocklevel_erase() can do sanity checking
>  	 */
>  	uint32_t erase_mask;
> +	enum blocklevel_flags flags;
>  
>  	struct bl_prot_range *ecc_prot;
>  	int n_ecc_prot;
> @@ -48,6 +53,7 @@ struct blocklevel_device {
>  
>  	struct bl_prot_range *write_prot;
>  	int n_write_prot;
> +
>  };
>  
>  int blocklevel_read(struct blocklevel_device *bl, uint32_t pos, void *buf, uint32_t len);
> diff --git a/libflash/libflash.c b/libflash/libflash.c
> index a142e17..55eafbe 100644
> --- a/libflash/libflash.c
> +++ b/libflash/libflash.c
> @@ -838,6 +838,7 @@ bail:
>  	c->bl.erase = &flash_erase;
>  	c->bl.get_info = &flash_get_info;
>  	c->bl.erase_mask = c->min_erase_mask;
> +	c->bl.flags = WRITE_NEED_ERASE;
>  
>  	*bl = &(c->bl);
>  	return 0;
> 



More information about the Skiboot mailing list