x86, UV: cpu_relax in uv_wait_completion
authorCliff Wickman <cpw@sgi.com>
Thu, 15 Jan 2009 15:51:20 +0000 (09:51 -0600)
committerIngo Molnar <mingo@elte.hu>
Thu, 15 Jan 2009 22:48:20 +0000 (23:48 +0100)
The function uv_wait_completion() spins on reads of a memory-mapped
register, waiting for completion of BAU hardware replies.

It should call "cpu_relax()" between those reads to improve performance
on hyperthreaded configurations.

Signed-off-by: Cliff Wickman <cpw@sgi.com>
Acked-by: Jack Steiner <steiner@sgi.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/tlb_uv.c

index f885023167e042073cc3f37721cb7a0d3e1b2941..6812b829ed83e86a8c0919e8c4daaadd2516cc12 100644 (file)
@@ -200,6 +200,7 @@ static int uv_wait_completion(struct bau_desc *bau_desc,
                                destination_timeouts = 0;
                        }
                }
+               cpu_relax();
        }
        return FLUSH_COMPLETE;
 }