Date: Thu, 24 Oct 2013 16:20:29 +0200 From: Alexandre Martins <alexandre.martins@netasq.com> To: mav@freebsd.org Cc: fabien.thomas@netasq.com, current@freebsd.org, fabient@freebsd.org Subject: Re: Troubles with VIA VX900 chipset Message-ID: <2111820.j2pnCBbuyC@pc-alex.netasq.com> In-Reply-To: <2304698.vixPKsOToE@pc-alex.netasq.com> References: <2304698.vixPKsOToE@pc-alex.netasq.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--nextPart1776756.9qKd4RWsUc
Content-Type: multipart/mixed; boundary="nextPart7815598.ZJSH0KAMbv"
Content-Transfer-Encoding: 7Bit
This is a multi-part message in MIME format.
--nextPart7815598.ZJSH0KAMbv
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="iso-8859-1"
I forget to attach patches
Le jeudi 24 octobre 2013 15:56:15 Alexandre Martins a =E9crit :
> Dear,
>=20
> We have seen some issues with the VIA VX900 chipset. The main trouble=
is
> that some SATA hard drive are not seen by the kernel (BIOS and boot-l=
oader
> are OK).
>=20
> After investigations, it seems that during the initialisation of the
> controler, some reset commands are send via "ata_via_sata_reset" fonc=
tion.
> Into the chipset documentation, there is a warning about successive r=
eset
> commands, and software must waiting the "BUSY" flag is clear, before =
send
> another reset. I have added a "DELAY(10000)" between the second call =
of
> "ata_sata_phy_reset" and the call of "ata_generic_reset" and the prob=
lem
> disapear.
>=20
> I also made a more complex fix which check the "BUSY" flag.
>=20
> Which fix of delai checking is the better one ?
>=20
> Best Regards
--=20
Alexandre Martins
NETASQ -- We secure IT
--nextPart7815598.ZJSH0KAMbv
Content-Disposition: attachment; filename="delay_patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="UTF-8"; name="delay_patch"
--- dev/ata/chipsets/ata-via.c.orig 2013-10-24 09:32:45.000000000 +0000
+++ dev/ata/chipsets/ata-via.c 2013-10-24 09:39:51.000000000 +0000
@@ -459,6 +459,7 @@
devs = ata_sata_phy_reset(dev, 0, 0);
DELAY(10000);
devs += ata_sata_phy_reset(dev, 1, 0);
+ DELAY(10000);
} else
devs = 1;
if (devs)
--nextPart7815598.ZJSH0KAMbv
Content-Disposition: attachment; filename="check_patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="UTF-8"; name="check_patch"
--- dev/ata/chipsets/ata-via.c.orig 2013-10-24 13:39:17.000000000 +0000
+++ dev/ata/chipsets/ata-via.c 2013-10-24 09:24:04.000000000 +0000
@@ -456,11 +456,29 @@
{
struct ata_channel *ch = device_get_softc(dev);
int devs;
+ u_int8_t status;
+ int count;
if (ch->unit == 0) {
devs = ata_sata_phy_reset(dev, 0, 0);
- DELAY(10000);
+ count = 0;
+ do
+ {
+ ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_DEV(ATA_MASTER));
+ DELAY(1000);
+ status = ATA_IDX_INB(ch, ATA_STATUS);
+ count++;
+ } while (status & ATA_S_BUSY && count < 100);
+
devs += ata_sata_phy_reset(dev, 1, 0);
+ count = 0;
+ do
+ {
+ ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_DEV(ATA_SLAVE));
+ DELAY(1000);
+ status = ATA_IDX_INB(ch, ATA_STATUS);
+ count++;
+ } while (status & ATA_S_BUSY && count < 100);
} else
devs = 1;
if (devs)
--nextPart7815598.ZJSH0KAMbv--
--nextPart1776756.9qKd4RWsUc
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64
MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIErzCCBKsw
ggOToAMCAQICCnDGsUgWa/KQbDQwDQYJKoZIhvcNAQEFBQAwgZExCzAJBgNVBAYTAkZSMQ0wCwYD
VQQIEwROb3JkMRowGAYDVQQHExFWaWxsZW5ldXZlIGQnQXNjcTEuMCwGA1UEChMlTkVUQVNRIC0g
U2VjdXJlIEludGVybmV0IENvbm5lY3Rpdml0eTEnMCUGA1UECxMeTkVUQVNRIENlcnRpZmljYXRp
b24gQXV0aG9yaXR5MB4XDTEzMDIxNTE1NDk1N1oXDTE0MDIxNTE1NDk1N1owgdoxCzAJBgNVBAYT
AkZSMQ0wCwYDVQQIEwROb3JkMRowGAYDVQQHExFWaWxsZW5ldXZlIGQnQXNjcTEuMCwGA1UEChMl
TkVUQVNRIC0gU2VjdXJlIEludGVybmV0IENvbm5lY3Rpdml0eTEnMCUGA1UECxMeTkVUQVNRIENl
cnRpZmljYXRpb24gQXV0aG9yaXR5MRowGAYDVQQDExFBbGV4YW5kcmUgTUFSVElOUzErMCkGCSqG
SIb3DQEJARYcYWxleGFuZHJlLm1hcnRpbnNAbmV0YXNxLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAL4/gp0+01ma1Hi1C9Zw7TY8nZPJTmB3HG5eX1e062tMm+0CrNcDwfMwmF8w
g47zuFzkzTYy/d6/waoHbbCLsj1AM2kRQcWfuqglpgnSu7FdnIAE0dSAOS9Ni0uWDsFhRr3UUHq5
qnDzQXOrPXRMzMz1W8nqiyqXYfykrDrq0sjzaIj20BYA/6AlDSWs+XKid1EM3wOe40Kyl+1HWLsA
MuY9CpQdAkQh4rJb6Sbgx57DXJ3INCSWjzZWYK0KAE0JF8XhP5zLGcvHI5Atm7gN8WiMZ+DFRM2z
HIOlZ6zhp1VHSSbs+c64UJtGgt+cq7QvuyaIoqBP6rDHsLMPbjNR0w8CAwEAAaOBuTCBtjAdBgNV
HQ4EFgQUyiEDfxLvYJqY+A8btt9sZFYPejYwHwYDVR0jBBgwFoAUJyrrHdlE2joXc2oJICDJJaj5
f7IwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCA+gwJwYDVR0RBCAwHoEcYWxleGFuZHJlLm1hcnRp
bnNAbmV0YXNxLmNvbTARBglghkgBhvhCAQEEBAMCBLAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsG
AQUFBwMCMA0GCSqGSIb3DQEBBQUAA4IBAQCaSZdSJKRujYP6KnfKcyYYlNNqRdIyQm16o4BIIeGG
qxQGxAO/dzcQziNVQcE+G8RHTcuivayhOX/NRhIlYxyvTN+wWAbC5NQuul4eQzGrz4OxWfrfpm9S
DnDbLfHf1qdjyvFkTM8Wgq21/oExphasFHdOxi/txN4099Be/BZpV8Fpqa0dKEirG2Wa3KfEn85A
WaKnNs/k3x95gr/eeTt1NdlT7OqVYqnUdUlRmQVNvEi29wIQbfYi2WeZIGlpNh0PBthWdBaXzMKU
U/pfjIzZhyP8E4ghUKz4uvmpA901Qj9LEhSYqOKWALRNOk/dCcNd0LV8S54te/vsFkDTHWvlMYIC
UjCCAk4CAQEwgaAwgZExCzAJBgNVBAYTAkZSMQ0wCwYDVQQIEwROb3JkMRowGAYDVQQHExFWaWxs
ZW5ldXZlIGQnQXNjcTEuMCwGA1UEChMlTkVUQVNRIC0gU2VjdXJlIEludGVybmV0IENvbm5lY3Rp
dml0eTEnMCUGA1UECxMeTkVUQVNRIENlcnRpZmljYXRpb24gQXV0aG9yaXR5AgpwxrFIFmvykGw0
MAkGBSsOAwIaBQCggYcwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcN
MTMxMDI0MTQyMDI5WjAjBgkqhkiG9w0BCQQxFgQUvZOUwEpKE7BT4vMkXtdkJT1RP58wKAYJKoZI
hvcNAQkPMRswGTALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDQYJKoZIhvcNAQEBBQAEggEANs8d
dW2nc0fjg/AbviOwrzw+ZlOAiSIQQZ59FkPVLuJoXMOFClEUOjbnlB+u+MrAtpkGdbKDMjbX3QyR
8ytsisEtZovKIu8U+dLgFNjneFjfb/CTSR5hJuYLXUBuyaMkzQjOMqU2UjgcqEpA30Yr0UT18uic
MQ3epgRjwiK5tv1R22BV659i10jWF5euAQ7x+Ty8zHhZFt9K53zWUwQMG9nRNvhTX8Y0d5A5NQsv
6c2oa3xOhAf6NVZkYRcODu3A50+NLUQmEcHq4aGhPeHnlficVQpudlwuteLnsdlDKr484eGVhdFd
ueBaylLym4BZvzghRfHSNQ7aFQJ7KncpAQAAAAAAAA==
--nextPart1776756.9qKd4RWsUc--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2111820.j2pnCBbuyC>
