Date: Thu, 22 Feb 2001 11:17:02 -0800 (PST) From: John Baldwin <jhb@FreeBSD.org> To: John Baldwin <jhb@FreeBSD.org> Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org, Doug Rabson <dfr@nlsystems.com> Subject: Re: cvs commit: src/sys/alpha/alpha swtch.s Message-ID: <XFMail.010222111702.jhb@FreeBSD.org> In-Reply-To: <XFMail.010222111136.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 22-Feb-01 John Baldwin wrote: > > On 22-Feb-01 Doug Rabson wrote: >> On Thu, 22 Feb 2001, John Baldwin wrote: >> >>> >>> On 22-Feb-01 Doug Rabson wrote: >>> > >>> > That seems like a good direction to take. >>> >>> Oops, bit too hasty. There is one remaining MD portion in the alpha >>> ast() that the ia64 ast() has inherited, we set the p->p_md.md_tf field >>> to point to the trapframe passed in to ast(). Do you know what it is used >>> for? >> >> Its used in various places to get at the original trapframe which we >> entered the kernel with. This is needed for instance in signal delivery >> and execve handling. The i386 equivalent is p_md.md_regs. >> >> I'm not sure how the i386 code gets away without setting md_regs. Perhaps >> its always set correctly be whatever happened right before the call to >> ast(). > > Well, syscall() and trap() on the alpha already setup p->p_md.md_tf. > It looks like interrupts don't set it in interrupt(), though that > could be easily fixed. syscall() and trap() on i386 setup p->p_md.md_regs. > Hmm, interrupts on i386 do _not_ set p->p_md.md_regs. I wonder if this > can lead to a bug if an ast is pending when we return from an interrupt to > userland. I.e., if a signal is pending, p->p_md.md_regs would be messed up. > ia64 sets p_md.md_tf already in both trap() and syscall() and doesn't have > interrupt handlers yet. I'll try adding setting of p->p_md.md_regs on > the x86 in ast() and see if that fixes some of the weird problems people > have reported with getting smashed stacks when the preemption on interrupt > happens. Aha, ast() was moved out of trap() on the x86 as part of the first SMPng commit, and has been broken all this time. *sigh* I'll go fix it. -- 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.010222111702.jhb>