|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v9 16/16] xen/arm: vpci: permit access to guest vpci space
On 8/29/23 19:19, Volodymyr Babchuk wrote:
> From: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
>
> Move iomem_caps initialization earlier (before arch_domain_create()).
>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
> ---
> This is sort of a follow-up to:
>
> baa6ea700386 ("vpci: add permission checks to map_range()")
>
> I don't believe we need a fixes tag since this depends on the vPCI p2m BAR
> patches.
> ---
> xen/arch/arm/vpci.c | 6 ++++++
> xen/common/domain.c | 4 +++-
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/xen/arch/arm/vpci.c b/xen/arch/arm/vpci.c
> index 01b50d435e..fb5361276f 100644
> --- a/xen/arch/arm/vpci.c
> +++ b/xen/arch/arm/vpci.c
> @@ -2,6 +2,7 @@
> /*
> * xen/arch/arm/vpci.c
> */
> +#include <xen/iocap.h>
> #include <xen/sched.h>
> #include <xen/vpci.h>
>
> @@ -119,8 +120,13 @@ int domain_vpci_init(struct domain *d)
> return ret;
> }
> else
> + {
> register_mmio_handler(d, &vpci_mmio_handler,
> GUEST_VPCI_ECAM_BASE, GUEST_VPCI_ECAM_SIZE,
> NULL);
> + iomem_permit_access(d, paddr_to_pfn(GUEST_VPCI_MEM_ADDR),
> + paddr_to_pfn(PAGE_ALIGN(GUEST_VPCI_MEM_ADDR +
> + GUEST_VPCI_MEM_SIZE -
> 1)));
We should also permit access to GUEST_VPCI_PREFETCH_MEM_ADDR
> + }
>
> return 0;
> }
> diff --git a/xen/common/domain.c b/xen/common/domain.c
> index 9b04a20160..11a48ba7e4 100644
> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -695,6 +695,9 @@ struct domain *domain_create(domid_t domid,
> radix_tree_init(&d->pirq_tree);
> }
>
> + if ( !is_idle_domain(d) )
> + d->iomem_caps = rangeset_new(d, "I/O Memory",
> RANGESETF_prettyprint_hex);
> +
> if ( (err = arch_domain_create(d, config, flags)) != 0 )
> goto fail;
> init_status |= INIT_arch;
> @@ -704,7 +707,6 @@ struct domain *domain_create(domid_t domid,
> watchdog_domain_init(d);
> init_status |= INIT_watchdog;
>
> - d->iomem_caps = rangeset_new(d, "I/O Memory",
> RANGESETF_prettyprint_hex);
> d->irq_caps = rangeset_new(d, "Interrupts", 0);
> if ( !d->iomem_caps || !d->irq_caps )
> goto fail;
> --
> 2.41.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |