diff options
| -rw-r--r-- | kernel/irq/manage.c | 5 | ||||
| -rw-r--r-- | mm/slab.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 0e2b179bc7b3..1da999f5e746 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -623,8 +623,9 @@ static irqreturn_t irq_nested_primary_handler(int irq, void *dev_id) | |||
| 623 | 623 | ||
| 624 | static int irq_wait_for_interrupt(struct irqaction *action) | 624 | static int irq_wait_for_interrupt(struct irqaction *action) |
| 625 | { | 625 | { |
| 626 | set_current_state(TASK_INTERRUPTIBLE); | ||
| 627 | |||
| 626 | while (!kthread_should_stop()) { | 628 | while (!kthread_should_stop()) { |
| 627 | set_current_state(TASK_INTERRUPTIBLE); | ||
| 628 | 629 | ||
| 629 | if (test_and_clear_bit(IRQTF_RUNTHREAD, | 630 | if (test_and_clear_bit(IRQTF_RUNTHREAD, |
| 630 | &action->thread_flags)) { | 631 | &action->thread_flags)) { |
| @@ -632,7 +633,9 @@ static int irq_wait_for_interrupt(struct irqaction *action) | |||
| 632 | return 0; | 633 | return 0; |
| 633 | } | 634 | } |
| 634 | schedule(); | 635 | schedule(); |
| 636 | set_current_state(TASK_INTERRUPTIBLE); | ||
| 635 | } | 637 | } |
| 638 | __set_current_state(TASK_RUNNING); | ||
| 636 | return -1; | 639 | return -1; |
| 637 | } | 640 | } |
| 638 | 641 | ||
| @@ -595,6 +595,7 @@ static enum { | |||
| 595 | PARTIAL_AC, | 595 | PARTIAL_AC, |
| 596 | PARTIAL_L3, | 596 | PARTIAL_L3, |
| 597 | EARLY, | 597 | EARLY, |
| 598 | LATE, | ||
| 598 | FULL | 599 | FULL |
| 599 | } g_cpucache_up; | 600 | } g_cpucache_up; |
| 600 | 601 | ||
| @@ -671,7 +672,7 @@ static void init_node_lock_keys(int q) | |||
| 671 | { | 672 | { |
| 672 | struct cache_sizes *s = malloc_sizes; | 673 | struct cache_sizes *s = malloc_sizes; |
| 673 | 674 | ||
| 674 | if (g_cpucache_up != FULL) | 675 | if (g_cpucache_up < LATE) |
| 675 | return; | 676 | return; |
| 676 | 677 | ||
| 677 | for (s = malloc_sizes; s->cs_size != ULONG_MAX; s++) { | 678 | for (s = malloc_sizes; s->cs_size != ULONG_MAX; s++) { |
| @@ -1666,6 +1667,8 @@ void __init kmem_cache_init_late(void) | |||
| 1666 | { | 1667 | { |
| 1667 | struct kmem_cache *cachep; | 1668 | struct kmem_cache *cachep; |
| 1668 | 1669 | ||
| 1670 | g_cpucache_up = LATE; | ||
| 1671 | |||
| 1669 | /* Annotate slab for lockdep -- annotate the malloc caches */ | 1672 | /* Annotate slab for lockdep -- annotate the malloc caches */ |
| 1670 | init_lock_keys(); | 1673 | init_lock_keys(); |
| 1671 | 1674 | ||
