Date: Thu, 3 Sep 1998 17:49:01 -0400 (EDT) From: Luoqi Chen <luoqi@watermarkgroup.com> To: smp@FreeBSD.ORG Subject: Why forward_irq is still disabled? Message-ID: <199809032149.RAA20695@lor.watermarkgroup.com>
index | next in thread | raw e-mail
While I was reading forward_irq's implementation in apic_vector.s, I noticed that it's permanently disabled irrespective of the setting of sysctl variable forward_irq_enable. The assembly code is reproduced below. Please pay attention to the emphasized `jmp' statement, the real forwarding code is actually bypassed. I'm wondering if this is intentional, or the author forgot to take the line out. -lq .text SUPERALIGN_TEXT .globl _Xforward_irq _Xforward_irq: PUSH_FRAME movl $KDSEL, %eax movl %ax, %ds /* use KERNEL data segment */ movl %ax, %es movl $0, lapic_eoi /* End Of Interrupt to APIC */ FAKE_MCOUNT(12*4(%esp)) ISR_TRYLOCK testl %eax,%eax /* Did we get the lock ? */ jz 1f /* No */ lock incl CNAME(forward_irq_hitcnt) cmpb $4, _intr_nesting_level jae 2f jmp 3f ^^^^^^^^^^ <= this bypasses the real forwarding code AVCPL_LOCK #ifdef CPL_AND_CML movl _cml, %eax #else movl _cpl, %eax #endif pushl %eax AVCPL_UNLOCK lock incb _intr_nesting_level sti pushl $0 MEXITCOUNT jmp _doreti /* Handle forwarded interrupt */ 4: lock decb _intr_nesting_level ISR_RELLOCK MEXITCOUNT addl $8, %esp POP_FRAME iret 1: lock incl CNAME(forward_irq_misscnt) call forward_irq /* Oops, we've lost the isr lock */ MEXITCOUNT POP_FRAME iret 2: lock incl CNAME(forward_irq_toodeepcnt) 3: ISR_RELLOCK MEXITCOUNT POP_FRAME iret To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the messagehelp
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199809032149.RAA20695>
