All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Campbell <ian.campbell@citrix.com>
To: Julien Grall <julien.grall@linaro.org>
Cc: xen-devel@lists.xenproject.org, tim@xen.org,
	stefano.stabellini@citrix.com
Subject: Re: [PATCH v3 09/24] xen/arm: route_irq_to_guest: Check validity of the IRQ
Date: Fri, 20 Feb 2015 16:00:05 +0000	[thread overview]
Message-ID: <1424448005.30924.327.camel@citrix.com> (raw)
In-Reply-To: <1421159133-31526-10-git-send-email-julien.grall@linaro.org>

On Tue, 2015-01-13 at 14:25 +0000, Julien Grall wrote:
> Currently Xen only supports SPIs routing for guest, add a function
> is_assignable_irq to check if we can assign a given IRQ to the guest.
> 
> Secondly, make sure the vIRQ is not the greater that the number of IRQs handle
> to the vGIC and it's an SPIs.

I think you mean the "number of IRQs handled by the vGIC" (or configured
in?) and it would just be "an SPI".

> Thirdly, when the IRQ is already assigned to the domain, check the user
> is not asking to use a different vIRQ than the one already bound.
> 
> Finally, desc->arch.type which contains the IRQ type (i.e level/edge) must
> be correctly configured before. The IRQ type won't be configure when:
                                ^routing?

>     - the device has been blacklist for the current platform

"blacklisted".

>     - the IRQ has not been describe in the device tree

"described".

> I think we can safely assume that a user won't never ask to route
> as such IRQ to the guest.

Can we now ;-) Does this mean the code doesn't check for and abort on
these cases?

<later>Having read further I think you do catch it, so I think you can
remove that sentence, or at least append "...but we check for this
anyway"</later>.

> diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c
> index 830832c..af408ac 100644
> --- a/xen/arch/arm/irq.c
> +++ b/xen/arch/arm/irq.c
> @@ -379,6 +379,15 @@ err:
>      return rc;
>  }
>  
> +bool_t is_assignable_irq(unsigned int irq)
> +{
> +    /* For now, we can only route SPIs to the guest */
> +    return ((irq >= NR_LOCAL_IRQS) && (irq < gic_number_lines()));
> +}
> +
> +/* Route an IRQ to a specific guest.
> + * For now only SPIs are assignabled to the guest.

"assignable"

> + */
>  int route_irq_to_guest(struct domain *d, unsigned int virq,
>                         unsigned int irq, const char * devname)
>  {
> @@ -388,6 +397,29 @@ int route_irq_to_guest(struct domain *d, unsigned int virq,
>      unsigned long flags;
>      int retval = 0;
>  
> +    if ( !is_assignable_irq(irq) )
> +    {
> +        dprintk(XENLOG_G_ERR, "the IRQ%u is not routable\n", irq);
> +        return -EINVAL;
> +    }
> +
> +    desc = irq_to_desc(irq);

I can't remember if this is expensive, but you could safely do it
further down after more of the sanity checks.

> +
> +    if ( virq >= vgic_num_irqs(d) )
> +    {
> +        dprintk(XENLOG_G_ERR,
> +                "the vIRQ number %u is too high for domain %u (max = %u)\n",
> +                irq, d->domain_id, vgic_num_irqs(d));
> +        return -EINVAL;
> +    }
> +
> +    /* Only routing to virtual SPIs is supported */
> +    if ( virq < 32 )

NR_LOCAL_IRQS?

> +    {
> +        dprintk(XENLOG_G_ERR, "IRQ can only be routed to a virtual SPIs");

Just "SPI".

> -            printk(XENLOG_ERR "ERROR: IRQ %u is already used by domain %u\n",
> -                   irq, ad->domain_id);
> +            dprintk(XENLOG_G_ERR, "IRQ %u is already used by domain %u\n",
> +                    irq, ad->domain_id);
>          else
> -            printk(XENLOG_ERR "ERROR: IRQ %u is already used by Xen\n", irq);
> +            dprintk(XENLOG_G_ERR, "IRQ %u is already used by Xen\n", irq);

Is the file/line really needed here? The messages seem reasonably unique
already.

  parent reply	other threads:[~2015-02-20 16:43 UTC|newest]

Thread overview: 251+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-13 14:25 [PATCH v3 00/24] xen/arm: Add support for non-pci passthrough Julien Grall
2015-01-13 14:25 ` [PATCH v3 01/24] xen: Extend DOMCTL createdomain to support arch configuration Julien Grall
2015-01-13 15:08   ` Daniel De Graaf
2015-01-19 16:46   ` Jan Beulich
2015-01-20 12:40     ` Julien Grall
2015-01-28 15:50   ` Stefano Stabellini
2015-02-20 15:15   ` Ian Campbell
2015-02-20 16:09     ` Julien Grall
2015-02-20 16:37       ` Jan Beulich
2015-02-23 15:09       ` Ian Campbell
2015-02-20 16:35     ` Jan Beulich
2015-02-23 15:48     ` Andrew Cooper
2015-02-23 16:00       ` Ian Campbell
2015-02-23 21:48         ` Julien Grall
2015-02-24 10:06           ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 02/24] xen/arm: Divide GIC initialization in 2 parts Julien Grall
2015-01-28 16:09   ` Stefano Stabellini
2015-02-20 15:19     ` Ian Campbell
2015-02-20 15:19   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 03/24] xen/dts: Allow only IRQ translation that are mapped to main GIC Julien Grall
2015-01-28 16:11   ` Stefano Stabellini
2015-02-20 15:20   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 04/24] xen: guestcopy: Provide an helper to safely copy string from guest Julien Grall
2015-01-13 15:10   ` Daniel De Graaf
2015-01-19 16:51   ` Jan Beulich
2015-01-20 12:45     ` Julien Grall
2015-01-20 13:16       ` Jan Beulich
2015-02-20 15:22   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 05/24] xen/arm: vgic: Introduce a function to initialize pending_irq Julien Grall
2015-02-20 15:24   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 06/24] xen/arm: Map disabled device in DOM0 Julien Grall
2015-01-28 16:18   ` Stefano Stabellini
2015-01-28 16:23     ` Julien Grall
2015-01-29 11:41       ` Stefano Stabellini
2015-02-20 15:27   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 07/24] xen/arm: Introduce xen, passthrough property Julien Grall
2015-01-28 16:36   ` Stefano Stabellini
2015-01-28 16:53     ` Julien Grall
2015-01-29 11:43       ` Stefano Stabellini
2015-02-20 15:38   ` Ian Campbell
2015-02-20 17:01     ` Julien Grall
2015-02-23 15:12       ` Ian Campbell
2015-02-23 15:43         ` Julien Grall
2015-02-20 15:42   ` Ian Campbell
2015-02-20 17:03     ` Julien Grall
2015-02-23 15:15       ` Ian Campbell
2015-02-23 15:44         ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 08/24] xen/arm: Allow virq != irq Julien Grall
2015-01-28 16:47   ` Stefano Stabellini
2015-01-28 16:56     ` Julien Grall
2015-01-28 17:00       ` Julien Grall
2015-01-29 11:50       ` Stefano Stabellini
2015-02-20 15:52   ` Ian Campbell
2015-02-20 17:09     ` Julien Grall
2015-02-27 14:33       ` Julien Grall
2015-02-27 14:44         ` Ian Campbell
2015-02-27 15:55           ` Julien Grall
2015-02-27 14:25     ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 09/24] xen/arm: route_irq_to_guest: Check validity of the IRQ Julien Grall
2015-01-28 17:55   ` Stefano Stabellini
2015-01-28 18:05     ` Julien Grall
2015-01-29 11:52       ` Stefano Stabellini
2015-02-20 16:00   ` Ian Campbell [this message]
2015-02-20 17:21     ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 10/24] xen/arm: gic: Add sanity checks gic_route_irq_to_guest Julien Grall
2015-01-28 18:15   ` Stefano Stabellini
2015-02-20 16:07   ` Ian Campbell
2015-02-20 17:28     ` Julien Grall
2015-02-23 15:20       ` Ian Campbell
2015-02-23 15:47         ` Julien Grall
2015-02-23 15:52           ` Ian Campbell
2015-02-23 15:54             ` Julien Grall
2015-02-23 16:04               ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 11/24] xen/arm: Let the toolstack configure the number of SPIs Julien Grall
2015-01-28 18:26   ` Stefano Stabellini
2015-01-28 18:58     ` Julien Grall
2015-01-29 12:01       ` Stefano Stabellini
2015-01-29 12:14         ` Julien Grall
2015-02-20 16:08     ` Ian Campbell
2015-02-20 17:29       ` Julien Grall
2015-02-23 15:22         ` Ian Campbell
2015-02-23 15:48           ` Julien Grall
2015-02-20 16:23   ` Ian Campbell
2015-02-20 17:31     ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 12/24] xen/arm: Release IRQ routed to a domain when it's destroying Julien Grall
2015-01-28 18:38   ` Stefano Stabellini
2015-02-20 16:31   ` Ian Campbell
2015-02-20 17:41     ` Julien Grall
2015-02-23 15:25       ` Ian Campbell
2015-02-23 15:49         ` Julien Grall
2015-03-03 12:50       ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 13/24] xen/arm: Implement hypercall PHYSDEVOP_{, un}map_pirq Julien Grall
2015-01-19 16:54   ` Jan Beulich
2015-01-20 14:01     ` Julien Grall
2015-01-28 18:52   ` Stefano Stabellini
2015-01-28 19:04     ` Julien Grall
2015-01-29 12:17       ` Stefano Stabellini
2015-01-29 12:26         ` Julien Grall
2015-01-29 12:33           ` Stefano Stabellini
2015-02-20 16:53             ` Ian Campbell
2015-02-23  9:33               ` Jan Beulich
2015-02-23 15:28                 ` Ian Campbell
2015-02-23 15:53                   ` Julien Grall
2015-02-23 16:04                     ` Ian Campbell
2015-02-23 16:11                       ` Julien Grall
2015-02-23 16:34                         ` Ian Campbell
2015-02-23 21:54                           ` Julien Grall
2015-02-23 16:22                     ` Jan Beulich
2015-02-23 15:51               ` Julien Grall
2015-02-23 16:02                 ` Ian Campbell
2015-03-04 14:37                   ` Julien Grall
2015-03-04 14:55                     ` Jan Beulich
2015-03-04 14:56                       ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 14/24] xen/dts: Use unsigned int for MMIO and IRQ index Julien Grall
2015-02-20 16:55   ` Ian Campbell
2015-02-23 15:57     ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 15/24] xen/dts: Provide an helper to get a DT node from a path provided by a guest Julien Grall
2015-02-20 16:56   ` Ian Campbell
2015-02-20 17:43     ` Julien Grall
2015-02-23 15:29       ` Ian Campbell
2015-02-23 15:30   ` Ian Campbell
2015-02-23 16:01     ` Julien Grall
2015-02-23 16:27       ` Ian Campbell
2015-03-10 13:58         ` Julien Grall
2015-03-11 12:34           ` Ian Campbell
2015-03-19 14:53             ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 16/24] xen/passthrough: Introduce iommu_construct Julien Grall
2015-01-19 17:02   ` Jan Beulich
2015-01-20 14:28     ` Julien Grall
2015-01-20 16:40       ` Jan Beulich
2015-01-20 17:11         ` Julien Grall
2015-01-21 10:23           ` Jan Beulich
2015-01-21 10:37             ` Julien Grall
2015-01-21 10:48               ` Jan Beulich
2015-01-21 12:13                 ` Julien Grall
2015-01-21 14:13                   ` Jan Beulich
2015-01-21 14:22                     ` Julien Grall
2015-01-21 14:29                       ` Jan Beulich
2015-02-20 16:58   ` Ian Campbell
2015-02-20 17:45     ` Julien Grall
2015-02-23 15:31       ` Ian Campbell
2015-02-23 16:04         ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 17/24] xen/passthrough: arm: release earlier the DT devices assigned to a guest Julien Grall
2015-01-20  9:19   ` Jan Beulich
2015-01-20 14:30     ` Julien Grall
2015-01-20 16:42       ` Jan Beulich
2015-01-28 18:59   ` Stefano Stabellini
2015-02-20 17:03   ` Ian Campbell
2015-02-20 17:46     ` Julien Grall
2015-02-23  9:37       ` Jan Beulich
2015-02-23 15:33         ` Ian Campbell
2015-02-23 16:22           ` Jan Beulich
2015-01-13 14:25 ` [PATCH v3 18/24] xen/passthrough: iommu_deassign_device_dt: By default reassign device to nobody Julien Grall
2015-01-20  9:21   ` Jan Beulich
2015-01-20 14:31     ` Julien Grall
2015-01-29 10:20   ` Stefano Stabellini
2015-02-20 17:04   ` Ian Campbell
2015-02-23  9:40     ` Jan Beulich
2015-02-23 10:10       ` Julien Grall
2015-02-23 10:20         ` Jan Beulich
2015-02-23 15:39           ` Ian Campbell
2015-02-23 16:24             ` Jan Beulich
2015-02-23 16:35               ` Ian Campbell
2015-02-23 16:37             ` Julien Grall
2015-02-23 16:47               ` Jan Beulich
2015-02-23 16:54                 ` Julien Grall
2015-02-23 10:10     ` Julien Grall
2015-02-23 15:34       ` Ian Campbell
2015-03-10 15:29         ` Julien Grall
2015-03-11 12:35           ` Ian Campbell
2015-03-19 15:07             ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 19/24] xen/iommu: arm: Wire iommu DOMCTL for ARM Julien Grall
2015-01-20  9:22   ` Jan Beulich
2015-01-20 14:32     ` Julien Grall
2015-02-20 17:06   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 20/24] xen/passthrough: Extend XEN_DOMCTL_assign_device to support DT device Julien Grall
2015-01-20  9:34   ` Jan Beulich
2015-01-20 14:37     ` Julien Grall
2015-01-20 16:43       ` Jan Beulich
2015-01-29 10:29     ` Stefano Stabellini
2015-01-29 10:37       ` Jan Beulich
2015-01-29 11:40       ` Julien Grall
2015-01-29 10:29   ` Stefano Stabellini
2015-01-29 11:45     ` Julien Grall
2015-01-29 12:09       ` Stefano Stabellini
2015-01-29 13:09         ` Julien Grall
2015-01-29 15:03           ` Stefano Stabellini
2015-01-29 15:14             ` Julien Grall
2015-02-20 17:17   ` Ian Campbell
2015-02-23 16:25     ` Daniel De Graaf
2015-03-10 16:52       ` Julien Grall
2015-03-10 22:45         ` Daniel De Graaf
2015-03-10 23:07           ` Julien Grall
2015-03-10 23:39             ` Daniel De Graaf
2015-03-11 12:30               ` Julien Grall
2015-03-11  8:53           ` Jan Beulich
2015-03-11 12:15             ` Julien Grall
2015-03-11 12:23               ` Ian Campbell
2015-03-11 12:35                 ` Julien Grall
2015-03-11 12:45               ` Jan Beulich
2015-03-10 16:33     ` Julien Grall
2015-03-11 12:37       ` Ian Campbell
2015-03-11 13:50         ` Julien Grall
2015-03-11 13:55           ` Ian Campbell
2015-03-11 14:03             ` Jan Beulich
2015-03-11 14:11               ` Julien Grall
2015-03-13 16:47           ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 21/24] tools/(lib)xl: Add partial device tree support for ARM Julien Grall
2015-01-29 11:03   ` Stefano Stabellini
2015-01-29 12:02     ` Julien Grall
2015-01-29 12:26       ` Stefano Stabellini
2015-02-23 11:31     ` Ian Campbell
2015-02-23 11:46   ` Ian Campbell
2015-02-23 17:06     ` Julien Grall
2015-02-23 17:22       ` Ian Campbell
2015-03-17 13:32         ` Julien Grall
2015-02-23 12:03   ` Ian Jackson
2015-02-23 12:44     ` Ian Jackson
2015-02-23 18:43     ` Julien Grall
2015-02-23 19:12       ` Ian Jackson
2015-01-13 14:25 ` [PATCH v3 22/24] tools/libxl: arm: Use an higher value for the GIC phandle Julien Grall
2015-01-29 11:07   ` Stefano Stabellini
2015-01-29 12:05     ` Julien Grall
2015-01-29 12:28       ` Stefano Stabellini
2015-01-29 13:48         ` Julien Grall
2015-01-29 15:04           ` Stefano Stabellini
2015-01-29 15:12             ` Julien Grall
2015-02-23 14:36           ` Ian Campbell
2015-02-23 22:02             ` Julien Grall
2015-02-24 10:08               ` Ian Campbell
2015-03-18 14:14                 ` Julien Grall
2015-01-13 14:25 ` [PATCH v3 23/24] libxl: Add support for non-PCI passthrough Julien Grall
2015-01-29 11:12   ` Stefano Stabellini
2015-01-29 12:08     ` Julien Grall
2015-01-29 12:31       ` Stefano Stabellini
2015-01-29 13:51         ` Julien Grall
2015-02-23 14:41           ` Ian Campbell
2015-02-23 14:42   ` Ian Campbell
2015-01-13 14:25 ` [PATCH v3 24/24] xl: Add new option dtdev Julien Grall
2015-01-29 11:18   ` Stefano Stabellini
2015-01-29 12:09     ` Julien Grall
2015-01-29 12:32       ` Stefano Stabellini
2015-01-29 13:51         ` Julien Grall
2015-01-29 15:06           ` Stefano Stabellini
2015-02-23 14:44             ` Ian Campbell
2015-02-23 14:45   ` Ian Campbell
2015-02-23 22:03     ` Julien Grall
2015-02-24 10:07       ` Ian Campbell
2015-01-13 17:56 ` [PATCH v3 00/24] xen/arm: Add support for non-pci passthrough Julien Grall
2015-02-20 17:18 ` Ian Campbell
2015-02-20 17:47   ` Julien Grall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1424448005.30924.327.camel@citrix.com \
    --to=ian.campbell@citrix.com \
    --cc=julien.grall@linaro.org \
    --cc=stefano.stabellini@citrix.com \
    --cc=tim@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.