Re: cd(4) vs bluray and cdda (dae) on ahci(4) and siis(4)

From: Alexander Motin <mav_at_FreeBSD.org>
Date: Thu, 06 Aug 2009 22:46:48 +0300
Juergen Lock wrote:
>  So I put the problematic optical drive on a siis pcie card now because
> I wanted to play with esata too which seems to be kinda broken on the
> jmicron that I used before at least with _this_ esata drive (hw issue
> most likely, has been reported by users of other OSes too) - and I
> noticed two things:
> 
> 1. cd(4) (which the new ahci and siis drivers now also use) fails to do
> any reads when a drive fails the read toc command as seems to happen
> with bluray (data) discs at least; I was able to work around this
> by moving the bailout: label up a few lines in scsi_cd.c:cdcheckmedia():
> 
> Index: sys/cam/scsi/scsi_cd.c
> _at__at_ -2868,12 +2868,18 _at__at_
>  	}
>  
>  	softc->flags |= CD_FLAG_VALID_TOC;
> +
> +bailout:
>  	softc->disk->d_maxsize = DFLTPHYS;
>  	softc->disk->d_sectorsize = softc->params.blksize;
>  	softc->disk->d_mediasize =
>  	    (off_t)softc->params.blksize * softc->params.disksize;
>  
> +/* if
>  bailout:
> + * is here read requests will fail when the toc cant be read although
> + * CD_FLAG_VALID_MEDIA is set.
> + */
>  
>  	/*
>  	 * We unconditionally (re)set the blocksize each time the
> 
>  (I say work around because I don't know if there might be stuff
> somewhere that depends on the old behaviour, although thats probably
> unlikely; also acd(4) seems to behave similarly.)

I have no idea about this, ...

> 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.

-- 
Alexander Motin
Received on Thu Aug 06 2009 - 17:47:40 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:53 UTC