#include <linux/interrupt.h>
#include <linux/sched/signal.h>
#include <linux/device.h>
#include <asm/sn/sn_sal.h>
#include <asm/sn/module.h>
#include <asm/sn/nodepda.h>
#define SYSCTL_BASENAME "snsc"
#define SCDRV_TIMEOUT 1000
static DEFINE_MUTEX(scdrv_mutex);
scdrv_interrupt(int irq, void *subch_data)
struct subch_data_s *sd = subch_data;
spin_lock_irqsave(&sd->sd_rlock, flags);
spin_lock(&sd->sd_wlock);
status = ia64_sn_irtr_intr(sd->sd_nasid, sd->sd_subch);
if (status & SAL_IROUTER_INTR_RECV) {
if (status & SAL_IROUTER_INTR_XMIT) {
ia64_sn_irtr_intr_disable
(sd->sd_nasid, sd->sd_subch,
spin_unlock(&sd->sd_wlock);
spin_unlock_irqrestore(&sd->sd_rlock, flags);