-mregparm=3 (was Re: [PATCH] i386 do_machine_check() is redundant.

From: Valdis . Kletnieks
Date: Mon Sep 29 2003 - 14:55:55 EST


On Mon, 29 Sep 2003 11:46:12 PDT, Linus Torvalds said:

> Has anybody checked out whether the kernel works with -mregparm=3? I
> forget who did a lot of the work on it originally, and it certainly _used_
> to work fine. The improvements to both code size and performance were, if
> I remember correctly, measurable but not huge.

It works well enough that my laptop made it to initlevel 3. The code size
wasn't drastically smaller (perhaps another 2-3% but I already compile with
-Os). The system "felt" snappier, but I have no benchmark numbers to give. I
could probably get some numbers if anybody cares, but there's a showstopper for
me - I can't make it to initlevel 5 easily:

> One worry (apart from just broken compilers and missing "asmlinkage"
> annotations) is that having compiler-version-dependent calling conventions
> makes for another variable to take into account when chasing down bugs and
> worrying about things like the Nvidia module etc. So it's probably not
> worth doing unless the advantages are clear.

Quite correct - even after recompiling the sourced portions of the NVidia
driver, it dies a horrid death on 'insmod' when the closed-source portion
passes a parameter on the stack and the open side expects the value in a
register, and follows the register value to a quick death....

Yes, yes, I know, I could re-try with the open-source nv driver instead of the
closed-source NVidia driver - but the open-source one costs me more in
performance (as it's unaccelerated) than the mregparm=3 is likely to get me
back....

Attachment: pgp00001.pgp
Description: PGP signature