s390: fix fallout from major rewrite
PATCH 1/1 s390: fix fallout from major rewrite
This patch brings the s390 port to where it will compile, boot, and checkpoint/restart a simple app.
Signed-off-by Serge E. Hallyn <serue-r/[email protected]>
--- arch/s390/include/asm/checkpoint_hdr.h | 12 ++---------- arch/s390/kernel/vdso.c | 4 +++- arch/s390/mm/Makefile | 2 +- arch/s390/mm/checkpoint.c | 26 +++++++++++--------------- arch/s390/mm/checkpoint_s390.h | 23 ----------------------- 5 files changed, 17 insertions(+), 50 deletions(-) delete mode 100644 arch/s390/mm/checkpoint_s390.h
arch/s390/include/asm/checkpoint_hdr.h +2 -10
@@ -27,7 +27,7 @@* NUM_GPRS defined in <asm/ptrace.h> to be 16 * NUM_FPRS defined in <asm/ptrace.h> to be 16 * NUM_APRS defined in <asm/ptrace.h> to be 16 -* NUM_CKPT_WORDS defined in <asm/ptrace.h> to be 3 +* NUM_CR_WORDS defined in <asm/ptrace.h> to be 3 */ struct ckpt_hdr_cpu {struct ckpt_hdr h;
@@ -56,7 +56,7 @@ struct ckpt_hdr_cpu { } fprs[NUM_FPRS ];/* per_struct */ -__u64 per_control_regs[NUM_CKPT_WORDS ]; +__u64 per_control_regs[NUM_CR_WORDS ];__u64 starting_addr;__u64 ending_addr;__u64 address;
@@ -80,14 +80,6 @@ struct ckpt_hdr_header_arch {struct ckpt_hdr h; }; -#ifdef __KERNEL__ -/* Functions for copying to/from the header structs */ -extern void ckpt_s390_regs (int op,struct ckpt_hdr_cpu *h, -struct task_struct *t); -extern void ckpt_s390_mm (int op,struct ckpt_hdr_mm_context *h, -struct mm_struct *mm); -#endif -#endif /* __s390x__ */ #endif /* __ASM_S390_CKPT_HDR__H */
arch/s390/kernel/vdso.c +3 -1
@@ -241,8 +241,10 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, }/* for restart(2), double check that we got we asked for */ -if (start && addr != start) +if (start && vdso_base != start) { + rc = -EINVAL ; goto out_up; + }/* * our vma flags don't have VM_WRITE so by default, the process
arch/s390/mm/Makefile +1 -1
@@ -6,4 +6,4 @@ obj-y := init.o fault.o extmem.o mmap.o vmem.o pgtable.o obj-$(CONFIG_CMM) += cmm.o obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o obj-$(CONFIG_PAGE_STATES) += page-states.o -obj-$(CONFIG_CHECKPOINT) += checkpoint.o restart.o +obj-$(CONFIG_CHECKPOINT) += checkpoint.o
arch/s390/mm/checkpoint.c +11 -15
@@ -9,19 +9,17 @@*/ #include <linux/checkpoint.h> -#include <linux/checkpoint_hdr.h> #include <linux/kernel.h> #include <asm/system.h> #include <asm/pgtable.h> #include <asm/elf.h> - -#include "checkpoint_s390.h" +#include <asm/checkpoint_hdr.h> /************************************************************************** * Checkpoint */ -void s390_regs (int op,struct ckpt_hdr_cpu *h,struct task_struct *t) +static void s390_copy_regs (int op,struct ckpt_hdr_cpu *h,struct task_struct *t) {struct pt_regs *regs =task_pt_regs (t);struct thread_struct *thr = &t->thread;
@@ -57,7 +55,7 @@ void s390_regs(int op, struct ckpt_hdr_cpu *h, struct task_struct *t)CKPT_COPY_ARRAY (op, h->fprs, thr->fp_regs.fprs,NUM_FPRS );CKPT_COPY_ARRAY (op, h->acrs, thr->acrs,NUM_ACRS );CKPT_COPY_ARRAY (op, h->per_control_regs, - thr->per_info.control_regs.words.cr,NUM_CKPT_WORDS ); + thr->per_info.control_regs.words.cr,NUM_CR_WORDS ); }void s390_mm (int op,struct ckpt_hdr_mm_context *h,struct mm_struct *mm)
@@ -75,16 +73,16 @@ int checkpoint_thread(struct ckpt_ctx *ctx, struct task_struct *t) }/* dump the cpu state and registers of a given task */ -int checkoint_write_cpu (struct ckpt_ctx *ctx,struct task_struct *t) +int checkpoint_cpu (struct ckpt_ctx *ctx,struct task_struct *t) {struct ckpt_hdr_cpu *h;int ret; - hh =ckpt_hdr_get_type (ctx,sizeof (*h),CKPT_HDR_CPU ); + h =ckpt_hdr_get_type (ctx,sizeof (*h),CKPT_HDR_CPU );if (!h)return -ENOMEM ; -s390_regs (CKPT_CPT , h, t); +s390_copy_regs (CKPT_CPT , h, t); ret =ckpt_write_obj (ctx, (struct ckpt_hdr *) h);ckpt_hdr_put (ctx, h);
@@ -95,7 +93,7 @@ int checkoint_write_cpu(struct ckpt_ctx *ctx, struct task_struct *t)/* Write an empty header since it is assumed to be there */ int checkpoint_write_header_arch (struct ckpt_ctx *ctx) { -struct ckpt_hdr_head_arch *h; +struct ckpt_hdr_header_arch *h;int ret; h =ckpt_hdr_get_type (ctx,sizeof (*h),CKPT_HDR_HEADER_ARCH );
@@ -134,7 +132,7 @@ int restore_thread(struct ckpt_ctx *ctx)return 0 ; } -int restore_read_cpu (struct ckpt_ctx *ctx) +int restore_cpu (struct ckpt_ctx *ctx) {struct ckpt_hdr_cpu *h;
@@ -142,7 +140,7 @@ int restore_read_cpu(struct ckpt_ctx *ctx)if (IS_ERR (h))return PTR_ERR (h); -checkpoint_s390_regs (CKPT_RST , h, current); +s390_copy_regs (CKPT_RST , h, current);/* s390 does not restore the access registers after a syscall, * but does on a task switch. Since we're switching tasks (in
@@ -157,7 +155,6 @@ int restore_read_cpu(struct ckpt_ctx *ctx)int restore_read_header_arch (struct ckpt_ctx *ctx) {struct ckpt_hdr_header_arch *h; -int ret; h =ckpt_read_obj_type (ctx,sizeof (*h),CKPT_HDR_HEADER_ARCH );if (IS_ERR (h))
@@ -171,14 +168,13 @@ int restore_read_header_arch(struct ckpt_ctx *ctx)int restore_mm_context (struct ckpt_ctx *ctx,struct mm_struct *mm) {struct ckpt_hdr_mm_context *h; -int ret; h =ckpt_read_obj_type (ctx,sizeof (*h),CKPT_HDR_MM_CONTEXT );if (IS_ERR (h))return PTR_ERR (h); -checkpoint_s390_mm (CKPT_RST , h, mm); +s390_mm (CKPT_RST , h, mm);ckpt_hdr_put (ctx, h); -return ret; +return 0 ; }
arch/s390/mm/checkpoint_s390.h deleted +0 -23
@@ -1,23 +0,0 @@ -/* -* Checkpoint/restart - architecture specific support for s390 -* -* Copyright IBM Corp. 2009 -* -* This file is subject to the terms and conditions of the GNU General Public -* License. See the file COPYING in the main directory of the Linux -* distribution for more details. -*/ - -#ifndef _S390_CHECKPOINT_H -#define _S390_CHECKPOINT_H - -#include <linux/checkpoint_hdr.h> -#include <linux/sched.h> -#include <linux/mm_types.h> - -extern void checkpoint_s390_regs (int op,struct ckpt_hdr_cpu *h, -struct task_struct *t); -extern void checkpoint_s390_mm (int op,struct ckpt_hdr_mm_context *h, -struct mm_struct *mm); - -#endif /* _S390_CHECKPOINT_H */
Signature · 1 line
1.6.1
SH> This patch brings the s390 port to where it will compile, SH> boot, and checkpoint/restart a simple app.
SH> Signed-off-by: Serge E. Hallyn <serue-r/[email protected]>
Signature · 3 lines
Dan Smith IBM Linux Technology Center email: danms-r/[email protected]
A message that is not in the archive (sent off-list or not yet received): 20090430225419.GA16782-r/[email protected]
Dan Smith
Tested-bySH> This patch brings the s390 port to where it will compile, SH> boot, and checkpoint/restart a simple app.
SH> Signed-off-by: Serge E. Hallyn <serue-r/[email protected]>
Tested-by Dan Smith <danms-r/[email protected]>
Signature · 3 lines
Dan Smith IBM Linux Technology Center email: danms-r/[email protected]