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

Re: [Xen-devel] [PATCH 3/6] xen/MSI-X: really enforce alignment



On Fri, 5 Jun 2015, Jan Beulich wrote:
> The way the generic infrastructure works the intention of not allowing
> unaligned accesses can't be achieved by simply setting .unaligned to
> false. The benefit is that we can now replace the conditionals in
> {get,set}_entry_value() by assert()-s.
> 
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

Reviewed-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>


> --- a/qemu/upstream/hw/xen/xen_pt_msi.c
> +++ b/qemu/upstream/hw/xen/xen_pt_msi.c
> @@ -421,16 +421,14 @@ int xen_pt_msix_update_remap(XenPCIPasst
>  
>  static uint32_t get_entry_value(XenPTMSIXEntry *e, int offset)
>  {
> -    return !(offset % sizeof(*e->latch))
> -           ? e->latch[offset / sizeof(*e->latch)] : 0;
> +    assert(!(offset % sizeof(*e->latch)));
> +    return e->latch[offset / sizeof(*e->latch)];
>  }
>  
>  static void set_entry_value(XenPTMSIXEntry *e, int offset, uint32_t val)
>  {
> -    if (!(offset % sizeof(*e->latch)))
> -    {
> -        e->latch[offset / sizeof(*e->latch)] = val;
> -    }
> +    assert(!(offset % sizeof(*e->latch)));
> +    e->latch[offset / sizeof(*e->latch)] = val;
>  }
>  
>  static void pci_msix_write(void *opaque, hwaddr addr,
> @@ -496,6 +494,12 @@ static uint64_t pci_msix_read(void *opaq
>      }
>  }
>  
> +static bool pci_msix_accepts(void *opaque, hwaddr addr,
> +                             unsigned size, bool is_write)
> +{
> +    return !(addr & (size - 1));
> +}
> +
>  static const MemoryRegionOps pci_msix_ops = {
>      .read = pci_msix_read,
>      .write = pci_msix_write,
> @@ -504,7 +508,13 @@ static const MemoryRegionOps pci_msix_op
>          .min_access_size = 4,
>          .max_access_size = 4,
>          .unaligned = false,
> +        .accepts = pci_msix_accepts
>      },
> +    .impl = {
> +        .min_access_size = 4,
> +        .max_access_size = 4,
> +        .unaligned = false
> +    }
>  };
>  
>  int xen_pt_msix_init(XenPCIPassthroughState *s, uint32_t base)
> 
> 
> 
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.