|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [RFC PATCH 3/6] Query for "multi-queue-max-queues"
Value is limited to the number of vCPUs
Signed-off-by: owensm <owen.smith@xxxxxxxxxx>
---
src/xenvbd/driver.c | 3 ++-
src/xenvbd/driver.h | 1 +
src/xenvbd/frontend.c | 16 ++++++++++++++++
src/xenvbd/frontend.h | 1 +
4 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/src/xenvbd/driver.c b/src/xenvbd/driver.c
index 59b380c..2e9ba54 100644
--- a/src/xenvbd/driver.c
+++ b/src/xenvbd/driver.c
@@ -267,7 +267,8 @@ __DriverInitializeOverrides(
{ "discard-secure", FeatureDiscardSecure },
{ "discard-alignment", FeatureDiscardAlignment },
{ "discard-granularity", FeatureDiscardGranularity },
- { "max-ring-page-order", FeatureMaxRingPageOrder }
+ { "max-ring-page-order", FeatureMaxRingPageOrder },
+ { "multi-queue-max-queues", FeatureMultiQueueMaxQueues }
};
for (Index = 0; Index < ARRAYSIZE(Mapping); Index++) {
diff --git a/src/xenvbd/driver.h b/src/xenvbd/driver.h
index d99c09a..5a24c4a 100644
--- a/src/xenvbd/driver.h
+++ b/src/xenvbd/driver.h
@@ -80,6 +80,7 @@ typedef enum _XENVBD_FEATURE {
FeatureDiscardAlignment,
FeatureDiscardGranularity,
FeatureMaxRingPageOrder,
+ FeatureMultiQueueMaxQueues,
// Add any new features before this enum
NumberOfFeatures
diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c
index f8e903e..40fdbca 100644
--- a/src/xenvbd/frontend.c
+++ b/src/xenvbd/frontend.c
@@ -74,6 +74,7 @@ struct _XENVBD_FRONTEND {
XENVBD_DISKINFO DiskInfo;
XENVBD_PAGE Page80;
XENVBD_PAGE Page83;
+ ULONG MultiQueueMaxQueues;
// Interfaces to XenBus
XENBUS_STORE_INTERFACE StoreInterface;
@@ -784,6 +785,7 @@ FrontendReadFeatures(
IN PXENVBD_FRONTEND Frontend
)
{
+ ULONG ProcessorCount;
BOOLEAN Changed;
Changed = FrontendReadFeature(Frontend,
@@ -796,6 +798,14 @@ FrontendReadFeatures(
Changed |= FrontendReadFeature(Frontend,
FeaturePersistent,
&Frontend->Features.Persistent);
+ Changed |= FrontendReadValue32(Frontend,
+ FeatureMultiQueueMaxQueues,
+ TRUE,
+ &Frontend->MultiQueueMaxQueues);
+
+ ProcessorCount = KeQueryActiveProcessorCount(NULL);
+ if (ProcessorCount < Frontend->MultiQueueMaxQueues)
+ Frontend->MultiQueueMaxQueues = ProcessorCount;
if (!Changed)
return;
@@ -811,6 +821,10 @@ FrontendReadFeatures(
Frontend->TargetId,
Frontend->Features.Indirect);
}
+
+ Verbose("Target[%d] : MultiQueueMaxQueues %u\n",
+ Frontend->TargetId,
+ Frontend->MultiQueueMaxQueues);
}
static FORCEINLINE VOID
@@ -1929,5 +1943,7 @@ FrontendGetBarrier(
{
return Frontend->DiskInfo.Barrier;
}
+FRONTEND_GET_PROPERTY(MultiQueueMaxQueues, ULONG)
+
#undef FRONTEND_GET_PROPERTY
diff --git a/src/xenvbd/frontend.h b/src/xenvbd/frontend.h
index dfd72b4..0ffb261 100644
--- a/src/xenvbd/frontend.h
+++ b/src/xenvbd/frontend.h
@@ -167,6 +167,7 @@ FRONTEND_GET_PROPERTY(ReadOnly, BOOLEAN)
FRONTEND_GET_PROPERTY(Discard, BOOLEAN)
FRONTEND_GET_PROPERTY(FlushCache, BOOLEAN)
FRONTEND_GET_PROPERTY(Barrier, BOOLEAN)
+FRONTEND_GET_PROPERTY(MultiQueueMaxQueues, ULONG)
#undef FRONTEND_GET_PROPERTY
--
2.16.2.windows.1
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |