This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: 答复: [Xen-devel] About TSS initialization when Xen booting.

To: 李亚琼 <liyaq04@xxxxxxxxxx>
Subject: Re: 答复: [Xen-devel] About TSS initialization when Xen booting.
From: Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx>
Date: Tue, 07 Aug 2007 07:52:37 +0100
Cc: "'Li, Xin B'" <xin.b.li@xxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Mon, 06 Aug 2007 23:50:21 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <20070807011555.A0158136853@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20070807011555.A0158136853@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Tue, 2007-08-07 at 09:27 +0800, 李亚琼 wrote:
> Thanks, Xin!
> But __context_switch will be invoked only when system is scheduled.
> During the initialization, Xen invokes percpu_traps_init and cpu_init
> to initialize a physical cpu. In this two functions, tss will be
> assigned with a value from guest_cpu_user_regs. But till this time,
> __context_switch has never been invoked. In other words, idle_domain’s
> tss is assigned with a trivial value. After all, when Xen is in the
> idle domain, a stack switch will occur when a interrupt occurs. Is it
> correct?

get_cpu_info returns a pointer into the stack. guest_cpu_user_regs is a
member of the structure this pointer points to (but not a pointer
itself). It has been arranged so that guest_cpu_user_regs overlaps the
part of the stack where entry.S will save the guests registers (mainly
in the SAVE_ALL macro).

This should make sense because the TSS is being initialised with exactly
the value you wish the stack to have when transitioning to ring0.

> The question is about the variables,  “stack”  and “stack_bottom”. At
> this moment, if guest_cpu_user_regs has not been initialized,
> “stack_bottom” will be zero when the cpu is the first physical cpu
> ( its stack is initialized with zero in file boot.S). And then “stack”
> will be zero, too. Is it correct?

Remember that guest_cpu_user_regs isn't a pointer, it's just a member of
a struct so it's address will currently be the address of that struct
plus an offset.


Xen-devel mailing list