Date: Fri, 29 Aug 2014 20:14:52 +0300 From: Konstantin Belousov <kostikbel@gmail.com> To: "Bjoern A. Zeeb" <bz@FreeBSD.org> 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: <20140829171452.GO2737@kib.kiev.ua> In-Reply-To: <201408291240.s7TCe1OQ029986@svn.freebsd.org> References: <201408291240.s7TCe1OQ029986@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--W7QQkl7z0febBjsc Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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. Availability of the prefetch instruction depends on the presence of SSE. 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. > +#else > +#define prefetch(x) > +#endif > =20 > struct i40e_osdep > { --W7QQkl7z0febBjsc Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBAgAGBQJUALULAAoJEJDCuSvBvK1BIhEP+wTTEARsI1gCxSSxmnsadlqb A3atej9Di98tnZ9mFo4EJxRZ0GiYR2b1ksbAWhSC05uZBQA2p3SZnfNchnvV0xuJ //BJiJ2br2Bldv++FZ37kf/HRl4i3lfVpENiDZtaiUGBRUKYQ/rIjMXhhi7rGEgZ Iyio9BXGIBHi+xtB/VQ27cmeyvTLpl7mzj8pPl59n5tGN0UnHcyovYFdKnol8nKz Ho4U7RzJrR/sBgAzxL4Qns+lByWl2lWN4PWJ2nQxFxjQlD7q5xUgmfJJYatq8V60 YyxnosHV0NlWyEzMJYS90SpAEpojamgx1GH/ui50OewekcC3zudXph9rbGIRfSQE BPJOyh0KzXRtn/ljqhPWYse3bvLAcISO1k0CuYXQVz9qjPduq9Ew9nGpUo6uPLju zP6fwwTcYnybCRwHpOA+oJYT20TbHMFRcD2EvSouEBL046qWWSCOyBnWmB7i95ei p/CCLwbB5ML+Kj7bqMX2lCsHT9Si1P2OWOtLLtrv+zJ9tQUceUTkxuYUIT8OM7IN GZUF68VRLFZtcofssC+WERi/KnDwrZYSJDaLEstHVz34OnHeIWSJkSjeVSLEw/s9 vWAFJLSQPNIaNxmN9fyNwEbreLhtFYc25RQXNl6vhXWjDmVMIQ6FqXuWDwA2ymC7 FDEtMKBn8w6hTdVRx2ba =d5nb -----END PGP SIGNATURE----- --W7QQkl7z0febBjsc--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140829171452.GO2737>