Subject: Re: [PATCH net-next] Revert "fast_hash: avoid indirect function calls"

From: Hannes Frederic Sowa <[email-masked]>
Date: Fri, 14 Nov 2014 22:43:02 +0100

On Fr, 2014-11-14 at 11:05 -0800, Jay Vosburgh wrote:
> This reverts commit e5a2c899957659cd1a9f789bc462f9c0b35f5150.
> 
> 	Commit e5a2c899 introduced an alternative_call, arch_fast_hash2,
> that selects between __jhash2 and __intel_crc4_2_hash based on the
> X86_FEATURE_XMM4_2.
> 
> 	Unfortunately, the alternative_call system does not appear to be
> suitable for use with C functions, as register usage is not handled
> properly for the called functions.  The __jhash2 function in particular
> clobbers registers that are not preserved when called via
> alternative_call, resulting in a panic for direct callers of
> arch_fast_hash2 on older CPUs lacking sse4_2.  It is possible that
> __intel_crc4_2_hash works merely by chance because it uses fewer
> registers.
> 
> 	This commit was suggested as the source of the problem by Jesse
> Gross <[email-masked]>.
> 
> Signed-off-by: Jay Vosburgh <[email-masked]>

I am totally fine to revert this and try to come up with a better
solution.

Acked-by: Hannes Frederic Sowa <[email-masked]>

Bye,
Hannes