staging: android: persistent_ram: Move to fs/pstore/ram_core.c
authorAnton Vorontsov <anton.vorontsov@linaro.org>
Thu, 17 May 2012 07:15:08 +0000 (00:15 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 May 2012 15:50:00 +0000 (08:50 -0700)
This is a first step for adding ECC support for pstore RAM backend: we
will use the persistent_ram routines, kindly provided by Google.

Basically, persistent_ram is a set of helper routines to deal with the
[optionally] ECC-protected persistent ram regions.

A bit of Makefile, Kconfig and header files adjustments were needed
because of the move.

Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/android/Kconfig
drivers/staging/android/Makefile
drivers/staging/android/persistent_ram.h [deleted file]
drivers/staging/android/ram_console.c
fs/pstore/Kconfig
fs/pstore/Makefile
fs/pstore/ram_core.c [moved from drivers/staging/android/persistent_ram.c with 99% similarity]
include/linux/pstore_ram.h

index 775229d..63f9822 100644 (file)
@@ -25,17 +25,9 @@ config ANDROID_LOGGER
        tristate "Android log driver"
        default n
 
-config ANDROID_PERSISTENT_RAM
-       bool
-       depends on HAVE_MEMBLOCK
-       select REED_SOLOMON
-       select REED_SOLOMON_ENC8
-       select REED_SOLOMON_DEC8
-
 config ANDROID_RAM_CONSOLE
        bool "Android RAM buffer console"
-       depends on !S390 && !UML && HAVE_MEMBLOCK
-       select ANDROID_PERSISTENT_RAM
+       depends on !S390 && !UML && HAVE_MEMBLOCK && PSTORE_RAM=y
        default n
 
 config ANDROID_TIMED_OUTPUT
index b4be69f..4677e7b 100644 (file)
@@ -1,7 +1,6 @@
 obj-$(CONFIG_ANDROID_BINDER_IPC)       += binder.o
 obj-$(CONFIG_ASHMEM)                   += ashmem.o
 obj-$(CONFIG_ANDROID_LOGGER)           += logger.o
-obj-$(CONFIG_ANDROID_PERSISTENT_RAM)   += persistent_ram.o
 obj-$(CONFIG_ANDROID_RAM_CONSOLE)      += ram_console.o
 obj-$(CONFIG_ANDROID_TIMED_OUTPUT)     += timed_output.o
 obj-$(CONFIG_ANDROID_TIMED_GPIO)       += timed_gpio.o
diff --git a/drivers/staging/android/persistent_ram.h b/drivers/staging/android/persistent_ram.h
deleted file mode 100644 (file)
index d23850c..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2011 Google, Inc.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- */
-
-#ifndef __LINUX_PERSISTENT_RAM_H__
-#define __LINUX_PERSISTENT_RAM_H__
-
-#include <linux/device.h>
-#include <linux/kernel.h>
-#include <linux/list.h>
-#include <linux/types.h>
-#include <linux/init.h>
-
-struct persistent_ram_buffer;
-
-struct persistent_ram_descriptor {
-       const char      *name;
-       phys_addr_t     size;
-};
-
-struct persistent_ram {
-       phys_addr_t     start;
-       phys_addr_t     size;
-
-       int                                     num_descs;
-       struct persistent_ram_descriptor        *descs;
-
-       struct list_head node;
-};
-
-struct persistent_ram_zone {
-       phys_addr_t paddr;
-       size_t size;
-       void *vaddr;
-       struct persistent_ram_buffer *buffer;
-       size_t buffer_size;
-
-       /* ECC correction */
-       bool ecc;
-       char *par_buffer;
-       char *par_header;
-       struct rs_control *rs_decoder;
-       int corrected_bytes;
-       int bad_blocks;
-       int ecc_block_size;
-       int ecc_size;
-       int ecc_symsize;
-       int ecc_poly;
-
-       char *old_log;
-       size_t old_log_size;
-};
-
-int persistent_ram_early_init(struct persistent_ram *ram);
-
-struct persistent_ram_zone * __init persistent_ram_new(phys_addr_t start,
-                                                      size_t size,
-                                                      bool ecc);
-void persistent_ram_free(struct persistent_ram_zone *prz);
-struct persistent_ram_zone *persistent_ram_init_ringbuffer(struct device *dev,
-               bool ecc);
-
-int persistent_ram_write(struct persistent_ram_zone *prz, const void *s,
-       unsigned int count);
-
-size_t persistent_ram_old_size(struct persistent_ram_zone *prz);
-void *persistent_ram_old(struct persistent_ram_zone *prz);
-void persistent_ram_free_old(struct persistent_ram_zone *prz);
-ssize_t persistent_ram_ecc_string(struct persistent_ram_zone *prz,
-       char *str, size_t len);
-
-#endif
index ce140ff..82323bb 100644 (file)
@@ -21,7 +21,7 @@
 #include <linux/string.h>
 #include <linux/uaccess.h>
 #include <linux/io.h>
-#include "persistent_ram.h"
+#include <linux/pstore_ram.h>
 #include "ram_console.h"
 
 static struct persistent_ram_zone *ram_console_zone;
index b75ee51..23ade26 100644 (file)
@@ -14,9 +14,12 @@ config PSTORE
 
 config PSTORE_RAM
        tristate "Log panic/oops to a RAM buffer"
-       depends on HAS_IOMEM
        depends on PSTORE
-       default n
+       depends on HAS_IOMEM
+       depends on HAVE_MEMBLOCK
+       select REED_SOLOMON
+       select REED_SOLOMON_ENC8
+       select REED_SOLOMON_DEC8
        help
          This enables panic and oops messages to be logged to a circular
          buffer in RAM where it can be read back at some later point.
index 2ab3d0d..278a44e 100644 (file)
@@ -6,5 +6,5 @@ obj-y += pstore.o
 
 pstore-objs += inode.o platform.o
 
-ramoops-objs += ram.o
+ramoops-objs += ram.o ram_core.o
 obj-$(CONFIG_PSTORE_RAM)       += ramoops.o
similarity index 99%
rename from drivers/staging/android/persistent_ram.c
rename to fs/pstore/ram_core.c
index 4b46eaa..31f8d18 100644 (file)
@@ -23,8 +23,8 @@
 #include <linux/rslib.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
+#include <linux/pstore_ram.h>
 #include <asm/page.h>
-#include "persistent_ram.h"
 
 struct persistent_ram_buffer {
        uint32_t    sig;
index fa4cb02..ffe24a5 100644 (file)
@@ -1,6 +1,86 @@
+/*
+ * Copyright (C) 2010 Marco Stornelli <marco.stornelli@gmail.com>
+ * Copyright (C) 2011 Kees Cook <keescook@chromium.org>
+ * Copyright (C) 2011 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
 #ifndef __LINUX_PSTORE_RAM_H__
 #define __LINUX_PSTORE_RAM_H__
 
+#include <linux/device.h>
+#include <linux/kernel.h>
+#include <linux/list.h>
+#include <linux/types.h>
+#include <linux/init.h>
+
+struct persistent_ram_buffer;
+
+struct persistent_ram_descriptor {
+       const char      *name;
+       phys_addr_t     size;
+};
+
+struct persistent_ram {
+       phys_addr_t     start;
+       phys_addr_t     size;
+
+       int                                     num_descs;
+       struct persistent_ram_descriptor        *descs;
+
+       struct list_head node;
+};
+
+struct persistent_ram_zone {
+       phys_addr_t paddr;
+       size_t size;
+       void *vaddr;
+       struct persistent_ram_buffer *buffer;
+       size_t buffer_size;
+
+       /* ECC correction */
+       bool ecc;
+       char *par_buffer;
+       char *par_header;
+       struct rs_control *rs_decoder;
+       int corrected_bytes;
+       int bad_blocks;
+       int ecc_block_size;
+       int ecc_size;
+       int ecc_symsize;
+       int ecc_poly;
+
+       char *old_log;
+       size_t old_log_size;
+};
+
+int persistent_ram_early_init(struct persistent_ram *ram);
+
+struct persistent_ram_zone * __init persistent_ram_new(phys_addr_t start,
+                                                      size_t size,
+                                                      bool ecc);
+void persistent_ram_free(struct persistent_ram_zone *prz);
+struct persistent_ram_zone *persistent_ram_init_ringbuffer(struct device *dev,
+               bool ecc);
+
+int persistent_ram_write(struct persistent_ram_zone *prz, const void *s,
+       unsigned int count);
+
+size_t persistent_ram_old_size(struct persistent_ram_zone *prz);
+void *persistent_ram_old(struct persistent_ram_zone *prz);
+void persistent_ram_free_old(struct persistent_ram_zone *prz);
+ssize_t persistent_ram_ecc_string(struct persistent_ram_zone *prz,
+       char *str, size_t len);
+
 /*
  * Ramoops platform data
  * @mem_size   memory size for ramoops