Problems mapping an vm_object to a process memory space
Pekka Nikander
pekka.nikander at nomadiclab.com
Fri Mar 13 14:20:00 PDT 2009
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 <pekka.nikander at nomadiclab.com>
> 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 at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org
> "
>
More information about the freebsd-hackers
mailing list