Compiling sata_sil.c
Michael Hipp
Michael
Tue Mar 6 14:20:55 PST 2007
Still on my quest to get a SATA card working. It uses the sata_sil module.
How hard would it be to download the latest version of sata_sil.c from
kernel 2.6.19 and compile it against 2.6.17? Is there a written
procedure somewhere? Or is it too easy to need one?
This says it went from v0.9 to v2.0 at 2.6.18. I'm at v0.9.
http://www.linuxhq.com/kernel/v2.6/18/drivers/scsi/sata_sil.c
This is scary: (from 2.6.19)
CODE---------------------------------------------------------
static const struct sil_drivelist {
- const char * product;
- unsigned int quirk;
-} sil_blacklist [] = {
- { "ST320012AS", SIL_QUIRK_MOD15WRITE },
- { "ST330013AS", SIL_QUIRK_MOD15WRITE },
- { "ST340017AS", SIL_QUIRK_MOD15WRITE },
- { "ST360015AS", SIL_QUIRK_MOD15WRITE },
- { "ST380013AS", SIL_QUIRK_MOD15WRITE },
- { "ST380023AS", SIL_QUIRK_MOD15WRITE },
- { "ST3120023AS", SIL_QUIRK_MOD15WRITE },
- { "ST3160023AS", SIL_QUIRK_MOD15WRITE },
- { "ST3120026AS", SIL_QUIRK_MOD15WRITE },
- { "ST3200822AS", SIL_QUIRK_MOD15WRITE },
- { "ST340014ASL", SIL_QUIRK_MOD15WRITE },
- { "ST360014ASL", SIL_QUIRK_MOD15WRITE },
- { "ST380011ASL", SIL_QUIRK_MOD15WRITE },
- { "ST3120022ASL", SIL_QUIRK_MOD15WRITE },
- { "ST3160021ASL", SIL_QUIRK_MOD15WRITE },
- { "Maxtor 4D060H3", SIL_QUIRK_UDMA5MAX },
- { }
-};
CODE---------------------------------------------------------
I've been reading changelogs where that list has been growing. Seems
there's something weird about Seagate SATA drives or this chip/driver.
It gets better:
http://www.mail-archive.com/linux-ide at vger.kernel.org/msg00958.html
CODE---------------------------------------------------------
Also I found this code in siimage.c (old driver for AAC-1210SA):
static int is_dev_seagate_sata(ide_drive_t *drive)
{
const char *s = &drive->id->model[0];
unsigned len;
if (!drive->present)
return 0;
len = strnlen(s, sizeof(drive->id->model));
if ((len > 4) && (!memcmp(s, "ST", 2))) {
if ((!memcmp(s + len - 2, "AS", 2)) ||
(!memcmp(s + len - 3, "ASL", 3))) {
printk(KERN_INFO "%s: applying pessimistic
Seagate "
"errata fix\n", drive->name);
return 1;
}
}
return 0;
}
May be all Seagate SATA hard drives must be blacklisted in sata_sil.c ?
CODE---------------------------------------------------------
Naturally every SATA drive I own is Seagate. Not that I mind. I try to
buy good stuff. But right now I wouldn't mind having a beater WDC to try.
Michael
More information about the Linux-users
mailing list