[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |