diff options
author | David S. Miller <davem@davemloft.net> | 2008-08-04 19:13:51 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-08-04 19:13:51 -0400 |
commit | 43f589235e223418d5807ebcddca73ec8a45f52c (patch) | |
tree | 9bca2b2e4dfea9203c77b4ef523c4576cd4321c3 | |
parent | 91a4231cc2efb9134373bb2a93be96a284955607 (diff) |
sparc64: Always allocate the send mondo blocks, even on non-sun4v.
The idea is that we'll use this cpu list array and mondo block
even for non-hypervisor platforms.
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | arch/sparc64/kernel/irq.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index c481673d249c..ba43d85e8dde 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -915,12 +915,18 @@ static void __init sun4v_init_mondo_queues(void) | |||
915 | alloc_one_mondo(&tb->nonresum_mondo_pa, tb->nonresum_qmask); | 915 | alloc_one_mondo(&tb->nonresum_mondo_pa, tb->nonresum_qmask); |
916 | alloc_one_kbuf(&tb->nonresum_kernel_buf_pa, | 916 | alloc_one_kbuf(&tb->nonresum_kernel_buf_pa, |
917 | tb->nonresum_qmask); | 917 | tb->nonresum_qmask); |
918 | } | ||
919 | } | ||
920 | |||
921 | static void __init init_send_mondo_info(void) | ||
922 | { | ||
923 | int cpu; | ||
924 | |||
925 | for_each_possible_cpu(cpu) { | ||
926 | struct trap_per_cpu *tb = &trap_block[cpu]; | ||
918 | 927 | ||
919 | init_cpu_send_mondo_info(tb); | 928 | init_cpu_send_mondo_info(tb); |
920 | } | 929 | } |
921 | |||
922 | /* Load up the boot cpu's entries. */ | ||
923 | sun4v_register_mondo_queues(hard_smp_processor_id()); | ||
924 | } | 930 | } |
925 | 931 | ||
926 | static struct irqaction timer_irq_action = { | 932 | static struct irqaction timer_irq_action = { |
@@ -949,6 +955,13 @@ void __init init_IRQ(void) | |||
949 | if (tlb_type == hypervisor) | 955 | if (tlb_type == hypervisor) |
950 | sun4v_init_mondo_queues(); | 956 | sun4v_init_mondo_queues(); |
951 | 957 | ||
958 | init_send_mondo_info(); | ||
959 | |||
960 | if (tlb_type == hypervisor) { | ||
961 | /* Load up the boot cpu's entries. */ | ||
962 | sun4v_register_mondo_queues(hard_smp_processor_id()); | ||
963 | } | ||
964 | |||
952 | /* We need to clear any IRQ's pending in the soft interrupt | 965 | /* We need to clear any IRQ's pending in the soft interrupt |
953 | * registers, a spurious one could be left around from the | 966 | * registers, a spurious one could be left around from the |
954 | * PROM timer which we just disabled. | 967 | * PROM timer which we just disabled. |