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

Re: [Xen-devel] [PATCH for-4.5 7/8] xen/irq: Handle multiple action per IRQ



On Mon, 2014-03-31 at 17:02 +0100, Julien Grall wrote:
> On 03/31/2014 04:53 PM, Ian Campbell wrote:
> > On Mon, 2014-03-31 at 16:45 +0100, Julien Grall wrote:
> >> On 02/19/2014 11:55 AM, Ian Campbell wrote:
> >>> On Fri, 2014-01-24 at 16:43 +0000, Julien Grall wrote:
> >>>> On ARM, it may happen (eg ARM SMMU) to setup multiple handler for the 
> >>>> same
> >>>> interrupt.
> >>>
> >>> Mention here that you are therefore creating a linked list of actions
> >>> for each interrupt.
> >>>
> >>> If you use xen/list.h for this then you get a load of helpers and
> >>> iterators which would save you open coding them.
> >>
> >> I've tried to use xen/list.h. The amount of code it's basically the same
> >> and we I have to write open code to get the first element of the list
> > 
> > Why? Can you post your WIP patch please for comparison.
> 
> Because:
>       - there is no helper to get the first element (__setup_irq)

Wrong function? I don't see any problem in __setup_irq.

>       - I need to use 2 variables to search for an element in a list as there 
> is
>       no way to know after the end of the loop if we found or not an element.

You've written that a bit weirdly IMHO.

list_for_each(...)
   if (not the one we want)
        continue
   free the one we wanted
   break;

don't worry about warning on a non-existent IRQ, or set a simple
boolean.

Or refactor into a find_irq_by_devid helper and use that here.

> Below an incremental patch which change next field to a list (doesn't compile
> and not finished):

It really doesn't look that bad to me.

[...]
> -    struct irqaction *next;
> +#ifdef CONFIG_ARM
> +    struct list_head next;
> +#endif
[...]
> +#ifdef CONFIG_ARM
> +    struct list_head action;    /* IRQ action list */
> +#else
>      struct irqaction *action;   /* IRQ action list */
> +#endif

Now these might be a legitimate problem with this approach. At the very
least this should be CONFIG_IRQ_HAS_IRQ_ACTION_LIST or some more
suitable name.

Ian.


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