Mark Lord wrote:
sata_mv Restrict max_sectors to 8-bits on GenII NCQ.

The GenII chips have only 8-bits for the sector_count field when performing NCQ.
Add a dev_config method to restrict this when necessary, taking care not to
override any other restriction already in place (likely none, but someday.. ?).

Signed-off-by: Mark Lord <[EMAIL PROTECTED]>

--- old/drivers/ata/sata_mv.c    2008-01-24 12:35:43.000000000 -0500
+++ new/drivers/ata/sata_mv.c    2008-01-24 12:40:10.000000000 -0500
@@ -446,6 +446,7 @@
static void mv_post_int_cmd(struct ata_queued_cmd *qc);
static void mv_eh_freeze(struct ata_port *ap);
static void mv_eh_thaw(struct ata_port *ap);
+static void mv6_dev_config(struct ata_device *dev);
static int mv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);

static void mv5_phy_errata(struct mv_host_priv *hpriv, void __iomem *mmio,
@@ -538,6 +539,7 @@
};

static const struct ata_port_operations mv6_ops = {
+    .dev_config             = mv6_dev_config,
    .tf_load        = ata_tf_load,
    .tf_read        = ata_tf_read,
    .check_status        = ata_check_status,
@@ -1051,6 +1053,17 @@
        return -EINVAL;
}

+static void mv6_dev_config(struct ata_device *adev)
+{
+    /*
+     * We don't have hob_nsect when doing NCQ commands on Gen-II.
+     * See mv_qc_prep() for more info.
+     */
+    if (adev->flags & ATA_DFLAG_NCQ)
+        if (adev->max_sectors > ATA_MAX_SECTORS)
+            adev->max_sectors = ATA_MAX_SECTORS;
+}
+
static void mv_edma_cfg(struct mv_port_priv *pp, struct mv_host_priv *hpriv,
            void __iomem *port_mmio, int want_ncq)
{

ACK patches 8-9


-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to