Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Apr 2001 15:42:13 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        cvs-all@FreeBSD.org, cvs-committers@FreeBSD.org, Doug Rabson <dfr@nlsystems.com>
Subject:   Re: cvs commit: src/sys/alpha/alpha exception.s
Message-ID:  <XFMail.010418154213.jhb@FreeBSD.org>
In-Reply-To: <Pine.BSF.4.21.0104190822510.4689-100000@besplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 18-Apr-01 Bruce Evans wrote:
> On Wed, 18 Apr 2001, John Baldwin wrote:
> 
>> Ok, I've read more of exception.s and my head feels better, sort of.  The
>> problem with t7 being that we might get an interrupt after we restore the
>> registers and thus we trash the t7 right before the rti PAL call?  Hmmm.
>> I think we only need to raise the IPL just before we do the bsr to
>> exception_restore_regs(), so it would only be raised for the length of the
>> register restore and the call_pal.  I wonder if x86 has the same race
>> condition
>> with %fs.  We might need to be doing a 'cli' in doreti_exit just before we
>> pop
>> %fs.
> 
> I don't think so.  %fs is invalid at various times, including at the start
> of Xintr* for an interrupt from user mode and at the end of doreti for
> return to user mode, but it will be loaded in Xintr* if there is another
> interrupt.
> 
> OTOH, it is a bug that interrupts sometimes aren't already disabled
> when doreti_exit is reached.  ASTs must be checked for atomically with
> returning, like they used to be, so that we never return to user mode
> with an AST pending.

ast() probably should disable interrupts when it returns and it probably
doesn't.

> Bruce

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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