Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Apr 2001 08:36:24 +1000 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        Doug Rabson <dfr@nlsystems.com>, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/alpha/alpha exception.s
Message-ID:  <Pine.BSF.4.21.0104190822510.4689-100000@besplex.bde.org>
In-Reply-To: <XFMail.010418125546.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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.

Bruce


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?Pine.BSF.4.21.0104190822510.4689-100000>