Skip site navigation (1)Skip section navigation (2)
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 message


help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199809032149.RAA20695>