On 2014/11/24 21:13, Thomas Gleixner wrote: > On Mon, 24 Nov 2014, Yun Wu (Abel) wrote: >> Hi Thomas, Jiang, >> On 2014/11/12 21:42, Thomas Gleixner wrote: >> >>> From: Jiang Liu <jiang....@linux.intel.com> >>> >> [...] >>> /* Number of irqs reserved for a legacy isa controller */ >>> #define NUM_ISA_INTERRUPTS 16 >>> @@ -64,6 +66,16 @@ struct irq_domain_ops { >>> int (*xlate)(struct irq_domain *d, struct device_node *node, >>> const u32 *intspec, unsigned int intsize, >>> unsigned long *out_hwirq, unsigned int *out_type); >>> + >>> +#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY >>> + /* extended V2 interfaces to support hierarchy irq_domains */ >>> + int (*alloc)(struct irq_domain *d, unsigned int virq, >>> + unsigned int nr_irqs, void *arg); >>> + void (*free)(struct irq_domain *d, unsigned int virq, >>> + unsigned int nr_irqs); >>> + void (*activate)(struct irq_domain *d, struct irq_data *irq_data); >>> + void (*deactivate)(struct irq_domain *d, struct irq_data *irq_data); >> >> What's the usage of the parameter domain reference in activate/deactivate? >> I think the purpose of the two callbacks is to activate/deactivate the >> irq_data->hwirq in irq_data->domain. If so, the first parameter @domain is >> required to be equal to irq_data->domain (which makes @domain useless). >> Besides, the main responsibility of interrupt domains is to manage mappings >> between hardware and linux interrupt numbers, so would it be better if move >> the two callbacks into struct irq_chip? > > No. It's not a function of the irq_chip to activate/deactivate a > hierarchy. As I explained you before: > > The existing irqdomain code maps between hardware and virtual > interrupts and thereby activates the interrupt in hardware. > > In the hierarchical case we do not touch the hardware in the > allocation step, so we need to activate the allocated interrupt in the > hardware before we can use it. And that's clearly a domain interface > not a irq chip issue. >
Makes sense, now the interrupt domain seems to be the best place. And when the @domain parameter can be really useful? I haven't see anyone using it so far. Thanks, Abel -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/