Changeset 32787


Ignore:
Timestamp:
2012-07-22T18:39:33+02:00 (6 years ago)
Author:
nbd
Message:

[kernel] crashlog: fix dependency, add memblock support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic/patches-3.3/930-crashlog.patch

    r29986 r32787  
    11--- /dev/null 
    22+++ b/include/linux/crashlog.h 
    3 @@ -0,0 +1,12 @@ 
     3@@ -0,0 +1,17 @@ 
    44+#ifndef __CRASHLOG_H 
    55+#define __CRASHLOG_H 
    66+ 
    77+#ifdef CONFIG_CRASHLOG 
    8 +void __init crashlog_init_mem(struct bootmem_data *bdata); 
     8+void __init crashlog_init_bootmem(struct bootmem_data *bdata); 
     9+void __init crashlog_init_memblock(phys_addr_t addr, phys_addr_t size); 
    910+#else 
    10 +static inline void crashlog_init_mem(struct bootmem_data *bdata) 
     11+static inline void crashlog_init_bootmem(struct bootmem_data *bdata) 
     12+{ 
     13+} 
     14+ 
     15+static inline void crashlog_init_memblock(phys_addr_t addr, phys_addr_t size) 
    1116+{ 
    1217+} 
     
    2227+config CRASHLOG 
    2328+       bool "Crash logging" 
    24 +       depends on !NO_BOOTMEM && !HAVE_MEMBLOCK 
     29+       depends on !NO_BOOTMEM || HAVE_MEMBLOCK 
    2530+ 
    2631 config BLK_DEV_INITRD 
     
    3944--- /dev/null 
    4045+++ b/kernel/crashlog.c 
    41 @@ -0,0 +1,171 @@ 
     46@@ -0,0 +1,190 @@ 
    4247+/* 
    4348+ * Crash information logger 
     
    6570+#include <linux/module.h> 
    6671+#include <linux/bootmem.h> 
     72+#include <linux/memblock.h> 
    6773+#include <linux/debugfs.h> 
    6874+#include <linux/crashlog.h> 
     
    97103+extern struct list_head *crashlog_modules; 
    98104+ 
    99 +void __init crashlog_init_mem(bootmem_data_t *bdata) 
     105+#ifndef CONFIG_NO_BOOTMEM 
     106+void __init crashlog_init_bootmem(bootmem_data_t *bdata) 
    100107+{ 
    101108+       unsigned long addr; 
     
    112119+       crashlog_addr = addr; 
    113120+} 
     121+#endif 
     122+ 
     123+#ifdef CONFIG_HAVE_MEMBLOCK 
     124+void __init crashlog_init_memblock(phys_addr_t addr, phys_addr_t size) 
     125+{ 
     126+       if (crashlog_addr) 
     127+               return; 
     128+ 
     129+       addr += size - CRASHLOG_OFFSET; 
     130+       if (memblock_reserve(addr, CRASHLOG_SIZE)) { 
     131+               printk("Crashlog failed to allocate RAM at address 0x%lx\n", (unsigned long) addr); 
     132+               return; 
     133+       } 
     134+ 
     135+       crashlog_addr = addr; 
     136+} 
     137+#endif 
    114138+ 
    115139+static void __init crashlog_copy(void) 
     
    225249                return 0; 
    226250  
    227 +       crashlog_init_mem(bdata); 
     251+       crashlog_init_bootmem(bdata); 
    228252        start = bdata->node_min_pfn; 
    229253        end = bdata->node_low_pfn; 
     
    241265  
    242266 /* Block module loading/unloading? */ 
     267--- a/mm/memblock.c 
     268+++ b/mm/memblock.c 
     269@@ -19,6 +19,7 @@ 
     270 #include <linux/debugfs.h> 
     271 #include <linux/seq_file.h> 
     272 #include <linux/memblock.h> 
     273+#include <linux/crashlog.h> 
     274  
     275 static struct memblock_region memblock_memory_init_regions[INIT_MEMBLOCK_REGIONS] __initdata_memblock; 
     276 static struct memblock_region memblock_reserved_init_regions[INIT_MEMBLOCK_REGIONS] __initdata_memblock; 
     277@@ -305,6 +306,8 @@ static void __init_memblock memblock_ins 
     278        memblock_set_region_node(rgn, nid); 
     279        type->cnt++; 
     280        type->total_size += size; 
     281+       if (type == &memblock.memory && idx == 0) 
     282+               crashlog_init_memblock(base, size); 
     283 } 
     284  
     285 /** 
Note: See TracChangeset for help on using the changeset viewer.