diff mbox

[for-2.5,3/4] vhost: switch region lookup from linear to bsearch

Message ID 1438095173-7417-4-git-send-email-imammedo@redhat.com
State New
Headers show

Commit Message

Igor Mammedov July 28, 2015, 2:52 p.m. UTC
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 hw/virtio/vhost.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)
diff mbox

Patch

diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 8bef43e..5b8598b 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -420,13 +420,11 @@  static struct vhost_memory_region *vhost_dev_find_reg(struct vhost_dev *dev,
                                                       uint64_t start_addr,
                                                       uint64_t size)
 {
-    int i, n = dev->mem->nregions;
-    for (i = 0; i < n; ++i) {
-        struct vhost_memory_region *reg = dev->mem->regions + i;
-        if (ranges_overlap(reg->guest_phys_addr, reg->memory_size,
-                           start_addr, size)) {
-            return reg;
-        }
+    int i = memory_range_bsearch(dev, start_addr), n = dev->mem->nregions;
+    struct vhost_memory_region *reg = dev->mem->regions + i;
+    if (i < n && ranges_overlap(reg->guest_phys_addr, reg->memory_size,
+                                start_addr, size)) {
+        return reg;
     }
     return NULL;
 }