aboutsummaryrefslogtreecommitdiff
path: root/linux/src
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2019-11-10 16:27:42 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2019-11-10 16:28:50 +0100
commit1d34167488e56e36ad702627b17be7ac18a9db9c (patch)
tree9f107a4647490b81793e6548d0e0da444f742584 /linux/src
parent09c207eb2e7dd63d51c1f5e2abccf2562e6fd87e (diff)
downloadgnumach-1d34167488e56e36ad702627b17be7ac18a9db9c.tar.gz
gnumach-1d34167488e56e36ad702627b17be7ac18a9db9c.tar.bz2
gnumach-1d34167488e56e36ad702627b17be7ac18a9db9c.zip
simplify interrupt handling
We have removed spl levels, now remove the machinery to manage different PIC masks according to levels. Only keep machinery to disable interrupts whatever the level. * i386/i386/pic.c (pic_mask): Remove array. (picinit): Do not form PIC mask. Set initial PIC mask to 0. (form_pic_mask): Remove function. * i386/i386/pic.h (form_pic_mask, pic_mask): Remove declarations. * i386/i386/spl.S (SETMASK): Remove macro. (XEN_SETMASK): Add macro, containing the Xen version of SETMASK. (spl0, splx_cli, spl) [MACH_XEN]: Call XEN_SETMASK instead of SETMASK. * i386/i386/pit.c (clkstart): Do not call form_pic_mask. * i386/i386at/autoconf.c (take_dev_irq, take_ctlr_irq): Likewise. * i386/i386at/kd_mouse.c (kd_mouse_open, kd_mouse_close): Likewise. * linux/dev/arch/i386/kernel/irq.c (mask_irq, unmask_irq): Directly update curr_pic_mask without using pic_mask array. (init_IRQ, restore_IRQ): do not call form_pic_mask. * linux/dev/include/asm-i386/system.h: Include <i386/ipl.h>. (__save_flags, __restore_flags): Use curr_ipl and splx instead of hardware flags. * linux/dev/init/main.c (linux_init): Do not call cli. * linux/dev/kernel/sched.c (linux_timer_intr): Do not use pic_mask. * linux/src/drivers/block/ide.c (try_to_identify): Disable irq probing. * linux/src/drivers/scsi/NCR53c406a.c (NCR53c406a_detect): Disable irq probing.
Diffstat (limited to 'linux/src')
-rw-r--r--linux/src/drivers/block/ide.c2
-rw-r--r--linux/src/drivers/scsi/NCR53c406a.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/linux/src/drivers/block/ide.c b/linux/src/drivers/block/ide.c
index 43b12f1f..170e4e13 100644
--- a/linux/src/drivers/block/ide.c
+++ b/linux/src/drivers/block/ide.c
@@ -2703,6 +2703,8 @@ static int try_to_identify (ide_drive_t *drive, byte cmd)
int irq_off;
if (!HWIF(drive)->irq) { /* already got an IRQ? */
+ printk("%s: Not probing legacy IRQs)\n", drive->name);
+ return 2;
probe_irq_off(probe_irq_on()); /* clear dangling irqs */
irqs_on = probe_irq_on(); /* start monitoring irqs */
OUT_BYTE(drive->ctl,IDE_CONTROL_REG); /* enable device irq */
diff --git a/linux/src/drivers/scsi/NCR53c406a.c b/linux/src/drivers/scsi/NCR53c406a.c
index 9f2de9a0..7745f5ad 100644
--- a/linux/src/drivers/scsi/NCR53c406a.c
+++ b/linux/src/drivers/scsi/NCR53c406a.c
@@ -525,7 +525,7 @@ NCR53c406a_detect(Scsi_Host_Template * tpnt){
#ifndef IRQ_LEV
if (irq_level < 0) { /* LILO override if >= 0*/
- irq_level=irq_probe();
+ irq_level = -1; // XXX No probing irq_probe();
if (irq_level < 0) { /* Trouble */
printk("NCR53c406a: IRQ problem, irq_level=%d, giving up\n", irq_level);
return 0;