Kuan-Ying Lee
852622bf36
scripts/gdb/vmalloc: add vmallocinfo support
...
This GDB script shows the vmallocinfo for user to
analyze the vmalloc memory usage.
Example output:
0xffff800008000000-0xffff800008009000 36864 <start_kernel+372> pages=8 vmalloc
0xffff800008009000-0xffff80000800b000 8192 <gicv2m_init_one+400> phys=0x8020000 ioremap
0xffff80000800b000-0xffff80000800d000 8192 <bpf_prog_alloc_no_stats+72> pages=1 vmalloc
0xffff80000800d000-0xffff80000800f000 8192 <bpf_jit_alloc_exec+16> pages=1 vmalloc
0xffff800008010000-0xffff80000ad30000 47316992 <paging_init+452> phys=0x40210000 vmap
0xffff80000ad30000-0xffff80000c1c0000 21561344 <paging_init+556> phys=0x42f30000 vmap
0xffff80000c1c0000-0xffff80000c370000 1769472 <paging_init+592> phys=0x443c0000 vmap
0xffff80000c370000-0xffff80000de90000 28442624 <paging_init+692> phys=0x44570000 vmap
0xffff80000de90000-0xffff80000f4c1000 23269376 <paging_init+788> phys=0x46090000 vmap
0xffff80000f4c1000-0xffff80000f4c3000 8192 <gen_pool_add_owner+112> pages=1 vmalloc
0xffff80000f4c3000-0xffff80000f4c5000 8192 <gen_pool_add_owner+112> pages=1 vmalloc
0xffff80000f4c5000-0xffff80000f4c7000 8192 <gen_pool_add_owner+112> pages=1 vmalloc
Link: https://lkml.kernel.org/r/20230808083020.22254-9-Kuan-Ying.Lee@mediatek.com
Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com >
Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Cc: Chinwen Chang <chinwen.chang@mediatek.com >
Cc: Matthias Brugger <matthias.bgg@gmail.com >
Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-08-21 13:46:23 -07:00
Kuan-Ying Lee
79939c4a79
scripts/gdb/slab: add slab support
...
Add 'lx-slabinfo' and 'lx-slabtrace' support.
This GDB scripts print slabinfo and slabtrace for user
to analyze slab memory usage.
Example output like below:
(gdb) lx-slabinfo
Pointer | name | active_objs | num_objs | objsize | objperslab | pagesperslab
------------------ | -------------------- | ------------ | ------------ | -------- | ----------- | -------------
0xffff0000c59df480 | p9_req_t | 0 | 0 | 280 | 29 | 2
0xffff0000c59df280 | isp1760_qh | 0 | 0 | 160 | 25 | 1
0xffff0000c59df080 | isp1760_qtd | 0 | 0 | 184 | 22 | 1
0xffff0000c59dee80 | isp1760_urb_listite | 0 | 0 | 136 | 30 | 1
0xffff0000c59dec80 | asd_sas_event | 0 | 0 | 256 | 32 | 2
0xffff0000c59dea80 | sas_task | 0 | 0 | 448 | 36 | 4
0xffff0000c59de880 | bio-120 | 18 | 21 | 384 | 21 | 2
0xffff0000c59de680 | io_kiocb | 0 | 0 | 448 | 36 | 4
0xffff0000c59de480 | bfq_io_cq | 0 | 0 | 1504 | 21 | 8
0xffff0000c59de280 | bfq_queue | 0 | 0 | 720 | 22 | 4
0xffff0000c59de080 | mqueue_inode_cache | 1 | 28 | 1152 | 28 | 8
0xffff0000c59dde80 | v9fs_inode_cache | 0 | 0 | 832 | 39 | 8
...
(gdb) lx-slabtrace --cache_name kmalloc-1k
63 <tty_register_device_attr+508> waste=16632/264 age=46856/46871/46888 pid=1 cpus=6,
0xffff800008720240 <__kmem_cache_alloc_node+236>: mov x22, x0
0xffff80000862a4fc <kmalloc_trace+64>: mov x21, x0
0xffff8000095d086c <tty_register_device_attr+508>: mov x19, x0
0xffff8000095d0f98 <tty_register_driver+704>: cmn x0, #0x1, lsl #12
0xffff80000c2677e8 <vty_init+620>: Cannot access memory at address 0xffff80000c2677e8
0xffff80000c265a10 <tty_init+276>: Cannot access memory at address 0xffff80000c265a10
0xffff80000c26d3c4 <chr_dev_init+204>: Cannot access memory at address 0xffff80000c26d3c4
0xffff8000080161d4 <do_one_initcall+176>: mov w21, w0
0xffff80000c1c1b58 <kernel_init_freeable+956>: Cannot access memory at address 0xffff80000c1c1b58
0xffff80000acf1334 <kernel_init+36>: bl 0xffff8000081ac040 <async_synchronize_full>
0xffff800008018d00 <ret_from_fork+16>: mrs x28, sp_el0
(gdb) lx-slabtrace --cache_name kmalloc-1k --free
428 <not-available> age=4294958600 pid=0 cpus=0,
Link: https://lkml.kernel.org/r/20230808083020.22254-8-Kuan-Ying.Lee@mediatek.com
Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com >
Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Cc: Chinwen Chang <chinwen.chang@mediatek.com >
Cc: Matthias Brugger <matthias.bgg@gmail.com >
Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-08-21 13:46:23 -07:00
Kuan-Ying Lee
2f060190ef
scripts/gdb/page_owner: add page owner support
...
This GDB script prints page owner information for user to analyze the
memory usage or memory corruption issue.
Example output from an aarch64 system:
(gdb) lx-dump-page-owner --pfn 655360
page_owner tracks the page as allocated
Page last allocated via order 0, gfp_mask: 0x8, pid: 1, tgid: 1 ("swapper/0\000\000\000\000\000\000"), ts 1295948880 ns, free_ts 1011852016 ns
PFN: 655360, Flags: 0x3fffc0000000000
0xffff8000086ab964 <post_alloc_hook+452>: ldp x19, x20, [sp, #16 ]
0xffff80000862e4e0 <split_map_pages+344>: cbnz w22, 0xffff80000862e57c <split_map_pages+500>
0xffff8000086370c4 <isolate_freepages_range+556>: mov x0, x27
0xffff8000086bc1cc <alloc_contig_range+808>: mov x24, x0
0xffff80000877d6d8 <cma_alloc+772>: mov w1, w0
0xffff8000082c8d18 <dma_alloc_from_contiguous+104>: ldr x19, [sp, #16 ]
0xffff8000082ce0e8 <atomic_pool_expand+208>: mov x19, x0
0xffff80000c1e41b4 <__dma_atomic_pool_init+172>: Cannot access memory at address 0xffff80000c1e41b4
0xffff80000c1e4298 <dma_atomic_pool_init+92>: Cannot access memory at address 0xffff80000c1e4298
0xffff8000080161d4 <do_one_initcall+176>: mov w21, w0
0xffff80000c1c1b50 <kernel_init_freeable+952>: Cannot access memory at address 0xffff80000c1c1b50
0xffff80000acf87dc <kernel_init+36>: bl 0xffff8000081ab100 <async_synchronize_full>
0xffff800008018d00 <ret_from_fork+16>: mrs x28, sp_el0
page last free stack trace:
0xffff8000086a6e8c <free_unref_page_prepare+796>: mov w2, w23
0xffff8000086aee1c <free_unref_page+96>: tst w0, #0xff
0xffff8000086af3f8 <__free_pages+292>: ldp x19, x20, [sp, #16 ]
0xffff80000c1f3214 <init_cma_reserved_pageblock+220>: Cannot access memory at address 0xffff80000c1f3214
0xffff80000c20363c <cma_init_reserved_areas+1284>: Cannot access memory at address 0xffff80000c20363c
0xffff8000080161d4 <do_one_initcall+176>: mov w21, w0
0xffff80000c1c1b50 <kernel_init_freeable+952>: Cannot access memory at address 0xffff80000c1c1b50
0xffff80000acf87dc <kernel_init+36>: bl 0xffff8000081ab100 <async_synchronize_full>
0xffff800008018d00 <ret_from_fork+16>: mrs x28, sp_el0
Link: https://lkml.kernel.org/r/20230808083020.22254-7-Kuan-Ying.Lee@mediatek.com
Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com >
Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Cc: Chinwen Chang <chinwen.chang@mediatek.com >
Cc: Matthias Brugger <matthias.bgg@gmail.com >
Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-08-21 13:46:23 -07:00
Kuan-Ying Lee
0e1b240a4b
scripts/gdb/stackdepot: add stackdepot support
...
Add support for printing the backtrace of stackdepot handle.
This is the preparation patch for dumping page_owner,
slabtrace usage.
Link: https://lkml.kernel.org/r/20230808083020.22254-6-Kuan-Ying.Lee@mediatek.com
Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com >
Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Cc: Chinwen Chang <chinwen.chang@mediatek.com >
Cc: Matthias Brugger <matthias.bgg@gmail.com >
Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-08-21 13:46:22 -07:00
Kuan-Ying Lee
eb985b5dbf
scripts/gdb/aarch64: add aarch64 page operation helper commands and configs
...
1. Move page table debugging from mm.py to pgtable.py.
2. Add aarch64 kernel config and memory constants value.
3. Add below aarch64 page operation helper commands.
page_to_pfn, page_to_phys, pfn_to_page, page_address,
virt_to_phys, sym_to_pfn, pfn_to_kaddr, virt_to_page.
4. Only support CONFIG_SPARSEMEM_VMEMMAP=y now.
Link: https://lkml.kernel.org/r/20230808083020.22254-5-Kuan-Ying.Lee@mediatek.com
Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com >
Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Cc: Chinwen Chang <chinwen.chang@mediatek.com >
Cc: Matthias Brugger <matthias.bgg@gmail.com >
Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-08-21 13:46:22 -07:00
Kuan-Ying Lee
4d040cbca8
scripts/gdb/utils: add common type usage
...
Since we often use 'unsigned long', 'size_t', 'usigned int'
and 'struct page', we add these common types to utils.
Link: https://lkml.kernel.org/r/20230808083020.22254-4-Kuan-Ying.Lee@mediatek.com
Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com >
Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Cc: Chinwen Chang <chinwen.chang@mediatek.com >
Cc: Matthias Brugger <matthias.bgg@gmail.com >
Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-08-21 13:46:22 -07:00
Kuan-Ying Lee
82141540c3
scripts/gdb/modules: add get module text support
...
When we get an text address from coredump and we cannot find
this address in vmlinux, it might located in kernel module.
We want to know which kernel module it located in.
This GDB scripts can help us to find the target kernel module.
(gdb) lx-getmod-by-textaddr 0xffff800002d305ac
0xffff800002d305ac is in kasan_test.ko
Link: https://lkml.kernel.org/r/20230808083020.22254-3-Kuan-Ying.Lee@mediatek.com
Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com >
Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Cc: Chinwen Chang <chinwen.chang@mediatek.com >
Cc: Matthias Brugger <matthias.bgg@gmail.com >
Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-08-21 13:46:22 -07:00
Kuan-Ying Lee
11f956538c
scripts/gdb/symbols: add specific ko module load command
...
Patch series "Add GDB memory helper commands", v2.
I've created some GDB commands I think useful when I debug some memory
issues and kernel module issue.
For memory issue, we would like to get slabinfo, slabtrace, page_owner and
vmallocinfo to debug the memory issues.
For module issue, we would like to query kernel module name when we get a
module text address and load module symbol by specific path.
Patch 1-2:
- Add kernel module related command.
Patch 3-5:
- Prepares for the memory-related command.
Patch 6-8:
- Add memory-related commands.
This patch (of 8):
Add lx-symbols <ko_path> command to support add specific
ko module.
Example output like below:
(gdb) lx-symbols mm/kasan/kasan_test.ko
loading @0xffff800002d30000: mm/kasan/kasan_test.ko
Link: https://lkml.kernel.org/r/20230808083020.22254-1-Kuan-Ying.Lee@mediatek.com
Link: https://lkml.kernel.org/r/20230808083020.22254-2-Kuan-Ying.Lee@mediatek.com
Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com >
Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Cc: Chinwen Chang <chinwen.chang@mediatek.com >
Cc: Matthias Brugger <matthias.bgg@gmail.com >
Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-08-21 13:46:21 -07:00
Kuan-Ying Lee
fb40b05373
scripts/gdb: fix 'lx-lsmod' show the wrong size
...
'lsmod' shows total core layout size, so we need to sum up all the
sections in core layout in gdb scripts.
/ # lsmod
kasan_test 200704 0 - Live 0xffff80007f640000
Before patch:
(gdb) lx-lsmod
Address Module Size Used by
0xffff80007f640000 kasan_test 36864 0
After patch:
(gdb) lx-lsmod
Address Module Size Used by
0xffff80007f640000 kasan_test 200704 0
Link: https://lkml.kernel.org/r/20230710092852.31049-1-Kuan-Ying.Lee@mediatek.com
Fixes: b4aff7513d ("scripts/gdb: use mem instead of core_layout to get the module address")
Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com >
Reviewed-by: Pankaj Raghav <p.raghav@samsung.com >
Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Cc: Chinwen Chang <chinwen.chang@mediatek.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: Luis Chamberlain <mcgrof@kernel.org >
Cc: Matthias Brugger <matthias.bgg@gmail.com >
Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-08-18 10:18:58 -07:00
Koudai Iwahori
1677bf7681
scripts/gdb: fix lx-symbols command for arm64 LLVM
...
lx-symbols assumes that module's .text sections is located at
`module->mem[MOD_TEXT].base` and passes it to add-symbol-file command.
However, .text section follows after .plt section in modules built by LLVM
toolchain for arm64 target. Symbol addresses are skewed in GDB.
Fix this issue by using the address of .text section stored in
`module->sect_attrs`.
Link: https://lkml.kernel.org/r/20230801121052.2475183-1-koudai@google.com
Signed-off-by: Koudai Iwahori <koudai@google.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-08-18 10:18:58 -07:00
Florian Fainelli
6a59cb5158
scripts/gdb: fix SB_* constants parsing
...
--0000000000009a0c9905fd9173ad
Content-Transfer-Encoding: 8bit
After f15afbd34d ("fs: fix undefined behavior in bit shift for
SB_NOUSER") the constants were changed from plain integers which
LX_VALUE() can parse to constants using the BIT() macro which causes the
following:
Reading symbols from build/linux-custom/vmlinux...done.
Traceback (most recent call last):
File "/home/fainelli/work/buildroot/output/arm64/build/linux-custom/vmlinux-gdb.py", line 25, in <module>
import linux.constants
File "/home/fainelli/work/buildroot/output/arm64/build/linux-custom/scripts/gdb/linux/constants.py", line 5
LX_SB_RDONLY = ((((1UL))) << (0))
Use LX_GDBPARSED() which does not suffer from that issue.
f15afbd34d ("fs: fix undefined behavior in bit shift for SB_NOUSER")
Link: https://lkml.kernel.org/r/20230607221337.2781730-1-florian.fainelli@broadcom.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com >
Acked-by: Christian Brauner <brauner@kernel.org >
Cc: Hao Ge <gehao@kylinos.cn >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: Luis Chamberlain <mcgrof@kernel.org >
Cc: Pankaj Raghav <p.raghav@samsung.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-06-19 13:19:32 -07:00
Linus Torvalds
33afd4b763
Merge tag 'mm-nonmm-stable-2023-04-27-16-01' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
...
Pull non-MM updates from Andrew Morton:
"Mainly singleton patches all over the place.
Series of note are:
- updates to scripts/gdb from Glenn Washburn
- kexec cleanups from Bjorn Helgaas"
* tag 'mm-nonmm-stable-2023-04-27-16-01' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (50 commits)
mailmap: add entries for Paul Mackerras
libgcc: add forward declarations for generic library routines
mailmap: add entry for Oleksandr
ocfs2: reduce ioctl stack usage
fs/proc: add Kthread flag to /proc/$pid/status
ia64: fix an addr to taddr in huge_pte_offset()
checkpatch: introduce proper bindings license check
epoll: rename global epmutex
scripts/gdb: add GDB convenience functions $lx_dentry_name() and $lx_i_dentry()
scripts/gdb: create linux/vfs.py for VFS related GDB helpers
uapi/linux/const.h: prefer ISO-friendly __typeof__
delayacct: track delays from IRQ/SOFTIRQ
scripts/gdb: timerlist: convert int chunks to str
scripts/gdb: print interrupts
scripts/gdb: raise error with reduced debugging information
scripts/gdb: add a Radix Tree Parser
lib/rbtree: use '+' instead of '|' for setting color.
proc/stat: remove arch_idle_time()
checkpatch: check for misuse of the link tags
checkpatch: allow Closes tags with links
...
2023-04-27 19:57:00 -07:00
Glenn Washburn
5a10562bde
scripts/gdb: add GDB convenience functions $lx_dentry_name() and $lx_i_dentry()
...
$lx_dentry_name() generates a full VFS path from a given dentry pointer,
and $lx_i_dentry() returns the dentry pointer associated with the given
inode pointer, if there is one.
Link: https://lkml.kernel.org/r/c9a5ad8efbfbd2cc6559e082734eed7628f43a16.1677631565.git.development@efficientek.com
Signed-off-by: Glenn Washburn <development@efficientek.com >
Cc: Alexander Viro <viro@zeniv.linux.org.uk >
Cc: Antonio Borneo <antonio.borneo@foss.st.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: John Ogness <john.ogness@linutronix.de >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: Petr Mladek <pmladek@suse.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-18 16:39:35 -07:00
Glenn Washburn
f4efbdaf59
scripts/gdb: create linux/vfs.py for VFS related GDB helpers
...
Patch series "GDB VFS utils".
I've created a couple GDB convenience functions that I found useful when
debugging some VFS issues and figure others might find them useful. For
instance, they are useful in setting conditional breakpoints on VFS
functions where you only care if the dentry path is a certain value. I
took the opportunity to create a new "vfs" python module to give VFS
related utilities a home.
This patch (of 2):
This will allow for more VFS specific GDB helpers to be collected in one
place. Move utils.dentry_name into the vfs modules. Also a local
variable in proc.py was changed from vfs to mnt to prevent a naming
collision with the new vfs module.
[akpm@linux-foundation.org: add SPDX-License-Identifier]
Link: https://lkml.kernel.org/r/cover.1677631565.git.development@efficientek.com
Link: https://lkml.kernel.org/r/7bba4c065a8c2c47f1fc5b03a7278005b04db251.1677631565.git.development@efficientek.com
Signed-off-by: Glenn Washburn <development@efficientek.com >
Cc: Alexander Viro <viro@zeniv.linux.org.uk >
Cc: Antonio Borneo <antonio.borneo@foss.st.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: John Ogness <john.ogness@linutronix.de >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: Petr Mladek <pmladek@suse.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-18 16:39:34 -07:00
Amjad Ouled-Ameur
29692fc92c
scripts/gdb: timerlist: convert int chunks to str
...
join() expects strings but integers are given.
Convert chunks list to strings before passing it to join()
Link: https://lkml.kernel.org/r/20230406221217.1585486-4-f.fainelli@gmail.com
Signed-off-by: Amjad Ouled-Ameur <aouledameur@baylibre.com >
Signed-by: Florian Fainelli <f.fainelli@gmail.com >
Tested-by: Florian Fainelli <f.fainelli@gmail.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-18 16:39:34 -07:00
Florian Fainelli
b0969d7687
scripts/gdb: print interrupts
...
This GDB script prints the interrupts in the system in the same way that
/proc/interrupts does. This does include the architecture specific part
done by arch_show_interrupts() for x86, ARM, ARM64 and MIPS. Example
output from an ARM64 system:
(gdb) lx-interruptlist
CPU0 CPU1 CPU2 CPU3
10: 3167 1225 1276 2629 GICv2 30 Level arch_timer
13: 0 0 0 0 GICv2 36 Level arm-pmu
14: 0 0 0 0 GICv2 37 Level arm-pmu
15: 0 0 0 0 GICv2 38 Level arm-pmu
16: 0 0 0 0 GICv2 39 Level arm-pmu
28: 0 0 0 0 interrupt-controller@8410640 5 Edge brcmstb-gpio-wake
30: 125 0 0 0 GICv2 128 Level ttyS0
31: 0 0 0 0 interrupt-controller@8416000 0 Level mspi_done
32: 0 0 0 0 interrupt-controller@8410640 3 Edge brcmstb-waketimer
33: 0 0 0 0 interrupt-controller@8418580 8 Edge brcmstb-waketimer-rtc
34: 872 0 0 0 GICv2 230 Level brcm_scmi@0
35: 0 0 0 0 interrupt-controller@8410640 10 Edge 8d0f200.usb-phy
37: 0 0 0 0 GICv2 97 Level PCIe PME
42: 0 0 0 0 GICv2 145 Level xhci-hcd:usb1
43: 94 0 0 0 GICv2 71 Level mmc1
44: 0 0 0 0 GICv2 70 Level mmc0
IPI0: 23 666 154 98 Rescheduling interrupts
IPI1: 247 1053 1701 634 Function call interrupts
IPI2: 0 0 0 0 CPU stop interrupts
IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts
IPI4: 0 0 0 0 Timer broadcast interrupts
IPI5: 7 9 5 0 IRQ work interrupts
IPI6: 0 0 0 0 CPU wake-up interrupts
ERR: 0
Link: https://lkml.kernel.org/r/20230406220451.1583239-1-f.fainelli@gmail.com
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-18 16:39:33 -07:00
Florian Fainelli
8af055ae25
scripts/gdb: raise error with reduced debugging information
...
If CONFIG_DEBUG_INFO_REDUCED is enabled in the kernel configuration, we
will typically not be able to load vmlinux-gdb.py and will fail with:
Traceback (most recent call last):
File "/home/fainelli/work/buildroot/output/arm64/build/linux-custom/vmlinux-gdb.py", line 25, in <module>
import linux.utils
File "/home/fainelli/work/buildroot/output/arm64/build/linux-custom/scripts/gdb/linux/utils.py", line 131, in <module>
atomic_long_counter_offset = atomic_long_type.get_type()['counter'].bitpos
KeyError: 'counter'
Rather be left wondering what is happening only to find out that reduced
debug information is the cause, raise an eror. This was not typically a
problem until e3c8d33e0d ("scripts/gdb: fix 'lx-dmesg' on 32 bits arch")
but it has since then.
Link: https://lkml.kernel.org/r/20230406215252.1580538-1-f.fainelli@gmail.com
Fixes: e3c8d33e0d ("scripts/gdb: fix 'lx-dmesg' on 32 bits arch")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com >
Cc: Antonio Borneo <antonio.borneo@foss.st.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: John Ogness <john.ogness@linutronix.de >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: Petr Mladek <pmladek@suse.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-18 16:39:33 -07:00
Kieran Bingham
b7235d6bb5
scripts/gdb: add a Radix Tree Parser
...
Linux makes use of the Radix Tree data structure to store pointers indexed
by integer values. This structure is utilised across many structures in
the kernel including the IRQ descriptor tables, and several filesystems.
This module provides a method to lookup values from a structure given its
head node.
Usage:
The function lx_radix_tree_lookup, must be given a symbol of type struct
radix_tree_root, and an index into that tree.
The object returned is a generic integer value, and must be cast correctly
to the type based on the storage in the data structure.
For example, to print the irq descriptor in the sparse irq_desc_tree at
index 18, try the following:
(gdb) print (struct irq_desc)$lx_radix_tree_lookup(irq_desc_tree, 18)
This script previously existed under commit
e127a73d41 ("scripts/gdb: add a Radix Tree
Parser") and was later reverted with
b447e02548a3304c47b78b5e2d75a4312a8f17e1i (Revert "scripts/gdb: add a
Radix Tree Parser").
This version expects the XArray based radix tree implementation and has
been verified using QEMU/x86 on Linux 6.3-rc5.
[f.fainelli@gmail.com: revive and update for xarray implementation]
[f.fainelli@gmail.com: guard against a NULL node in the while loop]
Link: https://lkml.kernel.org/r/20230405222743.1191674-1-f.fainelli@gmail.com
Link: https://lkml.kernel.org/r/20230404214049.1016811-1-f.fainelli@gmail.com
Signed-off-by: Kieran Bingham <kieran.bingham@linaro.org >
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-18 16:39:33 -07:00
Peng Liu
8fc2a304f5
scripts/gdb: fix lx-timerlist for HRTIMER_MAX_CLOCK_BASES printing
...
HRTIMER_MAX_CLOCK_BASES is of enum type hrtimer_base_type. To print it as
an integer, HRTIMER_MAX_CLOCK_BASES should be converted first.
Link: https://lkml.kernel.org/r/TYCP286MB214640FF0E7F04AC3926A39EC6819@TYCP286MB2146.JPNP286.PROD.OUTLOOK.COM
Signed-off-by: Peng Liu <liupeng17@lenovo.com >
Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Florian Fainelli <f.fainelli@gmail.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-18 16:39:31 -07:00
Peng Liu
7362042f35
scripts/gdb: fix lx-timerlist for Python3
...
Below incompatibilities between Python2 and Python3 made lx-timerlist fail
to run under Python3.
o xrange() is replaced by range() in Python3
o bytes and str are different types in Python3
o the return value of Inferior.read_memory() is memoryview object in
Python3
akpm: cc stable so that older kernels are properly debuggable under newer
Python.
Link: https://lkml.kernel.org/r/TYCP286MB2146EE1180A4D5176CBA8AB2C6819@TYCP286MB2146.JPNP286.PROD.OUTLOOK.COM
Signed-off-by: Peng Liu <liupeng17@lenovo.com >
Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Florian Fainelli <f.fainelli@gmail.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: <stable@vger.kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-18 16:39:31 -07:00
Peng Liu
747cd84f67
scripts/gdb: fix lx-timerlist for struct timequeue_head change
...
commit 511885d706 ("lib/timerqueue: Rely on rbtree semantics for next
timer") changed struct timerqueue_head, and so print_active_timers()
should be changed accordingly with its way to interpret the structure.
Link: https://lkml.kernel.org/r/TYCP286MB21463BD277330B26DDC18903C6819@TYCP286MB2146.JPNP286.PROD.OUTLOOK.COM
Signed-off-by: Peng Liu <liupeng17@lenovo.com >
Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: Florian Fainelli <f.fainelli@gmail.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-18 16:39:31 -07:00
Pankaj Raghav
b4aff7513d
scripts/gdb: use mem instead of core_layout to get the module address
...
commit ac3b432839 ("module: replace module_layout with module_memory")
changed the struct module data structure from module_layout to
module_memory. The core_layout member which is used while loading
modules are not available anymore leading to the following error while
running gdb:
(gdb) lx-symbols
loading vmlinux
Python Exception <class 'gdb.error'>: There is no member named core_layout.
Error occurred in Python: There is no member named core_layout.
Replace core_layout with its new counterpart mem[MOD_TEXT].
Fixes: ac3b432839 ("module: replace module_layout with module_memory")
Signed-off-by: Pankaj Raghav <p.raghav@samsung.com >
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org >
2023-04-13 14:03:25 -07:00
Florian Fainelli
f19c3c2959
scripts/gdb: bail early if there are no generic PD
...
Avoid generating an exception if there are no generic power domain(s)
registered:
(gdb) lx-genpd-summary
domain status children
/device runtime status
----------------------------------------------------------------------
Python Exception <class 'gdb.error'>: No symbol "gpd_list" in current context.
Error occurred in Python: No symbol "gpd_list" in current context.
(gdb) quit
[f.fainelli@gmail.com: correctly invoke gdb_eval_or_none]
Link: https://lkml.kernel.org/r/20230327185746.3856407-1-f.fainelli@gmail.com
Link: https://lkml.kernel.org/r/20230323231659.3319941-1-f.fainelli@gmail.com
Fixes: 8207d4a88e ("scripts/gdb: add lx-genpd-summary command")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: Leonard Crestez <leonard.crestez@nxp.com >
Cc: Stephen Boyd <sboyd@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-08 13:45:38 -07:00
Florian Fainelli
1d7adbc74c
scripts/gdb: bail early if there are no clocks
...
Avoid generating an exception if there are no clocks registered:
(gdb) lx-clk-summary
enable prepare protect
clock count count count rate
------------------------------------------------------------------------
Python Exception <class 'gdb.error'>: No symbol "clk_root_list" in
current context.
Error occurred in Python: No symbol "clk_root_list" in current context.
Link: https://lkml.kernel.org/r/20230323225246.3302977-1-f.fainelli@gmail.com
Fixes: d1e9710b63 ("scripts/gdb: initial clk support: lx-clk-summary")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com >
Cc: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: Leonard Crestez <leonard.crestez@nxp.com >
Cc: Stephen Boyd <sboyd@kernel.org >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-08 13:45:38 -07:00
Glenn Washburn
6d51363d53
scripts/gdb: support getting current task struct in UML
...
A running x86 UML kernel reports with architecture "i386:x86-64" as it is
a sub-architecture. However, a difference with bare-metal x86 kernels is
in how it manages tasks and the current task struct. To identify that the
inferior is a UML kernel and not bare-metal, check for the existence of
the UML specific symbol "cpu_tasks" which contains the current task
struct.
Link: https://lkml.kernel.org/r/b839d611e2906ccef2725c34d8e353fab35fe75e.1677469905.git.development@efficientek.com
Signed-off-by: Glenn Washburn <development@efficientek.com >
Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com >
Cc: Anton Ivanov <anton.ivanov@kot-begemot.co.uk >
Cc: Johannes Berg <johannes@sipsolutions.net >
Cc: Kieran Bingham <kbingham@kernel.org >
Cc: Richard Weinberger <richard@nod.at >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
2023-04-08 13:45:37 -07:00