sata_mv: Warn about HPT RocketRAID BIOS treatment of "Legacy" drives
authorMark Lord <mlord@pobox.com>
Tue, 4 Dec 2007 19:07:52 +0000 (14:07 -0500)
committerJeff Garzik <jeff@garzik.org>
Tue, 4 Dec 2007 19:07:52 +0000 (14:07 -0500)
The Highpoint RocketRAID boards using Marvell 7042 chips
overwrite the 9th sector of attached drives at boot time,
when those drives are configured as "Legacy" (the default)
in the HighPoint BIOS.

This kills GRUB, and probably other stuff.
But it all happens *before* Linux is even loaded.

So, for now we'll log a WARNING when such boards are detected,
and advise users to configure BIOS "JBOD" volumes instead,
which don't appear to suffer from this problem.

Signed-off-by: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/sata_mv.c

index 8d864e5e97edd46f27556a7290502ce4242e2ed7..fe0105d35bae130b1077b1b8bec411859bf13460 100644 (file)
@@ -2503,6 +2503,15 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx)
 
        case chip_7042:
                hp_flags |= MV_HP_PCIE;
+               if (pdev->vendor == PCI_VENDOR_ID_TTI &&
+                   (pdev->device == 0x2300 || pdev->device == 0x2310))
+               {
+                       printk(KERN_WARNING "sata_mv: Highpoint RocketRAID BIOS"
+                               " will CORRUPT DATA on attached drives when"
+                               " configured as \"Legacy\".  BEWARE!\n");
+                       printk(KERN_WARNING "sata_mv: Use BIOS \"JBOD\" volumes"
+                               " instead for safety.\n");
+               }
        case chip_6042:
                hpriv->ops = &mv6xxx_ops;
                hp_flags |= MV_HP_GEN_IIE;