diff --git a/src/add-ons/kernel/bus_managers/ata/ata.c b/src/add-ons/kernel/bus_managers/ata/ata.c index 64f7ae8da0..6f2b3862e8 100644 --- a/src/add-ons/kernel/bus_managers/ata/ata.c +++ b/src/add-ons/kernel/bus_managers/ata/ata.c @@ -1023,16 +1023,18 @@ ata_read_infoblock(ide_device_info *device, bool isAtapi) goto error; } + // XXX fix me IDE_LOCK(bus); - bus->state = ata_state_idle; + bus->state = ata_state_busy; IDE_UNLOCK(bus); TRACE("ata_read_infoblock: success\n"); return B_OK; error: + // XXX fix me IDE_LOCK(bus); - bus->state = ata_state_idle; + bus->state = ata_state_busy; IDE_UNLOCK(bus); return B_ERROR; } diff --git a/src/add-ons/kernel/bus_managers/ata/ide_sim.c b/src/add-ons/kernel/bus_managers/ata/ide_sim.c index 4b383b4777..c7a124fb53 100644 --- a/src/add-ons/kernel/bus_managers/ata/ide_sim.c +++ b/src/add-ons/kernel/bus_managers/ata/ide_sim.c @@ -191,6 +191,14 @@ scan_bus(ide_bus_info *bus) if (bus->disconnected) return; + + // XXX fix me + IDE_LOCK(bus); + ASSERT(bus->state == ata_state_idle); + bus->state = ata_state_busy; + IDE_UNLOCK(bus); + + for (i = 0; i < bus->max_devices; ++i) { if (bus->devices[i]) destroy_device(bus->devices[i]); @@ -220,6 +228,13 @@ scan_bus(ide_bus_info *bus) } } + + // XXX fix me + IDE_LOCK(bus); + ASSERT(bus->state == ata_state_busy); + bus->state = ata_state_idle; + IDE_UNLOCK(bus); + TRACE("ATA: scan_bus: bus %p finished\n", bus); }