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
This commit is contained in:
Michael Lotz 2009-04-24 16:03:01 +00:00
parent 7a65816a64
commit c2c3d40c7b

View File

@ -322,6 +322,13 @@ ATAChannel::Reset(bool *presence, uint16 *signatures)
uint8 deviceCount = fDeviceCount;
for (uint8 i = 0; i < deviceCount; i++) {
SelectDevice(i);
if (AltStatus() == 0xff) {
TRACE_ALWAYS("illegal status value for device %d,"
" assuming not present\n", i);
continue;
}
if (SelectedDevice() != i) {
TRACE_ALWAYS("cannot select device %d, assuming not present\n", i);
continue;