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
Jérôme Gardou
e46f1a9af3
[NTOS:MM] Disable APC while performing Paged Read
2021-02-03 09:41:23 +01:00
Jérôme Gardou
8ed15a49a7
[NTOS:MM] Fix a race
2021-02-03 09:41:23 +01:00
Jérôme Gardou
11eee4eeec
[NTOS:MM] Check that we don't add rmap for NULL process
2021-02-03 09:41:23 +01:00
Jérôme Gardou
caf89b9582
[NTOS:MM] Fix a race condition when unmapping sections views
2021-02-03 09:41:23 +01:00
Jérôme Gardou
cff3c399c6
[NTOS:MM] Fix input validation/correction in MmMapViewInSystemSpace
2021-02-03 09:41:23 +01:00
Jérôme Gardou
addf824d87
[NTOS:MM] Keep image maps & file maps coherent at the time of creating the image map
2021-02-03 09:41:23 +01:00
Jérôme Gardou
543112008a
Fix physical memory section creation
2021-02-03 09:41:22 +01:00
Jérôme Gardou
674ab3dce3
[NTOS:MM] Remove a check for now
2021-02-03 09:41:22 +01:00
Jérôme Gardou
1f796267bc
[NTOS:MM] Do not reference the section when mapping it.
...
Referencing the segment is enough.
2021-02-03 09:41:22 +01:00
Jérôme Gardou
3c2b1bf59b
[NTOS:MM] Save the dirty bit when sharing a segment page
2021-02-03 09:41:22 +01:00
Jérôme Gardou
3141668724
[NTOS:MM] Various fixes.
...
Fix MmFlushImageSection behaviour
Remove an invalid ASSERT
2021-02-03 09:41:22 +01:00
Jérôme Gardou
30f71c7fc0
[NTOS] Zero data unconditionally after segment end, unless section is created with SEC_RESERVE
...
Use a SEC_RESERVE section in Cc
2021-02-03 09:41:22 +01:00
Jérôme Gardou
aab24ed1b1
[NTOS:MM] Have the legacy Mm be less greedy about the number of pages it wants
2021-02-03 09:41:22 +01:00
Jérôme Gardou
fb07802956
[NTOS:MM] Make the situation about dirty pages in image map a bit clearer
2021-02-03 09:41:22 +01:00
Jérôme Gardou
d9f7459bb1
[NTOS:MM] Fix file object bad referencing
2021-02-03 09:41:22 +01:00
Jérôme Gardou
e39fc52d25
[NTOS/MM] Set FSRTL_MOD_WRITE_TOP_LEVEL_IRP top-level IRP when paging-out
2021-02-03 09:41:22 +01:00
Jérôme Gardou
f114209782
[NTOS/MM] Do not zero out the tail of the segment if the mapping is not an image
2021-02-03 09:41:22 +01:00
Jérôme Gardou
7d70af61e8
[NTOS:MM] Acquire file lock when creating section
2021-02-03 09:41:22 +01:00
Jérôme Gardou
d2fa434cb7
[NTOSKRNL] Address issues raised in PR 3361 review
2021-02-03 09:41:22 +01:00
Jérôme Gardou
7dab3583cc
[NTOS/MM] Force flushing when the page is dirtified in user mode
2021-02-03 09:41:22 +01:00
Jérôme Gardou
91edefa11e
[NTOS:MM] Do not limit ourselves in reading or writing the file
2021-02-03 09:41:22 +01:00
Jérôme Gardou
774a4c703f
[NTOS/MM] Misc fixes
...
Purge data section object before creating an image mapping
Zero-out the tail of the page after reading from file
Properly map page as read-only when paging-in a COW memory map.
2021-02-03 09:41:22 +01:00
Jérôme Gardou
0933337404
[NTOS/MM] Do not dirtify section pages for system-space maps
...
Cc does it for itself.
2021-02-03 09:41:22 +01:00
Jérôme Gardou
d440434a8e
[NTOS/MM] Do not error when FS returns STATUS_END_OF_FILE for paged read.
...
Also remove a seemingly invalid ASSERT
2021-02-03 09:41:22 +01:00
Jérôme Gardou
b46173edaf
[NTOS/MM] DO not assert when being passed invalid parameters in MmCreateSection
2021-02-03 09:41:22 +01:00
Jérôme Gardou
ba49c39041
[NTOS/MM] Assert there are no RMAP left before freeing the page
2021-02-03 09:41:22 +01:00
Jérôme Gardou
d932bdb950
[NTOS:MM] Fix locking when paging out
2021-02-03 09:41:22 +01:00
Jérôme Gardou
d8cdb89fb0
[NTOSKRNL] Overhaul Cc and Mm relationship
...
Previously, when creating a file section, Mm requested Cc to cache the file, then Cc would request pages from Mm, then Mm would request them back to serve its file-mapping role
Now, Mm does it all by itself. If file cahcing is requested by the FS driver, then Cc creates a file mapping and uses that to serve its purpose.
This is a rewrite of Cc
2021-02-03 09:41:22 +01:00
Jérôme Gardou
e4047d1521
[NTOS/MM] Introduce MmArePagesResident and MmMakePagesResident
2021-02-03 09:41:22 +01:00
Jérôme Gardou
f1631b44e1
[NTOS/MM] Introduce MmMapViewInSystemSpaceEx
2021-02-03 09:41:22 +01:00
Jérôme Gardou
4f6fd6c42b
[NTOS/MM] Infer that the Memory Area is an image mapping from its VAD node
2021-02-03 09:41:21 +01:00
Jérôme Gardou
c3bd70cfd1
[NTOSKRNL/MM] Fix a few wine tests
2021-02-03 09:41:21 +01:00
Jérôme Gardou
4abda863ce
[NTOSKRNL/MM] Reduce use of MiIsRosSectionObject
2021-02-03 09:41:21 +01:00
Jérôme Gardou
b7d988ae5b
[NTOSKRNL] Get rid of MM_ROS_SECTION_OBJECT
2021-02-03 09:41:21 +01:00