From owner-freebsd-smp Mon Nov 25 11:02:44 1996 Return-Path: owner-smp Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id LAA00949 for smp-outgoing; Mon, 25 Nov 1996 11:02:44 -0800 (PST) Received: from root.com (implode.root.com [198.145.90.17]) by freefall.freebsd.org (8.7.5/8.7.3) with ESMTP id LAA00922 for ; Mon, 25 Nov 1996 11:02:22 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by root.com (8.7.6/8.6.5) with SMTP id KAA06981; Mon, 25 Nov 1996 10:58:00 -0800 (PST) Message-Id: <199611251858.KAA06981@root.com> X-Authentication-Warning: implode.root.com: Host localhost [127.0.0.1] didn't use HELO protocol To: Terry Lambert cc: peter@spinner.dialix.com (Peter Wemm), toor@dyson.iquest.net, phk@critter.tfs.com, freebsd-smp@freebsd.org Subject: Re: cvs commit: sys/i386/i386 locore.s swtch.s sys/i386/include pmap.h In-reply-to: Your message of "Mon, 25 Nov 1996 11:35:12 MST." <199611251835.LAA22875@phaeton.artisoft.com> From: David Greenman Reply-To: dg@Root.COM Date: Mon, 25 Nov 1996 10:58:00 -0800 Sender: owner-smp@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >> OBTW, easy question. Is it safe to do a: >> movl %cr3, %eax >> movl %eax, %cr3 >> .. from a non-spl-maskable interrupt handler? >> >> I'm thinking in terms of a lightning quick interprocessor interrupt to >> force all cpu's to do an invltlb(). >> >> So far as I can see from a quick scan of the code, the only real loads of >> %cr3 are during cpu_switch(), initialisation, and tlb flushes. cpu_switch() >> does it from inside cli/sti so it's safe, init code is irrelevant at this >> point, and I think the tlb flush is implicitly reentrant since it's >> not changing the register. >> >> Have I missed something? > >Why do you need to force all CPU's to do an invltlb()? > >Is this to handle bus master DMA target memory? > >Or is this for IPC? None of the above. It's needed to update/invalidate mappings during paging. -DG David Greenman Core-team/Principal Architect, The FreeBSD Project