Commit graph

50582 commits

Author SHA1 Message Date
Sir Richard 64d3af216f [NTOS]: A few other fixups to the page fault path:
1) Assert on empty kernel PTE instead of handling it as a bugcheck. Windows ASSERTs too. Also clarify some ASSERTs which Windows also does versus ASSERTs we are only doing due to lack of support for said feature.
2) User page fault path can now distinguish between a user-mode PTE fault, and a kernel-mode fault on a user PDE, both by creating a correct kernel PDE when needed instead of always creating user PTEs, as well as by only touching the UsedPageTableEntry reference counting mechanism when a user-address is in play.
3) Related to #2, also recognize when the faulting PTE is actually a PDE in the self-mapping region -- another scenario when the "user fault" is actually a kernel fault for a user PDE.
4) Add one more path where a Paged Pool PDE fixup can save the day instead of always faulting.
5) Finally, related to #2 and #3, handle the MI_IS_PAGE_TABLE_OR_HYPER_ADDRESS scenario for a User PDE by treating it as a user fault. The code looks deceptively similar but there are slight differences which require the separate codepaths with some duplicated code. The magic is in the ordering.
In trunk, these changes should not cause any regressions (let's hope so). On the internal VAD-based Virtual Memory branch, they now allow booting to 3rd stage and a fully usable ReactOS environment. MEMORY_AREA_VIRTUAL_MEMORY is gone on that branch. It's coming.
[NTOS]: Use PAGE_READWRITE as hardcoded protection instead of PAGE_EXECUTE_READWRITE -- the difference is meaningless on ReactOS Mm but actually causes issues on ARM3 with VADs.

svn path=/trunk/; revision=55938
2012-02-29 23:11:21 +00:00
Kamil Hornicek 536a78293d [BOOTDATA]
reactos.dff was superseded by reactos.dff.in

svn path=/trunk/; revision=55937
2012-02-29 20:43:23 +00:00
Pierre Schweitzer 3f3e67e418 [NTOSKRNL]
Implement FsRtlNotifyFilterChangeDirectory

svn path=/trunk/; revision=55936
2012-02-29 20:11:51 +00:00
Pierre Schweitzer a7644056d7 [NTOSKRNL]
Forgot to commit that file

svn path=/trunk/; revision=55935
2012-02-29 20:03:46 +00:00
Pierre Schweitzer 7e1f7945ed [NTOSKRNL]
Stub FsRtlCancelNotify
Implement FsRtlCheckNotifyForDelete, FsRtlNotifyCompleteIrp, FsRtlNotifyCompleteIrpList, FsRtlNotifySetCancelRoutine

svn path=/trunk/; revision=55934
2012-02-29 20:01:21 +00:00
Cameron Gutman 04177d9d19 [ROSAUTOTEST]
- Flush file buffers after writing to the crash recovery journal

svn path=/trunk/; revision=55933
2012-02-29 19:44:44 +00:00
Pierre Schweitzer 9624a85234 [NTOSKRNL]
Fix a bug in FsRtlNotifyCleanup: only remove notification from list when we're about to complete it.

svn path=/trunk/; revision=55932
2012-02-29 19:43:35 +00:00
Pierre Schweitzer 4c30c5549a [NTOSKRNL]
Fix formatting, no code change

svn path=/trunk/; revision=55931
2012-02-29 19:29:03 +00:00
Pierre Schweitzer 256540b703 [NTOSKRNL]
Use LIST_ENTRY not pointer on them as head

svn path=/trunk/; revision=55930
2012-02-29 19:26:43 +00:00
Pierre Schweitzer 171a3edfaa [NTOSKRNL]
Get rid off TAG macro

svn path=/trunk/; revision=55929
2012-02-29 19:12:59 +00:00
Cameron Gutman bc96c38875 [USBEHCI]
- Add back the m_PortResetInProgress hack for broken vbox behavior

svn path=/trunk/; revision=55928
2012-02-29 19:05:16 +00:00
Johannes Anderwald 82d9d774ca [USBHUB]
- Check if FDO is root hub fdo
- Partly implement fdo hub initialization
- Implement IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE, IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO

svn path=/trunk/; revision=55927
2012-02-29 18:51:07 +00:00
Cameron Gutman 9e6f877683 [NTOSKRNL]
- Add a missing device node flag to legacy reported devices to avoid an assertion failure during installation
- The fact that this was exposed by a change in device node linking order terrifies me

svn path=/trunk/; revision=55926
2012-02-29 18:50:07 +00:00
Jérôme Gardou d5b957c1ac [NTOSKRNL/MM]
- assert PDE ref count consistency everywhere
 - fix the fix(tm) : after reference decrement, the maximum must not be reached

svn path=/trunk/; revision=55925
2012-02-29 17:41:45 +00:00
Aleksey Bragin 4aeb0801e9 - Fix one more assert in addition to 55921.
svn path=/trunk/; revision=55924
2012-02-29 17:13:05 +00:00
Johannes Anderwald 7de856c877 [USBHUB]
- Clean up code, fix memory leaks, check returns codes, add asserts
- Use root device handle which is is prerequisite for usb hub support
[USBLIB]
- Fix root hub handle checks
- Add more code for hub support

svn path=/trunk/; revision=55923
2012-02-29 17:08:32 +00:00
Sir Richard cbfb67842f [NTOS]: Define the Decommitted PTE structure.
svn path=/trunk/; revision=55922
2012-02-29 16:58:46 +00:00
Alex Ionescu 1401fbea9b [NTOSKRNL]: Fix broken UsedPageTableEntries/page table ref counting ASSERTs. The reference can be UP TO 1024, inclusive, but no more. This might fix a bunch of assertions related to this. Thanks to Richard for catching this one during his VAD work.
svn path=/trunk/; revision=55921
2012-02-29 16:25:43 +00:00
Johannes Anderwald d485558f04 [USBUHCI]
- Try fix build

svn path=/trunk/; revision=55920
2012-02-29 16:15:05 +00:00
Timo Kreuzer 232e8cd9f5 [GDI32]
Fix MSVC warnings

svn path=/trunk/; revision=55919
2012-02-29 15:34:43 +00:00
Johannes Anderwald a3b5c86363 [USBOHCI]
- Fix msvc build

svn path=/trunk/; revision=55918
2012-02-29 11:06:57 +00:00
Johannes Anderwald a755140405 [USBEHCI]
- Fix stack corruption found by msvc
- Fix msvc build

svn path=/trunk/; revision=55917
2012-02-29 10:59:48 +00:00
Johannes Anderwald ad333c1655 [USBEHCI]
- Fix regressions caused by libusb

svn path=/trunk/; revision=55916
2012-02-29 09:41:34 +00:00
Art Yerkes 743a8996a2 [FSRTL]
Import mostly-complete file locking implementation from arty-newcc.

svn path=/trunk/; revision=55915
2012-02-29 09:18:57 +00:00
Art Yerkes 9d75a5ebae [FSRTL]
Import code from Pierre Schweitzer's fsrtl branch.
- Large MCB and MCB
- Change notification

svn path=/trunk/; revision=55914
2012-02-29 09:18:01 +00:00
Johannes Anderwald c131df4a4c [USBOHCI]
- Fix regressions introduced by libusb

svn path=/trunk/; revision=55913
2012-02-29 09:15:42 +00:00
Cameron Gutman bf426aafef [NTOSKRNL]
- Fix linking of device children to respect the enumeration order instead of linking in reverse enumeration order
- PCI cards (and other devices) now enumerate in the correct order

svn path=/trunk/; revision=55912
2012-02-29 06:08:15 +00:00
Cameron Gutman 4ba7e8a742 - Missed this bit
svn path=/trunk/; revision=55911
2012-02-29 05:01:31 +00:00
Cameron Gutman 90e94e42c5 [USBUHCI][USBOHCI][USBEHCI]
- Don't modify PCI configuration in AddDevice function
[USBEHCI]
- Don't halt the controller while the BIOS still has control of it

svn path=/trunk/; revision=55910
2012-02-29 04:58:27 +00:00
Johannes Anderwald 6a2de16a81 [USBOHCI]
- Remove duplicated code
[USBUHCI]
- Use libusb

svn path=/trunk/; revision=55909
2012-02-28 22:09:57 +00:00
Johannes Anderwald 300e78822d [USBOHCI]
- Fix build

svn path=/trunk/; revision=55908
2012-02-28 19:01:02 +00:00
Johannes Anderwald 071158cb87 [USBOHCI]
- Use libusb library
- Cleanup code
[USBEHCI]
- Apply interface changes

svn path=/trunk/; revision=55907
2012-02-28 18:54:30 +00:00
Alex Ionescu c615973655 [NDK]: Clarify copyright granting and attribution requirements in NDK readme.
svn path=/trunk/; revision=55906
2012-02-28 18:38:28 +00:00
Timo Kreuzer dc4b573964 [NDK]
- Transfer copyright to Alex Ionescu.
- Remove obsolete file

svn path=/trunk/; revision=55905
2012-02-28 18:21:34 +00:00
Alex Ionescu 67cac70ffa [NDK]: Update readme.txt and commit the license files which were never in the repository for some reason.
svn path=/trunk/; revision=55904
2012-02-28 17:57:16 +00:00
Timo Kreuzer 35784af061 [NTSOKRNL]
Remove a broken ASSERT. Fixes MSVC build


svn path=/trunk/; revision=55903
2012-02-28 17:50:21 +00:00
Johannes Anderwald ec76cc0bc3 [USBEHCI]
- Fix msvc build

svn path=/trunk/; revision=55902
2012-02-28 17:26:16 +00:00
Johannes Anderwald e9012aba15 [USBEHCI]
- Use libusb library
- Cleanup code

svn path=/trunk/; revision=55901
2012-02-28 15:13:30 +00:00
Johannes Anderwald fd61a9d77c [LIBUSB]
- Add library which implements generic host controller tasks

svn path=/trunk/; revision=55900
2012-02-28 15:01:27 +00:00
Johannes Anderwald e021058e30 [USBEHCI]
- Rewrite configuration handling, WIP

svn path=/trunk/; revision=55899
2012-02-28 10:29:37 +00:00
Cameron Gutman 72a7d22233 [NTOSKRNL]
- Fix PDE reference counting
- Now only the recursive fault remains as an issue in the page out path

svn path=/trunk/; revision=55898
2012-02-28 09:30:53 +00:00
Cameron Gutman 24264b8dc2 [NTOSKRNL]
- Change MmDereferencePage to MmReleasePageMemoryConsumer to do proper page usage tracking
- Remove an unnecessary reference and dereference

svn path=/trunk/; revision=55897
2012-02-28 08:34:16 +00:00
Cameron Gutman 3998099eae [EXT2LIB]
- Fix formatting FAT or NTFS volumes into EXT2 by defining ZAP_BOOTBLOCK and fixing a bug in zap_sector()
[USETUP]
- Enable ext2 as an option in setup
- Formatting and building file copy list works but setup stalls shortly after starting to copy files (NewCC on)

svn path=/trunk/; revision=55896
2012-02-28 05:10:40 +00:00
Cameron Gutman 29f3456caf [NEWCC]
- Fix several locking issues to better fit with RosMm
- Page out is critical as we use it now (shutdown) so force address space locking
- Fix an address space lock leak for VM regions
- Quiet some debugging and enable/change some other
- Still some lingering issues in page out exist which seem to be related to zefklop's PDE ref counting stuff and a weird one where we fault on the PFN database
- Besides the aforementioned issues, NewCC is surprisingly solid. I was able to boot to 3rd stage without a problem and run some apps.

svn path=/trunk/; revision=55895
2012-02-28 04:01:33 +00:00
Sir Richard 6086842a76 [NTOS]: A few key changes to the page fault path:
1) MiCheckVirtualAddress should be called *after* determining if the PTE is a Demand Zero PTE. This is because when memory is allocated with MEM_RESERVE, and then MEM_COMMIT is called later, the VAD does not have the MemCommit flag set to TRUE. As such, MiCheckVirtualAddress returns MM_NOACCESS for the VAD (even though one is found) and the demand zero fault results in an access violation. Double-checked with Windows and this is the right behavior.
2) MiCheckVirtualAddress now supports non-commited reserve VADs (ie: trying to access MEM_RESERVE memory). It used to ASSERT, now it returns MM_NOACCESS so an access violation is raised. Before change #1, this would also happen if MEM_COMMIT was later performed on the ranges, but this is now fixed.
3) When calling MiResolveDemandZeroFault, we should not make the PDE a demand zero PDE. This is senseless. The whole point is that the PDE does exist, and MiInitializePfn needs it to keep track of the page table allocation. Removed the nonsensical line of code which performed cleard the PDE during a demand-zero fault.
I am able to boot to 3rd stage with these changes, so I have seen no regressions. Additionally, with these changes, the as-of-yet-uncommitted VAD-based Virtual Memory code completes 1st stage setup successfully, instead of instantly crashing on boot.

