#
28b3438e |
|
14-Jan-2018 |
Rene Gollent <rene@gollent.com> |
adding disable_ide_dma true in the kernel settings file From a quick look, the ATA driver only looks to safe mode settings for that, and not the kernel file. The attached patch should address that. ticket : #10253 Change-Id: I5e5c2474fecbd441a36a3600f7f16a964e0945dd Reviewed-on: https://review.haiku-os.org/c/haiku/+/56 Reviewed-by: Jérôme Duval <jerome.duval@gmail.com> Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
|
#
0063d2ba |
|
20-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Various 64-bit fixes to SCSI and ATA bus managers/drivers. Mostly compilation fixes, as well as a few 64-bit safety fixes. I've briefly looked through everything for any obvious issues and fixed the ones I've found, and it seems like they're working properly, though there could be some more well hidden ones that I've missed.
|
#
51d76425 |
|
13-Jan-2011 |
Axel Dörfler <axeld@pinc-software.de> |
* Added a new B_GET_DEVICE_NAME ioctl - this should be implemented by all drivers in the future, such that NetworkStatus and similar software can show nice names for the devices. The device manager should implement this and return the B_DEVICE_PRETTY_NAME of the device (and in turn, new style drivers should actually set this). * Implemented handling of this ioctl in the scsi_periph to return the vendor/ product strings. * Implemented this in the ATA bus manager to return the model from the info block. * KDiskDevice now fills in the partition_data::name if the B_GET_DEVICE_NAME succeeds. * As a side effect, at least BootManager now shows the drive name; maybe DriveSetup does as well for the raw device. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40231 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4535495d |
|
10-Jan-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merged the signals branch into trunk, with these changes: * The team and thread kernel structures have been renamed to Team and Thread respectively and moved into the new BKernel namespace. * Several (kernel add-on) sources have been converted from C to C++ since private kernel headers are included that are no longer C compatible. Changes after merging: * Fixed gcc 2 build (warnings mainly in the scary firewire bus manager). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40196 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
64d79eff |
|
27-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Changed physical_entry::{address,size} to phys_{addr,size}_t and changed map_physical_memory()'s physicalAddress parameter type from void* to phys_addr_t. This breaks source compatibility, but -- as long as phys_{addr,size}_t remain 32 bit wide -- keeps binary compatibility with BeOS. * Adjusted all code using the affected interfaces (Oh what fun!). Added a few TODOs in places where the wrong types (e.g. void* for physical addresses are used). Looks like quite a few drivers aren't 64 bit safe and others will break with PAE. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36960 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
63400da8 |
|
22-Apr-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Got rid of the ATA_BLOCK_SIZE define. * The logical and physical block sizes are now retrieved from the info block, though only the logical one is actually used (where ATA_BLOCK_SIZE was used before). * Also added retrieving the offset of the first logical block inside the first physical one. * All this stupidity just for Windows XP, it's really sad. * Added "const" to some methods, removed some superfluous ';'. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36416 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e50cf876 |
|
02-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved the VM headers into subdirectory vm/. * Renamed vm_cache.h/vm_address_space.h to VMCache.h/VMAddressSpace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34449 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2ca5f51b |
|
17-Oct-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Fix for ticket #4543. This fixes the ATA timeout waiting for interrupt / device busy / status 0x58 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33626 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a4794591 |
|
10-Sep-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Write device identification into syslog. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33042 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3c13be10 |
|
10-Sep-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Clear pending interrupts after reset and timeouts git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33039 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f4f2f6f5 |
|
07-Sep-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Add more debug code. I see spurius device selection timeouts. When this happens, no recovery is possible right now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32989 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5987738c |
|
06-Sep-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Faster bus scan by reusing device presence information that is available before resetting the bus. This allows to skip devices that are not present. Works for most but not all devices. Sometimes device 0 pretends that a device 1 exists, but it's usefull anyway. Allow working device 1 only configurations by not selecting device 0 anymore for identification. Moved indentification from Reset into BusScan to do everything in a single step. A SATA emulation in combined mode might have a slave (device 1) only configuration when only one device is connected, depending on the port. Also tested with PATA. Recovery for lost interrupts. Works but is dead slow because of the timeout. Bus reset isn't possible anymore, this needs to be implemented in a save way. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32978 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
398211a6 |
|
27-Aug-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Modified initial ata device detection. Works for me. Please test. If you get an "error waiting for interrupt" during boot, try to disabled IDE DMA. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32769 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
46e94fad |
|
23-Aug-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Initialize last part of byte to 0, just in case. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32633 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b7f73c6e |
|
22-Aug-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Update and enable the debugging device selection check. Might shed some light on the problem in #4308. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32616 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f8c16a45 |
|
06-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
By popular request: Change the invalid device number and add a comment explaining the reasons behind it. Oh well, at least the commit count raises... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30644 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2a8d619c |
|
06-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Add three more error checks for paranoias sake. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30642 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ca2a912b |
|
27-Apr-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Workaround for Gigabyte i-RAM, which always reports 0x00 as error code after bus reset, git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30474 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4a2e45ea |
|
26-Apr-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
According to ATA-4 specification, the error and device-fault bit (and all other status register bits) are only valid when the busy bit is zero. This makes PIO mode work on a WD Raptor. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30443 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5bfd73fb |
|
25-Apr-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Make debugging easier by tracing only status changes. Always first disable interrupts on a device that can be selected, then check for invalid status. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30426 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c2c3d40c |
|
24-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Check the status value for validity before waiting for a device. If it has an invalid value, assume the device is not present. Should fix long boot pauses in VMWare and maybe also on some hardware. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30381 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c8c904a |
|
23-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed wrong indentation, and number of blank lines. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30367 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
22a6e4bb |
|
21-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Only use 2 bytes of the signature instead of all four. Even though the specs clearly state that the other two bytes need to be 0x01 (and they always did, even back to the very first ATA/ATAPI specs), I have one device here that doesn't set the sector count register to 1. Since those two bytes are the unique ones of the signatures anyway, it shouldn't harm to just ignore the others. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30311 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c5cccce |
|
20-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Explicitly check device selection success. If device selection failed, assume there is no device. Should fix long reset timeouts when only device 1 is present and therefore device 0 can't be selected. * In case a device reset error is reported, don't try to identify/use the device. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30286 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2c08a104 |
|
18-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Wait slightly longer before falling into passive poll mode. * Cause scheduler invokation when we handled an interrupt as the transfering thread can continue immediately. This brings small block transfer rates to a comparable level to the old IDE bus_manager. For large block transfers there is no speed difference at all. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30257 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b6b82488 |
|
18-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Apply block count maximum according to device capability. If the device supports LBA48 we can allow a maximum block count of 65535 as we have a 16bit sector count field available. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30254 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6a2bc102 |
|
18-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
For packet devices we want to actually return a check condition when the device indicates an error. Also we then need to pass through the request sense command to the device. This should fix media status reporting for ATAPI. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30253 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
827f849a |
|
18-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Reworked device detection, we'll see how well this works... * Reworked some of the transfer handling after reading the specs. * Ensure that the device selection bit is set correctly for all commands. * Generally disable interrupts and enable them only when expecting a DMA one. * Renamed disk failure to device fault according to specs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30248 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
33d80ba2 |
|
10-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Rework ATAPI handling, removing all PIO interrupts. As Marcus pointed out the complication is not really worth it and it would in any case be unreliable in the shared interrupt case (even though you could always check the poll condition in the interrupt handler). * Probably broke ATAPI with those changes though. * Change blocksLeft to bytesLeft to allow using it for arbitrary ATAPI requests. * Check some more error conditions and actually let those states get through to the SCSI layer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30109 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
da4c9900 |
|
10-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Move the lock into the request. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30100 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
118bb4e7 |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Fix race condition between finishing a request and returning a busy status when the channel is in use, which would cause the SCSI scheduler to stop sending requests. * Indeed we need to return a status from the interrupt handler, as for PIO transfers there is no way of knowning whether or not the interrupt at hand was ours. * Add some debug output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30091 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
22805aae |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Adding ATAPI support to the new ATA bus_manager. Only tested in QEMU. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30080 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
79973897 |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Implement DMA transfers in the new ATA bus_manager. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30069 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9611bddd |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Adding DMA detection and generally allow DMA. Not used yet though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30054 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6bb01f71 |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Adding/updating license headers. * Add the standalone ata module to the Jamfile. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30053 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
44039cc6 |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Additional to the normal detection of device presence, use the trick previously present in the IDE bus_manager when detecting devices to avoid long timeouts when waiting for possible ATAPI devices. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30052 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bf9a3835 |
|
08-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Work in progress commit of a reworked ATA bus_manager. It's now object based, but doesn't really do anything more than before. * It also replaces everything IDE with ATA counterparts and cleans up a lot of the definitions. * Cleaning up the old ATA bus_manager as well as some license headers missing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30049 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0063d2ba513ddb6bd54c329aa0d16c7e184862da |
|
20-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Various 64-bit fixes to SCSI and ATA bus managers/drivers. Mostly compilation fixes, as well as a few 64-bit safety fixes. I've briefly looked through everything for any obvious issues and fixed the ones I've found, and it seems like they're working properly, though there could be some more well hidden ones that I've missed.
|
#
51d76425033b27609fb4e206c7c9610cd4c4a653 |
|
13-Jan-2011 |
Axel Dörfler <axeld@pinc-software.de> |
* Added a new B_GET_DEVICE_NAME ioctl - this should be implemented by all drivers in the future, such that NetworkStatus and similar software can show nice names for the devices. The device manager should implement this and return the B_DEVICE_PRETTY_NAME of the device (and in turn, new style drivers should actually set this). * Implemented handling of this ioctl in the scsi_periph to return the vendor/ product strings. * Implemented this in the ATA bus manager to return the model from the info block. * KDiskDevice now fills in the partition_data::name if the B_GET_DEVICE_NAME succeeds. * As a side effect, at least BootManager now shows the drive name; maybe DriveSetup does as well for the raw device. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40231 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4535495d80c86e19e2610e7444a4fcefe3e0f8e6 |
|
10-Jan-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merged the signals branch into trunk, with these changes: * The team and thread kernel structures have been renamed to Team and Thread respectively and moved into the new BKernel namespace. * Several (kernel add-on) sources have been converted from C to C++ since private kernel headers are included that are no longer C compatible. Changes after merging: * Fixed gcc 2 build (warnings mainly in the scary firewire bus manager). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40196 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
64d79eff7290437d24b1a420537c3ed5c144ab96 |
|
27-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Changed physical_entry::{address,size} to phys_{addr,size}_t and changed map_physical_memory()'s physicalAddress parameter type from void* to phys_addr_t. This breaks source compatibility, but -- as long as phys_{addr,size}_t remain 32 bit wide -- keeps binary compatibility with BeOS. * Adjusted all code using the affected interfaces (Oh what fun!). Added a few TODOs in places where the wrong types (e.g. void* for physical addresses are used). Looks like quite a few drivers aren't 64 bit safe and others will break with PAE. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36960 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
63400da873b3eecf384aec6bc227fe76c3e282f1 |
|
22-Apr-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Got rid of the ATA_BLOCK_SIZE define. * The logical and physical block sizes are now retrieved from the info block, though only the logical one is actually used (where ATA_BLOCK_SIZE was used before). * Also added retrieving the offset of the first logical block inside the first physical one. * All this stupidity just for Windows XP, it's really sad. * Added "const" to some methods, removed some superfluous ';'. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36416 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e50cf8765be50a7454c9488db38b638cf90805af |
|
02-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved the VM headers into subdirectory vm/. * Renamed vm_cache.h/vm_address_space.h to VMCache.h/VMAddressSpace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34449 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2ca5f51b08b5de907e8782d97b8d265766b6f755 |
|
17-Oct-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Fix for ticket #4543. This fixes the ATA timeout waiting for interrupt / device busy / status 0x58 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33626 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a479459113a5536cae45de8392993d8f04ebad53 |
|
10-Sep-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Write device identification into syslog. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33042 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3c13be106e70f3e3c4586ef3c68dcb480cc19ce2 |
|
10-Sep-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Clear pending interrupts after reset and timeouts git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33039 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f4f2f6f56579c90eccd120cc91038d5a7c3d62b2 |
|
07-Sep-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Add more debug code. I see spurius device selection timeouts. When this happens, no recovery is possible right now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32989 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5987738cbe03d66514022c2309921302325805a4 |
|
06-Sep-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Faster bus scan by reusing device presence information that is available before resetting the bus. This allows to skip devices that are not present. Works for most but not all devices. Sometimes device 0 pretends that a device 1 exists, but it's usefull anyway. Allow working device 1 only configurations by not selecting device 0 anymore for identification. Moved indentification from Reset into BusScan to do everything in a single step. A SATA emulation in combined mode might have a slave (device 1) only configuration when only one device is connected, depending on the port. Also tested with PATA. Recovery for lost interrupts. Works but is dead slow because of the timeout. Bus reset isn't possible anymore, this needs to be implemented in a save way. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32978 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
398211a6d9abdc8a571f2d2387cd9e8f51ccdbe6 |
|
27-Aug-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Modified initial ata device detection. Works for me. Please test. If you get an "error waiting for interrupt" during boot, try to disabled IDE DMA. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32769 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
46e94fad77c81a5a52a54d8e8212e36605b64e16 |
|
23-Aug-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Initialize last part of byte to 0, just in case. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32633 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b7f73c6e2ab77bcf457e81f1af53b08edb9a58d9 |
|
22-Aug-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Update and enable the debugging device selection check. Might shed some light on the problem in #4308. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32616 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f8c16a4508be2339080d1494ff1d9515ce91f185 |
|
06-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
By popular request: Change the invalid device number and add a comment explaining the reasons behind it. Oh well, at least the commit count raises... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30644 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2a8d619c9ee64e2e5a5fae54a552e5118580023e |
|
06-May-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Add three more error checks for paranoias sake. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30642 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ca2a912bc9e7e9c84bc3fc6b49fb431d4bc507f8 |
|
27-Apr-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Workaround for Gigabyte i-RAM, which always reports 0x00 as error code after bus reset, git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30474 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4a2e45ea3661645fa7ad0c9436b93024ebf355e8 |
|
26-Apr-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
According to ATA-4 specification, the error and device-fault bit (and all other status register bits) are only valid when the busy bit is zero. This makes PIO mode work on a WD Raptor. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30443 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5bfd73fb715b3b2af81881c278e111aad19c53f3 |
|
25-Apr-2009 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
Make debugging easier by tracing only status changes. Always first disable interrupts on a device that can be selected, then check for invalid status. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30426 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c2c3d40c7b7ae85cec77dbe7a2e8effc25bb0c21 |
|
24-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Check the status value for validity before waiting for a device. If it has an invalid value, assume the device is not present. Should fix long boot pauses in VMWare and maybe also on some hardware. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30381 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c8c904aca6e88d54c583b0c2742c56373f443b0 |
|
23-Apr-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed wrong indentation, and number of blank lines. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30367 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
22a6e4bb80ac3242749093f607dd4b9d0bd6f34e |
|
21-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Only use 2 bytes of the signature instead of all four. Even though the specs clearly state that the other two bytes need to be 0x01 (and they always did, even back to the very first ATA/ATAPI specs), I have one device here that doesn't set the sector count register to 1. Since those two bytes are the unique ones of the signatures anyway, it shouldn't harm to just ignore the others. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30311 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c5cccce46dcef2f3505205372d8121ac6aba17c |
|
20-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Explicitly check device selection success. If device selection failed, assume there is no device. Should fix long reset timeouts when only device 1 is present and therefore device 0 can't be selected. * In case a device reset error is reported, don't try to identify/use the device. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30286 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2c08a1043904b55f5a6a326ce4d0688120021f85 |
|
18-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Wait slightly longer before falling into passive poll mode. * Cause scheduler invokation when we handled an interrupt as the transfering thread can continue immediately. This brings small block transfer rates to a comparable level to the old IDE bus_manager. For large block transfers there is no speed difference at all. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30257 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b6b82488dfda5ae59f0a48b5371c8a24fb4a24aa |
|
18-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Apply block count maximum according to device capability. If the device supports LBA48 we can allow a maximum block count of 65535 as we have a 16bit sector count field available. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30254 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6a2bc1027bc2e679655e319f5eb5d45702efee58 |
|
18-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
For packet devices we want to actually return a check condition when the device indicates an error. Also we then need to pass through the request sense command to the device. This should fix media status reporting for ATAPI. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30253 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
827f849a3434806b7ab0bcea89bc8791e4aa77ce |
|
18-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Reworked device detection, we'll see how well this works... * Reworked some of the transfer handling after reading the specs. * Ensure that the device selection bit is set correctly for all commands. * Generally disable interrupts and enable them only when expecting a DMA one. * Renamed disk failure to device fault according to specs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30248 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
33d80ba202e1cda4c2b97b9888b1cee94bcb74e1 |
|
10-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Rework ATAPI handling, removing all PIO interrupts. As Marcus pointed out the complication is not really worth it and it would in any case be unreliable in the shared interrupt case (even though you could always check the poll condition in the interrupt handler). * Probably broke ATAPI with those changes though. * Change blocksLeft to bytesLeft to allow using it for arbitrary ATAPI requests. * Check some more error conditions and actually let those states get through to the SCSI layer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30109 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
da4c99002d66f9936d8b815ea4824b9f5559cce2 |
|
10-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Move the lock into the request. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30100 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
118bb4e7505b6ca54926b39ab24d100efbdff121 |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Fix race condition between finishing a request and returning a busy status when the channel is in use, which would cause the SCSI scheduler to stop sending requests. * Indeed we need to return a status from the interrupt handler, as for PIO transfers there is no way of knowning whether or not the interrupt at hand was ours. * Add some debug output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30091 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
22805aae7f88e4a16627e5a8f97edf7501f44b64 |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Adding ATAPI support to the new ATA bus_manager. Only tested in QEMU. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30080 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7997389772efc7249ab5ae3d010514301652cdb8 |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Implement DMA transfers in the new ATA bus_manager. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30069 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9611bddd7abfd4579e8cedcade99164d06401a38 |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Adding DMA detection and generally allow DMA. Not used yet though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30054 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6bb01f71bc05b8280fa28bf0bc3d367a11bd57b0 |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Adding/updating license headers. * Add the standalone ata module to the Jamfile. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30053 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
44039cc60555062526278bb7c4fbaea70ec1a71a |
|
09-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
Additional to the normal detection of device presence, use the trick previously present in the IDE bus_manager when detecting devices to avoid long timeouts when waiting for possible ATAPI devices. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30052 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bf9a38352439cea6594757b3c0c47e5151548d0d |
|
08-Apr-2009 |
Michael Lotz <mmlr@mlotz.ch> |
* Work in progress commit of a reworked ATA bus_manager. It's now object based, but doesn't really do anything more than before. * It also replaces everything IDE with ATA counterparts and cleans up a lot of the definitions. * Cleaning up the old ATA bus_manager as well as some license headers missing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30049 a95241bf-73f2-0310-859d-f6bbb57e9c96
|