|
@@ -2506,11 +2506,31 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx)
|
|
|
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");
|
|
|
+ /*
|
|
|
+ * Highpoint RocketRAID PCIe 23xx series cards:
|
|
|
+ *
|
|
|
+ * Unconfigured drives are treated as "Legacy"
|
|
|
+ * by the BIOS, and it overwrites sector 8 with
|
|
|
+ * a "Lgcy" metadata block prior to Linux boot.
|
|
|
+ *
|
|
|
+ * Configured drives (RAID or JBOD) leave sector 8
|
|
|
+ * alone, but instead overwrite a high numbered
|
|
|
+ * sector for the RAID metadata. This sector can
|
|
|
+ * be determined exactly, by truncating the physical
|
|
|
+ * drive capacity to a nice even GB value.
|
|
|
+ *
|
|
|
+ * RAID metadata is at: (dev->n_sectors & ~0xfffff)
|
|
|
+ *
|
|
|
+ * Warn the user, lest they think we're just buggy.
|
|
|
+ */
|
|
|
+ printk(KERN_WARNING DRV_NAME ": Highpoint RocketRAID"
|
|
|
+ " BIOS CORRUPTS DATA on all attached drives,"
|
|
|
+ " regardless of if/how they are configured."
|
|
|
+ " BEWARE!\n");
|
|
|
+ printk(KERN_WARNING DRV_NAME ": For data safety, do not"
|
|
|
+ " use sectors 8-9 on \"Legacy\" drives,"
|
|
|
+ " and avoid the final two gigabytes on"
|
|
|
+ " all RocketRAID BIOS initialized drives.\n");
|
|
|
}
|
|
|
case chip_6042:
|
|
|
hpriv->ops = &mv6xxx_ops;
|