Commit graph

50620 commits

Author SHA1 Message Date
Sir Richard d124bde10c Two Part Patch which fixes ARM3 Section Support (not yet enabled). This had been enabled in the past for testing and resulted in bizare crashes during testing. The amount of fixing required should reveal why:
Part 1: Page Fault Path Fixes
[NTOS]: As an optimization, someone seems to have had changed the MiResolveDemandZeroFault prototype not to require a PTE, and to instead take a protection mask directly. While clever, this broke support for ARM3 sections, because the code was now assuming that the protection of the PTE for the input address should be used -- while in NT Sections we instead use what are called ProtoType PTEs. This was very annoying to debug, but since the cause has been fixed, I've reverted back to the old convention in which the PTE is passed-in, and this can be a different PTE than the PTE for the address, as it should be.
[NTOS]: Due to the reverting of the original path, another optimization, in which MiResolveDemandZeroFault was being called directly instead of going through MiDispatchFault and writing an invalid demand-zero PDE has also been removed. PDE faults are now going through the correct, expected path.
[NTOS]: MiResolveDemandZeroFault was always creating Kernel PTEs. It should create User PTEs when necessary.
[NTOS]: MiDeletePte was assuming any prototype PTE is a forked PTE. Forked PTEs only happen when the addresses in the PTE don't match, so check for that too.
Part 2: ARM3 Section Object Fixes
[NTOS]: Fix issue when trying to make both ROS_SECTION_OBJECTs and NT's SECTION co-exist. We relied on the *caller* knowing what kind of section this is, and that can't be a good idea. Now, when the caller requests an ARM3 section vs a ROS section, we use a marker to detect what kind of section this is for later APIs.
[NTOS]: For section VADs, we were storing the ReactOS MEMORY_AREA in the ControlArea... however, the mappings of one individual section object share a single control area, even though they have multiple MEMORY_AREAs (one for each mapping). As such, we overwrote the MEMORY_AREA continously, and at free-time, double or triple-freed the same memory area.
[NTOS]: Moved the MEMORY_AREA to the "Banked" field of the long VAD, instead of the ControlArea. Allocate MMVAD_LONGs for ARM3 sections for now, to support this. Also, after deleting the MEMORY_AREA while parsing VADs, we now use a special marker to detect double-frees, and we also use a special marker to make sure we have a Long VAD as expected.

svn path=/trunk/; revision=56035
2012-03-05 16:41:46 +00:00
Stefan Ginsberg 5219e590b0 [NTOS]
- Fix handling of command strings in KdpTrap.

svn path=/trunk/; revision=56034
2012-03-05 14:52:03 +00:00
Cameron Gutman b244ec1114 [USBSTOR]
- Deny removal to fix a race with the legacy disk class driver

svn path=/trunk/; revision=56033
2012-03-05 14:42:05 +00:00
Stefan Ginsberg 9816f534ee [PSDK]
- Update DBGKD_MAJOR_TYPES. Dedicated to Alex ;)

svn path=/trunk/; revision=56031
2012-03-05 13:02:21 +00:00
Stefan Ginsberg bb50e00be0 [XDK]
- Forgot this one in 55840

