|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 24/26] Read overrides at start of day
From: Owen Smith <owen.smith@xxxxxxxxxx>
Reads MaxTransferLength and MaxPhysicalBreaks earlier
Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
src/xenvbd/adapter.c | 32 ++------------------------------
src/xenvbd/driver.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
src/xenvbd/driver.h | 10 ++++++++++
3 files changed, 56 insertions(+), 30 deletions(-)
diff --git a/src/xenvbd/adapter.c b/src/xenvbd/adapter.c
index b0a94e2..86c7275 100644
--- a/src/xenvbd/adapter.c
+++ b/src/xenvbd/adapter.c
@@ -1768,8 +1768,6 @@ AdapterHwFindAdapter(
PDEVICE_OBJECT DeviceObject;
PDEVICE_OBJECT PhysicalDeviceObject;
PDEVICE_OBJECT LowerDeviceObject;
- ULONG MaxTransferLength;
- ULONG MaxPhysicalBreaks;
NTSTATUS status;
UNREFERENCED_PARAMETER(Context);
@@ -1777,28 +1775,9 @@ AdapterHwFindAdapter(
UNREFERENCED_PARAMETER(ArgumentString);
UNREFERENCED_PARAMETER(Again);
- // override settings
- status = RegistryQueryDwordValue(DriverGetParametersKey(),
- "MaxTransferLength",
- &MaxTransferLength);
- if (!NT_SUCCESS(status))
- MaxTransferLength = XENVBD_MAX_TRANSFER_LENGTH;
- if ((MaxTransferLength & (PAGE_SIZE - 1)) != 0)
- MaxTransferLength = XENVBD_MAX_TRANSFER_LENGTH;
-
- status = RegistryQueryDwordValue(DriverGetParametersKey(),
- "MaxPhysicalBreaks",
- &MaxPhysicalBreaks);
- if (!NT_SUCCESS(status))
- MaxPhysicalBreaks = XENVBD_MAX_PHYSICAL_BREAKS;
-
- Verbose("MaxTransferLength: %u, MaxPhysicalBreaks: %u\n",
- MaxTransferLength,
- MaxPhysicalBreaks);
-
// setup config info
- ConfigInfo->MaximumTransferLength = MaxTransferLength;
- ConfigInfo->NumberOfPhysicalBreaks = MaxPhysicalBreaks;
+ ConfigInfo->MaximumTransferLength = DriverGetMaxTransferLength();
+ ConfigInfo->NumberOfPhysicalBreaks = DriverGetMaxPhysicalBreaks();
ConfigInfo->AlignmentMask = 0; // Byte-Aligned
ConfigInfo->NumberOfBuses = 1;
ConfigInfo->InitiatorBusId[0] = 1;
@@ -1876,13 +1855,6 @@ AdapterHwInitialize(
Verbose("Perf: %u Channels\n",
Perf.ConcurrentChannels);
- if (Perf.Flags & STOR_PERF_CONCURRENT_CHANNELS)
- Perf.ConcurrentChannels = KeQueryActiveProcessorCount(NULL);
-
- status = StorPortInitializePerfOpts(DevExt,
- FALSE,
- &Perf);
-
return TRUE;
}
diff --git a/src/xenvbd/driver.c b/src/xenvbd/driver.c
index 4823390..28d2d49 100644
--- a/src/xenvbd/driver.c
+++ b/src/xenvbd/driver.c
@@ -50,6 +50,8 @@
typedef struct _XENVBD_DRIVER {
PXENVBD_ADAPTER Adapter;
HANDLE ParametersKey;
+ ULONG MaxTransferLength;
+ ULONG MaxPhysicalBreaks;
PDRIVER_DISPATCH StorPortDispatchPnp;
PDRIVER_DISPATCH StorPortDispatchPower;
PDRIVER_UNLOAD StorPortDriverUnload;
@@ -85,6 +87,22 @@ DriverGetParametersKey(
return __DriverGetParametersKey();
}
+ULONG
+DriverGetMaxTransferLength(
+ VOID
+ )
+{
+ return Driver.MaxTransferLength;
+}
+
+ULONG
+DriverGetMaxPhysicalBreaks(
+ VOID
+ )
+{
+ return Driver.MaxPhysicalBreaks;
+}
+
BOOLEAN
DriverReadOverride(
IN PCHAR Name
@@ -254,6 +272,9 @@ DriverUnload(
BufferTerminate();
+ Driver.MaxTransferLength = 0;
+ Driver.MaxPhysicalBreaks = 0;
+
RegistryCloseKey(Driver.ParametersKey);
Driver.ParametersKey = NULL;
@@ -305,6 +326,26 @@ DriverEntry(
Driver.ParametersKey = ParametersKey;
Driver.Adapter = NULL;
+
+ // override settings
+ status = RegistryQueryDwordValue(ParametersKey,
+ "MaxTransferLength",
+ &Driver.MaxTransferLength);
+ if (!NT_SUCCESS(status))
+ Driver.MaxTransferLength = XENVBD_MAX_TRANSFER_LENGTH;
+ if ((Driver.MaxTransferLength & (PAGE_SIZE - 1)) != 0)
+ Driver.MaxTransferLength = XENVBD_MAX_TRANSFER_LENGTH;
+
+ status = RegistryQueryDwordValue(ParametersKey,
+ "MaxPhysicalBreaks",
+ &Driver.MaxPhysicalBreaks);
+ if (!NT_SUCCESS(status))
+ Driver.MaxPhysicalBreaks = XENVBD_MAX_PHYSICAL_BREAKS;
+
+ Verbose("MaxTransferLength: %u, MaxPhysicalBreaks: %u\n",
+ Driver.MaxTransferLength,
+ Driver.MaxPhysicalBreaks);
+
BufferInitialize();
status = AdapterDriverEntry(RegistryPath,
@@ -330,6 +371,9 @@ fail4:
BufferTerminate();
+ Driver.MaxTransferLength = 0;
+ Driver.MaxPhysicalBreaks = 0;
+
RegistryCloseKey(Driver.ParametersKey);
Driver.ParametersKey = NULL;
diff --git a/src/xenvbd/driver.h b/src/xenvbd/driver.h
index aae3da1..e9cdcc0 100644
--- a/src/xenvbd/driver.h
+++ b/src/xenvbd/driver.h
@@ -48,6 +48,16 @@ DriverGetParametersKey(
VOID
);
+extern ULONG
+DriverGetMaxTransferLength(
+ VOID
+ );
+
+extern ULONG
+DriverGetMaxPhysicalBreaks(
+ VOID
+ );
+
extern BOOLEAN
DriverReadOverride(
IN PCHAR Name
--
2.8.3
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |