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

Re: [Xen-devel] [PATCH v4 18/24] arm/acpi: Permit access all Xen unused SPIs for Dom0



On Sun, 28 Feb 2016, Shannon Zhao wrote:
> From: Shannon Zhao <shannon.zhao@xxxxxxxxxx>
> 
> Permit access all Xen unused SPIs for Dom0 except the interrupts that
> Xen uses. Then when Dom0 configures the interrupt, it could set the
> interrupt type and route it to Dom0.
> 
> Signed-off-by: Shannon Zhao <shannon.zhao@xxxxxxxxxx>

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


> v4: only permmit access all Xen unused SPIs for Dom0 and don't set type
> ---
>  xen/arch/arm/domain_build.c | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
> 
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 4b1f387..4aaffae 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1359,6 +1359,33 @@ static int prepare_dtb(struct domain *d, struct 
> kernel_info *kinfo)
>  #ifdef CONFIG_ACPI
>  #define ACPI_DOM0_FDT_MIN_SIZE 4096
>  
> +static int acpi_permit_spi_access(struct domain *d)
> +{
> +    int i, res;
> +    struct irq_desc *desc;
> +
> +    /* Here just permit Dom0 to access the SPIs which Xen doesn't use. Then 
> when
> +     * Dom0 configures the interrupt, set the interrupt type and route it to
> +     * Dom0.
> +     */
> +    for( i = NR_LOCAL_IRQS; i < vgic_num_irqs(d); i++ )
> +    {
> +        desc = irq_to_desc(i);
> +        if( desc->action != NULL)
> +            continue;
> +
> +        res = irq_permit_access(d, i);
> +        if ( res )
> +        {
> +            printk(XENLOG_ERR "Unable to permit to dom%u access to IRQ %u\n",
> +                   d->domain_id, i);
> +            return res;
> +        }
> +    }
> +
> +    return 0;
> +}
> +
>  static int make_chosen_node(const struct kernel_info *kinfo,
>                              struct membank tbl_add[])
>  {
> @@ -1849,6 +1876,10 @@ static int prepare_acpi(struct domain *d, struct 
> kernel_info *kinfo)
>      if ( rc != 0 )
>          return rc;
>  
> +    rc = acpi_permit_spi_access(d);
> +    if ( rc != 0 )
> +        return rc;
> +
>      return 0;
>  }
>  #else
> -- 
> 2.0.4
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel
> 

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