Zhang, Xiantao wrote: > Carsten Otte wrote: >> Zhang, Xiantao wrote: >>> Carsten Otte wrote: >>>> Zhang, Xiantao wrote: >>>>> Hi, Carsten >>>>> Why do you think it is racy? In this function, >>>>> target_vcpu->arch.launched should be set to 1 for the first run, >>>>> and keep its value all the time. Except the first IPI to wake up >>>>> the vcpu, all IPIs received by target vcpu should go into "else" >>>>> condition. So you mean the race condition exist in "else" code ? >>>> For example to lock against destroying that vcpu. Or, the waitqueue >>>> may become active after if (waitqueue_active()) and before >>>> wake_up_interruptible(). In that case, the target vcpu might sleep >>>> and not get waken up by the ipi. >>> I don't think it may cause issue, because the target vcpu at least >>> can be waken up by the timer interrupt. >>> >>> But as you said, x86 side also have the same race issue ? >> As far as I can tell, x86 does'nt have that race. > > Hi, Carsten > I can't understand why it only exist at IA64 side. Thank you! > Xiantao Well, x86 does'nt signal the target processor by accessing the vcpu data structure. They use the IPI signal for that as far as I can see. And s390 does have an explicit lock for this purpose. Itanium however, does not have a lock but does access the target vcpu struct. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization