diff options
Diffstat (limited to 'scripts/gdb/linux/vmalloc.py')
| -rw-r--r-- | scripts/gdb/linux/vmalloc.py | 56 | 
1 files changed, 29 insertions, 27 deletions
diff --git a/scripts/gdb/linux/vmalloc.py b/scripts/gdb/linux/vmalloc.py index d3c8a0274d1e..803f17371052 100644 --- a/scripts/gdb/linux/vmalloc.py +++ b/scripts/gdb/linux/vmalloc.py @@ -29,32 +29,34 @@ class LxVmallocInfo(gdb.Command):          if not constants.LX_CONFIG_MMU:              raise gdb.GdbError("Requires MMU support") -        vmap_area_list = gdb.parse_and_eval('vmap_area_list') -        for vmap_area in lists.list_for_each_entry(vmap_area_list, vmap_area_ptr_type, "list"): -            if not vmap_area['vm']: -                gdb.write("0x%x-0x%x %10d vm_map_ram\n" % (vmap_area['va_start'], vmap_area['va_end'], -                    vmap_area['va_end'] - vmap_area['va_start'])) -                continue -            v = vmap_area['vm'] -            gdb.write("0x%x-0x%x %10d" % (v['addr'], v['addr'] + v['size'], v['size'])) -            if v['caller']: -                gdb.write(" %s" % str(v['caller']).split(' ')[-1]) -            if v['nr_pages']: -                gdb.write(" pages=%d" % v['nr_pages']) -            if v['phys_addr']: -                gdb.write(" phys=0x%x" % v['phys_addr']) -            if v['flags'] & constants.LX_VM_IOREMAP: -                gdb.write(" ioremap") -            if v['flags'] & constants.LX_VM_ALLOC: -                gdb.write(" vmalloc") -            if v['flags'] & constants.LX_VM_MAP: -                gdb.write(" vmap") -            if v['flags'] & constants.LX_VM_USERMAP: -                gdb.write(" user") -            if v['flags'] & constants.LX_VM_DMA_COHERENT: -                gdb.write(" dma-coherent") -            if is_vmalloc_addr(v['pages']): -                gdb.write(" vpages") -            gdb.write("\n") +        nr_vmap_nodes = gdb.parse_and_eval('nr_vmap_nodes') +        for i in range(0, nr_vmap_nodes): +            vn = gdb.parse_and_eval('&vmap_nodes[%d]' % i) +            for vmap_area in lists.list_for_each_entry(vn['busy']['head'], vmap_area_ptr_type, "list"): +                if not vmap_area['vm']: +                    gdb.write("0x%x-0x%x %10d vm_map_ram\n" % (vmap_area['va_start'], vmap_area['va_end'], +                        vmap_area['va_end'] - vmap_area['va_start'])) +                    continue +                v = vmap_area['vm'] +                gdb.write("0x%x-0x%x %10d" % (v['addr'], v['addr'] + v['size'], v['size'])) +                if v['caller']: +                    gdb.write(" %s" % str(v['caller']).split(' ')[-1]) +                if v['nr_pages']: +                    gdb.write(" pages=%d" % v['nr_pages']) +                if v['phys_addr']: +                    gdb.write(" phys=0x%x" % v['phys_addr']) +                if v['flags'] & constants.LX_VM_IOREMAP: +                    gdb.write(" ioremap") +                if v['flags'] & constants.LX_VM_ALLOC: +                    gdb.write(" vmalloc") +                if v['flags'] & constants.LX_VM_MAP: +                    gdb.write(" vmap") +                if v['flags'] & constants.LX_VM_USERMAP: +                    gdb.write(" user") +                if v['flags'] & constants.LX_VM_DMA_COHERENT: +                    gdb.write(" dma-coherent") +                if is_vmalloc_addr(v['pages']): +                    gdb.write(" vpages") +                gdb.write("\n")  LxVmallocInfo()  | 
