|
[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 |