diff options
author | kaashoek <kaashoek> | 2006-08-04 18:12:31 +0000 |
---|---|---|
committer | kaashoek <kaashoek> | 2006-08-04 18:12:31 +0000 |
commit | c8b29f6d038090a5b5b6272406afbadcf31e9809 (patch) | |
tree | bc3c7a2592eb7e8cadfc903e518683eaa564b35f /ide.c | |
parent | 32630628a996e29018641af262272339ed6fef88 (diff) | |
download | xv6-labs-c8b29f6d038090a5b5b6272406afbadcf31e9809.tar.gz xv6-labs-c8b29f6d038090a5b5b6272406afbadcf31e9809.tar.bz2 xv6-labs-c8b29f6d038090a5b5b6272406afbadcf31e9809.zip |
better interrupt plan---this one appears to work
ioapic
Diffstat (limited to 'ide.c')
-rw-r--r-- | ide.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -45,9 +45,12 @@ ide_wait_ready(int check_error) void ide_init(void) { - cprintf("ide_init: enable IRQ 14\n"); - irq_setmask_8259A(irq_mask_8259A & ~(1<<14)); + if (ncpu < 2) { + panic ("ide_init: disk interrupt is going to the second cpu\n"); + } + ioapic_enable (14, 1); // 14 is IRQ # for IDE ide_wait_ready(0); + cprintf ("ide_init:done\n"); } void @@ -57,6 +60,7 @@ ide_intr(void) cprintf("%d: ide_intr\n", cpu()); wakeup(&request[tail]); release(&ide_lock); + lapic_eoi(); } int |