* [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip @ 2011-10-17 2:08 Nobuhiro Iwamatsu 2011-10-17 2:08 ` [PATCH 2/2] irq: Add function pointer table for generic-chip Nobuhiro Iwamatsu 2011-10-24 13:23 ` [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Grant Likely 0 siblings, 2 replies; 5+ messages in thread From: Nobuhiro Iwamatsu @ 2011-10-17 2:08 UTC (permalink / raw) To: tglx; +Cc: linux-kernel, mingo, Nobuhiro Iwamatsu Some functions of irq generic-chip is undefined, because EXPORT_SYMBOL_GPL is not set to these. ----- ERROR: "irq_setup_generic_chip" [drivers/gpio/gpio-pch.ko] undefined! ERROR: "irq_alloc_generic_chip" [drivers/gpio/gpio-pch.ko] undefined! ERROR: "irq_setup_generic_chip" [drivers/gpio/gpio-ml-ioh.ko] undefined! ERROR: "irq_alloc_generic_chip" [drivers/gpio/gpio-ml-ioh.ko] undefined! ----- This is revised that EXPORT_SYMBOL_GPL can be added and referred to in functions. Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> --- V2: Add EXPORT_SYMBOL_GPL to irq_setup_generic_chip, irq_alloc_generic_chip, irq_setup_alt_chip and irq_remove_generic_chip only. kernel/irq/generic-chip.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c index e38544d..6cb7613 100644 --- a/kernel/irq/generic-chip.c +++ b/kernel/irq/generic-chip.c @@ -211,6 +211,7 @@ irq_alloc_generic_chip(const char *name, int num_ct, unsigned int irq_base, } return gc; } +EXPORT_SYMBOL_GPL(irq_alloc_generic_chip); /* * Separate lockdep class for interrupt chip which can nest irq_desc @@ -258,6 +259,7 @@ void irq_setup_generic_chip(struct irq_chip_generic *gc, u32 msk, } gc->irq_cnt = i - gc->irq_base; } +EXPORT_SYMBOL_GPL(irq_setup_generic_chip); /** * irq_setup_alt_chip - Switch to alternative chip @@ -281,6 +283,7 @@ int irq_setup_alt_chip(struct irq_data *d, unsigned int type) } return -EINVAL; } +EXPORT_SYMBOL_GPL(irq_setup_alt_chip); /** * irq_remove_generic_chip - Remove a chip @@ -311,6 +314,7 @@ void irq_remove_generic_chip(struct irq_chip_generic *gc, u32 msk, irq_modify_status(i, clr, set); } } +EXPORT_SYMBOL_GPL(irq_remove_generic_chip); #ifdef CONFIG_PM static int irq_gc_suspend(void) -- 1.7.7 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] irq: Add function pointer table for generic-chip 2011-10-17 2:08 [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Nobuhiro Iwamatsu @ 2011-10-17 2:08 ` Nobuhiro Iwamatsu 2011-10-17 9:00 ` Thomas Gleixner 2011-10-24 13:23 ` [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Grant Likely 1 sibling, 1 reply; 5+ messages in thread From: Nobuhiro Iwamatsu @ 2011-10-17 2:08 UTC (permalink / raw) To: tglx; +Cc: linux-kernel, mingo, Nobuhiro Iwamatsu This adds the function table to access it with function pointer by some functions providedd in generic-chip. The driver who uses the function offered in generic-chip can use this via this function table. Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> --- include/linux/irq.h | 27 ++++++++++++++++----------- kernel/irq/generic-chip.c | 31 +++++++++++++++++++++---------- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/include/linux/irq.h b/include/linux/irq.h index bff29c5..06ed817 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -638,6 +638,20 @@ struct irq_chip_type { u32 type; }; +/* Generic chip callback functions table */ +struct irq_gc_functions { + void (* gc_noop)(struct irq_data *d); + void (* gc_mask_disable_reg)(struct irq_data *d); + void (* gc_mask_set_bit)(struct irq_data *d); + void (* gc_mask_clr_bit)(struct irq_data *d); + void (* gc_unmask_enable_reg)(struct irq_data *d); + void (* gc_ack_set_bit)(struct irq_data *d); + void (* gc_ack_clr_bit)(struct irq_data *d); + void (* gc_mask_disable_reg_and_ack)(struct irq_data *d); + void (* gc_eoi)(struct irq_data *d); + int (* gc_set_wake)(struct irq_data *d, unsigned int on); +}; + /** * struct irq_chip_generic - Generic irq chip data structure * @lock: Lock to protect register and cache data access @@ -653,6 +667,7 @@ struct irq_chip_type { * @private: Private data for non generic chip callbacks * @list: List head for keeping track of instances * @chip_types: Array of interrupt irq_chip_types + * @functions: Generic chip callback functions * * Note, that irq_chip_generic can have multiple irq_chip_type * implementations which can be associated to a particular irq line of @@ -674,6 +689,7 @@ struct irq_chip_generic { void *private; struct list_head list; struct irq_chip_type chip_types[0]; + struct irq_gc_functions functions; }; /** @@ -688,17 +704,6 @@ enum irq_gc_flags { IRQ_GC_INIT_NESTED_LOCK = 1 << 1, }; -/* Generic chip callback functions */ -void irq_gc_noop(struct irq_data *d); -void irq_gc_mask_disable_reg(struct irq_data *d); -void irq_gc_mask_set_bit(struct irq_data *d); -void irq_gc_mask_clr_bit(struct irq_data *d); -void irq_gc_unmask_enable_reg(struct irq_data *d); -void irq_gc_ack_set_bit(struct irq_data *d); -void irq_gc_ack_clr_bit(struct irq_data *d); -void irq_gc_mask_disable_reg_and_ack(struct irq_data *d); -void irq_gc_eoi(struct irq_data *d); -int irq_gc_set_wake(struct irq_data *d, unsigned int on); /* Setup functions for irq_chip_generic */ struct irq_chip_generic * diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c index 6cb7613..8aec156 100644 --- a/kernel/irq/generic-chip.c +++ b/kernel/irq/generic-chip.c @@ -24,7 +24,7 @@ static inline struct irq_chip_regs *cur_regs(struct irq_data *d) * irq_gc_noop - NOOP function * @d: irq_data */ -void irq_gc_noop(struct irq_data *d) +static void irq_gc_noop(struct irq_data *d) { } @@ -35,7 +35,7 @@ void irq_gc_noop(struct irq_data *d) * Chip has separate enable/disable registers instead of a single mask * register. */ -void irq_gc_mask_disable_reg(struct irq_data *d) +static void irq_gc_mask_disable_reg(struct irq_data *d) { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); u32 mask = 1 << (d->irq - gc->irq_base); @@ -53,7 +53,7 @@ void irq_gc_mask_disable_reg(struct irq_data *d) * Chip has a single mask register. Values of this register are cached * and protected by gc->lock */ -void irq_gc_mask_set_bit(struct irq_data *d) +static void irq_gc_mask_set_bit(struct irq_data *d) { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); u32 mask = 1 << (d->irq - gc->irq_base); @@ -71,7 +71,7 @@ void irq_gc_mask_set_bit(struct irq_data *d) * Chip has a single mask register. Values of this register are cached * and protected by gc->lock */ -void irq_gc_mask_clr_bit(struct irq_data *d) +static void irq_gc_mask_clr_bit(struct irq_data *d) { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); u32 mask = 1 << (d->irq - gc->irq_base); @@ -89,7 +89,7 @@ void irq_gc_mask_clr_bit(struct irq_data *d) * Chip has separate enable/disable registers instead of a single mask * register. */ -void irq_gc_unmask_enable_reg(struct irq_data *d) +static void irq_gc_unmask_enable_reg(struct irq_data *d) { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); u32 mask = 1 << (d->irq - gc->irq_base); @@ -104,7 +104,7 @@ void irq_gc_unmask_enable_reg(struct irq_data *d) * irq_gc_ack_set_bit - Ack pending interrupt via setting bit * @d: irq_data */ -void irq_gc_ack_set_bit(struct irq_data *d) +static void irq_gc_ack_set_bit(struct irq_data *d) { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); u32 mask = 1 << (d->irq - gc->irq_base); @@ -118,7 +118,7 @@ void irq_gc_ack_set_bit(struct irq_data *d) * irq_gc_ack_clr_bit - Ack pending interrupt via clearing bit * @d: irq_data */ -void irq_gc_ack_clr_bit(struct irq_data *d) +static void irq_gc_ack_clr_bit(struct irq_data *d) { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); u32 mask = ~(1 << (d->irq - gc->irq_base)); @@ -132,7 +132,7 @@ void irq_gc_ack_clr_bit(struct irq_data *d) * irq_gc_mask_disable_reg_and_ack- Mask and ack pending interrupt * @d: irq_data */ -void irq_gc_mask_disable_reg_and_ack(struct irq_data *d) +static void irq_gc_mask_disable_reg_and_ack(struct irq_data *d) { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); u32 mask = 1 << (d->irq - gc->irq_base); @@ -147,7 +147,7 @@ void irq_gc_mask_disable_reg_and_ack(struct irq_data *d) * irq_gc_eoi - EOI interrupt * @d: irq_data */ -void irq_gc_eoi(struct irq_data *d) +static void irq_gc_eoi(struct irq_data *d) { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); u32 mask = 1 << (d->irq - gc->irq_base); @@ -165,7 +165,7 @@ void irq_gc_eoi(struct irq_data *d) * configured in a separate register and the wakeup active state is * just stored in a bitmask. */ -int irq_gc_set_wake(struct irq_data *d, unsigned int on) +static int irq_gc_set_wake(struct irq_data *d, unsigned int on) { struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); u32 mask = 1 << (d->irq - gc->irq_base); @@ -208,6 +208,17 @@ irq_alloc_generic_chip(const char *name, int num_ct, unsigned int irq_base, gc->reg_base = reg_base; gc->chip_types->chip.name = name; gc->chip_types->handler = handler; + + gc->functions.gc_noop = irq_gc_noop; + gc->functions.gc_mask_disable_reg = irq_gc_mask_disable_reg; + gc->functions.gc_mask_set_bit = irq_gc_mask_set_bit; + gc->functions.gc_mask_clr_bit = irq_gc_mask_clr_bit; + gc->functions.gc_unmask_enable_reg = irq_gc_unmask_enable_reg; + gc->functions.gc_ack_set_bit = irq_gc_ack_set_bit; + gc->functions.gc_ack_clr_bit = irq_gc_ack_clr_bit; + gc->functions.gc_mask_disable_reg_and_ack = irq_gc_mask_disable_reg_and_ack; + gc->functions.gc_eoi = irq_gc_eoi; + gc->functions.gc_set_wake = irq_gc_set_wake; } return gc; } -- 1.7.7 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] irq: Add function pointer table for generic-chip 2011-10-17 2:08 ` [PATCH 2/2] irq: Add function pointer table for generic-chip Nobuhiro Iwamatsu @ 2011-10-17 9:00 ` Thomas Gleixner 2011-10-20 3:44 ` Nobuhiro Iwamatsu 0 siblings, 1 reply; 5+ messages in thread From: Thomas Gleixner @ 2011-10-17 9:00 UTC (permalink / raw) To: Nobuhiro Iwamatsu; +Cc: linux-kernel, mingo On Mon, 17 Oct 2011, Nobuhiro Iwamatsu wrote: > This adds the function table to access it with function pointer > by some functions providedd in generic-chip. > The driver who uses the function offered in generic-chip can use > this via this function table. > > -/* Generic chip callback functions */ > -void irq_gc_noop(struct irq_data *d); > -void irq_gc_mask_disable_reg(struct irq_data *d); > -void irq_gc_mask_set_bit(struct irq_data *d); > -void irq_gc_mask_clr_bit(struct irq_data *d); > -void irq_gc_unmask_enable_reg(struct irq_data *d); > -void irq_gc_ack_set_bit(struct irq_data *d); > -void irq_gc_ack_clr_bit(struct irq_data *d); > -void irq_gc_mask_disable_reg_and_ack(struct irq_data *d); > -void irq_gc_eoi(struct irq_data *d); > -int irq_gc_set_wake(struct irq_data *d, unsigned int on); This breaks the world and some more. We have code which references those functions directly. > + gc->functions.gc_noop = irq_gc_noop; > + gc->functions.gc_mask_disable_reg = irq_gc_mask_disable_reg; > + gc->functions.gc_mask_set_bit = irq_gc_mask_set_bit; > + gc->functions.gc_mask_clr_bit = irq_gc_mask_clr_bit; > + gc->functions.gc_unmask_enable_reg = irq_gc_unmask_enable_reg; > + gc->functions.gc_ack_set_bit = irq_gc_ack_set_bit; > + gc->functions.gc_ack_clr_bit = irq_gc_ack_clr_bit; > + gc->functions.gc_mask_disable_reg_and_ack = irq_gc_mask_disable_reg_and_ack; > + gc->functions.gc_eoi = irq_gc_eoi; > + gc->functions.gc_set_wake = irq_gc_set_wake; Why do you want to add that to every instance of generic irq chip? What I asked for is: struct bla { .noop = irq_gc_noop, ... }; EXPORT_SYMBOL_GPL(bla); Now when we have this, we can run a coccinelle script over the tree and convert all current users to use bla.fun instead of the direct functions and then make those static. Thanks, tglx ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] irq: Add function pointer table for generic-chip 2011-10-17 9:00 ` Thomas Gleixner @ 2011-10-20 3:44 ` Nobuhiro Iwamatsu 0 siblings, 0 replies; 5+ messages in thread From: Nobuhiro Iwamatsu @ 2011-10-20 3:44 UTC (permalink / raw) To: Thomas Gleixner; +Cc: linux-kernel, mingo Hi, 2011/10/17 Thomas Gleixner <tglx@linutronix.de>: > On Mon, 17 Oct 2011, Nobuhiro Iwamatsu wrote: > >> This adds the function table to access it with function pointer >> by some functions providedd in generic-chip. >> The driver who uses the function offered in generic-chip can use >> this via this function table. >> >> -/* Generic chip callback functions */ >> -void irq_gc_noop(struct irq_data *d); >> -void irq_gc_mask_disable_reg(struct irq_data *d); >> -void irq_gc_mask_set_bit(struct irq_data *d); >> -void irq_gc_mask_clr_bit(struct irq_data *d); >> -void irq_gc_unmask_enable_reg(struct irq_data *d); >> -void irq_gc_ack_set_bit(struct irq_data *d); >> -void irq_gc_ack_clr_bit(struct irq_data *d); >> -void irq_gc_mask_disable_reg_and_ack(struct irq_data *d); >> -void irq_gc_eoi(struct irq_data *d); >> -int irq_gc_set_wake(struct irq_data *d, unsigned int on); > > This breaks the world and some more. We have code which references > those functions directly. > >> + gc->functions.gc_noop = irq_gc_noop; >> + gc->functions.gc_mask_disable_reg = irq_gc_mask_disable_reg; >> + gc->functions.gc_mask_set_bit = irq_gc_mask_set_bit; >> + gc->functions.gc_mask_clr_bit = irq_gc_mask_clr_bit; >> + gc->functions.gc_unmask_enable_reg = irq_gc_unmask_enable_reg; >> + gc->functions.gc_ack_set_bit = irq_gc_ack_set_bit; >> + gc->functions.gc_ack_clr_bit = irq_gc_ack_clr_bit; >> + gc->functions.gc_mask_disable_reg_and_ack = irq_gc_mask_disable_reg_and_ack; >> + gc->functions.gc_eoi = irq_gc_eoi; >> + gc->functions.gc_set_wake = irq_gc_set_wake; > > Why do you want to add that to every instance of generic irq chip? > What I asked for is: > > struct bla { > .noop = irq_gc_noop, > ... > }; > EXPORT_SYMBOL_GPL(bla); > > Now when we have this, we can run a coccinelle script over the tree > and convert all current users to use bla.fun instead of the direct > functions and then make those static. > OK, I misled about your point. You do not make many symbols by EXPORT_SYMBOL, genetic_chip makes the object with the function pointer, and you suggest that each driver uses the function defined in the object. Is it correct? I created new patch. could you check this? ----- >From c8b422d8bf3d1575a48d62ac6f785e86b36a8709 Mon Sep 17 00:00:00 2001 From: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> Date: Wed, 19 Oct 2011 12:23:19 +0900 Subject: [PATCH] irq: Add function pointer table for generic-chip This adds the function table to access it with function pointer by some functions providedd in generic-chip. The driver who uses the function offered in generic-chip can use this via this function table. For example, driver is used as follows. ... chip.irq_ack = &irq_gc_function_tbl.ack_set_bit; chip.irq_mask = &irq_gc_function_tbl.mask_clr_bit; ... Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> --- include/linux/irq.h | 16 ++++++++++++++++ kernel/irq/generic-chip.c | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+), 0 deletions(-) diff --git a/include/linux/irq.h b/include/linux/irq.h index bff29c5..8b271cc 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -700,6 +700,22 @@ void irq_gc_mask_disable_reg_and_ack(struct irq_data *d); void irq_gc_eoi(struct irq_data *d); int irq_gc_set_wake(struct irq_data *d, unsigned int on); +/* Generic chip callback function table */ +struct irq_gc_functions { + void (* noop)(struct irq_data *d); + void (* mask_disable_reg)(struct irq_data *d); + void (* mask_set_bit)(struct irq_data *d); + void (* mask_clr_bit)(struct irq_data *d); + void (* unmask_enable_reg)(struct irq_data *d); + void (* ack_set_bit)(struct irq_data *d); + void (* ack_clr_bit)(struct irq_data *d); + void (* mask_disable_reg_and_ack)(struct irq_data *d); + void (* eoi)(struct irq_data *d); + int (* set_wake)(struct irq_data *d, unsigned int on); +}; + +extern struct irq_gc_functions irq_gc_function_tbl; + /* Setup functions for irq_chip_generic */ struct irq_chip_generic * irq_alloc_generic_chip(const char *name, int nr_ct, unsigned int irq_base, diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c index 6cb7613..03df526 100644 --- a/kernel/irq/generic-chip.c +++ b/kernel/irq/generic-chip.c @@ -183,6 +183,24 @@ int irq_gc_set_wake(struct irq_data *d, unsigned int on) } /** + * irq generic chip user needs to access irq_gc_XXX function using + * irq_gc_function_tbl. + */ +struct irq_gc_functions irq_gc_function_tbl ={ + .noop = irq_gc_noop, + .mask_disable_reg = irq_gc_mask_disable_reg, + .mask_set_bit = irq_gc_mask_set_bit, + .mask_clr_bit = irq_gc_mask_clr_bit, + .unmask_enable_reg = irq_gc_unmask_enable_reg, + .ack_set_bit = irq_gc_ack_set_bit, + .ack_clr_bit = irq_gc_ack_clr_bit, + .mask_disable_reg_and_ack = irq_gc_mask_disable_reg_and_ack, + .eoi = irq_gc_eoi, + .set_wake = irq_gc_set_wake, +}; +EXPORT_SYMBOL_GPL(irq_gc_function_tbl); + +/** * irq_alloc_generic_chip - Allocate a generic chip and initialize it * @name: Name of the irq chip * @num_ct: Number of irq_chip_type instances associated with this -- 1.7.7 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip 2011-10-17 2:08 [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Nobuhiro Iwamatsu 2011-10-17 2:08 ` [PATCH 2/2] irq: Add function pointer table for generic-chip Nobuhiro Iwamatsu @ 2011-10-24 13:23 ` Grant Likely 1 sibling, 0 replies; 5+ messages in thread From: Grant Likely @ 2011-10-24 13:23 UTC (permalink / raw) To: Nobuhiro Iwamatsu; +Cc: tglx, linux-kernel, mingo On Mon, Oct 17, 2011 at 11:08:46AM +0900, Nobuhiro Iwamatsu wrote: > Some functions of irq generic-chip is undefined, because > EXPORT_SYMBOL_GPL is not set to these. > > ----- > ERROR: "irq_setup_generic_chip" [drivers/gpio/gpio-pch.ko] undefined! > ERROR: "irq_alloc_generic_chip" [drivers/gpio/gpio-pch.ko] undefined! > ERROR: "irq_setup_generic_chip" [drivers/gpio/gpio-ml-ioh.ko] undefined! > ERROR: "irq_alloc_generic_chip" [drivers/gpio/gpio-ml-ioh.ko] undefined! > ----- > > This is revised that EXPORT_SYMBOL_GPL can be added and referred > to in functions. > > Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> After getting verbal ack from Thomas, I've merged this via the gpio tree. g. > --- > > V2: Add EXPORT_SYMBOL_GPL to irq_setup_generic_chip, irq_alloc_generic_chip, > irq_setup_alt_chip and irq_remove_generic_chip only. > > kernel/irq/generic-chip.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c > index e38544d..6cb7613 100644 > --- a/kernel/irq/generic-chip.c > +++ b/kernel/irq/generic-chip.c > @@ -211,6 +211,7 @@ irq_alloc_generic_chip(const char *name, int num_ct, unsigned int irq_base, > } > return gc; > } > +EXPORT_SYMBOL_GPL(irq_alloc_generic_chip); > > /* > * Separate lockdep class for interrupt chip which can nest irq_desc > @@ -258,6 +259,7 @@ void irq_setup_generic_chip(struct irq_chip_generic *gc, u32 msk, > } > gc->irq_cnt = i - gc->irq_base; > } > +EXPORT_SYMBOL_GPL(irq_setup_generic_chip); > > /** > * irq_setup_alt_chip - Switch to alternative chip > @@ -281,6 +283,7 @@ int irq_setup_alt_chip(struct irq_data *d, unsigned int type) > } > return -EINVAL; > } > +EXPORT_SYMBOL_GPL(irq_setup_alt_chip); > > /** > * irq_remove_generic_chip - Remove a chip > @@ -311,6 +314,7 @@ void irq_remove_generic_chip(struct irq_chip_generic *gc, u32 msk, > irq_modify_status(i, clr, set); > } > } > +EXPORT_SYMBOL_GPL(irq_remove_generic_chip); > > #ifdef CONFIG_PM > static int irq_gc_suspend(void) > -- > 1.7.7 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-10-24 13:23 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-10-17 2:08 [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Nobuhiro Iwamatsu 2011-10-17 2:08 ` [PATCH 2/2] irq: Add function pointer table for generic-chip Nobuhiro Iwamatsu 2011-10-17 9:00 ` Thomas Gleixner 2011-10-20 3:44 ` Nobuhiro Iwamatsu 2011-10-24 13:23 ` [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Grant Likely
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.