On Wed, Sep 06, 2017 at 02:36:57PM -0700, Andy Lutomirski wrote:
> @@ -293,12 +294,19 @@ cpu_initialize_context(unsigned int cpu, struct 
> task_struct *idle)
>  #endif
>       memset(&ctxt->fpu_ctxt, 0, sizeof(ctxt->fpu_ctxt));
>  
> +     /*
> +      * Bring up the CPU in cpu_bringup_and_idle() with the stack
> +      * pointing just below where pt_regs would be if it were a normal
> +      * kernel entry.
> +      */
>       ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle;
>       ctxt->flags = VGCF_IN_KERNEL;
>       ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */
>       ctxt->user_regs.ds = __USER_DS;
>       ctxt->user_regs.es = __USER_DS;
>       ctxt->user_regs.ss = __KERNEL_DS;
> +     ctxt->user_regs.cs = __KERNEL_CS;
> +     ctxt->user_regs.esp = task_top_of_stack(idle) - sizeof(struct pt_regs);

Isn't this the same as task_pt_regs(idle)?

-- 
Josh

Reply via email to