> Less important, but very odd is that my timer interrupt is now handled by
> the XT_PIC, not the IO-APIC.  I assumed this was standard behavior.  Also,
> I have a dual CPU machine, and I noticed that interrupts were no longer
> even remotely balanced between the two CPUs.

Please try the attached patch.

Michael.

diff -ru -x *.o /igphome/baraban/tmp/linux22smp/arch/i386/kernel/io_apic.c 
linux/arch/i386/kernel/io_apic.c
--- /igphome/baraban/tmp/linux22smp/arch/i386/kernel/io_apic.c  Thu Aug 12 16:09:15 
1999
+++ linux/arch/i386/kernel/io_apic.c    Thu Aug 12 16:10:27 1999
@@ -1260,11 +1260,7 @@
 
        pin1 = find_timer_pin(mp_INT);
        pin2 = find_timer_pin(mp_ExtINT);
-#ifndef __RTL__
        enable_IO_APIC_irq(0);
-#else
-       enableOne_IO_APIC_irq(0);
-#endif
        if (!timer_irq_works()) {
 
                if (pin1 != -1)
diff -ru -x *.o /igphome/baraban/tmp/linux22smp/arch/i386/kernel/irq.c 
linux/arch/i386/kernel/irq.c
--- /igphome/baraban/tmp/linux22smp/arch/i386/kernel/irq.c      Thu Aug 12 16:09:15 
1999
+++ linux/arch/i386/kernel/irq.c        Thu Aug 12 16:15:57 1999
@@ -118,7 +118,7 @@
        unsigned int rtirq[IRQ_ARRAY_SIZE];
        unsigned int pended_since_sti;
 };
-struct rtl_global rtl_global ={ {0},1,IRQ_ZINIT,IRQ_NZINIT,1,IRQ_ZINIT,0} ;
+struct rtl_global rtl_global ={ 
+SPIN_LOCK_UNLOCKED,1,IRQ_ZINIT,IRQ_NZINIT,1,IRQ_ZINIT,0} ;
 
 /* macros for touching the global structure */
 #define test_g(ix,y) test_bit(irq_to_pos(ix),&y[irq_to_index(ix)])
@@ -1740,8 +1740,8 @@
 
 }
 
-extern void rtl_time_init(void);
-__initfunc( void rtl_init(void)){
+void rtl_init(void)
+{
        DeclareAndInit(cpu_id);
 #ifdef CONFIG_RTL
        printk("RTL start");
--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/

Reply via email to