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>

authored by Mark Lord and committed by Jeff Garzik 4e520033 e41bd3e8

+25 -5
+25 -5
drivers/ata/sata_mv.c
··· 2506 if (pdev->vendor == PCI_VENDOR_ID_TTI && 2507 (pdev->device == 0x2300 || pdev->device == 0x2310)) 2508 { 2509 - printk(KERN_WARNING "sata_mv: Highpoint RocketRAID BIOS" 2510 - " will CORRUPT DATA on attached drives when" 2511 - " configured as \"Legacy\". BEWARE!\n"); 2512 - printk(KERN_WARNING "sata_mv: Use BIOS \"JBOD\" volumes" 2513 - " instead for safety.\n"); 2514 } 2515 case chip_6042: 2516 hpriv->ops = &mv6xxx_ops;
··· 2506 if (pdev->vendor == PCI_VENDOR_ID_TTI && 2507 (pdev->device == 0x2300 || pdev->device == 0x2310)) 2508 { 2509 + /* 2510 + * Highpoint RocketRAID PCIe 23xx series cards: 2511 + * 2512 + * Unconfigured drives are treated as "Legacy" 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"); 2534 } 2535 case chip_6042: 2536 hpriv->ops = &mv6xxx_ops;