From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: [PATCH] ringtest: Look at next descriptor before setting up event index Date: Mon, 19 Sep 2016 13:38:59 +0200 Message-ID: <1474285139-11612-1-git-send-email-pbonzini@redhat.com> Cc: mst@redhat.com To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Return-path: Received: from mail-wm0-f68.google.com ([74.125.82.68]:33377 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751749AbcISLjD (ORCPT ); Mon, 19 Sep 2016 07:39:03 -0400 Sender: kvm-owner@vger.kernel.org List-ID: This avoids an expensive memory barrier if the next descriptor is already there. The benefit is around 10%. Signed-off-by: Paolo Bonzini --- tools/virtio/ringtest/ring.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/virtio/ringtest/ring.c b/tools/virtio/ringtest/ring.c index c25c8d248b6b..e617e20538bf 100644 --- a/tools/virtio/ringtest/ring.c +++ b/tools/virtio/ringtest/ring.c @@ -182,6 +182,9 @@ bool enable_call() { unsigned head = (ring_size - 1) & guest.last_used_idx; + if (!(ring[head].flags & DESC_HW)) + return false; + event->call_index = guest.last_used_idx; /* Flush call index write */ /* Barrier D (for pairing) */ @@ -215,6 +218,9 @@ bool enable_kick() { unsigned head = (ring_size - 1) & host.used_idx; + if (ring[head].flags & DESC_HW) + return false; + event->kick_index = host.used_idx; /* Barrier C (for pairing) */ smp_mb(); -- 2.7.4