|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH xenvif 2/8] Revert "Replace uses of MmAllocatePagesForMdlEx in __AllocatePage"
This reverts commit 4f85d004. This patch was put in place to work around
a bug in Windows but seems to have a serious negative effect on
performance. The bug in Windows has since been fixed so the patch can now
be reverted to recover performance.
Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
---
src/xenvif/controller.c | 12 ++------
src/xenvif/receiver.c | 56 +++++++++--------------------------
src/xenvif/transmitter.c | 24 ++++-----------
src/xenvif/util.h | 76 ++----------------------------------------------
4 files changed, 25 insertions(+), 143 deletions(-)
diff --git a/src/xenvif/controller.c b/src/xenvif/controller.c
index cb9d30e..35901a2 100644
--- a/src/xenvif/controller.c
+++ b/src/xenvif/controller.c
@@ -469,9 +469,7 @@ ControllerConnect(
if (Controller->Mdl == NULL)
goto fail7;
- ASSERT(Controller->Mdl->MdlFlags
- & (MDL_MAPPED_TO_SYSTEM_VA
- | MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Controller->Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
Controller->Shared = Controller->Mdl->MappedSystemVa;
ASSERT(Controller->Shared != NULL);
@@ -906,9 +904,7 @@ ControllerSetHashKey(
if (Mdl == NULL)
goto fail1;
- ASSERT(Mdl->MdlFlags
- & (MDL_MAPPED_TO_SYSTEM_VA
- | MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
Buffer = Mdl->MappedSystemVa;
ASSERT(Buffer != NULL);
@@ -1087,9 +1083,7 @@ ControllerSetHashMapping(
if (Mdl == NULL)
goto fail2;
- ASSERT(Mdl->MdlFlags
- & (MDL_MAPPED_TO_SYSTEM_VA
- | MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
Buffer = Mdl->MappedSystemVa;
ASSERT(Buffer != NULL);
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index f5d572b..4e8046b 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -172,9 +172,7 @@ __ReceiverPacketMdlInit(
Packet->Mdl.Size = sizeof (MDL) + sizeof (PFN_NUMBER);
Packet->Mdl.MdlFlags = Mdl->MdlFlags;
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
Packet->Mdl.StartVa = Mdl->StartVa;
Packet->Mdl.MappedSystemVa = Mdl->MappedSystemVa;
@@ -411,9 +409,7 @@ ReceiverRingProcessTag(
PayloadLength = Packet->Length - Info->Length;
- ASSERT(Packet->Mdl.MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Packet->Mdl.MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Packet->Mdl.MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -504,9 +500,7 @@ ReceiverRingProcessChecksum(
if (Info->IpHeader.Length == 0)
return;
- ASSERT(Packet->Mdl.MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Packet->Mdl.MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Packet->Mdl.MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -663,9 +657,7 @@ ReceiverRingPullup(
PUCHAR SourceVa;
ULONG CopyLength;
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
SourceVa = Mdl->MappedSystemVa;
ASSERT(SourceVa != NULL);
@@ -711,9 +703,7 @@ __ReceiverRingPullupPacket(
XENVIF_PACKET_PAYLOAD Payload;
ULONG Length;
- ASSERT(Packet->Mdl.MdlFlags
- & (MDL_MAPPED_TO_SYSTEM_VA
- | MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Packet->Mdl.MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Packet->Mdl.MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -757,9 +747,7 @@ __ReceiverRingBuildSegment(
Info = &Packet->Info;
- ASSERT(Packet->Mdl.MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Packet->Mdl.MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
InfoVa = Packet->Mdl.MappedSystemVa;
ASSERT(InfoVa != NULL);
@@ -782,9 +770,7 @@ __ReceiverRingBuildSegment(
Mdl = &Segment->Mdl;
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Mdl->MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -866,9 +852,7 @@ __ReceiverRingBuildSegment(
Mdl = Mdl->Next;
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Mdl->MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -970,9 +954,7 @@ ReceiverRingProcessLargePacket(
Packet->Mdl.Next = NULL;
- ASSERT(Packet->Mdl.MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Packet->Mdl.MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
InfoVa = Packet->Mdl.MappedSystemVa;
ASSERT(InfoVa != NULL);
@@ -1164,9 +1146,7 @@ ReceiverRingProcessStandardPacket(
if (Mdl == NULL)
goto fail2;
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Mdl->MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -1269,9 +1249,7 @@ ReceiverRingProcessPacket(
// Override offset to align
Packet->Offset = Receiver->IpAlignOffset;
- ASSERT(Packet->Mdl.MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Packet->Mdl.MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Packet->Mdl.MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -1406,9 +1384,7 @@ __ReceiverRingSwizzle(
XENVIF_RECEIVER_PACKET,
ListEntry);
- ASSERT(Packet->Mdl.MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Packet->Mdl.MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Packet->Mdl.MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -2105,9 +2081,7 @@ ReceiverRingPoll(
ASSERT3U(rsp->id, ==, id);
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Mdl->MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -2498,9 +2472,7 @@ __ReceiverRingConnect(
if (Ring->Mdl == NULL)
goto fail3;
- ASSERT(Ring->Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Ring->Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
Ring->Shared = Ring->Mdl->MappedSystemVa;
ASSERT(Ring->Shared != NULL);
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index b1d9250..eed0a0f 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -866,9 +866,7 @@ __TransmitterRingCopyPayload(
Length = __min(Payload.Length, PAGE_SIZE);
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Mdl->MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -1188,9 +1186,7 @@ __TransmitterRingPrepareHeader(
Mdl = Buffer->Mdl;
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Mdl->MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -1687,9 +1683,7 @@ __TransmitterRingPreparePacket(
ASSERT3U(Mdl->ByteCount, <=, PAGE_SIZE - Trailer);
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Mdl->MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -1788,9 +1782,7 @@ __TransmitterRingPrepareArp(
Mdl = Buffer->Mdl;
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Mdl->MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -1931,9 +1923,7 @@ __TransmitterRingPrepareNeighbourAdvertisement(
Mdl = Buffer->Mdl;
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
BaseVa = Mdl->MappedSystemVa;
ASSERT(BaseVa != NULL);
@@ -3560,9 +3550,7 @@ __TransmitterRingConnect(
if (Ring->Mdl == NULL)
goto fail3;
- ASSERT(Ring->Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
+ ASSERT(Ring->Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
Ring->Shared = Ring->Mdl->MappedSystemVa;
ASSERT(Ring->Shared != NULL);
diff --git a/src/xenvif/util.h b/src/xenvif/util.h
index 52faa1e..30322d8 100644
--- a/src/xenvif/util.h
+++ b/src/xenvif/util.h
@@ -244,63 +244,7 @@ fail1:
return NULL;
}
-
-static FORCEINLINE PMDL
-__AllocatePage()
-{
- PHYSICAL_ADDRESS LowAddress;
- PHYSICAL_ADDRESS HighAddress;
- PHYSICAL_ADDRESS Align;
- SIZE_T TotalBytes;
- PMDL Mdl;
- PUCHAR MdlMappedSystemVa;
- NTSTATUS status;
-
- ASSERT3U(KeGetCurrentIrql(), <=, DISPATCH_LEVEL);
-
- LowAddress.QuadPart = 0ull;
- HighAddress.QuadPart = ~0ull;
- Align.QuadPart = PAGE_SIZE;
- TotalBytes = (SIZE_T)PAGE_SIZE;
-
- MdlMappedSystemVa = MmAllocateContiguousMemorySpecifyCache(
- TotalBytes,
- LowAddress,
- HighAddress,
- Align,
- MmCached);
-
- status = STATUS_NO_MEMORY;
- if (MdlMappedSystemVa == NULL)
- goto fail1;
-
- Mdl = IoAllocateMdl(MdlMappedSystemVa,
- (ULONG)TotalBytes,
- FALSE,
- FALSE,
- NULL);
- if (Mdl == NULL)
- goto fail2;
-
- MmBuildMdlForNonPagedPool(Mdl);
-
- ASSERT3U(Mdl->ByteOffset, ==, 0);
- ASSERT3P(Mdl->StartVa, ==, MdlMappedSystemVa);
- ASSERT3P(Mdl->MappedSystemVa, ==, MdlMappedSystemVa);
-
- RtlZeroMemory(MdlMappedSystemVa, Mdl->ByteCount);
-
- return Mdl;
-
-fail2:
- Error("fail2\n");
-
- MmFreeContiguousMemory(MdlMappedSystemVa);
-fail1:
- Error("fail1 (%08x)\n", status);
-
- return NULL;
-}
+#define __AllocatePage() __AllocatePages(1)
static FORCEINLINE VOID
__FreePages(
@@ -318,23 +262,7 @@ __FreePages(
ExFreePool(Mdl);
}
-static FORCEINLINE VOID
-__FreePage(
- IN PMDL Mdl
- )
-{
- PUCHAR MdlMappedSystemVa;
-
- ASSERT(Mdl->MdlFlags &
- (MDL_MAPPED_TO_SYSTEM_VA |
- MDL_SOURCE_IS_NONPAGED_POOL));
-
- MdlMappedSystemVa = Mdl->MappedSystemVa;
-
- IoFreeMdl(Mdl);
-
- MmFreeContiguousMemory(MdlMappedSystemVa);
-}
+#define __FreePage(_Mdl) __FreePages(_Mdl)
static FORCEINLINE PCHAR
__strtok_r(
--
2.5.3
_______________________________________________
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 |