Date: Fri, 25 Oct 2013 09:45:00 +0300 From: Alexander Motin <mav@FreeBSD.org> To: Alexandre Martins <alexandre.martins@netasq.com> Cc: fabien.thomas@netasq.com, current@freebsd.org, fabient@freebsd.org Subject: Re: Troubles with VIA VX900 chipset Message-ID: <526A136C.4030800@FreeBSD.org> 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
Hi. On 24.10.2013 16:56, Alexandre Martins wrote: > 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-loader are OK). > > After investigations, it seems that during the initialisation of the > controler, some reset commands are send via "ata_via_sata_reset" fonction. > Into the chipset documentation, there is a warning about successive reset > 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 problem > disapear. > > I also made a more complex fix which check the "BUSY" flag. > > Which fix of delai checking is the better one ? One that sleeps less IMO should be better. Blocking system in a tight loop is not good. But still some comments: - ATA devices often want to spinup before reporting !BUSY, that may take up to 10 seconds, not 10 milliseconds, if you really want to get exactly !BUSY, not just wait a bit; - Waiting for readiness if phy reset found no device is probably pointless. - I would reduce polling interval -- 1ms is quite a lot. -- Alexander Motin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?526A136C.4030800>