|
@@ -5,11 +5,12 @@
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
* for more details.
|
|
*
|
|
*
|
|
- * Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved.
|
|
|
|
|
|
+ * Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved.
|
|
*/
|
|
*/
|
|
|
|
|
|
#include <linux/irq.h>
|
|
#include <linux/irq.h>
|
|
#include <linux/spinlock.h>
|
|
#include <linux/spinlock.h>
|
|
|
|
+#include <linux/init.h>
|
|
#include <asm/sn/addrs.h>
|
|
#include <asm/sn/addrs.h>
|
|
#include <asm/sn/arch.h>
|
|
#include <asm/sn/arch.h>
|
|
#include <asm/sn/intr.h>
|
|
#include <asm/sn/intr.h>
|
|
@@ -76,14 +77,12 @@ static void sn_enable_irq(unsigned int irq)
|
|
|
|
|
|
static void sn_ack_irq(unsigned int irq)
|
|
static void sn_ack_irq(unsigned int irq)
|
|
{
|
|
{
|
|
- u64 event_occurred, mask = 0;
|
|
|
|
|
|
+ u64 event_occurred, mask;
|
|
|
|
|
|
irq = irq & 0xff;
|
|
irq = irq & 0xff;
|
|
- event_occurred =
|
|
|
|
- HUB_L((u64*)LOCAL_MMR_ADDR(SH_EVENT_OCCURRED));
|
|
|
|
|
|
+ event_occurred = HUB_L((u64*)LOCAL_MMR_ADDR(SH_EVENT_OCCURRED));
|
|
mask = event_occurred & SH_ALL_INT_MASK;
|
|
mask = event_occurred & SH_ALL_INT_MASK;
|
|
- HUB_S((u64*)LOCAL_MMR_ADDR(SH_EVENT_OCCURRED_ALIAS),
|
|
|
|
- mask);
|
|
|
|
|
|
+ HUB_S((u64*)LOCAL_MMR_ADDR(SH_EVENT_OCCURRED_ALIAS), mask);
|
|
__set_bit(irq, (volatile void *)pda->sn_in_service_ivecs);
|
|
__set_bit(irq, (volatile void *)pda->sn_in_service_ivecs);
|
|
|
|
|
|
move_native_irq(irq);
|
|
move_native_irq(irq);
|
|
@@ -219,9 +218,8 @@ static void register_intr_pda(struct sn_irq_info *sn_irq_info)
|
|
pdacpu(cpu)->sn_last_irq = irq;
|
|
pdacpu(cpu)->sn_last_irq = irq;
|
|
}
|
|
}
|
|
|
|
|
|
- if (pdacpu(cpu)->sn_first_irq == 0 || pdacpu(cpu)->sn_first_irq > irq) {
|
|
|
|
|
|
+ if (pdacpu(cpu)->sn_first_irq == 0 || pdacpu(cpu)->sn_first_irq > irq)
|
|
pdacpu(cpu)->sn_first_irq = irq;
|
|
pdacpu(cpu)->sn_first_irq = irq;
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
static void unregister_intr_pda(struct sn_irq_info *sn_irq_info)
|
|
static void unregister_intr_pda(struct sn_irq_info *sn_irq_info)
|
|
@@ -289,7 +287,7 @@ void sn_irq_fixup(struct pci_dev *pci_dev, struct sn_irq_info *sn_irq_info)
|
|
list_add_rcu(&sn_irq_info->list, sn_irq_lh[sn_irq_info->irq_irq]);
|
|
list_add_rcu(&sn_irq_info->list, sn_irq_lh[sn_irq_info->irq_irq]);
|
|
spin_unlock(&sn_irq_info_lock);
|
|
spin_unlock(&sn_irq_info_lock);
|
|
|
|
|
|
- (void)register_intr_pda(sn_irq_info);
|
|
|
|
|
|
+ register_intr_pda(sn_irq_info);
|
|
}
|
|
}
|
|
|
|
|
|
void sn_irq_unfixup(struct pci_dev *pci_dev)
|
|
void sn_irq_unfixup(struct pci_dev *pci_dev)
|
|
@@ -419,7 +417,7 @@ void sn_lb_int_war_check(void)
|
|
rcu_read_unlock();
|
|
rcu_read_unlock();
|
|
}
|
|
}
|
|
|
|
|
|
-void sn_irq_lh_init(void)
|
|
|
|
|
|
+void __init sn_irq_lh_init(void)
|
|
{
|
|
{
|
|
int i;
|
|
int i;
|
|
|
|
|
|
@@ -434,5 +432,4 @@ void sn_irq_lh_init(void)
|
|
|
|
|
|
INIT_LIST_HEAD(sn_irq_lh[i]);
|
|
INIT_LIST_HEAD(sn_irq_lh[i]);
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|