svn path=/trunk/; revision=55894
2012-02-27 23:42:22 +00:00
Sir Richard 8e25b78c44 [NTOS]: Micro-formatting changes to NtAllocateVirtualMemory and NtFreeVirtualMemory which make it easier for me to cut/paste the new VAD-based code in. No actual changes to behavior.
svn path=/trunk/; revision=55893
2012-02-27 23:36:25 +00:00
Amine Khaldi c3baab78ea [CMAKE]
* Remove some accidental changes.
[INETCPL]
* Include the correct pt language rc file.

svn path=/trunk/; revision=55892
2012-02-27 22:52:09 +00:00
Amine Khaldi 5e9ad9f31b * ReactOS binaries hold resource files to *all* the languages we support, which increases their size, and increases the memory footprint, and on top of that they become useless as soon as you select a language in the 1st stage installer. Introduce a way to compile ros with one localization so that we can compile ReactOS with only one localization, which eliminates the problem mentioned above, and allows us to reduce the compile time, the disk space needed for build, and the runtime memory footprint.
* The default build will continue to include all the localizations, but you can set it otherwise through a cmake variable (I18N_LANG) at configure time.
* Brought to you by Team Localization (Kamil Hornicek and Amine Khaldi) ;)

svn path=/trunk/; revision=55891
2012-02-27 22:46:20 +00:00
Sylvain Petreolle 64be055c58 [KERNEL32_WINETEST]
Addendum to 55888:
allow to run MEM_RESET tests in interactive mode.

svn path=/trunk/; revision=55890
2012-02-27 20:19:21 +00:00
Johannes Anderwald 1efde9717f [USBSTOR]
- Do not retry commands more than once
- Enable error handling in the data completion stage

svn path=/trunk/; revision=55889
2012-02-27 20:10:46 +00:00