Cleanup add-vmcoreinfo.patch
Subsystems (4)
cover Cleanup add-vmcoreinfo.patch
Hi Andrew,
Quoted 4 lines · Andrew Morton
Changes since 2.6.23-rc3-mm1:
[snip]
+add-vmcoreinfo.patch
Thank you for merging add-vmcoreinfo.patch.
I created the patchset for your comments and some corrections. The patchset is for linux-2.6.23-rc4-mm1.
[1/3] Cleanup the coding style according to Andrew's comments:
http://lists.infradead.org/pipermail/kexec/2007-August/000522.html
- vmcoreinfo_append_str() should have suitable __attribute__s so that the compiler can check its use.
- vmcoreinfo_max_size should have size_t.
- Use get_seconds() instead of xtime.tv_sec.
- Use init_uts_ns.name.release instead of UTS_RELEASE.
[2/3] Add nodemask_t's size and NR_FREE_PAGES's value to vmcoreinfo_data.
The dump filetering command 'makedumpfile'(v1.1.6 or before) had assumed the above values, and it was not good from the reliability viewpoint. So makedumpfile v1.2.0 came to need these values and I created the patch to let the kernel output them.
makedumpfile site:
https://sourceforge.net/projects/makedumpfile/
[3/3] Use the existing ia64_tpa() instead of asm code.
Thanks
Ken'ichi Ohmichi
_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec
PATCH 1/3 Cleanup the coding style according to Andrew's comments
[1/3] Cleanup the coding style according to Andrew's comments:
http://lists.infradead.org/pipermail/kexec/2007-August/000522.html
- vmcoreinfo_append_str() should have suitable __attribute__s so that the compiler can check its use.
- vmcoreinfo_max_size should have size_t.
- Use get_seconds() instead of xtime.tv_sec.
- Use init_uts_ns.name.release instead of UTS_RELEASE.
Thanks
Ken'ichi Ohmichi
---
---
include/linux/kexec.h +9 -7
@@ -123,18 +123,20 @@ int kexec_should_crash(struct task_strucvoid crash_save_cpu (struct pt_regs *regs,int cpu);void crash_save_vmcoreinfo (void );void arch_crash_save_vmcoreinfo (void ); -void vmcoreinfo_append_str (const char *fmt, ...); +void vmcoreinfo_append_str (const char *fmt, ...) + __attribute__ ((format (printf,1 ,2 )));unsigned long paddr_vmcoreinfo_note (void );#define SYMBOL (name) \ vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned long)&name)#define SIZE (name) \ - vmcoreinfo_append_str("SIZE(%s)=%d\n", #name, sizeof(struct name)) + vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \ + (unsigned long)sizeof(struct name))#define OFFSET (name, field) \ - vmcoreinfo_append_str("OFFSET(%s.%s)=%d\n", #name, #field, \ - &(((struct name *)0)->field)) + vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \ + (unsigned long)&(((struct name *)0)->field))#define LENGTH (name, value) \ - vmcoreinfo_append_str("LENGTH(%s)=%d\n", #name, value) + vmcoreinfo_append_str("LENGTH(%s)=%lu\n", #name, (unsigned long)value)#define CONFIG (name) \ vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
@@ -177,8 +179,8 @@ extern struct resource crashk_res;typedef u32 note_buf_t [KEXEC_NOTE_BYTES /4 ];extern note_buf_t *crash_notes;extern u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE /4 ]; -extern unsigned int vmcoreinfo_size; -extern unsigned int vmcoreinfo_max_size; +extern size_t vmcoreinfo_size; +extern size_t vmcoreinfo_max_size;#else /* !CONFIG_KEXEC */
kernel/kexec.c +5 -5
@@ -38,8 +38,8 @@ note_buf_t* crash_notes;/* 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 = {
@@ -1153,7 +1153,7 @@ void crash_save_vmcoreinfo(void)if (!vmcoreinfo_size)return ; -vmcoreinfo_append_str ("CRASHTIME=%d" , xtime.tv_sec); +vmcoreinfo_append_str ("CRASHTIME=%ld" ,get_seconds ()); buf = (u32 *)vmcoreinfo_note;
@@ -1195,8 +1195,8 @@ unsigned long __attribute__ ((weak)) padstatic 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);
kernel/ksysfs.c +1 -1
@@ -65,7 +65,7 @@ static ssize_t vmcoreinfo_show(struct ks {return sprintf (page,"%lx %x\n" ,paddr_vmcoreinfo_note (), - vmcoreinfo_max_size); + (unsigned int )vmcoreinfo_max_size); }KERNEL_ATTR_RO (vmcoreinfo);
_
_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec
PATCH 2/3 Add nodemask_t's size and NR_FREE_PAGES's value to vmcoreinfo_data
In reply to Ken'ichi Ohmichi[2/3] Add nodemask_t's size and NR_FREE_PAGES's value to vmcoreinfo_data.
The dump filetering command 'makedumpfile'(v1.1.6 or before) had assumed the above values, and it was not good from the reliability viewpoint. So makedumpfile v1.2.0 came to need these values and I created the patch to let the kernel output them.
makedumpfile site:
https://sourceforge.net/projects/makedumpfile/
Thanks
Ken'ichi Ohmichi
---
---
include/linux/kexec.h +5 -0
@@ -132,11 +132,16 @@ unsigned long paddr_vmcoreinfo_note(void#define SIZE (name) \ vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \ (unsigned long)sizeof(struct name)) +#define TYPEDEF_SIZE (name) \ + vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \ + (unsigned long)sizeof(name))#define OFFSET (name, field) \ vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \ (unsigned long)&(((struct name *)0)->field))#define LENGTH (name, value) \ vmcoreinfo_append_str("LENGTH(%s)=%lu\n", #name, (unsigned long)value) +#define NUMBER (name) \ + vmcoreinfo_append_str("NUMBER(%s)=%ld\n", #name, (long)name)#define CONFIG (name) \ vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
kernel/kexec.c +2 -0
@@ -1218,6 +1218,7 @@ static int __init crash_save_vmcoreinfo_SIZE (zone);SIZE (free_area);SIZE (list_head); +TYPEDEF_SIZE (nodemask_t);OFFSET (page, flags);OFFSET (page, _count);OFFSET (page, mapping);
@@ -1237,6 +1238,7 @@ static int __init crash_save_vmcoreinfo_OFFSET (list_head, next);OFFSET (list_head, prev);LENGTH (zone.free_area,MAX_ORDER ); +NUMBER (NR_FREE_PAGES );arch_crash_save_vmcoreinfo ();
_
_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec
PATCH 3/3 Use the existing ia64_tpa() instead of asm code
In reply to Ken'ichi Ohmichi[3/3] Use the existing ia64_tpa() instead of asm code.
Thanks
Ken'ichi Ohmichi
---
---
arch/ia64/kernel/machine_kexec.c +2 -4
@@ -21,6 +21,7 @@#include <asm/setup.h> #include <asm/delay.h> #include <asm/meminit.h> +#include <asm/processor.h> typedef NORET_TYPE void (*relocate_new_kernel_t)( unsigned long indirection_page,
@@ -149,9 +150,6 @@ void arch_crash_save_vmcoreinfo(void)unsigned long paddr_vmcoreinfo_note (void ) { -unsigned long vaddr, paddr; - vaddr = (unsigned long )(char *)&vmcoreinfo_note; - asmvolatile ("tpa %0 = %1" :"=r" (paddr) :"r" (vaddr) :"memory" ); -return paddr; +return ia64_tpa ((unsigned long )(char *)&vmcoreinfo_note); }
_
_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec