/* vmcoreinfo stuff */
unsigned char vmcoreinfo_data[VMCOREINFO_BYTES];
u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4];
-unsigned int vmcoreinfo_size = 0;
-unsigned int vmcoreinfo_max_size = sizeof(vmcoreinfo_data);
+size_t vmcoreinfo_size;
+size_t vmcoreinfo_max_size = sizeof(vmcoreinfo_data);
/* Location of the reserved area for the crash kernel */
struct resource crashk_res = {
int kexec_should_crash(struct task_struct *p)
{
- if (in_interrupt() || !p->pid || is_init(p) || panic_on_oops)
+ if (in_interrupt() || !p->pid || is_global_init(p) || panic_on_oops)
return 1;
return 0;
}
size_t uchunk, mchunk;
page = kimage_alloc_page(image, GFP_HIGHUSER, maddr);
- if (page == 0) {
+ if (!page) {
result = -ENOMEM;
goto out;
}
size_t uchunk, mchunk;
page = pfn_to_page(maddr >> PAGE_SHIFT);
- if (page == 0) {
+ if (!page) {
result = -ENOMEM;
goto out;
}
if (!vmcoreinfo_size)
return;
- vmcoreinfo_append_str("CRASHTIME=%d", xtime.tv_sec);
+ vmcoreinfo_append_str("CRASHTIME=%ld", get_seconds());
buf = (u32 *)vmcoreinfo_note;
static int __init crash_save_vmcoreinfo_init(void)
{
- vmcoreinfo_append_str("OSRELEASE=%s\n", UTS_RELEASE);
- vmcoreinfo_append_str("PAGESIZE=%d\n", PAGE_SIZE);
+ vmcoreinfo_append_str("OSRELEASE=%s\n", init_uts_ns.name.release);
+ vmcoreinfo_append_str("PAGESIZE=%ld\n", PAGE_SIZE);
- SYMBOL(init_uts_ns);
- SYMBOL(node_online_map);
- SYMBOL(swapper_pg_dir);
- SYMBOL(_stext);
+ VMCOREINFO_SYMBOL(init_uts_ns);
+ VMCOREINFO_SYMBOL(node_online_map);
+ VMCOREINFO_SYMBOL(swapper_pg_dir);
+ VMCOREINFO_SYMBOL(_stext);
#ifndef CONFIG_NEED_MULTIPLE_NODES
- SYMBOL(mem_map);
- SYMBOL(contig_page_data);
+ VMCOREINFO_SYMBOL(mem_map);
+ VMCOREINFO_SYMBOL(contig_page_data);
#endif
#ifdef CONFIG_SPARSEMEM
- SYMBOL(mem_section);
- LENGTH(mem_section, NR_SECTION_ROOTS);
- SIZE(mem_section);
- OFFSET(mem_section, section_mem_map);
+ VMCOREINFO_SYMBOL(mem_section);
+ VMCOREINFO_LENGTH(mem_section, NR_SECTION_ROOTS);
+ VMCOREINFO_SIZE(mem_section);
+ VMCOREINFO_OFFSET(mem_section, section_mem_map);
#endif
- SIZE(page);
- SIZE(pglist_data);
- SIZE(zone);
- SIZE(free_area);
- SIZE(list_head);
- OFFSET(page, flags);
- OFFSET(page, _count);
- OFFSET(page, mapping);
- OFFSET(page, lru);
- OFFSET(pglist_data, node_zones);
- OFFSET(pglist_data, nr_zones);
+ VMCOREINFO_SIZE(page);
+ VMCOREINFO_SIZE(pglist_data);
+ VMCOREINFO_SIZE(zone);
+ VMCOREINFO_SIZE(free_area);
+ VMCOREINFO_SIZE(list_head);
+ VMCOREINFO_TYPEDEF_SIZE(nodemask_t);
+ VMCOREINFO_OFFSET(page, flags);
+ VMCOREINFO_OFFSET(page, _count);
+ VMCOREINFO_OFFSET(page, mapping);
+ VMCOREINFO_OFFSET(page, lru);
+ VMCOREINFO_OFFSET(pglist_data, node_zones);
+ VMCOREINFO_OFFSET(pglist_data, nr_zones);
#ifdef CONFIG_FLAT_NODE_MEM_MAP
- OFFSET(pglist_data, node_mem_map);
+ VMCOREINFO_OFFSET(pglist_data, node_mem_map);
#endif
- OFFSET(pglist_data, node_start_pfn);
- OFFSET(pglist_data, node_spanned_pages);
- OFFSET(pglist_data, node_id);
- OFFSET(zone, free_area);
- OFFSET(zone, vm_stat);
- OFFSET(zone, spanned_pages);
- OFFSET(free_area, free_list);
- OFFSET(list_head, next);
- OFFSET(list_head, prev);
- LENGTH(zone.free_area, MAX_ORDER);
+ VMCOREINFO_OFFSET(pglist_data, node_start_pfn);
+ VMCOREINFO_OFFSET(pglist_data, node_spanned_pages);
+ VMCOREINFO_OFFSET(pglist_data, node_id);
+ VMCOREINFO_OFFSET(zone, free_area);
+ VMCOREINFO_OFFSET(zone, vm_stat);
+ VMCOREINFO_OFFSET(zone, spanned_pages);
+ VMCOREINFO_OFFSET(free_area, free_list);
+ VMCOREINFO_OFFSET(list_head, next);
+ VMCOREINFO_OFFSET(list_head, prev);
+ VMCOREINFO_LENGTH(zone.free_area, MAX_ORDER);
+ VMCOREINFO_NUMBER(NR_FREE_PAGES);
arch_crash_save_vmcoreinfo();