[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: çå: [Xen-devel] About TSS initialization when Xen booting.



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.

Ian.



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.