rem: if( controller->write_device_control( channel, ide_devctrl_nien | ide_devctrl_bit3 ) != B_OK )
add: spin(5);  if (controller->write_device_control(channel, ide_devctrl_nien | ide_devctrl_bit3) != B_OK)
context: bool reset_bus( ide_device_info *device, ide_qrequest *ignore ){	ide_bus_info *bus = device->bus;	ide_controller_interface *controller = bus->controller;	ide_channel_cookie channel = bus->channel;	FAST_LOG0( bus->log, ev_ide_reset_bus );		if( device->reconnect_timer_installed ) {		cancel_timer( &device->reconnect_timer.te );		device->reconnect_timer_installed = false;	}		if( device->other_device->reconnect_timer_installed ) {		cancel_timer( &device->other_device->reconnect_timer.te );		device->other_device->reconnect_timer_installed = false;	}	// activate srst signal for 5 µs	// also, deactivate IRQ	// (as usual, we will get an IRQ on disabling, but as we leave them	// disabled for 2 ms, this false report is ignored)	if( controller->write_device_control( channel, 		ide_devctrl_nien | ide_devctrl_srst | ide_devctrl_bit3 ) != B_OK )		goto err0;			spin( 5 );	if( controller->write_device_control( channel, 		ide_devctrl_nien | ide_devctrl_bit3 ) != B_OK )		goto err0;			// let devices wake up	snooze( 2000 );		// ouch, we have to wait up to 31 seconds!	if( !ide_wait( device, 0, ide_status_bsy, true, 31000000 )) {			// as we don't know which of the devices is broken		// we leave them both alive		if( controller->write_device_control( channel, ide_devctrl_bit3 ) != B_OK )			goto err0;		set_sense( device, SCSIS_KEY_HARDWARE_ERROR, SCSIS_ASC_LUN_TIMEOUT );		goto err1;	}		if( controller->write_device_control( channel, ide_devctrl_bit3 ) != B_OK )		goto err0;			finish_all_requests( bus->devices[0], ignore, SCSI_SCSI_BUS_RESET, true );	finish_all_requests( bus->devices[1], ignore, SCSI_SCSI_BUS_RESET, true );		return true;	err0:	set_sense( device, SCSIS_KEY_HARDWARE_ERROR, SCSIS_ASC_INTERNAL_FAILURE );	err1:	finish_all_requests( bus->devices[0], ignore, SCSI_SCSI_BUS_RESET, true );	finish_all_requests( bus->devices[1], ignore, SCSI_SCSI_BUS_RESET, true );		//xpt->call_async( bus->xpt_cookie, -1, -1, AC_BUS_RESET, NULL, 0 );	return false;}