diff options
author | Jan Beulich <jbeulich@suse.com> | 2011-11-03 17:27:38 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2011-11-03 17:27:38 +0100 |
commit | 792920245b119b7ff8decef93bfaa84b21e0e8bb (patch) | |
tree | 863853df497d14a445c6f40fadc49caba9f15e2f /xen/common/irq.c | |
parent | bbff299b86323c76f0d8ec593e7ea98368e6ea77 (diff) | |
download | xen-792920245b119b7ff8decef93bfaa84b21e0e8bb.tar.gz xen-792920245b119b7ff8decef93bfaa84b21e0e8bb.tar.bz2 xen-792920245b119b7ff8decef93bfaa84b21e0e8bb.zip |
IRQ: allocate CPU masks dynamically
This includes delaying the initialization of dynamically created IRQs
until their actual first use and some further elimination of uses of
struct irq_cfg.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
Diffstat (limited to 'xen/common/irq.c')
-rw-r--r-- | xen/common/irq.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/xen/common/irq.c b/xen/common/irq.c new file mode 100644 index 0000000000..83761505f0 --- /dev/null +++ b/xen/common/irq.c @@ -0,0 +1,28 @@ +#include <xen/config.h> +#include <xen/irq.h> + +int init_one_irq_desc(struct irq_desc *desc) +{ + int err; + + if (irq_desc_initialized(desc)) + return 0; + + if ( !alloc_cpumask_var(&desc->affinity) ) + return -ENOMEM; + + desc->status = IRQ_DISABLED; + desc->handler = &no_irq_type; + spin_lock_init(&desc->lock); + cpumask_setall(desc->affinity); + INIT_LIST_HEAD(&desc->rl_link); + + err = arch_init_one_irq_desc(desc); + if ( err ) + { + free_cpumask_var(desc->affinity); + desc->handler = NULL; + } + + return err; +} |