Date: Sat, 19 Jun 2010 11:19:07 -0500 From: Alan Cox <alc@cs.rice.edu> To: Juli Mallett <jmallett@FreeBSD.org> Cc: freebsd-mips@freebsd.org Subject: Re: Merging 64 bit changes to -HEAD - part 2 Message-ID: <4C1CEDFB.9070802@cs.rice.edu> In-Reply-To: <AANLkTil9mqyeWkSUzasZqwfZL4hmeIq-29FXVddc4Q33@mail.gmail.com> References: <20100617.100235.195066307596264499.imp@bsdimp.com> <AANLkTimkF47RlysFOrma0YhWNDw2w5Lcp9SB1bBoPuxW@mail.gmail.com> <4B66E1A4-E2A5-471F-9FA4-38B506797272@lakerest.net> <20100617.110504.200754750200158040.imp@bsdimp.com> <763BEBBB-B85A-44CE-BFEE-0BADEFF3C185@lakerest.net> <AANLkTikpOaSmTYVfqavtz8T4vZoHWc2CtXIy4SbLlGje@mail.gmail.com> <AANLkTimFjAoXuA-QDwXAOJ0mXK0okIME9SF3841T49zj@mail.gmail.com> <AANLkTil9mqyeWkSUzasZqwfZL4hmeIq-29FXVddc4Q33@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 6/19/2010 5:18 AM, Juli Mallett wrote: > On Fri, Jun 18, 2010 at 12:41, Neel Natu<neelnatu@gmail.com> wrote: > >> Hi JC, >> >> But what you really want here is to eliminate the intr_disable() and >> intr_restore() and keep sched_pin() and sched_unpin(). >> > Are you sure? I'm not. By disabling interrupts we only have to > ensure that the fault path on any address we might access within those > routines doesn't need to use the large memory map. This isn't > trivial, but I think we can acquire a reasonable confidence about it. > If we merely pin, we have to ensure that nothing else that can run > (including interrupts and threads that run via preemption) that would > access the large memory map — given that this includes routines like > pmap_zero_page, I think there's good reason for caution. Disabling > interrupts is more conservative, but I think rightly-so. I may be > mistaken. > You're not mistaken. See, for example, the i386 pmap_zero_page(). Pinning by itself is insufficient because a pinned thread can be preempted, and the thread that then runs (on the same processor) could call pmap_zero_page(). So, pinning must be combined with a per-processor mutex. I can imagine that blocking interrupts on mips is cheaper than the combination of pinning and a mutex. However, do you want to have interrupts blocked for the time it takes to read 4KB from DRAM and write 4KB to DRAM for pmap_copy_page()? Ultimately, that's the question that you need to answer. Alan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C1CEDFB.9070802>