[COMMIT osv master] loader.py: add linear_mmap command

9 views
Skip to first unread message

Commit Bot

unread,
Mar 30, 2022, 11:29:49 PM3/30/22
to osv...@googlegroups.com, Waldemar Kozaczuk
From: Waldemar Kozaczuk <jwkoz...@gmail.com>
Committer: Waldemar Kozaczuk <jwkoz...@gmail.com>
Branch: master

loader.py: add linear_mmap command

Similarly to the patch that adds new pseudo file /sys/osv/memory/linear_maps,
this one adds new loader.py command that can be used with gdb to display
same information:

(gdb) osv linear_mmap
vaddr paddr size perm memattr name
8000000 8000000 10000 rwxp dev gic_dist
8010000 8010000 10000 rwxp dev gic_cpu
9000000 9000000 1000 rwxp dev pl011
9010000 9010000 1000 rwxp dev pl031
10000000 10000000 2eff0000 rwxp dev pci_mem
3eff0000 3eff0000 10000 rwxp dev pci_io
40000000 40000000 6d3000 rwxp normal kernel
4010000000 4010000000 10000000 rwxp dev pci_cfg
ffff80000a000000 a000000 200 rwxp normal virtio_mmio_cfg
ffff80000a000200 a000200 200 rwxp normal virtio_mmio_cfg
ffff80000a000400 a000400 200 rwxp normal virtio_mmio_cfg
ffff80000a000600 a000600 200 rwxp normal virtio_mmio_cfg
ffff80000a000800 a000800 200 rwxp normal virtio_mmio_cfg
ffff80000a000a00 a000a00 200 rwxp normal virtio_mmio_cfg
ffff80000a000c00 a000c00 200 rwxp normal virtio_mmio_cfg
ffff80000a000e00 a000e00 200 rwxp normal virtio_mmio_cfg
ffff8000406d3000 406d3000 7f92d000 rwxp normal main
ffff9000406d3000 406d3000 7f92d000 rwxp normal page
ffffa000406d3000 406d3000 7f92d000 rwxp normal mempool

Signed-off-by: Waldemar Kozaczuk <jwkoz...@gmail.com>

---
diff --git a/scripts/loader.py b/scripts/loader.py
--- a/scripts/loader.py
+++ b/scripts/loader.py
@@ -1643,11 +1643,40 @@ def invoke(self, args, from_tty):
return
gdb.write('%s\n'%target)

+class osv_linear_mmap(gdb.Command):
+ def __init__(self):
+ gdb.Command.__init__(self, 'osv linear_mmap',
+ gdb.COMMAND_USER, gdb.COMPLETE_NONE)
+ def invoke(self, arg, for_tty):
+ l = str(gdb.lookup_global_symbol('mmu::linear_vma_set').value())
+ linear_vmas = re.findall('\[([0-9]+)\] = (0x[0-9a-zA-Z]+)', l)
+
+ gdb.write("%16s %16s %8s %4s %7s %s\n" % ("vaddr", "paddr", "size", "perm", "memattr", "name"))
+
+ char_ptr = gdb.lookup_type('char').pointer()
+ for desc in linear_vmas:
+ addr = desc[1]
+ vma = gdb.parse_and_eval('(struct mmu::linear_vma *)' + addr)
+
+ vaddr = vma['_virt_addr']
+ paddr = vma['_phys_addr']
+ size = vma['_size']
+ if vma['_mem_attr'] == 0:
+ memattr = 'normal'
+ else:
+ memattr = 'dev'
+ name = vma['_name'].cast(char_ptr).string()
+
+ # dispatch time ns ticks callout function
+ gdb.write("%16x %16x %8x rwxp %7s %s\n" %
+ (vaddr, paddr, size, memattr, name))
+
osv()
osv_heap()
osv_memory()
osv_waiters()
osv_mmap()
+osv_linear_mmap()
osv_vma_find()
osv_zfs()
osv_syms()

Nadav Har'El

unread,
Mar 31, 2022, 8:24:29 AM3/31/22
to Waldemar Kozaczuk, Osv Dev
Wrongly-copied comment? :-)
 
+            gdb.write("%16x %16x %8x rwxp %7s %s\n" %
+                      (vaddr, paddr, size, memattr, name))
+
 osv()
 osv_heap()
 osv_memory()
 osv_waiters()
 osv_mmap()
+osv_linear_mmap()
 osv_vma_find()
 osv_zfs()
 osv_syms()

--
You received this message because you are subscribed to the Google Groups "OSv Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to osv-dev+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/0000000000002f6a2605db7b46c4%40google.com.
Reply all
Reply to author
Forward
0 new messages