Command queueing is now generally disabled in PIO modes. No matter what

the cause is, it didn't work over here at all in this combination.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10629 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2005-01-10 07:17:55 +00:00
parent c776c35a04
commit f04715b8fe
+12 -1
View File
@@ -1,5 +1,7 @@
/* /*
* Copyright 2005, Axel Dörfler, [email protected]. All rights reserved.
* Copyright 2002/03, Thomas Kurschel. All rights reserved. * Copyright 2002/03, Thomas Kurschel. All rights reserved.
*
* Distributed under the terms of the MIT License. * Distributed under the terms of the MIT License.
*/ */
@@ -617,12 +619,21 @@ ide_sim_init_bus(pnp_node_handle node, void *user_cookie, void **cookie)
SHOW_FLOW(2, "can_dma: %d", bus->can_DMA); SHOW_FLOW(2, "can_dma: %d", bus->can_DMA);
if (pnp->get_attr_uint8(node, IDE_CONTROLLER_CAN_CQ_ITEM, &bus->can_CQ, true) != B_OK) if (bus->can_DMA) {
if (pnp->get_attr_uint8(node, IDE_CONTROLLER_CAN_CQ_ITEM, &bus->can_CQ, true) != B_OK) {
// per default, command queuing is supported unless the driver // per default, command queuing is supported unless the driver
// reports problems (queuing should be transparent to // reports problems (queuing should be transparent to
// controller, but for sure there is some buggy, over-optimizing // controller, but for sure there is some buggy, over-optimizing
// controller out there) // controller out there)
bus->can_CQ = true; bus->can_CQ = true;
}
} else {
// I am not sure if it's a problem of the driver or the drive (probably the
// former), but we're generally disable command queueing in case of PIO
// transfers. Since those should be rare on a real system (as is CQ support
// in the drive), it's not really worth investigating, though.
bus->can_CQ = false;
}
res = pnp->load_driver(pnp->get_parent(node), bus, res = pnp->load_driver(pnp->get_parent(node), bus,
(pnp_driver_info **)&bus->controller, (pnp_driver_info **)&bus->controller,