MULX on haswell triggers ILLOP
Tijl Coosemans
tijl at coosemans.org
Wed Oct 23 18:23:06 UTC 2013
On Wed, 23 Oct 2013 19:42:46 +0200 Torbjorn Granlund wrote:
> Torbjorn Granlund <tg at gmplib.org> writes:
>
> I have an Intel Haswell system which runs Xen/NetBSD with Debian 7.2,
> NetBSD 6.1.2 and FreeBSD 9.2 guests.
>
> The FreeBSD guest casts an ILLOP when fed with the new MULX instruction.
> This is a plain integer register based instruction which should require
> zero kernel support.
>
> MULX is part of the BMI2 extensions.
>
> The instruction works fine in the other guest systems.
>
> What is going on? How can FreeBSD reject this instruction?
>
> I have not tried to run FreeBSD on the bare metal, so I cannot tell if
> BMI2 works as expected there.
>
> It turns out to be another strike of an FreeBSD m4 eval bug.
>
> http://www.freebsd.org/cgi/query-pr.cgi?pr=166994
>
> Unfortunately, this means that GMP will not work on Haswell CPUs running
> FreeBSD, where we assemble unsupported instructions using m4 macros.
> That is a workaround for FreeBSD's seriously outdated binutils. Of
> course, we could implement a workaround for the m4 bug, but that
> workaround would be more complex than a bugfix for m4.
>
> My hopes that FreeBSD will fix this bug are not high, given that it has
> been known for 1.5 years.
A comment on that PR says that it has been fixed in
http://svnweb.freebsd.org/base?view=revision&revision=228063
I don't know if it's feasible to merge this to stable/9. Committer CCed.
More information about the freebsd-questions
mailing list