]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
hw/pci: Use pow2ceil() rather than hand-calculation
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 24 Jul 2015 12:33:07 +0000 (13:33 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 7 Sep 2015 13:19:00 +0000 (14:19 +0100)
A couple of places in hw/pci use an inline calculation to round a
size up to the next largest power of 2. We have a utility routine
for this, so use it.

(The behaviour of the old code is different if the size value
is 0 -- it would leave it as 0 rather than rounding up to 1,
but in both cases we know the size can't be 0.
In the case where the size value had bit 31 set, the old code
would invoke undefined behaviour; the new code will give a
result of 0. Presumably that could never happen either.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Message-id: 1437741192-20955-2-git-send-email-peter.maydell@linaro.org

hw/pci/msix.c
hw/pci/pci.c

index 7716bf3649505034fed0cc0e064637ba8040843c..2fdada4e8f16f6c2afdbaa059349f84dac9dae79 100644 (file)
@@ -314,9 +314,7 @@ int msix_init_exclusive_bar(PCIDevice *dev, unsigned short nentries,
         bar_size = bar_pba_offset + bar_pba_size;
     }
 
-    if (bar_size & (bar_size - 1)) {
-        bar_size = 1 << qemu_fls(bar_size);
-    }
+    bar_size = pow2ceil(bar_size);
 
     name = g_strdup_printf("%s-msix", dev->name);
     memory_region_init(&dev->msix_exclusive_bar, OBJECT(dev), name, bar_size);
index 9f57aeaebadc32eeb492bd79eb1d8da03e4e0bf1..4700e95206048faafa0854c19727b66d7f7e794d 100644 (file)
@@ -2071,9 +2071,7 @@ static void pci_add_option_rom(PCIDevice *pdev, bool is_default_rom,
         g_free(path);
         return;
     }
-    if (size & (size - 1)) {
-        size = 1 << qemu_fls(size);
-    }
+    size = pow2ceil(size);
 
     vmsd = qdev_get_vmsd(DEVICE(pdev));