diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-05-02 17:33:37 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-05-02 17:33:37 -0400 |
| commit | eb1574270a6de8fb8d31ffc3b021e30df0afcda3 (patch) | |
| tree | d154ba369f222f5108ed1a2462d815d7faadc2e5 /kernel | |
| parent | aac10aaa8cc65a6fef6f5bc7d0b96035b0225a61 (diff) | |
| parent | 69964ea4c7b68c9399f7977aa5b9aa6539a6a98a (diff) | |
Merge 3.4-rc5 into driver-core-next
This was done to resolve a merge issue with the init/main.c file.
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/cred.c | 2 | ||||
| -rw-r--r-- | kernel/events/core.c | 2 | ||||
| -rw-r--r-- | kernel/irq/Kconfig | 2 | ||||
| -rw-r--r-- | kernel/irq/debug.h | 38 | ||||
| -rw-r--r-- | kernel/irq/irqdomain.c | 47 | ||||
| -rw-r--r-- | kernel/irq_work.c | 1 | ||||
| -rw-r--r-- | kernel/itimer.c | 8 | ||||
| -rw-r--r-- | kernel/panic.c | 2 | ||||
| -rw-r--r-- | kernel/power/swap.c | 28 | ||||
| -rw-r--r-- | kernel/rcutree.c | 1 | ||||
| -rw-r--r-- | kernel/sched/core.c | 22 | ||||
| -rw-r--r-- | kernel/sched/fair.c | 18 | ||||
| -rw-r--r-- | kernel/sched/features.h | 1 | ||||
| -rw-r--r-- | kernel/time/Kconfig | 4 | ||||
| -rw-r--r-- | kernel/time/tick-broadcast.c | 11 | ||||
| -rw-r--r-- | kernel/time/tick-sched.c | 4 | ||||
| -rw-r--r-- | kernel/trace/trace.c | 8 | ||||
| -rw-r--r-- | kernel/trace/trace.h | 4 | ||||
| -rw-r--r-- | kernel/trace/trace_output.c | 5 |
19 files changed, 121 insertions, 87 deletions
diff --git a/kernel/cred.c b/kernel/cred.c index 97b36eeca4c9..e70683d9ec32 100644 --- a/kernel/cred.c +++ b/kernel/cred.c | |||
| @@ -386,6 +386,8 @@ int copy_creds(struct task_struct *p, unsigned long clone_flags) | |||
| 386 | struct cred *new; | 386 | struct cred *new; |
| 387 | int ret; | 387 | int ret; |
| 388 | 388 | ||
| 389 | p->replacement_session_keyring = NULL; | ||
| 390 | |||
| 389 | if ( | 391 | if ( |
| 390 | #ifdef CONFIG_KEYS | 392 | #ifdef CONFIG_KEYS |
| 391 | !p->cred->thread_keyring && | 393 | !p->cred->thread_keyring && |
diff --git a/kernel/events/core.c b/kernel/events/core.c index a6a9ec4cd8f5..fd126f82b57c 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c | |||
| @@ -3183,7 +3183,7 @@ static void perf_event_for_each(struct perf_event *event, | |||
| 3183 | perf_event_for_each_child(event, func); | 3183 | perf_event_for_each_child(event, func); |
| 3184 | func(event); | 3184 | func(event); |
| 3185 | list_for_each_entry(sibling, &event->sibling_list, group_entry) | 3185 | list_for_each_entry(sibling, &event->sibling_list, group_entry) |
| 3186 | perf_event_for_each_child(event, func); | 3186 | perf_event_for_each_child(sibling, func); |
| 3187 | mutex_unlock(&ctx->mutex); | 3187 | mutex_unlock(&ctx->mutex); |
| 3188 | } | 3188 | } |
| 3189 | 3189 | ||
diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig index cf1a4a68ce44..d1a758bc972a 100644 --- a/kernel/irq/Kconfig +++ b/kernel/irq/Kconfig | |||
| @@ -62,7 +62,7 @@ config IRQ_DOMAIN_DEBUG | |||
| 62 | help | 62 | help |
| 63 | This option will show the mapping relationship between hardware irq | 63 | This option will show the mapping relationship between hardware irq |
| 64 | numbers and Linux irq numbers. The mapping is exposed via debugfs | 64 | numbers and Linux irq numbers. The mapping is exposed via debugfs |
| 65 | in the file "virq_mapping". | 65 | in the file "irq_domain_mapping". |
| 66 | 66 | ||
| 67 | If you don't know what this means you don't need it. | 67 | If you don't know what this means you don't need it. |
| 68 | 68 | ||
diff --git a/kernel/irq/debug.h b/kernel/irq/debug.h index 97a8bfadc88a..e75e29e4434a 100644 --- a/kernel/irq/debug.h +++ b/kernel/irq/debug.h | |||
| @@ -4,10 +4,10 @@ | |||
| 4 | 4 | ||
| 5 | #include <linux/kallsyms.h> | 5 | #include <linux/kallsyms.h> |
| 6 | 6 | ||
| 7 | #define P(f) if (desc->status_use_accessors & f) printk("%14s set\n", #f) | 7 | #define ___P(f) if (desc->status_use_accessors & f) printk("%14s set\n", #f) |
| 8 | #define PS(f) if (desc->istate & f) printk("%14s set\n", #f) | 8 | #define ___PS(f) if (desc->istate & f) printk("%14s set\n", #f) |
| 9 | /* FIXME */ | 9 | /* FIXME */ |
| 10 | #define PD(f) do { } while (0) | 10 | #define ___PD(f) do { } while (0) |
| 11 | 11 | ||
| 12 | static inline void print_irq_desc(unsigned int irq, struct irq_desc *desc) | 12 | static inline void print_irq_desc(unsigned int irq, struct irq_desc *desc) |
| 13 | { | 13 | { |
| @@ -23,23 +23,23 @@ static inline void print_irq_desc(unsigned int irq, struct irq_desc *desc) | |||
| 23 | print_symbol("%s\n", (unsigned long)desc->action->handler); | 23 | print_symbol("%s\n", (unsigned long)desc->action->handler); |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | P(IRQ_LEVEL); | 26 | ___P(IRQ_LEVEL); |
| 27 | P(IRQ_PER_CPU); | 27 | ___P(IRQ_PER_CPU); |
| 28 | P(IRQ_NOPROBE); | 28 | ___P(IRQ_NOPROBE); |
| 29 | P(IRQ_NOREQUEST); | 29 | ___P(IRQ_NOREQUEST); |
| 30 | P(IRQ_NOTHREAD); | 30 | ___P(IRQ_NOTHREAD); |
| 31 | P(IRQ_NOAUTOEN); | 31 | ___P(IRQ_NOAUTOEN); |
| 32 | 32 | ||
| 33 | PS(IRQS_AUTODETECT); | 33 | ___PS(IRQS_AUTODETECT); |
| 34 | PS(IRQS_REPLAY); | 34 | ___PS(IRQS_REPLAY); |
| 35 | PS(IRQS_WAITING); | 35 | ___PS(IRQS_WAITING); |
| 36 | PS(IRQS_PENDING); | 36 | ___PS(IRQS_PENDING); |
| 37 | 37 | ||
| 38 | PD(IRQS_INPROGRESS); | 38 | ___PD(IRQS_INPROGRESS); |
| 39 | PD(IRQS_DISABLED); | 39 | ___PD(IRQS_DISABLED); |
| 40 | PD(IRQS_MASKED); | 40 | ___PD(IRQS_MASKED); |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | #undef P | 43 | #undef ___P |
| 44 | #undef PS | 44 | #undef ___PS |
| 45 | #undef PD | 45 | #undef ___PD |
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index 3601f3fbf67c..0e0ba5f840b2 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c | |||
| @@ -23,7 +23,6 @@ static LIST_HEAD(irq_domain_list); | |||
| 23 | static DEFINE_MUTEX(irq_domain_mutex); | 23 | static DEFINE_MUTEX(irq_domain_mutex); |
| 24 | 24 | ||
| 25 | static DEFINE_MUTEX(revmap_trees_mutex); | 25 | static DEFINE_MUTEX(revmap_trees_mutex); |
| 26 | static unsigned int irq_virq_count = NR_IRQS; | ||
| 27 | static struct irq_domain *irq_default_domain; | 26 | static struct irq_domain *irq_default_domain; |
| 28 | 27 | ||
| 29 | /** | 28 | /** |
| @@ -184,13 +183,16 @@ struct irq_domain *irq_domain_add_linear(struct device_node *of_node, | |||
| 184 | } | 183 | } |
| 185 | 184 | ||
| 186 | struct irq_domain *irq_domain_add_nomap(struct device_node *of_node, | 185 | struct irq_domain *irq_domain_add_nomap(struct device_node *of_node, |
| 186 | unsigned int max_irq, | ||
| 187 | const struct irq_domain_ops *ops, | 187 | const struct irq_domain_ops *ops, |
| 188 | void *host_data) | 188 | void *host_data) |
| 189 | { | 189 | { |
| 190 | struct irq_domain *domain = irq_domain_alloc(of_node, | 190 | struct irq_domain *domain = irq_domain_alloc(of_node, |
| 191 | IRQ_DOMAIN_MAP_NOMAP, ops, host_data); | 191 | IRQ_DOMAIN_MAP_NOMAP, ops, host_data); |
| 192 | if (domain) | 192 | if (domain) { |
| 193 | domain->revmap_data.nomap.max_irq = max_irq ? max_irq : ~0; | ||
| 193 | irq_domain_add(domain); | 194 | irq_domain_add(domain); |
| 195 | } | ||
| 194 | return domain; | 196 | return domain; |
| 195 | } | 197 | } |
| 196 | 198 | ||
| @@ -262,22 +264,6 @@ void irq_set_default_host(struct irq_domain *domain) | |||
| 262 | irq_default_domain = domain; | 264 | irq_default_domain = domain; |
| 263 | } | 265 | } |
| 264 | 266 | ||
| 265 | /** | ||
| 266 | * irq_set_virq_count() - Set the maximum number of linux irqs | ||
| 267 | * @count: number of linux irqs, capped with NR_IRQS | ||
| 268 | * | ||
| 269 | * This is mainly for use by platforms like iSeries who want to program | ||
| 270 | * the virtual irq number in the controller to avoid the reverse mapping | ||
| 271 | */ | ||
| 272 | void irq_set_virq_count(unsigned int count) | ||
| 273 | { | ||
| 274 | pr_debug("irq: Trying to set virq count to %d\n", count); | ||
| 275 | |||
| 276 | BUG_ON(count < NUM_ISA_INTERRUPTS); | ||
| 277 | if (count < NR_IRQS) | ||
| 278 | irq_virq_count = count; | ||
| 279 | } | ||
| 280 | |||
| 281 | static int irq_setup_virq(struct irq_domain *domain, unsigned int virq, | 267 | static int irq_setup_virq(struct irq_domain *domain, unsigned int virq, |
| 282 | irq_hw_number_t hwirq) | 268 | irq_hw_number_t hwirq) |
| 283 | { | 269 | { |
| @@ -320,13 +306,12 @@ unsigned int irq_create_direct_mapping(struct irq_domain *domain) | |||
| 320 | pr_debug("irq: create_direct virq allocation failed\n"); | 306 | pr_debug("irq: create_direct virq allocation failed\n"); |
| 321 | return 0; | 307 | return 0; |
| 322 | } | 308 | } |
| 323 | if (virq >= irq_virq_count) { | 309 | if (virq >= domain->revmap_data.nomap.max_irq) { |
| 324 | pr_err("ERROR: no free irqs available below %i maximum\n", | 310 | pr_err("ERROR: no free irqs available below %i maximum\n", |
| 325 | irq_virq_count); | 311 | domain->revmap_data.nomap.max_irq); |
| 326 | irq_free_desc(virq); | 312 | irq_free_desc(virq); |
| 327 | return 0; | 313 | return 0; |
| 328< | |||
