From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Xu Subject: [PATCH kvm-unit-tests v5 02/14] x86/asm: add cpu_relax() Date: Tue, 15 Nov 2016 17:24:57 -0500 Message-ID: <1479248709-10281-3-git-send-email-peterx@redhat.com> References: <1479248709-10281-1-git-send-email-peterx@redhat.com> Cc: drjones@redhat.com, agordeev@redhat.com, jan.kiszka@web.de, rkrcmar@redhat.com, pbonzini@redhat.com, peterx@redhat.com To: kvm@vger.kernel.org Return-path: Received: from mx1.redhat.com ([209.132.183.28]:51146 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933888AbcKOWZP (ORCPT ); Tue, 15 Nov 2016 17:25:15 -0500 In-Reply-To: <1479248709-10281-1-git-send-email-peterx@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: This will be useful to be put inside loops. Suggested-by: Andrew Jones Reviewed-by: Andrew Jones Signed-off-by: Peter Xu --- lib/x86/asm/barrier.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/x86/asm/barrier.h b/lib/x86/asm/barrier.h index 7c108bd..193fb4c 100644 --- a/lib/x86/asm/barrier.h +++ b/lib/x86/asm/barrier.h @@ -13,4 +13,15 @@ #define smp_rmb() barrier() #define smp_wmb() barrier() +/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ +static inline void rep_nop(void) +{ + asm volatile("rep; nop" ::: "memory"); +} + +static inline void cpu_relax(void) +{ + rep_nop(); +} + #endif -- 2.7.4