[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] Kick notifier DPC directly.
EVTCHN(Trigger, ...) was changed with the FiFo event channel implementation, which led to a performance regression. Kicking the notifier does not require triggering the local end of the event channel, so shortcut this process by queueing the notifier DPC directly. Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> --- src/xenvbd/notifier.c | 12 ++++++++++++ src/xenvbd/notifier.h | 5 +++++ src/xenvbd/pdo.c | 8 ++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/xenvbd/notifier.c b/src/xenvbd/notifier.c index b812d69..e9943fa 100644 --- a/src/xenvbd/notifier.c +++ b/src/xenvbd/notifier.c @@ -312,6 +312,18 @@ NotifierDebugCallback( } VOID +NotifierKick( + IN PXENVBD_NOTIFIER Notifier + ) +{ + if (Notifier->Enabled) { + if (KeInsertQueueDpc(&Notifier->Dpc, NULL, NULL)) { + ++Notifier->NumDpcs; + } + } +} + +VOID NotifierTrigger( IN PXENVBD_NOTIFIER Notifier ) diff --git a/src/xenvbd/notifier.h b/src/xenvbd/notifier.h index 1c368e6..4cf35e7 100644 --- a/src/xenvbd/notifier.h +++ b/src/xenvbd/notifier.h @@ -84,6 +84,11 @@ NotifierDebugCallback( ); extern VOID +NotifierKick( + IN PXENVBD_NOTIFIER Notifier + ); + +extern VOID NotifierTrigger( IN PXENVBD_NOTIFIER Notifier ); diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c index e00729e..198c4d3 100644 --- a/src/xenvbd/pdo.c +++ b/src/xenvbd/pdo.c @@ -1860,7 +1860,7 @@ PdoReadWrite( } QueueAppend(&Pdo->FreshSrbs, &SrbExt->Entry); - NotifierTrigger(Notifier); + NotifierKick(Notifier); return FALSE; } @@ -1889,7 +1889,7 @@ PdoSyncCache( } QueueAppend(&Pdo->FreshSrbs, &SrbExt->Entry); - NotifierTrigger(Notifier); + NotifierKick(Notifier); return FALSE; } @@ -1918,7 +1918,7 @@ PdoUnmap( } QueueAppend(&Pdo->FreshSrbs, &SrbExt->Entry); - NotifierTrigger(Notifier); + NotifierKick(Notifier); return FALSE; } @@ -2252,7 +2252,7 @@ __PdoQueueShutdown( PXENVBD_NOTIFIER Notifier = FrontendGetNotifier(Pdo->Frontend); QueueAppend(&Pdo->ShutdownSrbs, &SrbExt->Entry); - NotifierTrigger(Notifier); + NotifierKick(Notifier); } static FORCEINLINE VOID -- 1.9.4.msysgit.1 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |