|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |