svn commit: r270806 - head/sys/dev/ixl
Bjoern A. Zeeb
bz at FreeBSD.org
Fri Aug 29 17:31:35 UTC 2014
On 29 Aug 2014, at 17:14 , Konstantin Belousov <kostikbel at 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
>>
>> Log:
>> Properly handle prefetch only for amd64 and i386 as we do elsewhere.
>>
>> In general theraven is right that we should factr this out and provide
>> a general and per-arch implementation that everything can use.
>>
>> MFC after: 3 days
>> X-MFC with: r270755
>>
>> Modified:
>> head/sys/dev/ixl/i40e_osdep.h
>>
>> Modified: head/sys/dev/ixl/i40e_osdep.h
>> ==============================================================================
>> --- 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 {
>>
>> #define le16_to_cpu
>>
>> +#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.
>
> 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.
>
> 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.
>
I think going with David’s suggestion to do the right thing and centralise them somewhere so everything can use it is the proper way forward. I think there’s also a __builtin_prefetch().
>> +#else
>> +#define prefetch(x)
>> +#endif
>>
>> struct i40e_osdep
>> {
—
Bjoern A. Zeeb "Come on. Learn, goddamn it.", WarGames, 1983
More information about the svn-src-all
mailing list