From owner-cvs-src-old@FreeBSD.ORG Wed May 25 13:56:02 2011 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BDBAF106568B for ; Wed, 25 May 2011 13:56:02 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id ABFA38FC14 for ; Wed, 25 May 2011 13:56:02 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.4/8.14.4) with ESMTP id p4PDu2U3030980 for ; Wed, 25 May 2011 13:56:02 GMT (envelope-from mav@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.4/8.14.4/Submit) id p4PDu2Mm030979 for cvs-src-old@freebsd.org; Wed, 25 May 2011 13:56:02 GMT (envelope-from mav@repoman.freebsd.org) Message-Id: <201105251356.p4PDu2Mm030979@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to mav@repoman.freebsd.org using -f From: Alexander Motin Date: Wed, 25 May 2011 13:55:49 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/dev/ahci ahci.c src/sys/dev/mvs mvs.c src/sys/dev/siis siis.c X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 May 2011 13:56:02 -0000 mav 2011-05-25 13:55:49 UTC FreeBSD src repository Modified files: sys/dev/ahci ahci.c sys/dev/mvs mvs.c sys/dev/siis siis.c Log: SVN rev 222285 on 2011-05-25 13:55:49Z by mav According to SATA specification, when Serial ATA Enclosure Management Bridge (SEMB) is unable to communicate to Storage Enclosure Processor (SEP), in response to hard and soft resets it should among other things return value 0x7F in Status register. The weird side is that it means DRQ bit set, which tells that reset request is not completed. It would be fine if SEMB was the only device on port. But if SEMB connected to PMP or built into it, it may block access to other devices sharing same SATA port. Make some tunings/fixes to soft-reset handling to workaround the issue: - ahci(4): request CLO on the port after soft reset to ignore DRQ bit; - siis(4): gracefully reinitialize port after soft reset timeout (hardware doesn't detect reset request completion in this case); - mvs(4): if PMP is used, send dummy soft-reset to the PMP port to make it clear DRQ bit for us. For now this makes quirks in ata_pmp.c, hiding SEMB ports of SiI3726/SiI4726 PMPs, less important. Further, if hardware permit, I hope to implement real SEMB support. Revision Changes Path 1.68 +13 -12 src/sys/dev/ahci/ahci.c 1.15 +34 -10 src/sys/dev/mvs/mvs.c 1.43 +18 -7 src/sys/dev/siis/siis.c