Cameron Gutman [Wed, 29 Feb 2012 19:44:44 +0000 (19:44 +0000)]
[ROSAUTOTEST]
- Flush file buffers after writing to the crash recovery journal
svn path=/trunk/; revision=55933
Pierre Schweitzer [Wed, 29 Feb 2012 19:43:35 +0000 (19:43 +0000)]
[NTOSKRNL]
Fix a bug in FsRtlNotifyCleanup: only remove notification from list when we're about to complete it.
svn path=/trunk/; revision=55932
Pierre Schweitzer [Wed, 29 Feb 2012 19:29:03 +0000 (19:29 +0000)]
[NTOSKRNL]
Fix formatting, no code change
svn path=/trunk/; revision=55931
Pierre Schweitzer [Wed, 29 Feb 2012 19:26:43 +0000 (19:26 +0000)]
[NTOSKRNL]
Use LIST_ENTRY not pointer on them as head
svn path=/trunk/; revision=55930
Pierre Schweitzer [Wed, 29 Feb 2012 19:12:59 +0000 (19:12 +0000)]
[NTOSKRNL]
Get rid off TAG macro
svn path=/trunk/; revision=55929
Cameron Gutman [Wed, 29 Feb 2012 19:05:16 +0000 (19:05 +0000)]
[USBEHCI]
- Add back the m_PortResetInProgress hack for broken vbox behavior
svn path=/trunk/; revision=55928
Johannes Anderwald [Wed, 29 Feb 2012 18:51:07 +0000 (18:51 +0000)]
[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
Cameron Gutman [Wed, 29 Feb 2012 18:50:07 +0000 (18:50 +0000)]
[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
Jérôme Gardou [Wed, 29 Feb 2012 17:41:45 +0000 (17:41 +0000)]
[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
Aleksey Bragin [Wed, 29 Feb 2012 17:13:05 +0000 (17:13 +0000)]
- Fix one more assert in addition to 55921.
svn path=/trunk/; revision=55924
Johannes Anderwald [Wed, 29 Feb 2012 17:08:32 +0000 (17:08 +0000)]
[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
Sir Richard [Wed, 29 Feb 2012 16:58:46 +0000 (16:58 +0000)]
[NTOS]: Define the Decommitted PTE structure.
svn path=/trunk/; revision=55922
Alex Ionescu [Wed, 29 Feb 2012 16:25:43 +0000 (16:25 +0000)]
[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
Johannes Anderwald [Wed, 29 Feb 2012 16:15:05 +0000 (16:15 +0000)]
[USBUHCI]
- Try fix build
svn path=/trunk/; revision=55920
Timo Kreuzer [Wed, 29 Feb 2012 15:34:43 +0000 (15:34 +0000)]
[GDI32]
Fix MSVC warnings
svn path=/trunk/; revision=55919
Johannes Anderwald [Wed, 29 Feb 2012 11:06:57 +0000 (11:06 +0000)]
[USBOHCI]
- Fix msvc build
svn path=/trunk/; revision=55918
Johannes Anderwald [Wed, 29 Feb 2012 10:59:48 +0000 (10:59 +0000)]
[USBEHCI]
- Fix stack corruption found by msvc
- Fix msvc build
svn path=/trunk/; revision=55917
Johannes Anderwald [Wed, 29 Feb 2012 09:41:34 +0000 (09:41 +0000)]
[USBEHCI]
- Fix regressions caused by libusb
svn path=/trunk/; revision=55916
Art Yerkes [Wed, 29 Feb 2012 09:18:57 +0000 (09:18 +0000)]
[FSRTL]
Import mostly-complete file locking implementation from arty-newcc.
svn path=/trunk/; revision=55915
Art Yerkes [Wed, 29 Feb 2012 09:18:01 +0000 (09:18 +0000)]
[FSRTL]
Import code from Pierre Schweitzer's fsrtl branch.
- Large MCB and MCB
- Change notification
svn path=/trunk/; revision=55914
Johannes Anderwald [Wed, 29 Feb 2012 09:15:42 +0000 (09:15 +0000)]
[USBOHCI]
- Fix regressions introduced by libusb
svn path=/trunk/; revision=55913
Cameron Gutman [Wed, 29 Feb 2012 06:08:15 +0000 (06:08 +0000)]
[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
Cameron Gutman [Wed, 29 Feb 2012 05:01:31 +0000 (05:01 +0000)]
- Missed this bit
svn path=/trunk/; revision=55911
Cameron Gutman [Wed, 29 Feb 2012 04:58:27 +0000 (04:58 +0000)]
[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
Johannes Anderwald [Tue, 28 Feb 2012 22:09:57 +0000 (22:09 +0000)]
[USBOHCI]
- Remove duplicated code
[USBUHCI]
- Use libusb
svn path=/trunk/; revision=55909
Johannes Anderwald [Tue, 28 Feb 2012 19:01:02 +0000 (19:01 +0000)]
[USBOHCI]
- Fix build
svn path=/trunk/; revision=55908
Johannes Anderwald [Tue, 28 Feb 2012 18:54:30 +0000 (18:54 +0000)]
[USBOHCI]
- Use libusb library
- Cleanup code
[USBEHCI]
- Apply interface changes
svn path=/trunk/; revision=55907
Alex Ionescu [Tue, 28 Feb 2012 18:38:28 +0000 (18:38 +0000)]
[NDK]: Clarify copyright granting and attribution requirements in NDK readme.
svn path=/trunk/; revision=55906
Timo Kreuzer [Tue, 28 Feb 2012 18:21:34 +0000 (18:21 +0000)]
[NDK]
- Transfer copyright to Alex Ionescu.
- Remove obsolete file
svn path=/trunk/; revision=55905
Alex Ionescu [Tue, 28 Feb 2012 17:57:16 +0000 (17:57 +0000)]
[NDK]: Update readme.txt and commit the license files which were never in the repository for some reason.
svn path=/trunk/; revision=55904
Timo Kreuzer [Tue, 28 Feb 2012 17:50:21 +0000 (17:50 +0000)]
[NTSOKRNL]
Remove a broken ASSERT. Fixes MSVC build
svn path=/trunk/; revision=55903
Johannes Anderwald [Tue, 28 Feb 2012 17:26:16 +0000 (17:26 +0000)]
[USBEHCI]
- Fix msvc build
svn path=/trunk/; revision=55902
Johannes Anderwald [Tue, 28 Feb 2012 15:13:30 +0000 (15:13 +0000)]
[USBEHCI]
- Use libusb library
- Cleanup code
svn path=/trunk/; revision=55901
Johannes Anderwald [Tue, 28 Feb 2012 15:01:27 +0000 (15:01 +0000)]
[LIBUSB]
- Add library which implements generic host controller tasks
svn path=/trunk/; revision=55900
Johannes Anderwald [Tue, 28 Feb 2012 10:29:37 +0000 (10:29 +0000)]
[USBEHCI]
- Rewrite configuration handling, WIP
svn path=/trunk/; revision=55899
Cameron Gutman [Tue, 28 Feb 2012 09:30:53 +0000 (09:30 +0000)]
[NTOSKRNL]
- Fix PDE reference counting
- Now only the recursive fault remains as an issue in the page out path
svn path=/trunk/; revision=55898
Cameron Gutman [Tue, 28 Feb 2012 08:34:16 +0000 (08:34 +0000)]
[NTOSKRNL]
- Change MmDereferencePage to MmReleasePageMemoryConsumer to do proper page usage tracking
- Remove an unnecessary reference and dereference
svn path=/trunk/; revision=55897
Cameron Gutman [Tue, 28 Feb 2012 05:10:40 +0000 (05:10 +0000)]
[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
Cameron Gutman [Tue, 28 Feb 2012 04:01:33 +0000 (04:01 +0000)]
[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
Sir Richard [Mon, 27 Feb 2012 23:42:22 +0000 (23:42 +0000)]
[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
Sir Richard [Mon, 27 Feb 2012 23:36:25 +0000 (23:36 +0000)]
[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
Amine Khaldi [Mon, 27 Feb 2012 22:52:09 +0000 (22:52 +0000)]
[CMAKE]
* Remove some accidental changes.
[INETCPL]
* Include the correct pt language rc file.
svn path=/trunk/; revision=55892
Amine Khaldi [Mon, 27 Feb 2012 22:46:20 +0000 (22:46 +0000)]
* 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
Sylvain Petreolle [Mon, 27 Feb 2012 20:19:21 +0000 (20:19 +0000)]
[KERNEL32_WINETEST]
Addendum to 55888:
allow to run MEM_RESET tests in interactive mode.
svn path=/trunk/; revision=55890
Johannes Anderwald [Mon, 27 Feb 2012 20:10:46 +0000 (20:10 +0000)]
[USBSTOR]
- Do not retry commands more than once
- Enable error handling in the data completion stage
svn path=/trunk/; revision=55889
Kamil Hornicek [Mon, 27 Feb 2012 19:33:15 +0000 (19:33 +0000)]
[KERNEL32_WINETEST]
Disable tests that would hit asserts due to current work on VM. Requested functionality is missing and will be for some time.
svn path=/trunk/; revision=55888
Cameron Gutman [Mon, 27 Feb 2012 19:31:11 +0000 (19:31 +0000)]
[NTOSKRNL]
- Fix kernel memory corruption when a driver fails to initialize
- Fix a handle leak in a failure case
svn path=/trunk/; revision=55887
Alex Ionescu [Mon, 27 Feb 2012 17:17:31 +0000 (17:17 +0000)]
[NTOSKRNL]: Don't assert if there's no VAD found in NtFreeVirtualMemory... perhaps a wrong address was used on purpose (such as during a Winetest). Simply do what ROS does when a MAREA is not found and return failure. However if a VAD *was* found, keep all the other ASSERTs...
svn path=/trunk/; revision=55886
Sir Richard [Mon, 27 Feb 2012 17:10:44 +0000 (17:10 +0000)]
[NTOS]: Continued preparations for VAD-based Virtual Memory. ASSERT in NtAllocateVirtualMemory any functionality that will not be supported by the VAD-based system (and is not really supported right now either). Make NtFreeVirtualMemory ASSERT that a correct VAD has been found when freeing memory -- which we always expect at this point. Also ASSERT that the VAD has a valid range and flags.
[NTOS]: Do a more stringent check to refuse COPY_ON_WRITE flag sent through NtAllocateVirtualMemory.
[NTOS]: For VM-based Memory Areas, acquire and then release the process working set lock while inserting the VAD, to simulate what the VAD-based Virtual Memory behavior will look like.
[NTOS]: Disable paging for VM-based Memory Areas since this will not be supported with VADs.
[KERNEL32]: CopyLoop was requesting 2 zero bits when calling NtAllocateVirtualMemory. Not sure if this was really the intent or not, but both the new as well as the old NtAllocateVirtualMemory do not support this (the new one will ASSERT). Since this functionality never worked, request 0 bits instead to avoid hitting the ASSERT.
Any problems with what the VAD system will introduce should be revealed by now. From this build until the one which will have the VAD-based system in place, no further VM-related issues should crop up.
svn path=/trunk/; revision=55885
Sylvain Petreolle [Mon, 27 Feb 2012 16:37:48 +0000 (16:37 +0000)]
[USETUP]
Fix installation directories set into unattend.inf,
they were ignored and installed always into \ReactOS.
svn path=/trunk/; revision=55884
Sir Richard [Mon, 27 Feb 2012 16:12:11 +0000 (16:12 +0000)]
[NTOS]: Preparations for the VAD-based Virtual Memory system begin. Disable changing protection on Virtual Memory pages, and make all pages PAGE_EXECUTE_READWRITE for now. In theory, this should not cause any real problems, and sets the stage for the initial functionality regressions that the VAD-based system will introduce. I will eventually plan on fixing them.
svn path=/trunk/; revision=55883
Alex Ionescu [Mon, 27 Feb 2012 16:10:30 +0000 (16:10 +0000)]
[NTOSKRNL]: Drop the reference on the PDE for kernel stack pages being deleted, now that zekflop has made all PDEs ARM3-owned.
svn path=/trunk/; revision=55882
Alex Ionescu [Mon, 27 Feb 2012 15:50:25 +0000 (15:50 +0000)]
[NTOSKRNL]: This should not fix anything.
svn path=/trunk/; revision=55881
Alex Ionescu [Mon, 27 Feb 2012 15:28:06 +0000 (15:28 +0000)]
[CMLIB]: Great job -- crashing trunk on a pool tag just so people can be forced to know what it is. Change the registry pool tag from "th" (wtf?) to "CM25" which is a bit closer to Windows. In reality all of TAG_CM should be broken out in many more pieces. Fixes boot breakpoint.
svn path=/trunk/; revision=55880
Sir Richard [Mon, 27 Feb 2012 08:21:15 +0000 (08:21 +0000)]
[NTOS]: Handle memory allocation failures correctly, supporting all the required debug and caller flags (such as RAISE_ON_FAILURE). We no longer simply just return "NULL" in failure cases.
[NTOS]: Implement counters for paged and nonpaged pool. First-stage setup now shows Kernel Pool values again, as does Task Manager. Fixes the regression introduced when pool/non-paged pool was no longer managed through "memory consumer" API.
[NTOS]: Add more debugging paths and flags that were sent over from the "Aleksey Pool Patch". Most of them are not implemented.
[NTOS]: Fix a missing case when a pool header check was not being done.
[NTOS]: Check IRQL levels during pool allocation and free.
With tags and the counters, pool leaks should be massively more debuggable now.
svn path=/trunk/; revision=55879
Dmitry Gorbachev [Sun, 26 Feb 2012 19:04:00 +0000 (19:04 +0000)]
[NDK]
- Fix declaration of HalPrivateDispatchTable for FreeLDR.
[FREELDR]
- Rename BiosMemoryMap to XboxMemoryMap. Another BiosMemoryMap is in meminit.c
[NTOSKRNL][WIN32K][FTP]
- Fix some variables.
svn path=/trunk/; revision=55878
Kamil Hornicek [Sun, 26 Feb 2012 15:05:59 +0000 (15:05 +0000)]
[BOOTDATA]
Include unattend.inf by default (as it was almost done in r28835). No need to have it "disabled" twice.
svn path=/trunk/; revision=55876
Cameron Gutman [Sun, 26 Feb 2012 06:33:21 +0000 (06:33 +0000)]
[USBOHCI][USBUHCI][USBEHCI]
- Don't overwrite the status from ClearPortFeature with STATUS_SUCCESS
- Partially fixes full speed port handoff
svn path=/trunk/; revision=55875
Sir Richard [Sun, 26 Feb 2012 05:53:53 +0000 (05:53 +0000)]
[NTOS]: Implement pool tagging for large allocations too. Once again, no expansion is implemented.
svn path=/trunk/; revision=55874
Amine Khaldi [Sat, 25 Feb 2012 23:50:38 +0000 (23:50 +0000)]
[CMAKE]
* Introduce a way to compile GCC builds with PDB style debug info (isolated into .dbg files). This will reduce the memory footprint considerably, among other benefits.
svn path=/trunk/; revision=55873
Sir Richard [Sat, 25 Feb 2012 23:14:37 +0000 (23:14 +0000)]
[NTOS]: Implement pool tag tracking and pool tag querying. Big Pool tags are not yet supported, but will be shortly. Expansion is not yet supported.
svn path=/trunk/; revision=55872
Cameron Gutman [Sat, 25 Feb 2012 22:27:27 +0000 (22:27 +0000)]
[NTOSKRNL]
- Set the SYNCHRONIZE flag in desired access when opening a registry hive for synchronous I/O
svn path=/trunk/; revision=55871
Amine Khaldi [Sat, 25 Feb 2012 22:01:20 +0000 (22:01 +0000)]
[CMAKE]
* Get GCC version and add some compiler flags conditionally based on it. Dedicated to Dmitry.
svn path=/trunk/; revision=55870
Amine Khaldi [Sat, 25 Feb 2012 21:48:43 +0000 (21:48 +0000)]
* Delete unused startup code.
svn path=/trunk/; revision=55869
Dmitry Gorbachev [Sat, 25 Feb 2012 21:45:56 +0000 (21:45 +0000)]
[FREELDR][NTOSKRNL][TOOLS]
- Delete unused files.
- Use extension LDS instead of LNK (Windows shortcut file) for LD linker scripts.
svn path=/trunk/; revision=55868
Cameron Gutman [Sat, 25 Feb 2012 21:18:17 +0000 (21:18 +0000)]
[USBSTOR]
- Fix corruption of SCSI read format capacity by writing the LUN to the wrong location
svn path=/trunk/; revision=55867
Kamil Hornicek [Sat, 25 Feb 2012 21:09:28 +0000 (21:09 +0000)]
Fix build?
svn path=/trunk/; revision=55866
Sir Richard [Sat, 25 Feb 2012 20:40:06 +0000 (20:40 +0000)]
[NTOS]: Implementation of the "Generic DPC" functionality from Windows NT 5.2, which is a forced-synchronization all-CPU DPC callback mechanism. Implemented, and exported all APIs requireted, and added to NDK. NOTE: This implementation only works for Single Processor systems (NT_UP) since this is all that ReactOS currently works on.
This is needed for poolmon/querying pool tags.
svn path=/trunk/; revision=55865
Alex Ionescu [Sat, 25 Feb 2012 20:38:20 +0000 (20:38 +0000)]
[NDK]: Add missing type to NDK.
svn path=/trunk/; revision=55864
Alex Ionescu [Sat, 25 Feb 2012 20:31:28 +0000 (20:31 +0000)]
[CSRSRV]: Quiet, you!
svn path=/trunk/; revision=55863
Giannis Adamopoulos [Sat, 25 Feb 2012 20:06:15 +0000 (20:06 +0000)]
[win32k]
- move wallpaper info from WINSTATION_OBJECT to SPIVALUES. Also remove some unused fields from WINSTATION_OBJECT
svn path=/trunk/; revision=55862
Pierre Schweitzer [Sat, 25 Feb 2012 19:28:00 +0000 (19:28 +0000)]
[USER32]
Correct user32 japanese translation (and fix build as well)
svn path=/trunk/; revision=55861
Amine Khaldi [Sat, 25 Feb 2012 19:02:49 +0000 (19:02 +0000)]
[SHELL32]
* Misses these.
svn path=/trunk/; revision=55860
Amine Khaldi [Sat, 25 Feb 2012 18:52:16 +0000 (18:52 +0000)]
[SHELL32]
* Prefix the local version.h and version.rc with shell32_.
* Include the rgs resource files in a portable way.
svn path=/trunk/; revision=55859
Sir Richard [Sat, 25 Feb 2012 18:51:21 +0000 (18:51 +0000)]
[NTOS]: Compute the size of, and allocate, the Pool Tracker Table and the Big Page Tracker Table, which are the core data structures that make pool tagging functionality work.
svn path=/trunk/; revision=55858
Giannis Adamopoulos [Sat, 25 Feb 2012 18:26:05 +0000 (18:26 +0000)]
[win32k]
- null terminate DesktopObject->pDeskInfo->szDesktopName and WindowStationObject->Name
- null terminate the buffer when NtUserGetObjectInformation is called with UOI_NAME parameter
- should fix a random failure in user32:desktop tests
svn path=/trunk/; revision=55857
Amine Khaldi [Sat, 25 Feb 2012 17:23:58 +0000 (17:23 +0000)]
* Addendum to r55855.
svn path=/trunk/; revision=55856
Amine Khaldi [Sat, 25 Feb 2012 17:23:37 +0000 (17:23 +0000)]
* Rbuild, our build system, has served us well so far, but its usefulness has since been vastly overshadowed by its awfulness. It's time to fix it.
svn path=/trunk/; revision=55855
Eric Kohl [Sat, 25 Feb 2012 15:20:32 +0000 (15:20 +0000)]
[RTL]
Formatting, no code changes.
svn path=/trunk/; revision=55854
Cameron Gutman [Sat, 25 Feb 2012 06:23:12 +0000 (06:23 +0000)]
[USBEHCI]
- Create a macro for properly checking for low speed devices
- Check again for a low speed device after the EHCI reset completes
- Don't ignore status changes on ports that we have released (revert part of r55851)
svn path=/trunk/; revision=55853
Cameron Gutman [Sat, 25 Feb 2012 05:46:19 +0000 (05:46 +0000)]
[USBHUB]
- Fix reset event handling in cases where reset does not end up in a new device created
- My MacBook Pro completes USB initialization free of hangs now (usbstor disabled)
svn path=/trunk/; revision=55852
Cameron Gutman [Sat, 25 Feb 2012 04:45:30 +0000 (04:45 +0000)]
[USBHUB]
- Handle errors returned from the HCD correctly
[USBEHCI]
- Discard any changes on ports that were given to the companion controller
svn path=/trunk/; revision=55851
Cameron Gutman [Sat, 25 Feb 2012 04:27:39 +0000 (04:27 +0000)]
[USBEHCI]
- More EHCI reset fixes and general code cleanup
svn path=/trunk/; revision=55850
Johannes Anderwald [Sat, 25 Feb 2012 03:28:17 +0000 (03:28 +0000)]
[USBEHCI]
- Fix reset port sequence #2
- Clear unwanted bits
- Fix wait time as in spec
- Wait max 500ms for the reset bit to clear, otherwise restart the reset sequence
- Check if work item is currently queued
svn path=/trunk/; revision=55849
Cameron Gutman [Sat, 25 Feb 2012 02:20:15 +0000 (02:20 +0000)]
[USBOHCI]
- Implement per-port power control
svn path=/trunk/; revision=55848
Johannes Anderwald [Sat, 25 Feb 2012 00:35:40 +0000 (00:35 +0000)]
[USBCCGP]
- Formatting, no code changes
svn path=/trunk/; revision=55847
Cameron Gutman [Sat, 25 Feb 2012 00:34:48 +0000 (00:34 +0000)]
[INF]
- Fix the Live CD regression (RBuild only - The irony is not lost on me) caused by r55555
- There is another regression that still prevents booting though
svn path=/trunk/; revision=55846
Cameron Gutman [Fri, 24 Feb 2012 23:14:19 +0000 (23:14 +0000)]
[USBOHCI]
- Fix a broken assertion and print out the alignment mask and HCCA pointer
svn path=/trunk/; revision=55845
Cameron Gutman [Fri, 24 Feb 2012 23:05:22 +0000 (23:05 +0000)]
[USBOHCI]
- Fix various initialization bugs
svn path=/trunk/; revision=55844
Johannes Anderwald [Fri, 24 Feb 2012 17:58:55 +0000 (17:58 +0000)]
[USBUHCI]
- Invert data toggle
svn path=/trunk/; revision=55843
Giannis Adamopoulos [Fri, 24 Feb 2012 15:32:13 +0000 (15:32 +0000)]
[win32k]
-remove unrelated and unused information from the WINSTATION_OBJECT
svn path=/trunk/; revision=55842
Giannis Adamopoulos [Fri, 24 Feb 2012 15:22:11 +0000 (15:22 +0000)]
[win32k]
- Properly create the WindowStations directory in NtUserInitialize. Now we take into account the fact that if we are not in session 0, it should be created in \Sessions direcory
- Clean up IntParseDesktopPath and make it use the correct WindowStations
- Add some comments and cleanup
- Remove the unused IntGetFullWindowStationName, IntGetWindowStationObject and IntGetWinStaObj
svn path=/trunk/; revision=55841
Stefan Ginsberg [Fri, 24 Feb 2012 13:51:52 +0000 (13:51 +0000)]
[NTOSKRNL]
- Remove nasty hack to make Windows PCI driver load. This may not be required after the fixes that were committed after this hack. If it is still necessary then please fix whatever issue makes the PCI driver crash instead of relying on a return from bugcheck call to work...
[DDK]
- Mark KeBugCheckEx as noreturn again. Should fix Prefast issues where it thought execution could return from the call and would warn about false issues.
svn path=/trunk/; revision=55840
Art Yerkes [Fri, 24 Feb 2012 11:33:23 +0000 (11:33 +0000)]
[NEWCC]
Integrate september's speed improvements, which now work.
Remove the flush hack when unpinning cache segments.
svn path=/trunk/; revision=55839
Daniel Reimer [Fri, 24 Feb 2012 10:33:06 +0000 (10:33 +0000)]
Update for rapps
svn path=/trunk/; revision=55838
Art Yerkes [Fri, 24 Feb 2012 10:05:06 +0000 (10:05 +0000)]
[NEWCC]
Update used page table entry counts when mapping pages in cache sections.
svn path=/trunk/; revision=55837
Cameron Gutman [Fri, 24 Feb 2012 07:26:43 +0000 (07:26 +0000)]
[USBOHCI]
- Try to fix some real hardware OHCI initialization hangs
svn path=/trunk/; revision=55836
Dmitry Gorbachev [Thu, 23 Feb 2012 18:59:24 +0000 (18:59 +0000)]
[FREELDR][NTOSKRNL]
Update linker scripts.
svn path=/trunk/; revision=55835
Stefan Ginsberg [Thu, 23 Feb 2012 13:06:11 +0000 (13:06 +0000)]
[CMAKE]
- Specify C4700 (uninitialized variable usage) to cause an error on compile as this is very likely to result in broken code.
[NTDLL]
- Disable ASSERT in LdrpSearchPath that could be reading an uninitialized variable. The routine is not fully implemented so this should likely be re-enabled once it is.
[BROWSEUI]
- Add missing call to BuildRebarBandInfo, or we would end up with an unitialized variable sent to SendMessage.
[PCIX]
- Fix broken ASSERT
- Fix usage of wrong (and uninitialized) variable in the Unicode case for PciGetDescriptionMessage.
[DDK]
- Prepend "_" to local variable of NdisChainBufferAtBack. Fixes code in ndisuio that called this using the same name as the macro's variable (which resulted in NdisChainBufferAtBack assigning the variable to itself).
[WIN32K]
- Fix WinPosShowIconTitle that checked if a variable was NULL before assigning it to anything.
svn path=/trunk/; revision=55834
Amine Khaldi [Thu, 23 Feb 2012 12:03:06 +0000 (12:03 +0000)]
[NEWCC]
A reintegration checkpoint for the NewCC branch, brought to you by Team NewCC.
Differences with current ReactOS trunk:
* A new memory area type, MEMORY_AREA_CACHE, is added, which represents a mapped region of a file. In NEWCC mode, user sections are MEMORY_AREA_CACHE type as well, and obey new semantics. In non-NEWCC mode, they aren't used.
* A way of claiming a page entry for a specific thread's work is added. Placing the special SWAPENTRY value MM_WAIT_ENTRY in a page table, or in a section page table should indicate that memory management code is intended to wait for another thread to make some status change before checking the state of the page entry again. In code that uses this convention, a return value of STATUS_SUCCESS + 1 is used to indicate that the caller should use the MiWaitForPageEvent macro to wait until somebody has change the state of a wait entry before checking again. This is a lighter weight mechanism than PAGEOPs.
* A way of asking the caller to perform some blocking operation without locks held is provided. This replaces some spaghettified code in which locks are repeatedly taken and broken by code that performs various blocking operations. Using this mechanism, it is possible to do a small amount of non-blocking work, fill in a request, then return STATUS_MORE_PROCESSING_REQUIRED to request that locks be dropped and the blocking operation be carried out. A MM_REQUIRED_RESOURCES structure is provided to consumers of this contract to use to accumulate state across many blocking operations. Several functions wrapping blocking operations are provided in ntoskrnl/cache/reqtools.c.
* Image section pages are no longer direct mapped. This is done to simplify consolidation of ownership of pages under the data section system. At a later time, it may be possible to make data pages directly available to image sections for the same file. This is likely the only direct performance impact this code makes on non-NEWCC mode.
RMAPs:
* A new type of RMAP entry is introduced, distinguished by RMAP_IS_SEGMENT(Address) of the rmap entry. This kind of entry contains a pointer to a section page table node in the Process pointer, which in turn links back to the MM_SECTION_SEGMENT it belongs to. Therefore, a page belonging only to a segment (that is, a segment page that isn't mapped) can exist and be evicted using the normal page eviction mechanism in balance.c. Each of the rmap function has been modified to deal with segment rmaps.
* The low 8 bits of the Address field in a segment rmap denote the entry number in the generic table node pointed to by Process that points to the page the rmap belongs to. By combining them, you can determine the file offset the page belongs to.
* In NEWCC mode, MmSharePageEntry/UnsharePageEntry are not used, and instead the page reference count is used to keep track of the number of mappings of a page, allowing the last reference expiring to allow the page to be recycled without much intervention. These are still used in non-NEWCC mode. One change has been made, the count fields have been narrowed by 1 bit to make room for a dirty bit in SSE entries, needed when a page is present but unmapped.
Section page tables:
* The section page tables are now implemented using RtlGenericTables. This enables a fairly compact representation of section page tables without having the existence of a section object imply 4k of fake PDEs. In addition, each node in the generic table has a wide file offset that is a multiple of 256 pages, or 1 megabyte total. Besides needing wide file offsets, the only other visible change caused by the switch to generic tables for section page tables is the need to lock the section segment before interacting with the section page table.
Eviction:
* Page eviction in cache sections is accomplished by MmpPageOutPhysicalAddress. In the case of a shared page, it tries to remove all mappings of the indicated page. If this process fails at any point, the page will simply be drawn back into the target address spaces. After succeeding at this, if TRUE has been accumulated into the page's dirty bit in the section page table, it is written back, and then permanently removed.
NewCC mode:
* NEWCC mode is introduced, which rewrites the file cache to a set of cache stripes actively mapped, along with unmapped section data.
* NewCC is more authentic in its interpretation of the external interface to the windows cache than the current cache manager, implementing each of the cache manager functions according to the documented interface with no preconceived ideas about how anything should be implemented internally. Cache stripes are implemented on top of section objects, using the same memory manager paths, and therefore economizing code and complexity. This replaces a rather complicated system in which pages can be owned by the cache manager and the memory manager simultaneously and they must cooperate in a fairly sophisticated way to manage them. Since they're quite interdependent in the current code, modifying either is very difficult. In NEWCC, they have a clear division of labor and thus can be worked on independently.
* Several third party filesystems that use the kernel Cc interface work properly using NEWCC, including matt wu's ext3 driver.
* In contrast with code that tries to make CcInitializeCacheMap and CcUninitializeCacheMap into a pair that supports reference counting, NEWCC lazily initializes the shared and private cache maps as needed and uses the presence of a PrivateCacheMap on at least one file pointing to the SharedCacheMap as an indication that the FILE_OBJECT reference in the SharedCacheMap should still be held. When the last PrivateCacheMap is discarded, that's the appropriate time to tear down caching for a specific file, as the SharedCacheMap data is allowed to be saved and reused. We honor this by making the SharedCacheMap into a depot for keeping track of the PrivateCacheMap objects associated with views of a file.
svn path=/trunk/; revision=55833