>>> On 22.11.18 at 10:50, <aisa...@bitdefender.com> wrote: > On 21.11.2018 20:55, Razvan Cojocaru wrote: >>> + if ( a == v ) >>> + continue; >>> + >>> + /* Pause, synced. */ >>> + while ( !a->arch.in_host ) >> Why not use a->is_running as a way to know whether the vCPU is >> running? >> >> I think the logic of using vcpu_pause and expecting the running vcpu >> to take a vmexit and thus set in_host is wrong because a vcpu that >> wasn't running when vcpu_pause_nosync is called won't get scheduled >> anymore, thus not taking a vmexit and this function will lockup. > > We can resolve this by using while ( !vcpu_runnable(a) && > !a->arch.in_host ), if this is suitable.
Only if you can fully explain why the current infrastructure doesn't work and can't be made work without the custom in_host flag. From prior work I know things are subtle in some cases where one would want to use ->is_running, but so far all issues could be resolved without custom additions. Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel