This patch implements a "flash friendly" value for initialized areas of flash.
It makes the write part of flashrom dramatically faster with small payloads like filo; and it also eliminates unnecessary wear on flash by not writing zeros (it's unlikely this really matters; let me know next time you flash a BIOS flash 100,000 times!). More importantly, it allows for future partial flash upgrades with cbfs. Note that uninitialized_flash_value is a global that can, if we ever need it, be set by an argument in main. Assuming we ever see a flash where the "erased" value is 0, not 0xff. At the same time, "erased" value has been "1" on every EEPROM or FLASH I've used for some time now. Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Peter Stuge <peter@stuge.se> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4290 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
d12acea520
commit
56ae8fcb6f
|
@ -56,6 +56,7 @@ struct rom {
|
|||
/* Function prototypes */
|
||||
|
||||
/* util.c */
|
||||
void flashinit(void *ptr, size_t len);
|
||||
int open_rom(struct rom *rom, const char *filename);
|
||||
int create_rom(struct rom *rom, const unsigned char *filename, int size,
|
||||
const char *bootblockname, int bootblocksize,
|
||||
|
|
|
@ -25,6 +25,13 @@
|
|||
#include <sys/mman.h>
|
||||
#include "cbfstool.h"
|
||||
|
||||
int uninitialized_flash_value = 0xff;
|
||||
|
||||
void flashinit(void *ptr, size_t len)
|
||||
{
|
||||
memset(ptr, uninitialized_flash_value, len);
|
||||
}
|
||||
|
||||
int get_size(const char *size)
|
||||
{
|
||||
char *next;
|
||||
|
@ -203,6 +210,9 @@ int create_rom(struct rom *rom, const unsigned char *filename,
|
|||
return -1;
|
||||
}
|
||||
|
||||
/* mmap'ed pages are by default zero-filled. Fix that. */
|
||||
flashinit(rom->ptr, romsize);
|
||||
|
||||
/* This is a pointer to the header for easy access */
|
||||
rom->header = (struct cbfs_header *)
|
||||
ROM_PTR(rom, rom->size - 16 - bootblocksize - sizeof(struct cbfs_header));
|
||||
|
|
Loading…
Reference in New Issue