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