]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
powerpc/pseries: Introduce generic read function to read nvram-partitions
authorAruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
Wed, 5 Jun 2013 18:51:16 +0000 (00:21 +0530)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 20 Jun 2013 07:04:46 +0000 (17:04 +1000)
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: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
Reviewed-by: Jim Keniston <jkenisto@us.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/pseries/nvram.c

index 742735acd8b6409fb2bd68fcc9ba706a2f97944e..088f023d8f25434c28671e392c32aacca34e50ff 100644 (file)
@@ -293,34 +293,35 @@ int nvram_write_error_log(char * buff, int length,
        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,
-                         unsigned int * err_type, unsigned int * error_log_cnt)
+int nvram_read_partition(struct nvram_os_partition *part, char *buff,
+                       int length, unsigned int *err_type,
+                       unsigned int *error_log_cnt)
 {
        int rc;
        loff_t tmp_index;
        struct err_log_info info;
        
-       if (rtas_log_partition.index == -1)
+       if (part->index == -1)
                return -1;
 
-       if (length > rtas_log_partition.size)
-               length = rtas_log_partition.size;
+       if (length > part->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);
        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;
        }
 
        rc = ppc_md.nvram_read(buff, length, &tmp_index);
        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;
        }
 
@@ -330,6 +331,17 @@ int nvram_read_error_log(char * buff, int length,
        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
  * word to tell that this event is safely in syslog.
  */