diff options
author | Cyril Bur <cyril.bur@au1.ibm.com> | 2016-07-26 13:49:34 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2016-10-11 14:42:43 +1100 |
commit | adebaf3e0e621240c2041ed8f1ce91f70795cfa9 (patch) | |
tree | 63cffdedac9f134e091e3d8ea91b93885a1a5818 | |
parent | a452b83cd9eac584073fa19eb76e133de913ef52 (diff) | |
download | skiboot-adebaf3e0e621240c2041ed8f1ce91f70795cfa9.zip skiboot-adebaf3e0e621240c2041ed8f1ce91f70795cfa9.tar.gz skiboot-adebaf3e0e621240c2041ed8f1ce91f70795cfa9.tar.bz2 |
flash: Size NVRAM based on ECC for OpenPOWER platforms
If NVRAM has ECC (as per the ffs header) then the actual size of the
partition is less than reported by the ffs header in the PNOR then the
actual size of the partition is less than reported by the ffs header.
Signed-off-by: Cyril Bur <cyril.bur@au1.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r-- | core/flash.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/core/flash.c b/core/flash.c index 9b07aa3..de7895c 100644 --- a/core/flash.c +++ b/core/flash.c @@ -149,6 +149,7 @@ out: static int flash_nvram_probe(struct flash *flash, struct ffs_handle *ffs) { uint32_t start, size, part; + bool ecc; int rc; prlog(PR_INFO, "FLASH: probing for NVRAM\n"); @@ -160,7 +161,7 @@ static int flash_nvram_probe(struct flash *flash, struct ffs_handle *ffs) } rc = ffs_part_info(ffs, part, NULL, - &start, &size, NULL, NULL); + &start, &size, NULL, &ecc); if (rc) { /** * @fwts-label NVRAMNoPartition @@ -175,7 +176,7 @@ static int flash_nvram_probe(struct flash *flash, struct ffs_handle *ffs) nvram_flash = flash; nvram_offset = start; - nvram_size = size; + nvram_size = ecc ? ecc_buffer_size_minus_ecc(size) : size; platform.nvram_info = flash_nvram_info; platform.nvram_start_read = flash_nvram_start_read; |