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>