linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* sata_sil.c bugfix
@ 2005-04-22 23:12 Rommer
  0 siblings, 0 replies; only message in thread
From: Rommer @ 2005-04-22 23:12 UTC (permalink / raw)
  To: jgarzik; +Cc: linux-ide

Hello,

I have some troubles with my Adapdec AAC-1210SA;
Configuration:
Adaptec AAC-1210SA SATA controller,
2 HDD Seagate Barracuda 7 120G (ST3120827AS)
Fedora Core 3, kernel 2.6.11.7 without any patches

During about month all works fine, but now I created Software RAID1:
md0 (sd[ab]1) - /boot, md1 (sd[ab]2) - /

When I ran
mkadm /dev/md1 --fail /dev/sda3
mkadm /dev/md1 --remove /dev/sda3
all was ok, but after
mkadm /dev/md1 --add /dev/sda3
(when /dev/sda3 adding to /dev/md1 at speed ~ 50-60 Mb/sec)
I got these errors:
ata1: status=0x51 { DriveReady SeekComplete Error }
ata1: error=0x04 { DriveStatusError }
and sometimes also
ata1: command 0x35 timeout, stat 0xd9 host_stat 0x1
ata1: status=0xd9 { Busy }
Current sda: sense key Recovered Error
ASC=86 ASCQ=42
ATA: abnormal status 0xD9 on port 0x4281A087
ATA: abnormal status 0xD9 on port 0x4281A087
ATA: abnormal status 0xD9 on port 0x4281A087
...

But sda3 works fine, because
mke2fs -j /dev/sda3
e2fsck -cv /dev/sda3
reported no bad sectors

When I remove sdb3 from md1, and after add it to md1, I have the same errors
for ata2 or sdb.

I found in sata_sil.c code:
/* TODO firmware versions should be added - eric */
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 },
	{ }
};
I added my ST3120827AS as { "ST3120827AS", SIL_QUIRK_MOD15WRITE },
rebuilt kernel and made reboot.

With new kernel raid1 reconstruction works at speed ~ 15-20 Mb/sec with load
average ~2, but without errors. May be ST3120827AS must be blacklisted too?

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 ?

--
Roman Shishnev,
Active.BY support
----------------------------------
http://www.active.by/
phone +375(29)7785132, ICQ: 372800


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-04-22 23:11 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-04-22 23:12 sata_sil.c bugfix Rommer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).