|
@@ -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;
|
|
|
}
|