mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 13:44:15 +08:00
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:
parent
8d07379d25
commit
85afb93457
@ -23,45 +23,33 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
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>
|
||||
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user