kernel: return from interrupt

Stephan Uphoff ups at tree.com
Thu Nov 11 14:55:55 PST 2004


On Thu, 2004-11-11 at 12:58, Anurekh Saxena wrote:
> Hi,
> 
> I was under the impression that the 5.3 release had an option for full
> preemption.
> If I am correct, why does the kernel refuse to schedule on a 
> return_from_interrupt if its not
> going back to userland?
> I can understand this being a problem if interrupts were nested, or
> return from a page fault in a
> critical section. 
> Please correct me if I am wrong, but if a *high* priority interrupt
> thread is ready to run, it
> should be given a chance. Presuming the *interrupted* kernel path is
> going to give up the CPU
> fast enough is probably not a good idea. 
> 
> 
> I hope I have sent this to the right mailing list.
> 
> Thanks,
> Anurekh
 
This should work if you have "options PREEMPTION" in your config file.
You may also want to try "options FULL_PREEMPTION". 

Can you describe your problems / observations?

The exception seems to be fast interrupts.
You may want to try the following untested patch to allow preemption
triggered by fast interrupts.


Index: intr_machdep.c
===================================================================
RCS file: /cvsroot/src/sys/i386/i386/intr_machdep.c,v
retrieving revision 1.11
diff -u -r1.11 intr_machdep.c
--- intr_machdep.c      3 Nov 2004 18:03:06 -0000       1.11
+++ intr_machdep.c      11 Nov 2004 22:31:19 -0000
@@ -205,7 +205,9 @@
                isrc->is_pic->pic_eoi_source(isrc);
                error = 0;
                /* XXX */
+#if 0
                td->td_pflags &= ~TDP_OWEPREEMPT;
+#endif
                critical_exit();
        } else {
                /*





More information about the freebsd-i386 mailing list