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

Re: [Xen-devel] [RFC PATCH v2 17/22] xen/arm: its: Map ITS translation space



Hello Vijay,

On 19/03/15 14:38, vijay.kilari@xxxxxxxxx wrote:
> +/*
> + * Map the 64K ITS translation space in guest.
> + * This is required purely for device smmu writes.
> +*/

Could this be avoid if the SMMU is not present?

> +
> +static int vgic_map_translation_space(uint32_t nr_its, struct domain *d)
> +{
> +    uint64_t addr, size;
> +    int ret;
> +
> +    addr = d->arch.vits[nr_its].phys_base + SZ_64K;
> +    size = SZ_64K;
> +    ret = map_mmio_regions(d,
> +                            paddr_to_pfn(addr & PAGE_MASK),
> +                            DIV_ROUND_UP(size, PAGE_SIZE),
> +                            paddr_to_pfn(addr & PAGE_MASK));

The translation space may not be mapped 1:1 to the guest.

> +
> +     if ( ret )
> +     {
> +          printk(XENLOG_ERR "Unable to map to dom%d access to"
> +                   " 0x%"PRIx64" - 0x%"PRIx64"\n",
> +                   d->domain_id,
> +                   addr & PAGE_MASK, PAGE_ALIGN(addr + size) - 1);
> +     }
> +
> +    return ret;
> +}
> +
>  int vgic_its_domain_init(struct domain *d)
>  {
>      uint32_t num_its;
> @@ -1420,6 +1448,8 @@ int vgic_its_domain_init(struct domain *d)
>           register_mmio_handler(d, &vgic_gits_mmio_handler,
>                                 d->arch.vits[i].phys_base,
>                                 SZ_64K);
> +
> +        return vgic_map_translation_space(i, d);

With this you can't support multiple ITS as the loop will return just
after mapping the translation space.

Regards,

-- 
Julien Grall

_______________________________________________
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®.