Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2

From: Linus Torvalds
Date: Wed Oct 04 2006 - 15:43:44 EST




On Wed, 4 Oct 2006, Jesper Juhl wrote:
>
> I just tested 2.6.18-git21 and here's a small status report :
>
> The good news is: The kernel boots.
> The bad news is: Userspace breaks left and right.
>
> I'm booting with "no387 nofxsr"
>
> On my first boot I just used the options above and the result was that
> most of the bootup sequence looked quite normal until I got to the
> point of starting sshd, then things started to go wrong. This is what
> I got :
>
> ...
> /etc/rc.d/rc.sshd: line 4: 1491 Illegal instruction /usr/sbin/sshd

Ok, I bet you have your sshd compiled to use MMX instructions
unconditionally.

> So that's great progress, but it could certainly work a lot better.

I don't think there is a whole lot we can do about it. There's really two
choices:

- make sure all user-space is able to function without MMX. This means,
for example, that you must certainly never compile with some code that
switches between MMX and non-MMX statically.

The most common cases you'd expect to use MMX is for encryption, but
graphics and 3D certainly sounds very possible too..

This isn't really somethign _we_ can do a lot about, although
distributions that care may of course try to test that their distro
works with "no387 nofxsr". You didn't say what distro you used, maybe
you can point it out to them.

- we could try to extend the math emulator to emulate the new
instructions too.

The thing is, it's probably not worth it. The only actual real usage
would be if somebody wants to take a disk image and switch to a really
old machine that lacked the MMX instruction, or for this particular
test-case.

so I suspect that in practice, the answer is "if the distro isn't compiled
for a generic x86 target, screw it".

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/