svn path=/trunk/; revision=56029
2012-03-05 12:57:08 +00:00
Stefan Ginsberg 549d8709b3 [FREELDR]
- Give freeldr its own RtlAssert to avoid linking to the one in rtl. Makes it possible to use the DbgPrompt version (currently #if 0-ed) of RtlAssert in ntdll/ntos without breaking freeldr linking.

svn path=/trunk/; revision=56028
2012-03-05 12:50:08 +00:00
Kamil Hornicek caefd349c5 [TRANSLATION]
- Follow-up to r55891.
- Resource cleanup.

svn path=/trunk/; revision=56027
2012-03-05 11:13:13 +00:00
Art Yerkes d9d0e1ad2a [FSRTL]
Fix my lock implementation to a degree.
- Have a single list associated with the CSQ.
- Remove some confusion from when the lock information was a
generic table.
- Make the compare function not be confused by attempts to
give strange offsets and lengths.
- Make the uninitialize function complete all lock requests
as specified.
- Remove my unneeded attempt to shoehorn in an eresource.

svn path=/trunk/; revision=56026
2012-03-05 09:49:06 +00:00
Art Yerkes bd9aa57445 [NEWCC]
Use the same method pagefile.c does to read in a page without mapping it.

svn path=/trunk/; revision=56025
2012-03-05 04:34:06 +00:00
Art Yerkes 4d698f45aa [NEWCC]
Fix paging out.
- We know we're in a wait entry in the section.  What we really want to know
is if it's safe to evict this address space when withdrawing the mappings.
- We don't want to corrupt our wait entry in the section page table to keep
accumulating dirty state into the page out process until it's time to finally
evict.

svn path=/trunk/; revision=56024
2012-03-05 02:20:22 +00:00
Art Yerkes 1490d48263 [NEWCC]
Prevent us from recording an impossible dirty swap entry in the section page table.

svn path=/trunk/; revision=56023
2012-03-05 01:52:47 +00:00
Cameron Gutman ea50be62a0 [NEWCC]
- Add missing wait entry handling

svn path=/trunk/; revision=56022
2012-03-04 23:45:16 +00:00
Pierre Schweitzer 3f0a38fdc9 [RAMDISK]
Implement RamdiskRemoveBusDevice.
Stubplement RamdiskDeleteDiskDevice.
Use them in RamdiskPnp.

svn path=/trunk/; revision=56021
2012-03-04 23:08:33 +00:00
Cameron Gutman c257a48ec6 [NTOSKRNL]
- Kill this straggler from last commit

svn path=/trunk/; revision=56020
2012-03-04 22:45:46 +00:00
Jérôme Gardou 24b9fc3fe0 [NTOSKRNL/MM]
- do not initialize idle process address space lock twice

svn path=/trunk/; revision=56019
2012-03-04 22:39:15 +00:00
Cameron Gutman 50e1500799 [NTOSKRNL]
- Consolidate most of the PDE reference counting code into the arch-specific RosMm folder where it belongs

svn path=/trunk/; revision=56018
2012-03-04 22:31:30 +00:00
Rafal Harabien 41364b7c5a [EXPLORER-NEW]
- Add more items to taskbar popup menu. Patch by Edijs Kolesnikovičs <terminedijs at yahoo dot com>
See issue #6242 for more details.

svn path=/trunk/; revision=56017
2012-03-04 22:07:27 +00:00
Pierre Schweitzer 8fdf9b6765 [RAMDISK]
Implement RamdiskScsi, RamdiskSystemControl, RamdiskPower

svn path=/trunk/; revision=56016
2012-03-04 21:42:16 +00:00
Cameron Gutman 4350714766 [NEWCC]
- Turn off a bit more debugging so NewCC is largely quiet unless there's a problem

svn path=/trunk/; revision=56015
2012-03-04 21:36:34 +00:00
Cameron Gutman 28a5fcc313 [NTOSKRNL]
- Fix a major bug in the failure path of IoCreateDevice that would cause corruption of kernel memory if IopCreateVpb failed

svn path=/trunk/; revision=56014
2012-03-04 21:18:01 +00:00
Rafal Harabien f8ada9b34d [SHELL32]
- Fix folder properties dialog. Patch by Edijs Kolesnikovičs <terminedijs at yahoo dot com>
See issue #6832 for more details.

svn path=/trunk/; revision=56013
2012-03-04 20:58:37 +00:00
Jérôme Gardou 5b9d2a760e [NTOSKRNL/MM]
- initialize VmWorkingSet pointer for system process.
Should fix random crashes when paging out.

svn path=/trunk/; revision=56012
2012-03-04 20:30:42 +00:00
Rafal Harabien 8a1d72a7cd [SHELL32]
- Improve shortcut properties dialog. Patch by Edijs Kolesnikovičs <terminedijs at yahoo dot com>
See issue #6848 for more details.

svn path=/trunk/; revision=56011
2012-03-04 20:28:29 +00:00
Sir Richard 61dab06b71 [NTOS]: For debugging only, want to see what is excercising MmAllocatePagesForMdl. The way I wrote this seems broken, but I can't find anything to test it with.
svn path=/trunk/; revision=56010
2012-03-04 19:51:22 +00:00
Pierre Schweitzer 4f16fa360c [RAMDISK]
Implement RamdiskFlushBuffers, RamdiskUnload

svn path=/trunk/; revision=56009
2012-03-04 19:48:09 +00:00
Kamil Hornicek b9862648ef [WIN32K]
Take the "unsignedness" of the index into account.

svn path=/trunk/; revision=56007
2012-03-04 19:20:25 +00:00
Pierre Schweitzer 300da180c0 [RAMDISK]
Implement RamdiskSetPartitionInfo and make use of it
Also use RamdiskGetPartitionInfo in RamdiskWorkerThread

svn path=/trunk/; revision=56002
2012-03-04 18:32:07 +00:00
Jérôme Gardou 75e0ec3feb [NTOSKRNL]
- fix code assuming System process pointer is never NULL, which is the case when we're creating it.

svn path=/trunk/; revision=56001
2012-03-04 17:57:44 +00:00
Sir Richard 645e6a793a [MEGAPERF]: This build introduces the following performance boosts:
- Using a dead stack lookaside list for up to 5 dead kernel thread stacks. 1500% improvement when rapidly destroying/creating threads, such as during second stage setup and many winetests.
- Using a free pool page lookaside list for up to 12 free non-paged or paged pool pages. 800% improvement when allocating big pages from the pool, as well as during pool expansion.
- Using a bucketized per-processor and local list (in the KPRCB) for block sizes between 1 and 32 bytes. 1000% improvement when rapidly allocating/freeing small pool allocations, and 8x reduction in pool fragmentation.

svn path=/trunk/; revision=56000
2012-03-04 17:56:00 +00:00
Sir Richard 6c3e9221be [NTOS]: Drop a reference count to the page table in MiDeleteSystemPageableVm as ARM3 now owns PDEs. This helps out yet again to free a little bit of extra RAM up.
svn path=/trunk/; revision=55999
2012-03-04 17:42:56 +00:00
Timo Kreuzer e3e2689cbf [GENDIB]
- Generate ansi style indentation
- Fix signed/unsigned MSVC warnings in generated code

svn path=/trunk/; revision=55998
2012-03-04 13:33:07 +00:00
Timo Kreuzer 10dabf2876 [GENDIB]
Fix formatting

svn path=/trunk/; revision=55997
2012-03-04 13:06:02 +00:00
Pierre Schweitzer d2e6e7b9d0 [NTOSKRNL]
Comment out two overzealous ASSERTs

svn path=/trunk/; revision=55996
2012-03-04 12:52:02 +00:00
Timo Kreuzer 354085c7e8 [WIN32K]
Fix build 2

svn path=/trunk/; revision=55995
2012-03-04 12:01:59 +00:00
Timo Kreuzer 3159c6f62f [WIN32K]
Fix build

svn path=/trunk/; revision=55994
2012-03-04 11:43:08 +00:00
Timo Kreuzer a508886eb0 [WIN32K]
- Fix a possible integer overflow in NtGdiCreateBitmap
- Don't cast length of LARGE_STRING (ULONG) to USHORT, instead truncate to MAXUSHORT. This is still hacky, but better than before.
- Fix MSVC warnings

svn path=/trunk/; revision=55993
2012-03-04 11:32:43 +00:00
Johannes Anderwald a5bdcfa727 [LIBUSB]
- Fix bug while scanning endpoint descriptors
- Do not assume interface info has the correct number of pipes set
- Fix alternate interface handling
- Tested in VBox + USB Audio Device

svn path=/trunk/; revision=55992
2012-03-04 11:07:13 +00:00
Sir Richard 9bb1ba5ee4 [NTOS]: If the address space is exhausted, don't ASSERT, simply return failure just as Windows does. Should fix the last of the ASSERTions on TestBot.
Next step is to support VirtualProtect/Query correctly.

svn path=/trunk/; revision=55991
2012-03-04 07:04:42 +00:00
Sir Richard 83a2328786 [NTOS]: Blimey this was a hard one. When using the reserved flag to request 1MB in a new process (which is used for starting SMSS and CSRSS), we must request 1MB - 256 bytes (or any number, actually) to offset the fact that with a base address of 0x4, a 1MB region gets us at 0x100FFF, and not 0xFFFF, because Windows computes ending address *before* alignment, and then returns a new region size for you (so if you pass in 1MB, you get 1MB + 4096KB). In Win32csr, when the code is trying to release 1MB, this ended up in our "Case A", because it would still leave a page in the VAD. Fixed rtl to request just shy off a MB. Verified on Windows as well.
[NTOS]: The fix above was due to fixing "EndingAddress" which was being initialized to zero too late (after writing to it!). This caused allocations with a fixed base address that were already on top of another allocation not to be seen as a conflict, then we tried inserting a VAD and received an ASSERT saying we've already found a VAD there. After fixing the sizing code, the bug above creeped up.
Whoever wrote the NtFreeVirtualMemory test is a godsend. It has been nailing bug after bug in the VAD implementation. Thank you.

svn path=/trunk/; revision=55990
2012-03-04 06:42:49 +00:00
Johannes Anderwald acb68dc20d [KS]
- Fix property item merge in KsMergeAutomationTable

 

svn path=/trunk/; revision=55989
2012-03-04 04:44:48 +00:00
Sir Richard 4411be35e7 [NTOS]: Release the *right* lock. "Fix the fix" as the yuppies say.
svn path=/trunk/; revision=55988
2012-03-04 03:18:47 +00:00
Alex Ionescu 26b48236fb [WIN32K]: Should fix usb/livecd failure reported by igorko. bug 6696..or something?
svn path=/trunk/; revision=55987
2012-03-04 03:06:20 +00:00
Alex Ionescu a604834220 [SMSS]: No longer fail on invalid known DLL checksum until I can fix the loader API.
svn path=/trunk/; revision=55986
2012-03-04 03:00:01 +00:00
Sir Richard 4c07bf2fcd [NTOS]: Don't keep the address space locked when failing in NtFreeVirtualMemory. Dang this testbot is good at catching those bugs.
svn path=/trunk/; revision=55985
2012-03-04 02:56:16 +00:00
Johannes Anderwald 0e20c445f1 [KS]
- Handle custom sized nodes

svn path=/trunk/; revision=55984
2012-03-04 02:39:37 +00:00
Johannes Anderwald 0b301f3da8 [USBHUB]
- Implement retrieving USB_BUS_INTERFACE_USBDI_GUID interface
[KS]
- Add PnP hack for IoSetDeviceInterfaceState

svn path=/trunk/; revision=55983
2012-03-04 02:17:13 +00:00
Sir Richard 9732b09bc6 [NTOS]: Delete anonmem.c and move the ARM3-compatible code to ARM3/virtual.c. Whatever remained is for sections only, so move it to mm/section.c
[NTOS]: Fix some broken assertions in NtFreeVirtualMemory. Lesson: Do not try to "optimize" Microsoft's ASSERTs.

svn path=/trunk/; revision=55982
2012-03-04 02:03:46 +00:00
Sir Richard 2d534ce868 [RTL]: Sorry, forgot this critical part of the VAD commit.
svn path=/trunk/; revision=55981
2012-03-04 00:47:20 +00:00
Cameron Gutman 79dd33a566 [UNIATA]
- Try to fix KVM testbot

svn path=/trunk/; revision=55980
2012-03-03 23:13:21 +00:00
Cameron Gutman 2b71ec3e05 [USETUP]
- Turn off debugging
- Fix the checkpoint print so it doesn't happen anytime a usetup progress bar reaches 50%

svn path=/trunk/; revision=55979
2012-03-03 23:04:10 +00:00