From owner-freebsd-current@FreeBSD.ORG Thu Aug 6 22:25:06 2009 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1C5E11065672; Thu, 6 Aug 2009 22:25:06 +0000 (UTC) (envelope-from nox@jelal.kn-bremen.de) Received: from smtp.kn-bremen.de (gelbbaer.kn-bremen.de [78.46.108.116]) by mx1.freebsd.org (Postfix) with ESMTP id 977AD8FC1C; Thu, 6 Aug 2009 22:25:05 +0000 (UTC) Received: by smtp.kn-bremen.de (Postfix, from userid 10) id B9B3D1E00311; Fri, 7 Aug 2009 00:25:04 +0200 (CEST) Received: from triton.kn-bremen.de (noident@localhost [127.0.0.1]) by triton.kn-bremen.de (8.14.3/8.14.3) with ESMTP id n76MLRKL002165; Fri, 7 Aug 2009 00:21:27 +0200 (CEST) (envelope-from nox@triton.kn-bremen.de) Received: (from nox@localhost) by triton.kn-bremen.de (8.14.3/8.14.3/Submit) id n76MLRVH002164; Fri, 7 Aug 2009 00:21:27 +0200 (CEST) (envelope-from nox) From: Juergen Lock Date: Fri, 7 Aug 2009 00:21:27 +0200 To: Juergen Lock Message-ID: <20090806222127.GB1940@triton.kn-bremen.de> References: <20090806184510.GA12039@triton.kn-bremen.de> <4A7B3328.5020307@FreeBSD.org> <20090806200715.GA16313@triton.kn-bremen.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090806200715.GA16313@triton.kn-bremen.de> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: Alexander Motin , freebsd-current@FreeBSD.org, markus@FreeBSD.org Subject: cdparanoia patch for ahci(4)/siis(4) (was: Re: cd(4) vs bluray and cdda (dae) on ahci(4) and siis(4)) X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Aug 2009 22:25:06 -0000 On Thu, Aug 06, 2009 at 10:07:15PM +0200, Juergen Lock wrote: > On Thu, Aug 06, 2009 at 10:46:48PM +0300, Alexander Motin wrote: > > Juergen Lock wrote: > > > 2. cdda/dae seems to be broken entirely with ahci(4) as well as > > > siis(4) (I remember a report about it being broken for usb optical > > > drives too so maybe this is related?) - I tested with the > > > audio/cdparanoia port as well as with > > > mplayer -cdrom-device /dev/cd{0,1} cdda://... > > > (mplayer needs to be built with the libparanoia knob on for this) - this > > > does work with atapicam(4) without ahci/siis so it can't be cd(4)'s > > > fault alone. On siis(4) it seems to just fail while on ahci(4) (I still > > > have another optical drive on there, it's on the board's amd sb700) > > > it causes the sata channel to be reset endlessly until I ^C mplayer: > > > > > > ahcich1: AHCI reset... > > > ahcich1: hardware reset ... > > > ahcich1: SATA connect time=0ms status=00000113 > > > ahcich1: ready wait time=144ms > > > ahcich1: AHCI reset done: devices=00000001 > > > ahcich1: AHCI reset... > > > ahcich1: hardware reset ... > > > ahcich1: SATA connect time=0ms status=00000113 > > > ahcich1: ready wait time=144ms > > > ahcich1: AHCI reset done: devices=00000001 > > > > > > (Remeber if you want to reproduce this libparanoia needs permissions > > > on the optical drive's pass(4) device node and possibly /dev/xpt0 too. > > > And of course you need an audio cd. :) > > > > > > Soo, anyone have ideas/patches/things they want me to check for this? > > > > But this appeared to to be really trivial. cdparanoia uses extremely > > simple method for detecting ATAPI devices - it checks that SIM is named > > "ata". Trivial single line hack made it successfully play some old > > AudioCD in SATA drive on SiI3132 controller for me, while I am typing > > this. Probably we should invent better way to do this. > > Oooh! :) I need to test this... Yup, works here too on siis and ahci with the following patch: (maintainer Cc'd) Index: interface/scsi_interface.c @@ -1480,9 +1480,12 @@ /* * if the bus device name is `ata', we're (obviously) * running ATAPICAM. + * XXX same for the new ahci(4) and siis(4) drivers... */ - if (strncmp(d->ccb->cpi.dev_name, "ata", 3) == 0) { + if (strncmp(d->ccb->cpi.dev_name, "ata", 3) == 0 || + strncmp(d->ccb->cpi.dev_name, "ahcich", 6) == 0 || + strncmp(d->ccb->cpi.dev_name, "siisch", 6) == 0) { cdmessage(d, "\tDrive is ATAPI (using ATAPICAM)\n"); d->is_atapi = 1; } else { Thanx, :) Juergen