SIMD vs no SIMD on i686 (was: [Bug 3975] executable stack flag prevents use of libx264.so.148 with selinux in enforcing mode)

Kevin Kofler kevin.kofler at chello.at
Mon Jul 25 04:02:31 CEST 2016


dominik at greysector.net wrote:
> The only real concern here are applications linked against libx264,
> which someone might want to run on low-end hardware, because I don't
> think anyone would want to encode anything to H.264 on non-SSE2 capable
> CPU (i.e. Pentium 3 or Athlon XP and older). Considering last non-SSE2
> CPUs went out of production about 8 years ago, I think it's fairly safe
> to assume that the impact of doing SSE2-only builds would be negligible,
> if any.

There is an expectation that Fedora packages run on any CPU supported by
Fedora. For i686, that is currently any i686 CPU with cmov. You are not
allowed to assume ANY vector instructions, not SSE2, not SSE (1), not even
MMX. (It is of course fine to use all of these with appropriate runtime
detection.) I think it is very reasonable to expect the same from RPM Fusion
packages, considering that RPM Fusion's policy is normally to follow Fedora
policies except for licensing stuff and kernel modules.

This is all the more true for a library package, where the library can end
up being used in many applications. Those applications will not necessarily
want to encode H.264 in real-time, it can be perfectly acceptable for
something like the ffmpeg command line to take longer than the video's
playing length to encode it. So for those stuck with such an old machine, it
is better to have a library that works (slowly) than one that just crashes
with a SIGILL (illegal instruction).

I know some upstreams are uncooperative at this. Aggressive reverts of
offending upstream patches are one solution, changing #ifdefs from something
like:
#ifdef __i686__
to something like:
#if defined(__i686__) && defined(__SSE2__)
are another. I did a combination of both to fix QtWebEngine:
http://pkgs.fedoraproject.org/cgit/rpms/qt5-qtwebengine.git/tree/qtwebengine-opensource-src-5.7.0-no-sse2.patch
(The Chromium packaging should also use such a patch, but currently
doesn't. Send your complaints about that to spot. :-) )

        Kevin Kofler


More information about the rpmfusion-developers mailing list