sata_mv: re-enable hotplug, update TODO list

Re-enable hotplug, now that the interrupt/error handling are mostly sane.
Also update the TODO list at the top.

Signed-off-by: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
Mark Lord 2008-04-19 14:54:41 -04:00 committed by Jeff Garzik
parent 8d07379d25
commit 85afb93457

View File

@ -23,46 +23,34 @@
*/
/*
sata_mv TODO list:
1) Needs a full errata audit for all chipsets. I implemented most
of the errata workarounds found in the Marvell vendor driver, but
I distinctly remember a couple workarounds (one related to PCI-X)
are still needed.
2) Improve/fix IRQ and error handling sequences.
3) ATAPI support (Marvell claims the 60xx/70xx chips can do it).
4) Think about TCQ support here, and for libata in general
with controllers that suppport it via host-queuing hardware
(a software-only implementation could be a nightmare).
5) Investigate problems with PCI Message Signalled Interrupts (MSI).
6) Cache frequently-accessed registers in mv_port_priv to reduce overhead.
7) Fix/reenable hot plug/unplug (should happen as a side-effect of (2) above).
8) Develop a low-power-consumption strategy, and implement it.
9) [Experiment, low priority] See if ATAPI can be supported using
"unknown FIS" or "vendor-specific FIS" support, or something creative
like that.
10) [Experiment, low priority] Investigate interrupt coalescing.
Quite often, especially with PCI Message Signalled Interrupts (MSI),
the overhead reduced by interrupt mitigation is quite often not
worth the latency cost.
11) [Experiment, Marvell value added] Is it possible to use target
mode to cross-connect two Linux boxes with Marvell cards? If so,
creating LibATA target mode support would be very interesting.
Target mode, for those without docs, is the ability to directly
connect two SATA controllers.
*/
* sata_mv TODO list:
*
* --> Errata workaround for NCQ device errors.
*
* --> More errata workarounds for PCI-X.
*
* --> Complete a full errata audit for all chipsets to identify others.
*
* --> ATAPI support (Marvell claims the 60xx/70xx chips can do it).
*
* --> Investigate problems with PCI Message Signalled Interrupts (MSI).
*
* --> Cache frequently-accessed registers in mv_port_priv to reduce overhead.
*
* --> Develop a low-power-consumption strategy, and implement it.
*
* --> [Experiment, low priority] Investigate interrupt coalescing.
* Quite often, especially with PCI Message Signalled Interrupts (MSI),
* the overhead reduced by interrupt mitigation is quite often not
* worth the latency cost.
*
* --> [Experiment, Marvell value added] Is it possible to use target
* mode to cross-connect two Linux boxes with Marvell cards? If so,
* creating LibATA target mode support would be very interesting.
*
* Target mode, for those without docs, is the ability to directly
* connect two SATA ports.
*/
#include <linux/kernel.h>
#include <linux/module.h>
@ -300,9 +288,7 @@ enum {
EDMA_ERR_IRQ_TRANSIENT = EDMA_ERR_LNK_CTRL_RX_0 |
EDMA_ERR_LNK_CTRL_RX_1 |
EDMA_ERR_LNK_CTRL_RX_3 |
EDMA_ERR_LNK_CTRL_TX |
/* temporary, until we fix hotplug: */
(EDMA_ERR_DEV_DCON | EDMA_ERR_DEV_CON),
EDMA_ERR_LNK_CTRL_TX,
EDMA_EH_FREEZE = EDMA_ERR_D_PAR |
EDMA_ERR_PRD_PAR |
@ -2124,13 +2110,6 @@ static int mv6_reset_hc(struct mv_host_priv *hpriv, void __iomem *mmio,
printk(KERN_ERR DRV_NAME ": can't clear global reset\n");
rc = 1;
}
/*
* Temporary: wait 3 seconds before port-probing can happen,
* so that we don't miss finding sleepy SilXXXX port-multipliers.
* This can go away once hotplug is fully/correctly implemented.
*/
if (rc == 0)
msleep(3000);
done:
return rc;
}