From 5be0039ce9e22f140a29e167526c64c723c5be3c Mon Sep 17 00:00:00 2001 From: rtm Date: Thu, 10 Aug 2006 22:08:14 +0000 Subject: interrupts could be recursive since lapic_eoi() called before rti so fast interrupts overflow the kernel stack fix: cli() before lapic_eoi() --- ide.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ide.c') diff --git a/ide.c b/ide.c index 67fb613..3532121 100644 --- a/ide.c +++ b/ide.c @@ -26,7 +26,7 @@ struct ide_request { }; struct ide_request request[NREQUEST]; int head, tail; -struct spinlock ide_lock = { "ide" }; +struct spinlock ide_lock; int disk_channel; @@ -46,6 +46,7 @@ ide_wait_ready(int check_error) void ide_init(void) { + initlock(&ide_lock, "ide"); if (ncpu < 2) { panic ("ide_init: disk interrupt is going to the second cpu\n"); } @@ -61,7 +62,6 @@ ide_intr(void) // cprintf("cpu%d: ide_intr\n", cpu()); wakeup(&request[tail]); release(&ide_lock); - lapic_eoi(); } int -- cgit v1.2.3