> -----Original Message----- > From: KY Srinivasan > Sent: Friday, December 11, 2015 7:23 > > It looks the patch has not been Greg's tree yet. > > > > I have 2 questions about the patch: > > > > 1. hv_poll_channel() is invoked in fcopy_handle_handshake(), but not in > > vss_handle_handshake() and kvp_handle_handshake(). > > Why -- I guess we missed the vss/kvp cases somehow? > I will fix this. Thanks, KY! BTW, I fixed another small issue by https://lkml.org/lkml/2015/12/10/50 (The mail is attached for your convenience) > > 2. With the patch, hv_fcopy_onchannelcallback() can be invoked in the > > tasklet (i.e., vmbus_on_event(). NB: local irq is enabled), and in the > > hard irq handler(the IPI handler, e.g., > > fcopy_poll_wrapper() -> fcopy_poll_wrapper()). > > > > Can the former be interrupted by the latter? > > e.g., when the callback is running in the tasklet on vCPU0, > > fcopy_timeout_func() or fcopy_on_msg() could send the IPI to > > vCPU0 from another vCPU. > > Keep in mind that when the poll function is run, the state will not be > HVUTIL_READY. The state will be set to HVUTIL_READY in the IPI > handler. So, it is ok if the tasklet is interrupted by the IPI handler. > > K. Y Got it. BTW, in fcopy_handle_handshake(), IMO the line fcopy_transaction.state = HVUTIL_READY; just before hv_poll_channel(fcopy_transaction.recv_channel, fcopy_poll_wrapper); should be removed? Because in fcopy_poll_wrapper() we always have the same line. Ditto for kvp/vss. Thanks, -- Dexuan