svn commit: r260165 - head/sys/dev/ahci

Konstantin Belousov kostikbel at gmail.com
Wed Jan 1 20:32:19 UTC 2014


On Wed, Jan 01, 2014 at 08:26:08PM +0000, Zbigniew Bodek wrote:
> Author: zbb
> Date: Wed Jan  1 20:26:08 2014
> New Revision: 260165
> URL: http://svnweb.freebsd.org/changeset/base/260165
> 
> Log:
>   Use only mapped BIOs on ARM
>   
>   Using unmapped BIOs causes failure inside bus_dmamap_sync, since
>   this function requires valid MVA address, which is not present
>   if mapping is not set up.
>   
>   Submitted by:	Wojciech Macek <wma at semihalf.com>
>   Obtained from:	Semihalf
> 
> Modified:
>   head/sys/dev/ahci/ahci.c
> 
> Modified: head/sys/dev/ahci/ahci.c
> ==============================================================================
> --- head/sys/dev/ahci/ahci.c	Wed Jan  1 20:22:29 2014	(r260164)
> +++ head/sys/dev/ahci/ahci.c	Wed Jan  1 20:26:08 2014	(r260165)
> @@ -3066,7 +3066,15 @@ ahciaction(struct cam_sim *sim, union cc
>  		if (ch->caps & AHCI_CAP_SPM)
>  			cpi->hba_inquiry |= PI_SATAPM;
>  		cpi->target_sprt = 0;
> +#ifdef __arm__
> +		/*
> +		 * Do not use unmapped buffers on ARM. Doing so will cause
> +		 * failure inside bus_dmamap_sync due to lack of VA.
> +		 */
> +		cpi->hba_misc = PIM_SEQSCAN;
> +#else
>  		cpi->hba_misc = PIM_SEQSCAN | PIM_UNMAPPED;
> +#endif
>  		cpi->hba_eng_cnt = 0;
>  		if (ch->caps & AHCI_CAP_SPM)
>  			cpi->max_target = 15;

I think this is wrong. If bus_dmamap_sync(9) is not functional on arm,
then unmapped io should be disabled on arm unconditionally, using
unmapped_buf_allowed.  Why ahci(4) is special in this regard, leaving
other controllers broken for arm ?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/svn-src-head/attachments/20140101/1aa36e00/attachment.sig>


More information about the svn-src-head mailing list