* [PATCH] sh: add INTC out of memory error handling
@ 2010-03-10 9:31 Magnus Damm
2010-03-23 8:55 ` Paul Mundt
0 siblings, 1 reply; 2+ messages in thread
From: Magnus Damm @ 2010-03-10 9:31 UTC (permalink / raw)
To: linux-sh
From: Magnus Damm <damm@opensource.se>
Extend the INTC code to warn and return an error code
in the case of memory allocation failure.
Signed-off-by: Magnus Damm <damm@opensource.se>
---
INTC topic branch material
drivers/sh/intc.c | 29 ++++++++++++++++++++++++++++-
include/linux/sh_intc.h | 2 +-
2 files changed, 29 insertions(+), 2 deletions(-)
--- 0005/drivers/sh/intc.c
+++ work/drivers/sh/intc.c 2010-03-10 16:31:22.000000000 +0900
@@ -789,13 +789,15 @@ static void intc_redirect_irq(unsigned i
generic_handle_irq((unsigned int)get_irq_data(irq));
}
-void __init register_intc_controller(struct intc_desc *desc)
+int __init register_intc_controller(struct intc_desc *desc)
{
unsigned int i, k, smp;
struct intc_hw_desc *hw = &desc->hw;
struct intc_desc_int *d;
d = kzalloc(sizeof(*d), GFP_NOWAIT);
+ if (!d)
+ goto err0;
INIT_LIST_HEAD(&d->list);
list_add(&d->list, &intc_list);
@@ -806,8 +808,13 @@ void __init register_intc_controller(str
d->nr_reg += hw->ack_regs ? hw->nr_ack_regs : 0;
d->reg = kzalloc(d->nr_reg * sizeof(*d->reg), GFP_NOWAIT);
+ if (!d->reg)
+ goto err1;
+
#ifdef CONFIG_SMP
d->smp = kzalloc(d->nr_reg * sizeof(*d->smp), GFP_NOWAIT);
+ if (!d->smp)
+ goto err2;
#endif
k = 0;
@@ -822,6 +829,8 @@ void __init register_intc_controller(str
if (hw->prio_regs) {
d->prio = kzalloc(hw->nr_vectors * sizeof(*d->prio),
GFP_NOWAIT);
+ if (!d->prio)
+ goto err3;
for (i = 0; i < hw->nr_prio_regs; i++) {
smp = IS_SMP(hw->prio_regs[i]);
@@ -833,6 +842,8 @@ void __init register_intc_controller(str
if (hw->sense_regs) {
d->sense = kzalloc(hw->nr_vectors * sizeof(*d->sense),
GFP_NOWAIT);
+ if (!d->sense)
+ goto err4;
for (i = 0; i < hw->nr_sense_regs; i++)
k += save_reg(d, k, hw->sense_regs[i].reg, 0);
@@ -912,6 +923,22 @@ void __init register_intc_controller(str
/* enable bits matching force_enable after registering irqs */
if (desc->force_enable)
intc_enable_disable_enum(desc, d, desc->force_enable, 1);
+
+ return 0;
+ err4:
+ kfree(d->prio);
+ err3:
+#ifdef CONFIG_SMP
+ kfree(d->smp);
+ err2:
+#endif
+ kfree(d->reg);
+ err1:
+ kfree(d);
+ err0:
+ pr_err("unable to allocate INTC memory\n");
+
+ return -ENOMEM;
}
static int intc_suspend(struct sys_device *dev, pm_message_t state)
--- 0005/include/linux/sh_intc.h
+++ work/include/linux/sh_intc.h 2010-03-10 16:18:59.000000000 +0900
@@ -92,7 +92,7 @@ struct intc_desc symbol __initdata = {
prio_regs, sense_regs, ack_regs), \
}
-void __init register_intc_controller(struct intc_desc *desc);
+int __init register_intc_controller(struct intc_desc *desc);
int intc_set_priority(unsigned int irq, unsigned int prio);
int reserve_irq_vector(unsigned int irq);
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH] sh: add INTC out of memory error handling
2010-03-10 9:31 [PATCH] sh: add INTC out of memory error handling Magnus Damm
@ 2010-03-23 8:55 ` Paul Mundt
0 siblings, 0 replies; 2+ messages in thread
From: Paul Mundt @ 2010-03-23 8:55 UTC (permalink / raw)
To: linux-sh
On Wed, Mar 10, 2010 at 06:31:01PM +0900, Magnus Damm wrote:
> Extend the INTC code to warn and return an error code
> in the case of memory allocation failure.
On Wed, Mar 10, 2010 at 06:38:55PM +0900, Magnus Damm wrote:
> Extend the INTC code with ioremap() support V2.
>
> Support INTC controllers that are not accessible through
> a 1:1 virt:phys window. Needed by SH-Mobile ARM INTCS.
>
> The INTC code behaves as usual if the io window resource
> is omitted. The slow phys->virt lookup only happens during
> setup. The fast path code operates on virtual addresses.
Both applied to the sh/intc-extension topic branch, thanks.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-03-23 8:55 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-10 9:31 [PATCH] sh: add INTC out of memory error handling Magnus Damm
2010-03-23 8:55 ` Paul Mundt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).