[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH xenvif] Replace uses of MmAllocatePagesForMdlEx in __AllocatePages()...



Hi Paul,

On 18/06/20 3:02 am, Paul Durrant wrote:
-----Original Message-----
From: win-pv-devel <win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx> On Behalf Of 
Paul Durrant
Sent: 16 June 2020 14:03
To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
Cc: Paul Durrant <pdurrant@xxxxxxxxxx>
Subject: [PATCH xenvif] Replace uses of MmAllocatePagesForMdlEx in 
__AllocatePages()...

From: Paul Durrant <pdurrant@xxxxxxxxxx>

... again.

Commit 4f85d004 "Replace uses of MmAllocatePagesForMdlEx in __AllocatePage"
modified __AllocatePage() (only) to use
MmAllocateContinguousMemorySpecifyCache() as its source of memory. As stated
in that commit:

"Windows appears to have an edge case bug in which zeroing memory using
MmAllocatePAgesForMdlEx (which in Win 10 1803 happens even if you specify
MM_DONT_ZERO_ALLOCATION) can cause a BSOD 139 1e."

That commit was reverted by e8fe14f6 since it was believed that the bug in
Windows had been fixed. Subsequently, however, the same symptoms have been
seen with recent updates of Server 2019. The stack is generally of the form:

nt!KeBugCheckEx
nt!KiBugCheckDispatch+0x69
nt!KiFastFailDispatch+0xd0
nt!KiRaiseSecurityCheckFailure+0x30e
nt!KiAcquireThreadStateLock+0x11fa90
nt!KeSetIdealProcessorThreadEx+0xd0
nt!MiZeroInParallelWorker+0x115016
nt!MiZeroInParallel+0x11c
nt!MiInitializeMdlBatchPages+0x2ae
nt!MiAllocatePagesForMdl+0x192
nt!MmAllocatePartitionNodePagesForMdlEx+0xc9
nt!MmAllocatePagesForMdlEx+0x4d

Hence, this patch re-instates the fix originally put in place by 4f85d004
but generalizes it to include AllocatePages() rather than just
AllocatePage().

Reported-by: Jan Bakuwel <jan.bakuwel@xxxxxxxxx>
Signed-off-by: Paul Durrant <pdurrant@xxxxxxxxxx>
---

This fix will also be propogated to all other PV drivers.
This is actually failing in xenvbd, trying to allocate 2 pages for the shared 
ring, so I'm going to try the simpler alternative of
continuing to use MmAllocatePagesForMdlEx() but without passing the "don't 
zero" flag.

Many thanks. Will you apply the fix to both 8.2.2 and 9.0 drivers?

I've raised on issue in the xcp-ng/xcp github repo linking to the mail archive of this list, so hopefully the patches will be pulled in there as well. The XCP-NG driver (so far) is the only one I can install without issues on Windows 2019 Server.

Jan




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.