aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2010-07-29 03:22:34 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2010-11-29 23:32:10 -0500
commitcef0d5ad62ec6e0c8456b8f58e898aa3219311a5 (patch)
treebbb294bb1a2c638193839398388012409beb5548 /arch/powerpc
parent578914cffc283b907777796420148d582072cbae (diff)
powerpc/nvram: Completely clear a new partition
When creating a partition, we clear it entirely rather than just the first two words since the previous code was rather specific to the pseries log partition format. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/kernel/nvram_64.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
index f7538820c03d..02737e687559 100644
--- a/arch/powerpc/kernel/nvram_64.c
+++ b/arch/powerpc/kernel/nvram_64.c
@@ -320,7 +320,7 @@ static int __init nvram_create_partition(const char *name, int sig,
320 struct nvram_partition *part; 320 struct nvram_partition *part;
321 struct nvram_partition *new_part; 321 struct nvram_partition *new_part;
322 struct nvram_partition *free_part = NULL; 322 struct nvram_partition *free_part = NULL;
323 int seq_init[2] = { 0, 0 }; 323 static char nv_init_vals[16];
324 loff_t tmp_index; 324 loff_t tmp_index;
325 long size = 0; 325 long size = 0;
326 int rc; 326 int rc;
@@ -379,14 +379,15 @@ static int __init nvram_create_partition(const char *name, int sig,
379 return rc; 379 return rc;
380 } 380 }
381 381
382 /* make sure and initialize to zero the sequence number and the error 382 /* Clear the partition */
383 type logged */ 383 for (tmp_index = new_part->index + NVRAM_HEADER_LEN;
384 tmp_index = new_part->index + NVRAM_HEADER_LEN; 384 tmp_index < ((size - 1) * NVRAM_BLOCK_LEN);
385 rc = ppc_md.nvram_write((char *)&seq_init, sizeof(seq_init), &tmp_index); 385 tmp_index += NVRAM_BLOCK_LEN) {
386 if (rc <= 0) { 386 rc = ppc_md.nvram_write(nv_init_vals, NVRAM_BLOCK_LEN, &tmp_index);
387 printk(KERN_ERR "nvram_create_os_partition: nvram_write " 387 if (rc <= 0) {
388 "failed (%d)\n", rc); 388 pr_err("nvram_create_partition: nvram_write failed (%d)\n", rc);
389 return rc; 389 return rc;
390 }
390 } 391 }
391 392
392 nvram_error_log_index = new_part->index + NVRAM_HEADER_LEN; 393 nvram_error_log_index = new_part->index + NVRAM_HEADER_LEN;