qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [PATCH v2 1/6] hw/pci: Use pow2ceil() rather than hand-


From: Michael S. Tsirkin
Subject: Re: [Qemu-block] [PATCH v2 1/6] hw/pci: Use pow2ceil() rather than hand-calculation
Date: Wed, 12 Aug 2015 10:35:55 +0300

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 <address@hidden>

Reviewed-by: Michael S. Tsirkin <address@hidden>

> ---
>  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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]