This patch exploits pstore infrastructure to read the details
from NVRAM's common partition.

Signed-off-by: Aruna Balakrishnaiah <ar...@linux.vnet.ibm.com>
Reviewed-by: Jim Keniston <jkeni...@us.ibm.com>
---
 arch/powerpc/platforms/pseries/nvram.c |   17 ++++++++++++++++-
 fs/pstore/inode.c                      |    3 +++
 include/linux/pstore.h                 |    1 +
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/platforms/pseries/nvram.c 
b/arch/powerpc/platforms/pseries/nvram.c
index b65a670..542dc7e 100644
--- a/arch/powerpc/platforms/pseries/nvram.c
+++ b/arch/powerpc/platforms/pseries/nvram.c
@@ -84,6 +84,12 @@ static struct nvram_os_partition of_config_partition = {
        .index = -1,
        .os_partition = false
 };
+
+static struct nvram_os_partition common_partition = {
+       .name = "common",
+       .index = -1,
+       .os_partition = false
+};
 #endif
 
 struct oops_log_info {
@@ -157,6 +163,7 @@ static enum pstore_type_id nvram_type_ids[] = {
        PSTORE_TYPE_DMESG,
        PSTORE_TYPE_RTAS,
        PSTORE_TYPE_OF,
+       PSTORE_TYPE_COMMON,
        -1
 };
 static int read_type;
@@ -770,7 +777,7 @@ static int nvram_pstore_write(enum pstore_type_id type,
 }
 
 /*
- * Reads the oops/panic report, rtas-log and of-config partition.
+ * Reads the oops/panic report, rtas-log, of-config and common partition.
  * Returns the length of the data we read from each partition.
  * Returns 0 if we've been called before.
  */
@@ -806,6 +813,14 @@ static ssize_t nvram_pstore_read(u64 *id, enum 
pstore_type_id *type,
                time->tv_sec = 0;
                time->tv_nsec = 0;
                break;
+       case PSTORE_TYPE_COMMON:
+               sig = NVRAM_SIG_SYS;
+               part = &common_partition;
+               *type = PSTORE_TYPE_COMMON;
+               *id = PSTORE_TYPE_COMMON;
+               time->tv_sec = 0;
+               time->tv_nsec = 0;
+               break;
        default:
                return 0;
        }
diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c
index c3d1846..11cae64 100644
--- a/fs/pstore/inode.c
+++ b/fs/pstore/inode.c
@@ -330,6 +330,9 @@ int pstore_mkfile(enum pstore_type_id type, char *psname, 
u64 id, int count,
        case PSTORE_TYPE_OF:
                sprintf(name, "of-%s-%lld", psname, id);
                break;
+       case PSTORE_TYPE_COMMON:
+               sprintf(name, "common-%s-%lld", psname, id);
+               break;
        case PSTORE_TYPE_UNKNOWN:
                sprintf(name, "unknown-%s-%lld", psname, id);
                break;
diff --git a/include/linux/pstore.h b/include/linux/pstore.h
index a23d7d2..08224c2 100644
--- a/include/linux/pstore.h
+++ b/include/linux/pstore.h
@@ -38,6 +38,7 @@ enum pstore_type_id {
        /* PPC64 partition types */
        PSTORE_TYPE_RTAS        = 10,
        PSTORE_TYPE_OF          = 11,
+       PSTORE_TYPE_COMMON      = 12,
        PSTORE_TYPE_UNKNOWN     = 255
 };
 

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to