[Devel] Re: [PATCH 1/1] cr: s390: set return value for self-checkpoint
Oren Laadan
orenl at cs.columbia.edu
Thu Jul 23 18:47:41 PDT 2009
Got it, thanks.
Serge E. Hallyn wrote:
> If doing a self-checkpoint, then optimistically store 0 as the
> syscall return value to indicate success.
>
> This was being done for x86, but not yet being done for s390.
>
> Signed-off-by: Serge E. Hallyn <serue at us.ibm.com>
> ---
> arch/s390/mm/checkpoint.c | 11 +++++++++++
> 1 files changed, 11 insertions(+), 0 deletions(-)
>
> diff --git a/arch/s390/mm/checkpoint.c b/arch/s390/mm/checkpoint.c
> index a4a5da9..40dd417 100644
> --- a/arch/s390/mm/checkpoint.c
> +++ b/arch/s390/mm/checkpoint.c
> @@ -54,6 +54,17 @@ static void s390_copy_regs(int op, struct ckpt_hdr_cpu *h,
> CKPT_COPY(op, h->instruction_fetch, thr->per_info.instruction_fetch);
>
> CKPT_COPY_ARRAY(op, h->gprs, regs->gprs, NUM_GPRS);
> + /*
> + * for checkpoint in process context (from within a container),
> + * the actual syscall is taking place at this very moment; so
> + * we (optimistically) subtitute the future return value (0) of
> + * this syscall into the orig_eax, so that upon restart it will
> + * succeed (or it will endlessly retry checkpoint...)
> + */
> + if (op == CKPT_CPT && t==current) {
> + BUG_ON(h->gprs[2] < 0);
> + h->gprs[2] = 0;
> + }
> 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,
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
More information about the Devel
mailing list