From owner-freebsd-hackers@FreeBSD.ORG Fri Mar 13 21:19:59 2009 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E020C106564A for ; Fri, 13 Mar 2009 21:19:59 +0000 (UTC) (envelope-from pekka.nikander@nomadiclab.com) Received: from smtp6.welho.com (smtp6.welho.com [213.243.153.40]) by mx1.freebsd.org (Postfix) with ESMTP id 9F8808FC13 for ; Fri, 13 Mar 2009 21:19:59 +0000 (UTC) (envelope-from pekka.nikander@nomadiclab.com) Received: from [192.168.1.169] (cs78165153.pp.htv.fi [62.78.165.153]) by smtp6.welho.com (Postfix) with ESMTP id D60015BC039; Fri, 13 Mar 2009 22:53:17 +0200 (EET) Message-Id: From: Pekka Nikander To: Alexej Sokolov In-Reply-To: <671bb5fc0903131118u31b5b9b6l46b5d063aee78ff0@mail.gmail.com> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Date: Fri, 13 Mar 2009 22:53:17 +0200 References: <37364E21-701A-42F9-95B7-1B3386AEDE71@nomadiclab.com> <671bb5fc0903131118u31b5b9b6l46b5d063aee78ff0@mail.gmail.com> X-Mailer: Apple Mail (2.930.3) Cc: freebsd-hackers@freebsd.org Subject: Re: Problems mapping an vm_object to a process memory space X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Mar 2009 21:20:00 -0000 Hi Alexej, The actual mapping code is now at http://pastebin.com/m56a949a5 The objects in question are allocated through vm_pager_allocate with OBJT_SWAP. Note that I'm not sure when OBJ_ONEMAPPING clearing actually helps and when not -- I've more sprinkled it around the code in the hope of circumventing what I suspect is a bug. (But I also have to confess that I don't understand the internals of vm_object_deallocate well enough to really say where the bug might be, if there is one.) The code around lines 110-117 is my latest attempt to fix. The earlier version simply wired the pages. --Pekka On 13 Mar 2009, at 20:18, Alexej Sokolov wrote: > hi , > I had a problem with remapping too. Could I see your code? > here is my code, that some times on AMD64 runs wrong : > http://pastebin.com/m78da0b37 > > And now I solved the problem with remapping by using /dev/mem > device. It has mmap syscal. And it seems to be working without > problem. > > Alexej > < > > 2009/3/13 Pekka Nikander > As a part of a research project, I'm trying to build publish/ > subscribe shared memory semantics where the idea is to first map an > vm_object as read/write to a publisher's memory space, and then a > COW shadow of that later to the subscriber processes' memory space. > > I've got to the point where the code works most of the time, but at > certain scenarios (which are hard to classify and seem slightly > random) the mapping goes wrong, and either the subscriber process > has no physical mapping at the supposed address or there appears > some random page. To me it appears as if the vm_object, vm_map etc > data structures are OK, but somehow the pmaps don't get right. I'm > currently using 7.1 RELEASE on amd64, but I'm planning to try the > same on -CURRENT as soon as I get it properly ported. I even tried > calling pmap_enter_object explicitly before returning to the user > space, but it doesn't seem to help. > > Another thing is that there may be some bugs related > OBJ_ONEMAPPING. We need to explicitly clear it at places, and > sometimes artificially bump up the vm_object reference count to > avoid code related to ONEMAPPING from trashing the object's > mappings. Is this a known issue? > > Any advice? > > --Pekka Nikander > > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org > " >