Serge Gautherie
710acab83d
[NTOS:MM] MiSetPagingOfDriver(): Add an explicit #if around unreachable code
2021-04-26 10:27:20 +02:00
Jérôme Gardou
c48580135d
[NTOS:MM] Fix a bit page fault handler with regard to COW sections
2021-04-08 15:40:37 +02:00
Jérôme Gardou
a34d9bcfb6
[NTOS:MM] Share "page.c" between i386 & amd64 builds
2021-04-08 15:40:37 +02:00
Jérôme Gardou
7ea8312617
[NTOS:MM] Split MmCreateProcessAddressSpace in two parts
...
Generic one and arch-specific one.
Properly fail if we are out of resources.
Restore a lost assert.
2021-04-08 15:40:37 +02:00
Jérôme Gardou
6c027d28f9
[NTOS:MM] Properly track system process hyper space PDE page
2021-04-08 15:40:37 +02:00
Jérôme Gardou
370982aa1d
[NTOS:MM] Make i386/page.c usable for all x86 variants
...
This includes PAE & amd64
2021-04-08 15:40:37 +02:00
Jérôme Gardou
b10d92a16c
[NTOS:MM] Use MI_MAKE_HARDWARE_PTE & friends in legacy Mm
2021-04-08 15:40:37 +02:00
Jérôme Gardou
43378411fb
[NTOS:MM] Rewrite arch-specifics of the legacy Mm
...
Properly handle PDE refcounting
Clean-up of the internal API
Enforce attaching to the process when modifying its memory layout, instead of
making circonvoluted mappings which always end up being broken.
2021-04-08 15:40:37 +02:00
Jérôme Gardou
b445005c70
[NTOS:MM] Get rid of MmRosFlushVirtualMemory
...
It's not used anywhere now, and it will eventually be gone
2021-04-08 15:40:37 +02:00
Jérôme Gardou
9e121fb6c2
[NTOS:MM] Get rid of MmSetCleanAllRmaps and MmIsDirtyPageRmap
...
Everything is wrong with them. Bad locking. Bad logic.
2021-04-08 15:40:37 +02:00
Jérôme Gardou
7bffb92099
[NTOS:MM] Let ARM3 handle invalid PDE for itself.
2021-04-08 15:40:37 +02:00
Jérôme Gardou
36a92e6ea5
[NTOS:MM] Fix a bit the page-out/page-in logic
...
- Do not lock the section segment when we are serving a fault for a process private page.
- Do not keep the process address space lock while writing to pagefile.
- Do not wait for an event that might never be set.
2021-04-08 15:40:37 +02:00
Jérôme Gardou
82c908195c
Revert "[NTOS:MM] Allow MiMapPageInHyperSpace to be called from DISPATCH_LEVEL"
...
This reverts commit 8404d1a6ff
.
Not ready for prime time, sorry.
2021-04-07 23:26:44 +02:00
Jérôme Gardou
8404d1a6ff
[NTOS:MM] Allow MiMapPageInHyperSpace to be called from DISPATCH_LEVEL
...
Also annotate it to show its behaviour.
2021-04-07 23:09:26 +02:00
Oleg Dubinskiy
52f4d8019b
[NTOS:MM][NTOS:SE] Mute some noisy stubs
...
Mute debug prints of MmDoesFileHaveUserWritableReferences and SeAuditingFileEventsWithContext stubs.
These stubs are very noisy and create a lot of spam in the log when using Microsoft NTFS driver in ReactOS (with some other improvements applied).
Implementing those functions isn't badly required for the proper work of this driver, so better way for now is just mute these stubs a bit.
After my changes, they will be displayed only once, and the log will be more clear, so it will seem to be enough to understand that the driver calls these routines.
CORE-17409
2021-04-07 13:16:03 +02:00
Mark Jansen
5e928e5c92
[NTOS:MM] Stubplement cookie generation for drivers
2021-04-03 18:08:53 +02:00
Jérôme Gardou
998870c5ea
[NTOS:MM] Properly fail for invalid sizes of data section mappings
2021-03-30 22:20:15 +02:00
Jérôme Gardou
4c731adc04
[NTOS:MM] Fix compilation when PFN tracing is enabled
2021-03-30 17:22:09 +02:00
Jérôme Gardou
80f8beeeee
[NTOS/MM] Remove an outdated check
2021-03-30 17:13:19 +02:00
Jérôme Gardou
0187c1e113
[NTOS:MM] Fix PFN tracing
2021-03-30 16:26:43 +02:00
Jérôme Gardou
d1d1260f5f
[NTOS:MM] Fix integer arithmetics
2021-03-22 10:02:12 +01:00
Jérôme Gardou
42094071ee
[NTOS:MM] Silence noisy DPRINTs
2021-03-18 12:24:21 +01:00
Jérôme Gardou
4ff5d39edb
[NTOS:MM] Use a define for the big pool table occupation rate
2021-03-18 12:24:21 +01:00
Jérôme Gardou
8494688eeb
[NTOS:MM] Do not use atomic operations to set a bit while holding a lock.
...
Saving your fingers from typing it doesn't make it better code.
2021-03-18 12:24:21 +01:00
Jérôme Gardou
f06b58925d
[NTOS:MM] Implement shrinking big pool allocation table
...
Shrink when using 1/8 of its allocated capacity (thus use 25% of it at the end of the process)
Expand when using 3/4 of its allocated capacity (thus use ~40% of it at the end of the process)
2021-03-18 12:24:21 +01:00
Jérôme Gardou
54354712e2
[NTOS:MM] Fail allocating non-paged pool when running out of available pages
2021-03-18 12:24:21 +01:00
Jérôme Gardou
34630a06ca
[NTOS:MM] Do not bugcheck when we are freeing a big allocation for which we didn't manage to insert the tag
2021-03-18 12:24:21 +01:00
Jérôme Gardou
d5fa0788d8
[NTOS:MM] Silence a DPRINT which became noisy
2021-03-16 13:23:21 +01:00
Jérôme Gardou
a93e065ebc
[NTOS:MM] Do not chunk-read file when we are the modified-page-writer thread
2021-02-26 08:46:53 +01:00
Jérôme Gardou
35c091adaf
[NTOS:MM] Do not chunk-read files marked with FO_RANDOM_ACCESS
2021-02-26 08:46:53 +01:00
Timo Kreuzer
4b4bff0642
[NTOS:MM] Handle demand zero PTEs with MM_EXECUTE_READWRITE and MM_READWRITE
2021-02-16 18:02:57 +01:00
Jérôme Gardou
0573de22a0
[NTOS:MM] Do not assert on a case we actually support
2021-02-10 17:48:30 +01:00
Jérôme Gardou
73fd52a164
[NTOS:MM] Flush dirty pages after closing the page files.
...
CORE-17462
2021-02-10 11:14:19 +01:00
Victor Perevertkin
b705df731e
[NTOS:MM][FASTFAT_NEW] Fix DBG usage, fixes Release build
2021-02-05 11:54:10 +03:00
Jérôme Gardou
6f2b94c023
[NTOS:MM] Wake up the balancer as soon as we are low on page.
...
Fixes installing on a system with 64MB of RAM, if you feel like it.
2021-02-03 13:42:39 +01:00
Jérôme Gardou
b7eb0fddf3
Address PR review
2021-02-03 09:41:24 +01:00
Jérôme Gardou
c0bf352069
[NTOS:MM] Fix regression of MmCanFileBeTruncated
2021-02-03 09:41:24 +01:00
Jérôme Gardou
7f7abc9838
[NTOS:MM] Simplify code & fix MSVC x64 build
2021-02-03 09:41:23 +01:00
Jérôme Gardou
2ba1926037
[NTOS:MM][NTOS:CC] Performance improvement again
...
Read files by 64kb chunks instead of page-sized chunks.
2021-02-03 09:41:23 +01:00
Jérôme Gardou
625f273361
[NTOS:MM] More fine-tuning of the memory balancer
2021-02-03 09:41:23 +01:00
Jérôme Gardou
41475dfcd7
[NTOS:CC] Performance improvements
...
Do not ditch the pages as soon as the section are unmapped
Improve MmBalancer "algorithm" (or whatever you call that)
Various needed fixes to get this going.
2021-02-03 09:41:23 +01:00
Jérôme Gardou
ea354c4bc7
[NTOS:MM] Unconditionally purge cache on image section creation.
2021-02-03 09:41:23 +01:00
Jérôme Gardou
c1c51e31e4
[NTOS:MM] Keep a ref on the segment when mapping a page & keep trace of what is the highest offset mapped.
2021-02-03 09:41:23 +01:00
Jérôme Gardou
91a4e62376
[NTOS:MM] Improve MmCanFileBeTruncated
2021-02-03 09:41:23 +01:00
Jérôme Gardou
3e43aa1305
[NTOS:MM] Use 64-bit integer to count references on segments
2021-02-03 09:41:23 +01:00
Jérôme Gardou
90c6a65efe
[NTOS:MM] Introduce MmPurgeSegment & MmFlushSegment
...
Those will back CcFlushCache and CcPurgeCache.
2021-02-03 09:41:23 +01:00
Jérôme Gardou
8a8b4db447
[NTOS:MM] Make the page LRU list a real LRU list.
...
Also, implement flushing mapped sections to disk on shutdown.
2021-02-03 09:41:23 +01:00
Jérôme Gardou
3efc5b1734
[NTOS:MM] Fix unlocking on failure path
2021-02-03 09:41:23 +01:00
Jérôme Gardou
f201b8af78
[NTOS:MM] Do not acquire Pfn lock in MmGetRmapListHead
...
All callers already hold it
2021-02-03 09:41:23 +01:00
Jérôme Gardou
5949d5095d
[NTOS:CC][NTOS:MM] Try respecting ValidDataLength
2021-02-03 09:41:23 +01:00