- USBSTOR_SendRequest: The buffer for read/write may not be NonPagedPool, which is documented as a requirement for using MmBuildMdlForNonPagedPool. Also locking the buffers pages is also not an option as the routine is called at DISPATCH_LEVEL.
It so happens that Irp->MdlAddress is valid for read/write operations. Use it instead of procedure above.
- Add a sanity check to make sure the Mdl does describe the transfer buffer.
Fixes IRQL_NOT_LESS_OR_EQUAL bugcheck in windows. These changes also may fixed writing to device.
svn path=/branches/usb-bringup/; revision=51752
Patch by Paolo Bonzini <bonzini [at] gnu [dot] org>
Fix implementation of ExInterlockedAddLargeStatistic
The old version wasn't really atomic.
See issue #6223 for more details.
svn path=/trunk/; revision=51748
- Implement __chkstk_ms for x86 and amd64
- amd64 code is based on code by Kai Tietz and Richard Henderson
- x86 code is based on old __chkstk implementation and code by Kai Tietz and Richard Henderson
- Function is required by newer gcc versions
svn path=/trunk/; revision=51747
- Sync to 0.41b2
- Fixed bug with unnecessary call to AtapiEnableInterrupts() inside AtapiSendCommand() when DRQ is never asserted
- Added registry option AtapiSendDisableIntr to manage ATAPI command sending behavior. AFAIU, under VirtualBox it is unnecessary to disable interrupts around sending ATAPI commands.
- Implemented registry options for BUSY and DRQ timing adjustments.
- Added VirtualBox tuning option - VirtualBox value in registry. Sets timings and ATAPI (CD/DVD) related options to the most compatible values.
- Fixed bug with UDMA2 support on Intel ICH1/2/3/4/5 chips.
- Made some experimental changes in automatic slow-down algorithm. This code is rather old, but was not tested properly.
- Fixed bug with accessing SATA registers on Intel chips
- Many other fixes
svn path=/trunk/; revision=51736
- Set the focus for the treeview when the main window gets the focus.
- Select the root item after the devices tree has been built.
These changes enable the user to navigate the device tree using the keyboard.
svn path=/trunk/; revision=51715
Merge r51273 from cmake branch:
The crt library must provide a and w version of the functions and not rely to _UNICODE being set or not
svn path=/trunk/; revision=51713
Update widl_ros.diff
The change was done in r49282 in cmake branch and mysteriously made it into trunk in r50063, which is a wine sync, but wine doesn't have that code.
svn path=/trunk/; revision=51704
CM_Create_DevNode_ExW: Copy the device id string into a local buffer before passing it to PNP_CreateDevInst because its 2nd argument is an 'in out' string. Using a writable string buffer prevents exceptions in case the device id passed to CM_Create_DevNode_ExW is a string constant.
svn path=/trunk/; revision=51697
- Fix bug in read command, which uses wrong format. LBA address is stored in the CDB10 struct
- Don't build the mdl for nonpaged pool if the driver passes an mdl (i/o paging requests)
- Usbstor can now list disk contents and browse files when used in Windows XP
- Need to implement SCSIOP_WRITE to write files
svn path=/branches/usb-bringup/; revision=51694
- Handle SCSIOP_MEDIUM_REMOVAL
- Handle paging i/o requests. These request don't provide a data buffer in the srb, but the buffer is stored in the irp' mdl
- Fix the hack for unimplemented Mode Sense command
- Usbstor now completes initializes and receives read requests
- Still need to fix read request, as Windows XP fails to recognize the disk format, WIP
svn path=/branches/usb-bringup/; revision=51693
- Add a check at USBSTOR_FdoHandleStartDevice to make sure the device uses Bulk Transfers.
- Use macros for initializing the Urbs. The macros ensure that the proper fields of the URB are set correctly.
Fixes failing of getting device descriptor and getting devices BlockLength.
svn path=/branches/usb-bringup/; revision=51691
- Only get the string descriptors if they are available. Fixes crash when using usb mouse and keyboards in windows.
svn path=/branches/usb-bringup/; revision=51688
- Modify BuildBulkTransferQueueHead to support TransferBufferLengths larger than PAGE_SIZE * 5.
- Acquire a SpinLock before adding QueueHeads to AsyncList and PendingList.
- Dont request a new QueueHead for incomplete transfers in QueueHeadCompletion, as the memory for the just completed QueueHead has not been released yet. Doing so overwrites the m_TransferDescriptor[x] members with new address resulting in memory leaks. Instead request a new QueueHead after the QueueHead has been freed in QueueHeadCleanup.
- Fix a bug where a QueueHead was removed from the m_CompletedRequestAsyncList instead of the m_PendingRequestAsyncList.
- Temporary hackfix InternalCalculateTransferLength to return the TransferBufferLength. This hack will be removed as soon as possible.
- With these changes the hub and ehci driver allow viewing content of and transfers to/from usb disks.
svn path=/branches/usb-bringup/; revision=51684