Loading arch/ia64/hp/sim/hpsim_console.c +14 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <asm/machvec.h> #include <asm/pgtable.h> #include <asm/sal.h> #include <asm/hpsim.h> #include "hpsim_ssc.h" Loading @@ -28,7 +29,7 @@ static int simcons_init (struct console *, char *); static void simcons_write (struct console *, const char *, unsigned); static struct tty_driver *simcons_console_device (struct console *, int *); struct console hpsim_cons = { static struct console hpsim_cons = { .name = "simcons", .write = simcons_write, .device = simcons_console_device, Loading Loading @@ -58,7 +59,18 @@ simcons_write (struct console *cons, const char *buf, unsigned count) static struct tty_driver *simcons_console_device (struct console *c, int *index) { extern struct tty_driver *hp_simserial_driver; *index = c->index; return hp_simserial_driver; } int simcons_register(void) { if (!ia64_platform_is("hpsim")) return 1; if (hpsim_cons.flags & CON_ENABLED) return 1; register_console(&hpsim_cons); return 0; } arch/ia64/hp/sim/hpsim_setup.c +2 −7 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <asm/machvec.h> #include <asm/pgtable.h> #include <asm/sal.h> #include <asm/hpsim.h> #include "hpsim_ssc.h" Loading @@ -41,11 +42,5 @@ hpsim_setup (char **cmdline_p) { ROOT_DEV = Root_SDA1; /* default to first SCSI drive */ #ifdef CONFIG_HP_SIMSERIAL_CONSOLE { extern struct console hpsim_cons; if (ia64_platform_is("hpsim")) register_console(&hpsim_cons); } #endif simcons_register(); } arch/ia64/hp/sim/simeth.c +3 −9 Original line number Diff line number Diff line Loading @@ -22,6 +22,9 @@ #include <linux/bitops.h> #include <asm/system.h> #include <asm/irq.h> #include <asm/hpsim.h> #include "hpsim_ssc.h" #define SIMETH_RECV_MAX 10 Loading @@ -35,12 +38,6 @@ #define SIMETH_FRAME_SIZE ETH_FRAME_LEN #define SSC_NETDEV_PROBE 100 #define SSC_NETDEV_SEND 101 #define SSC_NETDEV_RECV 102 #define SSC_NETDEV_ATTACH 103 #define SSC_NETDEV_DETACH 104 #define NETWORK_INTR 8 struct simeth_local { Loading Loading @@ -124,9 +121,6 @@ simeth_probe (void) return r; } extern long ia64_ssc (long, long, long, long, int); extern void ia64_ssc_connect_irq (long intr, long irq); static inline int netdev_probe(char *name, unsigned char *ether) { Loading arch/ia64/hp/sim/simscsi.c +1 −2 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/kernel.h> #include <linux/timer.h> #include <asm/irq.h> #include "hpsim_ssc.h" #include <scsi/scsi.h> #include <scsi/scsi_cmnd.h> Loading Loading @@ -59,8 +60,6 @@ struct disk_stat { unsigned count; }; extern long ia64_ssc (long arg0, long arg1, long arg2, long arg3, int nr); static int desc[16] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; Loading arch/ia64/kernel/irq_ia64.c +22 −6 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ struct irq_cfg irq_cfg[NR_IRQS] __read_mostly = { }; DEFINE_PER_CPU(int[IA64_NUM_VECTORS], vector_irq) = { [0 ... IA64_NUM_VECTORS - 1] = IA64_SPURIOUS_INT_VECTOR [0 ... IA64_NUM_VECTORS - 1] = -1 }; static cpumask_t vector_table[IA64_NUM_VECTORS] = { Loading Loading @@ -179,7 +179,7 @@ static void __clear_irq_vector(int irq) domain = cfg->domain; cpus_and(mask, cfg->domain, cpu_online_map); for_each_cpu_mask(cpu, mask) per_cpu(vector_irq, cpu)[vector] = IA64_SPURIOUS_INT_VECTOR; per_cpu(vector_irq, cpu)[vector] = -1; cfg->vector = IRQ_VECTOR_UNASSIGNED; cfg->domain = CPU_MASK_NONE; irq_status[irq] = IRQ_UNUSED; Loading Loading @@ -249,7 +249,7 @@ void __setup_vector_irq(int cpu) /* Clear vector_irq */ for (vector = 0; vector < IA64_NUM_VECTORS; ++vector) per_cpu(vector_irq, cpu)[vector] = IA64_SPURIOUS_INT_VECTOR; per_cpu(vector_irq, cpu)[vector] = -1; /* Mark the inuse vectors */ for (irq = 0; irq < NR_IRQS; ++irq) { if (!cpu_isset(cpu, irq_cfg[irq].domain)) Loading Loading @@ -432,10 +432,18 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) } else if (unlikely(IS_RESCHEDULE(vector))) kstat_this_cpu.irqs[vector]++; else { int irq = local_vector_to_irq(vector); ia64_setreg(_IA64_REG_CR_TPR, vector); ia64_srlz_d(); generic_handle_irq(local_vector_to_irq(vector)); if (unlikely(irq < 0)) { printk(KERN_ERR "%s: Unexpected interrupt " "vector %d on CPU %d is not mapped " "to any IRQ!\n", __FUNCTION__, vector, smp_processor_id()); } else generic_handle_irq(irq); /* * Disable interrupts and send EOI: Loading Loading @@ -483,6 +491,7 @@ void ia64_process_pending_intr(void) kstat_this_cpu.irqs[vector]++; else { struct pt_regs *old_regs = set_irq_regs(NULL); int irq = local_vector_to_irq(vector); ia64_setreg(_IA64_REG_CR_TPR, vector); ia64_srlz_d(); Loading @@ -493,8 +502,15 @@ void ia64_process_pending_intr(void) * it will work. I hope it works!. * Probably could shared code. */ vectors_in_migration[local_vector_to_irq(vector)]=0; generic_handle_irq(local_vector_to_irq(vector)); if (unlikely(irq < 0)) { printk(KERN_ERR "%s: Unexpected interrupt " "vector %d on CPU %d not being mapped " "to any IRQ!!\n", __FUNCTION__, vector, smp_processor_id()); } else { vectors_in_migration[irq]=0; generic_handle_irq(irq); } set_irq_regs(old_regs); /* Loading Loading
arch/ia64/hp/sim/hpsim_console.c +14 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <asm/machvec.h> #include <asm/pgtable.h> #include <asm/sal.h> #include <asm/hpsim.h> #include "hpsim_ssc.h" Loading @@ -28,7 +29,7 @@ static int simcons_init (struct console *, char *); static void simcons_write (struct console *, const char *, unsigned); static struct tty_driver *simcons_console_device (struct console *, int *); struct console hpsim_cons = { static struct console hpsim_cons = { .name = "simcons", .write = simcons_write, .device = simcons_console_device, Loading Loading @@ -58,7 +59,18 @@ simcons_write (struct console *cons, const char *buf, unsigned count) static struct tty_driver *simcons_console_device (struct console *c, int *index) { extern struct tty_driver *hp_simserial_driver; *index = c->index; return hp_simserial_driver; } int simcons_register(void) { if (!ia64_platform_is("hpsim")) return 1; if (hpsim_cons.flags & CON_ENABLED) return 1; register_console(&hpsim_cons); return 0; }
arch/ia64/hp/sim/hpsim_setup.c +2 −7 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <asm/machvec.h> #include <asm/pgtable.h> #include <asm/sal.h> #include <asm/hpsim.h> #include "hpsim_ssc.h" Loading @@ -41,11 +42,5 @@ hpsim_setup (char **cmdline_p) { ROOT_DEV = Root_SDA1; /* default to first SCSI drive */ #ifdef CONFIG_HP_SIMSERIAL_CONSOLE { extern struct console hpsim_cons; if (ia64_platform_is("hpsim")) register_console(&hpsim_cons); } #endif simcons_register(); }
arch/ia64/hp/sim/simeth.c +3 −9 Original line number Diff line number Diff line Loading @@ -22,6 +22,9 @@ #include <linux/bitops.h> #include <asm/system.h> #include <asm/irq.h> #include <asm/hpsim.h> #include "hpsim_ssc.h" #define SIMETH_RECV_MAX 10 Loading @@ -35,12 +38,6 @@ #define SIMETH_FRAME_SIZE ETH_FRAME_LEN #define SSC_NETDEV_PROBE 100 #define SSC_NETDEV_SEND 101 #define SSC_NETDEV_RECV 102 #define SSC_NETDEV_ATTACH 103 #define SSC_NETDEV_DETACH 104 #define NETWORK_INTR 8 struct simeth_local { Loading Loading @@ -124,9 +121,6 @@ simeth_probe (void) return r; } extern long ia64_ssc (long, long, long, long, int); extern void ia64_ssc_connect_irq (long intr, long irq); static inline int netdev_probe(char *name, unsigned char *ether) { Loading
arch/ia64/hp/sim/simscsi.c +1 −2 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/kernel.h> #include <linux/timer.h> #include <asm/irq.h> #include "hpsim_ssc.h" #include <scsi/scsi.h> #include <scsi/scsi_cmnd.h> Loading Loading @@ -59,8 +60,6 @@ struct disk_stat { unsigned count; }; extern long ia64_ssc (long arg0, long arg1, long arg2, long arg3, int nr); static int desc[16] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; Loading
arch/ia64/kernel/irq_ia64.c +22 −6 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ struct irq_cfg irq_cfg[NR_IRQS] __read_mostly = { }; DEFINE_PER_CPU(int[IA64_NUM_VECTORS], vector_irq) = { [0 ... IA64_NUM_VECTORS - 1] = IA64_SPURIOUS_INT_VECTOR [0 ... IA64_NUM_VECTORS - 1] = -1 }; static cpumask_t vector_table[IA64_NUM_VECTORS] = { Loading Loading @@ -179,7 +179,7 @@ static void __clear_irq_vector(int irq) domain = cfg->domain; cpus_and(mask, cfg->domain, cpu_online_map); for_each_cpu_mask(cpu, mask) per_cpu(vector_irq, cpu)[vector] = IA64_SPURIOUS_INT_VECTOR; per_cpu(vector_irq, cpu)[vector] = -1; cfg->vector = IRQ_VECTOR_UNASSIGNED; cfg->domain = CPU_MASK_NONE; irq_status[irq] = IRQ_UNUSED; Loading Loading @@ -249,7 +249,7 @@ void __setup_vector_irq(int cpu) /* Clear vector_irq */ for (vector = 0; vector < IA64_NUM_VECTORS; ++vector) per_cpu(vector_irq, cpu)[vector] = IA64_SPURIOUS_INT_VECTOR; per_cpu(vector_irq, cpu)[vector] = -1; /* Mark the inuse vectors */ for (irq = 0; irq < NR_IRQS; ++irq) { if (!cpu_isset(cpu, irq_cfg[irq].domain)) Loading Loading @@ -432,10 +432,18 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) } else if (unlikely(IS_RESCHEDULE(vector))) kstat_this_cpu.irqs[vector]++; else { int irq = local_vector_to_irq(vector); ia64_setreg(_IA64_REG_CR_TPR, vector); ia64_srlz_d(); generic_handle_irq(local_vector_to_irq(vector)); if (unlikely(irq < 0)) { printk(KERN_ERR "%s: Unexpected interrupt " "vector %d on CPU %d is not mapped " "to any IRQ!\n", __FUNCTION__, vector, smp_processor_id()); } else generic_handle_irq(irq); /* * Disable interrupts and send EOI: Loading Loading @@ -483,6 +491,7 @@ void ia64_process_pending_intr(void) kstat_this_cpu.irqs[vector]++; else { struct pt_regs *old_regs = set_irq_regs(NULL); int irq = local_vector_to_irq(vector); ia64_setreg(_IA64_REG_CR_TPR, vector); ia64_srlz_d(); Loading @@ -493,8 +502,15 @@ void ia64_process_pending_intr(void) * it will work. I hope it works!. * Probably could shared code. */ vectors_in_migration[local_vector_to_irq(vector)]=0; generic_handle_irq(local_vector_to_irq(vector)); if (unlikely(irq < 0)) { printk(KERN_ERR "%s: Unexpected interrupt " "vector %d on CPU %d not being mapped " "to any IRQ!!\n", __FUNCTION__, vector, smp_processor_id()); } else { vectors_in_migration[irq]=0; generic_handle_irq(irq); } set_irq_regs(old_regs); /* Loading