From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40247) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZPQZx-0004kO-1Z for qemu-devel@nongnu.org; Wed, 12 Aug 2015 03:36:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZPQZw-0001Uc-4e for qemu-devel@nongnu.org; Wed, 12 Aug 2015 03:36:04 -0400 Date: Wed, 12 Aug 2015 10:35:55 +0300 From: "Michael S. Tsirkin" Message-ID: <20150812103544-mutt-send-email-mst@redhat.com> References: <1437741192-20955-1-git-send-email-peter.maydell@linaro.org> <1437741192-20955-2-git-send-email-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1437741192-20955-2-git-send-email-peter.maydell@linaro.org> Subject: Re: [Qemu-devel] [PATCH v2 1/6] hw/pci: Use pow2ceil() rather than hand-calculation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: Kevin Wolf , qemu-block@nongnu.org, patches@linaro.org, qemu-devel@nongnu.org, Keith Busch , Paolo Bonzini 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 Reviewed-by: Michael S. Tsirkin > --- > 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