Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 229329
b: refs/heads/master
c: 9a866b8
h: refs/heads/master
i:
  229327: de88211
v: v3
  • Loading branch information
Benjamin Herrenschmidt committed Nov 30, 2010
1 parent 65a9fcb commit b91dcc6
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: edc79a2f3ee1c74d915f6a0ce3cb22bf468f5ad5
refs/heads/master: 9a866b870880065364c894823257e6982103d4e4
23 changes: 13 additions & 10 deletions trunk/arch/powerpc/platforms/pseries/nvram.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ struct err_log_info {
#define NVRAM_MAX_REQ 2079
#define NVRAM_MIN_REQ 1055

#define NVRAM_LOG_PART_NAME "ibm,rtas-log"

static ssize_t pSeries_nvram_read(char *buf, size_t count, loff_t *index)
{
unsigned int i;
Expand Down Expand Up @@ -262,8 +264,8 @@ int nvram_clear_error_log(void)
* error logs and cleanup partitions if needed.
*
* The general strategy is the following:
* 1.) If there is ppc64,linux partition large enough then use it.
* 2.) If there is not a ppc64,linux partition large enough, search
* 1.) If there is log partition large enough then use it.
* 2.) If there is none large enough, search
* for a free partition that is large enough.
* 3.) If there is not a free partition large enough remove
* _all_ OS partitions and consolidate the space.
Expand All @@ -281,34 +283,35 @@ static int __init pseries_nvram_init_log_partition(void)
nvram_scan_partitions();

/* Lookg for ours */
p = nvram_find_partition("ppc64,linux", NVRAM_SIG_OS, &size);
p = nvram_find_partition(NVRAM_LOG_PART_NAME, NVRAM_SIG_OS, &size);

/* Found one but too small, remove it */
if (p && size < NVRAM_MIN_REQ) {
pr_info("nvram: Found too small ppc64,linux partition"
pr_info("nvram: Found too small "NVRAM_LOG_PART_NAME" partition"
",removing it...");
nvram_remove_partition("ppc64,linux", NVRAM_SIG_OS);
nvram_remove_partition(NVRAM_LOG_PART_NAME, NVRAM_SIG_OS);
p = 0;
}

/* Create one if we didn't find */
if (!p) {
p = nvram_create_partition("ppc64,linux", NVRAM_SIG_OS,
p = nvram_create_partition(NVRAM_LOG_PART_NAME, NVRAM_SIG_OS,
NVRAM_MAX_REQ, NVRAM_MIN_REQ);
/* No room for it, try to get rid of any OS partition
* and try again
*/
if (p == -ENOSPC) {
pr_info("nvram: No room to create ppc64,linux"
pr_info("nvram: No room to create "NVRAM_LOG_PART_NAME
" partition, deleting all OS partitions...");
nvram_remove_partition(NULL, NVRAM_SIG_OS);
p = nvram_create_partition("ppc64,linux", NVRAM_SIG_OS,
NVRAM_MAX_REQ, NVRAM_MIN_REQ);
p = nvram_create_partition(NVRAM_LOG_PART_NAME,
NVRAM_SIG_OS, NVRAM_MAX_REQ,
NVRAM_MIN_REQ);
}
}

if (p <= 0) {
pr_err("nvram: Failed to find or create ppc64,linux"
pr_err("nvram: Failed to find or create "NVRAM_LOG_PART_NAME
" partition, err %d\n", (int)p);
return 0;
}
Expand Down

0 comments on commit b91dcc6

Please sign in to comment.