• J
    Revert "fast_hash: avoid indirect function calls" · a77f9c5d
    Jay Vosburgh 提交于
    This reverts commit e5a2c899.
    
    	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 <jesse@nicira.com>.
    Signed-off-by: NJay Vosburgh <jay.vosburgh@canonical.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    a77f9c5d
hash.c 2.8 KB