|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |