From: Magnus Damm <damm@xxxxxxxxxx> Since /proc/iomem contains physical addresses, use add_segment_phys_virt(xxx, 0) instead of add_segment() in add_backup_segments(). This fix is needed for kexec jump on SuperH where add_segment() only takes virtual addresses. Signed-off-by: Magnus Damm <damm at igel.co.jp> --- kexec/kexec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- 0001/kexec/kexec.c +++ work/kexec/kexec.c 2009-03-17 22:43:06.000000000 +0900 @@ -454,7 +454,8 @@ int add_backup_segments(struct kexec_inf break; start = (bkseg_base + pagesize - 1) & ~(pagesize - 1); end = (bkseg_base + bkseg_size) & ~(pagesize - 1); - add_segment(info, NULL, 0, start, end-start); + add_segment_phys_virt(info, NULL, 0, + start, end-start, 0); mem_size = mem_base + mem_size - \ (bkseg_base + bkseg_size); mem_base = bkseg_base + bkseg_size;