[NTOS:ARM3] Change calculation for more system PTEs#8613
[NTOS:ARM3] Change calculation for more system PTEs#8613DarkFire01 merged 3 commits intoreactos:masterfrom
Conversation
|
I suppose you've seen this text? |
8000
I have and I don’t think this PR completely violates the root point that was made. |
|
Out of curiosity, on your test system where the VboxWDDM would crash otherwise, what are the typical values of the following variables just before your fixup code is being run? : |
I don't mind going and getting these, but id rather do it with the intel gpu driver which needs less extra stuff to make it work. |
|
The nvidia forceSW opengl bug appears to be resolved with this PR Testing this did require an additional patch due to a regression effecting nvidia drivers and a registry change to disable vsync |
d3bd973 to
3088e4f
Compare
|
Btw, the memory layout(s) can be found here: https://reactos.org/wiki/Techwiki:Memory_Layout |
f669d66 to
0c759a5
Compare
|
This PR has been rewritten one more time. opting for the system PTE region being placed in the unused space after |
8589a58 to
369337f
Compare
|
finally squeezed an updated ttest run out of the bots |
cdf0155 to
670c91e
Compare
|
Not sure I'm fully understanding your table right:
So, in the "After" case, the nonpaged pool starts at an higher address than in the "Before" case, yet at the same time they both end up at the same address (thus, the nonpaged pool range in the "After" case is slightly smaller). And yet, in the "After" case, the size of the nonpaged pool is larger ?! Something is fishy. |
|
For extra reference I'm linking some literature on the x86 memory map and the "known" (from public debugger symbols) global Mm variables that are also used by WinDbg for diagnostics: |
Now that i got a brain, uh //
// Non paged pool comes after the PFN database
//
MmNonPagedPoolStart = (PVOID)((ULONG_PTR)MmPfnDatabase +
(MxPfnAllocation << PAGE_SHIFT));Unless I'm misunderstanding something here? This gets assigned twice. |
6f0cb5b to
8af0471
Compare
I'll see. In the meantime, could you check this other question? -> #8613 (comment) |
I added an initialization for it. |
| * Keep MmNonPagedSystemStart initialized for debugger (KD/Windbg) use. | ||
| * On x86 ARM3, the System PTE space is placed in the loader-gap region. | ||
| */ | ||
| MmNonPagedSystemStart = MmSystemPteSpaceStart; |
63e8d97 to
53933d0
Compare
53933d0 to
87360cd
Compare
We barely have enough space in system PTEs for more than one 3rd party driver to be loaded in the system, on top of this some drivers (Intel) decide they want more than 32mb! And some (VboxWDDM) want to map a 256mb space!!
I’ve heard multiple times our x86 memory lay out is hard coded and not even sure what it wants to be. So here’s my pitch, because I surely cannot make it worse right?
This allows x86 to run more then 1 or 2 third party drivers. And allows the intel GPU driver to load at all.
Testbot runs (Filled in by Devs)
updated comparison chart with new PR rewrite: