From: Paul Durrant Date: Tue, 24 Jul 2018 14:46:22 +0000 (+0100) Subject: Back-port rsp_event manipulation changes from master X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=db0323253ebdd478c959f16992cdf28d59014c70;p=pvdrivers%2Fwin%2Fxenvbd.git Back-port rsp_event manipulation changes from master Rather than updating rsp_event at the end of every poll, the code in master sets it to req_prod_pvt during submission to attempt to defer events until the last request has been processed. Signed-off-by: Paul Durrant --- diff --git a/src/xenvbd/blockring.c b/src/xenvbd/blockring.c index 7cf5c84..b4688e7 100644 --- a/src/xenvbd/blockring.c +++ b/src/xenvbd/blockring.c @@ -549,7 +549,6 @@ BlockRingPoll( KeMemoryBarrier(); BlockRing->FrontRing.rsp_cons = rsp_cons; - BlockRing->SharedRing->rsp_event = rsp_cons + 1; } done: @@ -575,7 +574,7 @@ BlockRingSubmit( req = RING_GET_REQUEST(&BlockRing->FrontRing, BlockRing->FrontRing.req_prod_pvt); __BlockRingInsert(BlockRing, Request, req); KeMemoryBarrier(); - ++BlockRing->FrontRing.req_prod_pvt; + BlockRing->SharedRing->rsp_event = ++BlockRing->FrontRing.req_prod_pvt; RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&BlockRing->FrontRing, Notify); KeReleaseSpinLock(&BlockRing->Lock, Irql);