> -----Original Message----- > From: Dario Faggioli [mailto:dario.faggi...@citrix.com] > Sent: Tuesday, September 22, 2015 9:40 PM > To: Wu, Feng; George Dunlap > Cc: xen-devel@lists.xen.org; Tian, Kevin; Keir Fraser; George Dunlap; Andrew > Cooper; Jan Beulich > Subject: Re: [Xen-devel] [PATCH v7 15/17] vmx: VT-d posted-interrupt core > logic > handling > > On Tue, 2015-09-22 at 13:25 +0000, Wu, Feng wrote: > > > > > > -----Original Message----- > > > From: George Dunlap [mailto:george.dun...@citrix.com] > > > Specifically, consider the following scheduling case happened on > > pCPUA: > > vCPUA --> idle --> vCPUB > > > > 1. First, vCPUA is running on pCPUA, so the NDST filed in PI > > descriptor is pCPUA > > 2. Then vCPUA is switched out and idle is switched in running in > > pCPUA > > 3. Sometime later, vCPUB is switched in on pCPUA. However, the NDST > > field > > for vCPUA is still pCPUA, and currently, vCPUB is running on it. That > > means > > the spurious PI interrupts for vCPUA can disturb vCPUB (because the > > NDST > > field is pCPUA), it seems not so good to me. > > > Mmm... Ok, but you're not saying what caused the transition from vCPUA > to idle, and from idle to vCPUB. That matters because, if this all > happened because blockings and wakeups, it's nothing to do with lazy > context switch, which is what we are discussing here (in the sense that > PI data structures would, in those cases, be updated appropriately in > block and wake hooks).
Like George mentioned before, Let's assume it is because of tasklets or vCPU is going to offline to wait device model's IO operations, so idle is switched in. > > Also, if we're going from vCPUA to vCPUB, even if there's idle in > between, that can't be done via lazy context switch. Yes, in the above scenario, vCPUB to idle transition has nothing to do with lazy context switch, however, the point here is vCPUA to idle is related to lazy context switch, and if we don't set the SN for vCPUA here, it will remain clear and the NDST field of vCPUA will remain pCPUA, even some time later vCPUB is running on it. In that case, the spurious Pi interrupts for vCPUA can disturb vCPUB. > In fact, in this > case, __context_switch() must be called at some point (during the idle- > ->vCPUB switch, if my understanding is correct), and the hook will > actually get called! Yes, the idle to vCPUB switch is covered by __context_switch(), but it cannot change the PI state of vCPUA at that point. Like mentioned above, in this case, spurious PI interrupts happens. Thanks, Feng > > Dario > -- > <<This happens because I choose it to happen!>> (Raistlin Majere) > ----------------------------------------------------------------- > Dario Faggioli, Ph.D, http://about.me/dario.faggioli > Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel