> >> Thanks for the comments! > >> > >> From my understanding, __sync_local_execstate() can only get called > >> in the following two cases: > >> #1) this_cpu(curr_vcpu) == current, in this case, __context_switch() is > >> not called. > >> #2) this_cpu(curr_vcpu) != current, and current == idle_vcpu, that means > >> we just switched from a non-idle vCPU to idle vCPU, so here we need to > >> call __context_switch() to copy things to the original vcpu struct. > >> > >> Please correct me if the above understanding is wrong or incomplete? > > > > Hi George / Dario, > > > > Could you please confirm the above understanding is correct? (In fact, it is > > Related to lazy context switch, right?) if so I can continue with the > > pi_context_switch() way George suggested. > > Yes, that's the general idea. Normally, you can access the registers of > a non-running vcpu from the vcpu struct. But if we've done a lazy > context switch, that's not true -- so to access those registers properly > we need to go through and do the full context switch *on that pcpu*.
Thanks for the clarification! Thanks, Feng _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel