Commit 12674610 authored by Aruna Balakrishnaiah's avatar Aruna Balakrishnaiah Committed by Benjamin Herrenschmidt

powerpc/pseries: Introduce generic read function to read nvram-partitions

Introduce generic read function to read nvram partitions other than rtas.
nvram_read_error_log will be retained which is used to read rtas partition
from rtasd. nvram_read_partition is the generic read function to read from
any nvram partition.
Signed-off-by: default avatarAruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
Reviewed-by: default avatarJim Keniston <jkenisto@us.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent b1f70e1f
...@@ -293,34 +293,35 @@ int nvram_write_error_log(char * buff, int length, ...@@ -293,34 +293,35 @@ int nvram_write_error_log(char * buff, int length,
return rc; return rc;
} }
/* nvram_read_error_log /* nvram_read_partition
* *
* Reads nvram for error log for at most 'length' * Reads nvram partition for at most 'length'
*/ */
int nvram_read_error_log(char * buff, int length, int nvram_read_partition(struct nvram_os_partition *part, char *buff,
unsigned int * err_type, unsigned int * error_log_cnt) int length, unsigned int *err_type,
unsigned int *error_log_cnt)
{ {
int rc; int rc;
loff_t tmp_index; loff_t tmp_index;
struct err_log_info info; struct err_log_info info;
if (rtas_log_partition.index == -1) if (part->index == -1)
return -1; return -1;
if (length > rtas_log_partition.size) if (length > part->size)
length = rtas_log_partition.size; length = part->size;
tmp_index = rtas_log_partition.index; tmp_index = part->index;
rc = ppc_md.nvram_read((char *)&info, sizeof(struct err_log_info), &tmp_index); rc = ppc_md.nvram_read((char *)&info, sizeof(struct err_log_info), &tmp_index);
if (rc <= 0) { if (rc <= 0) {
printk(KERN_ERR "nvram_read_error_log: Failed nvram_read (%d)\n", rc); pr_err("%s: Failed nvram_read (%d)\n", __FUNCTION__, rc);
return rc; return rc;
} }
rc = ppc_md.nvram_read(buff, length, &tmp_index); rc = ppc_md.nvram_read(buff, length, &tmp_index);
if (rc <= 0) { if (rc <= 0) {
printk(KERN_ERR "nvram_read_error_log: Failed nvram_read (%d)\n", rc); pr_err("%s: Failed nvram_read (%d)\n", __FUNCTION__, rc);
return rc; return rc;
} }
...@@ -330,6 +331,17 @@ int nvram_read_error_log(char * buff, int length, ...@@ -330,6 +331,17 @@ int nvram_read_error_log(char * buff, int length,
return 0; return 0;
} }
/* nvram_read_error_log
*
* Reads nvram for error log for at most 'length'
*/
int nvram_read_error_log(char *buff, int length,
unsigned int *err_type, unsigned int *error_log_cnt)
{
return nvram_read_partition(&rtas_log_partition, buff, length,
err_type, error_log_cnt);
}
/* This doesn't actually zero anything, but it sets the event_logged /* This doesn't actually zero anything, but it sets the event_logged
* word to tell that this event is safely in syslog. * word to tell that this event is safely in syslog.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment