From owner-svn-src-all@FreeBSD.ORG Wed Jun 2 05:01:06 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 646281065673; Wed, 2 Jun 2010 05:01:06 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-px0-f182.google.com (mail-px0-f182.google.com [209.85.212.182]) by mx1.freebsd.org (Postfix) with ESMTP id 297858FC17; Wed, 2 Jun 2010 05:01:05 +0000 (UTC) Received: by pxi7 with SMTP id 7so2945324pxi.13 for ; Tue, 01 Jun 2010 22:01:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=WNKpbCZACsKhPY6qXqxdopHUB2ZikOcuDl+DEwkzJUA=; b=SH5714qy2gH4JXlA9Xcx6Ar6/TW7qnYvqVDXhNQ0EzO2e/nlj9Wb3b9O5RoClb9Bv/ 4WlzFovm/sKT+CiM1k6EgJQJwqvFOMCqM2Ff/8oVcwcGd72uAfOSHvuy7IaYy8pKBcBj Dv2KM0PffJ0Vlv6CO0X1QMVPwVNO4DX3sKB+w= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=WtvGTI78uHO8sXUis9bxaf3SJO6f66y7FnQV16y1KAq0WDfkf7YT6EPZDPzEug9/SI lX2olqrWsMFgIpsn1twiT7KEfMNUgb3SMhnh3b6PjbIViDwR/LHahwZT599qfKWnPrG+ mrtk485fLsqLgUaZwQu05S2RlekeX8dYtHR2U= MIME-Version: 1.0 Received: by 10.140.251.5 with SMTP id y5mr5831487rvh.17.1275453338673; Tue, 01 Jun 2010 21:35:38 -0700 (PDT) Received: by 10.141.4.3 with HTTP; Tue, 1 Jun 2010 21:35:38 -0700 (PDT) In-Reply-To: <4C058145.3000707@cs.rice.edu> References: <201005271005.o4RA5eVu032269@svn.freebsd.org> <4C058145.3000707@cs.rice.edu> Date: Wed, 2 Jun 2010 10:05:38 +0530 Message-ID: From: "C. Jayachandran" To: Alan Cox Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: "Jayachandran C." , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Randall Stewart Subject: Re: svn commit: r208589 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Jun 2010 05:01:06 -0000 On Wed, Jun 2, 2010 at 3:23 AM, Alan Cox wrote: > On 5/27/2010 5:05 AM, Jayachandran C. wrote: >> >> Author: jchandra >> Date: Thu May 27 10:05:40 2010 >> New Revision: 208589 >> URL: http://svn.freebsd.org/changeset/base/208589 >> >> Log: >> =A0 Call VM_WAIT in pmap_ptpgzone_allocf() if =A0M_WAITOK is set. >> =A0 Removed unused variable. >> >> =A0 Approved by: rrs (mentor) >> >> > > I'm afraid that this will work some of the time, but not all of the time. > =A0Specifically, there is no guarantee that any of the available free (or > cached) pages after the VM_WAIT will fall within the range of suitable > physical addresses. =A0Moreover, and perhaps most worrisome, is that this > function could do a lot of spinning. =A0Every time this function sleeps a= nd a > single page is freed (or cached) by someone else, this function will be > reawakened. =A0With a little bad luck, you could spin indefinitely. > > For essentially this reason, contigmalloc(), kmem_alloc_contig(), and > kmem_alloc_attr() don't use VM_WAIT, but instead a function called > vm_contig_grow_cache(). I had seen the vm_contig_grow_cache() usage, but could not use it as it was defined as a static function. I did not want to use contigmalloc()/kmem_alloc_contig() either, because the pages in that memory region are already direct mapped and setting up another mapping is not necessary. The overall idea is to allocate pages in the direct mapped region for the page table entries so that we don't take a TLB exception while accessing page tables (which is costly as MIPS has a software TLB exception handler). Can you suggest the right way to do this? I will make the changes and send a patch for approval. Thanks, JC.