From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
qemu-block@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
patches@linaro.org, Keith Busch <keith.busch@intel.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: [Qemu-devel] [PATCH 1/5] hw/pci: Use pow2ceil() rather than hand-calculation
Date: Thu, 23 Jul 2015 12:08:54 +0100 [thread overview]
Message-ID: <1437649738-13885-2-git-send-email-peter.maydell@linaro.org> (raw)
In-Reply-To: <1437649738-13885-1-git-send-email-peter.maydell@linaro.org>
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>
---
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
next prev parent reply other threads:[~2015-07-23 11:21 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-23 11:08 [Qemu-devel] [PATCH 0/5] replace qemu_fls() with pow2ceil()/pow2floor() Peter Maydell
2015-07-23 11:08 ` Peter Maydell [this message]
2015-07-23 11:08 ` [Qemu-devel] [PATCH 2/5] hw/virtio/virtio-pci: Use pow2ceil() rather than hand-calculation Peter Maydell
2015-07-23 11:08 ` [Qemu-devel] [PATCH 3/5] hw/block/nvme.c: " Peter Maydell
2015-07-23 11:08 ` [Qemu-devel] [PATCH 4/5] exec.c: Use pow2floor() " Peter Maydell
2015-07-23 11:08 ` [Qemu-devel] [PATCH 5/5] Remove unused qemu_fls function Peter Maydell
2015-07-23 11:09 ` [Qemu-devel] [PATCH 0/5] replace qemu_fls() with pow2ceil()/pow2floor() Paolo Bonzini
2015-07-23 16:54 ` Paolo Bonzini
2015-07-23 20:10 ` Peter Maydell
2015-07-24 5:10 ` Paolo Bonzini
2015-07-24 8:39 ` Peter Maydell
2015-07-24 8:48 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1437649738-13885-2-git-send-email-peter.maydell@linaro.org \
--to=peter.maydell@linaro.org \
--cc=keith.busch@intel.com \
--cc=kwolf@redhat.com \
--cc=mst@redhat.com \
--cc=patches@linaro.org \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).