From f62b5630bc4caf4bc13889070679c35eb6709b75 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Sat, 13 Oct 2007 21:43:31 -0700 Subject: [PATCH] --- yaml --- r: 68630 b: refs/heads/master c: 10397e4069bbcc8219537e7c1e0d6a6935432156 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/sparc64/kernel/irq.c | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index be32a884b62a..4974ef23308b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: eb2d8d60327bec172ec80efbda94d0c492088204 +refs/heads/master: 10397e4069bbcc8219537e7c1e0d6a6935432156 diff --git a/trunk/arch/sparc64/kernel/irq.c b/trunk/arch/sparc64/kernel/irq.c index 26cdf47981c3..5a92851296c0 100644 --- a/trunk/arch/sparc64/kernel/irq.c +++ b/trunk/arch/sparc64/kernel/irq.c @@ -64,7 +64,7 @@ struct ino_bucket { }; #define NUM_IVECS (IMAP_INR + 1) -struct ino_bucket ivector_table[NUM_IVECS] __attribute__ ((aligned (SMP_CACHE_BYTES))); +struct ino_bucket *ivector_table; unsigned long ivector_table_pa; #define __irq_ino(irq) \ @@ -928,22 +928,22 @@ static struct irqaction timer_irq_action = { .name = "timer", }; -/* XXX Belongs in a common location. XXX */ -static unsigned long kimage_addr_to_ra(void *p) -{ - unsigned long val = (unsigned long) p; - - return kern_base + (val - KERNBASE); -} - /* Only invoked on boot processor. */ void __init init_IRQ(void) { + unsigned long size; + map_prom_timers(); kill_prom_timer(); - memset(&ivector_table[0], 0, sizeof(ivector_table)); - ivector_table_pa = kimage_addr_to_ra(&ivector_table[0]); + size = sizeof(struct ino_bucket) * NUM_IVECS; + ivector_table = alloc_bootmem_low(size); + if (!ivector_table) { + prom_printf("Fatal error, cannot allocate ivector_table\n"); + prom_halt(); + } + + ivector_table_pa = __pa(ivector_table); if (tlb_type == hypervisor) sun4v_init_mondo_queues();