On Fri, Jul 24, 2015 at 01:33:07PM +0100, Peter Maydell wrote: > 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.mayd...@linaro.org>
Reviewed-by: Michael S. Tsirkin <m...@redhat.com> > --- > hw/pci/msix.c | 4 +--- > hw/pci/pci.c | 4 +--- > 2 files changed, 2 insertions(+), 6 deletions(-) > > diff --git a/hw/pci/msix.c b/hw/pci/msix.c > index 7716bf3..2fdada4 100644 > --- a/hw/pci/msix.c > +++ b/hw/pci/msix.c > @@ -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); > diff --git a/hw/pci/pci.c b/hw/pci/pci.c > index a017614..502da8d 100644 > --- a/hw/pci/pci.c > +++ b/hw/pci/pci.c > @@ -2065,9 +2065,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)); > > -- > 1.9.1