Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Aug 2014 17:31:21 +0000
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r270806 - head/sys/dev/ixl
Message-ID:  <DBA55B1E-8381-47D9-A646-B8ADBAAB6073@FreeBSD.org>
In-Reply-To: <20140829171452.GO2737@kib.kiev.ua>
References:  <201408291240.s7TCe1OQ029986@svn.freebsd.org> <20140829171452.GO2737@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help

On 29 Aug 2014, at 17:14 , Konstantin Belousov <kostikbel@gmail.com> =
wrote:

> On Fri, Aug 29, 2014 at 12:40:01PM +0000, Bjoern A. Zeeb wrote:
>> Author: bz
>> Date: Fri Aug 29 12:40:01 2014
>> New Revision: 270806
>> URL: http://svnweb.freebsd.org/changeset/base/270806
>>=20
>> Log:
>>  Properly handle prefetch only for amd64 and i386 as we do elsewhere.
>>=20
>>  In general theraven is right that we should factr this out and =
provide
>>  a general and per-arch implementation that everything can use.
>>=20
>>  MFC after:	3 days
>>  X-MFC with:	r270755
>>=20
>> Modified:
>>  head/sys/dev/ixl/i40e_osdep.h
>>=20
>> Modified: head/sys/dev/ixl/i40e_osdep.h
>> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
>> --- head/sys/dev/ixl/i40e_osdep.h	Fri Aug 29 11:18:54 2014	=
(r270805)
>> +++ head/sys/dev/ixl/i40e_osdep.h	Fri Aug 29 12:40:01 2014	=
(r270806)
>> @@ -137,11 +137,15 @@ struct i40e_spinlock {
>>=20
>> #define le16_to_cpu=20
>>=20
>> +#if defined(__amd64__) || defined(i386)
>> static __inline
>> void prefetch(void *x)
>> {
>> 	__asm volatile("prefetcht0 %0" :: "m" (*(unsigned long *)x));
>> }
> This only fix the build failure, but the code is still somewhat wrong.
>=20
> Availability of the prefetch instruction depends on the presence of =
SSE.

We have quite a few of these as-are in the tree already;  I guess they =
all need fixing.


> Althought it is probably impossible to find a machine where the =
intended
> hardware can operate and which does not support SSE _currently_, I am
> not sure that it is wise to hard-code SSE instructions in the i386
> kernel.
>=20
> Might be, a change of the compilation test from both amd64 and i386 to
> just amd64 is due.  I doubt that anybody would use 40Gb with 32bit OS,
> and even if somebody does, that the performace is at the stake in
> this case.
>=20

I think going with David=92s suggestion to do the right thing and =
centralise them somewhere so everything can use it is the proper way =
forward.  I think there=92s also a __builtin_prefetch().


>> +#else
>> +#define	prefetch(x)
>> +#endif
>>=20
>> struct i40e_osdep
>> {

=97=20
Bjoern A. Zeeb             "Come on. Learn, goddamn it.", WarGames, 1983




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DBA55B1E-8381-47D9-A646-B8ADBAAB6073>