aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Lord <liml@rtr.ca>2007-12-11 12:58:05 -0500
committerJeff Garzik <jeff@garzik.org>2007-12-17 20:33:12 -0500
commit4e5200334e03e5620aa19d538300c13db270a063 (patch)
treec4a8e63e19d182a956b0618ae3fcbc2547789813
parente41bd3e854e3536de847d5831c0e25a47f394885 (diff)
sata_mv: improve warnings about Highpoint RocketRAID 23xx cards
Improve the existing boot/load time warnings from sata_mv for Highpoint RocketRAID 23xx cards, based on new knowledge about where the BIOS likes to overwrite sectors with metadata. Harmless to us, but very useful for end users. Signed-off-by: Mark Lord <mlord@pobox.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/ata/sata_mv.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index fe0105d35bae..37b850ae0845 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -2506,11 +2506,31 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx)
2506 if (pdev->vendor == PCI_VENDOR_ID_TTI && 2506 if (pdev->vendor == PCI_VENDOR_ID_TTI &&
2507 (pdev->device == 0x2300 || pdev->device == 0x2310)) 2507 (pdev->device == 0x2300 || pdev->device == 0x2310))
2508 { 2508 {
2509 printk(KERN_WARNING "sata_mv: Highpoint RocketRAID BIOS" 2509 /*
2510 " will CORRUPT DATA on attached drives when" 2510 * Highpoint RocketRAID PCIe 23xx series cards:
2511 " configured as \"Legacy\". BEWARE!\n"); 2511 *
2512 printk(KERN_WARNING "sata_mv: Use BIOS \"JBOD\" volumes" 2512 * Unconfigured drives are treated as "Legacy"
2513 " instead for safety.\n"); 2513 * by the BIOS, and it overwrites sector 8 with
2514 * a "Lgcy" metadata block prior to Linux boot.
2515 *
2516 * Configured drives (RAID or JBOD) leave sector 8
2517 * alone, but instead overwrite a high numbered
2518 * sector for the RAID metadata. This sector can
2519 * be determined exactly, by truncating the physical
2520 * drive capacity to a nice even GB value.
2521 *
2522 * RAID metadata is at: (dev->n_sectors & ~0xfffff)
2523 *
2524 * Warn the user, lest they think we're just buggy.
2525 */
2526 printk(KERN_WARNING DRV_NAME ": Highpoint RocketRAID"
2527 " BIOS CORRUPTS DATA on all attached drives,"
2528 " regardless of if/how they are configured."
2529 " BEWARE!\n");
2530 printk(KERN_WARNING DRV_NAME ": For data safety, do not"
2531 " use sectors 8-9 on \"Legacy\" drives,"
2532 " and avoid the final two gigabytes on"
2533 " all RocketRAID BIOS initialized drives.\n");
2514 } 2534 }
2515 case chip_6042: 2535 case chip_6042:
2516 hpriv->ops = &mv6xxx_ops; 2536 hpriv->ops = &mv6xxx_ops;