3 messages in org.opensolaris.mdb-discuss[mdb-discuss] mdb fails to display mm...
FromSent OnAttachments
William P. TaylorAug 31, 2007 8:42 am 
Fran...@Sun.COMAug 31, 2007 8:53 am 
Bill TaylorAug 31, 2007 9:03 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[mdb-discuss] mdb fails to display mmap'ed driver memoryActions...
From:Bill Taylor (Bill@Sun.COM)
Date:Aug 31, 2007 9:03:04 am
List:org.opensolaris.mdb-discuss

Frank.Hofmann at Sun.COM wrote:

On Fri, 31 Aug 2007, William P. Taylor wrote:

My library does mmap of the InfiniBand driver. The backing memory is main memory, allocated by the InfiniBand driver via ddi_umem_alloc(). My library accesses the memory just fine, and I added printfs to dumps the addresses. My library goes into an infinite loop, and I suspend it. I run "mdb -p PID" in order to display the mmap'ed memory. I confirm the address with "$m", here's the line of interest:

BASE LIMIT SIZE NAME fffffd7ffedcc000 fffffd7ffedec000 20000

fffffd7ffedcc000/J mdb: failed to read data from target: no mapping for address

Can someone tell me how I can display this memory?

Thanks for the reply.

That address is the _KERNEL_ address. Use "mdb -k" to see it.

No, it is an amd64 _USER_ address. "mdb -k" as root on the same system while "mdb -p PID" is still running shows:

fffffd7ffedcc000/J

mdb: failed to read data from target: no mapping for address

"pmap PID" confirms my assertion of it being a _USER_ address:

FFFFFD7FFEDCC000 128K rw-s-

Maybe the "s" in "rw-s-" is of consequence, but "man pmap" just says it means "shared".

For the userspace address of the buffer, you need to look at the "pmap" output for your app, and see where it ended up.

FrankH.

-Bill