All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ivan T. Ivanov" <iivanov@suse.de>
To: Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	"Madhavan T . Venkataraman" <madvenka@linux.microsoft.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, "Ivan T. Ivanov" <iivanov@suse.de>
Subject: [PATCH 0/1] arm64: Add stack unwinder unit tests
Date: Fri, 24 Jun 2022 17:09:59 +0300	[thread overview]
Message-ID: <20220624141000.88120-1-iivanov@suse.de> (raw)

Hi,

Here is my initial arm64 unwinder test support. Code is based on s390
unwinder tests, while errors introduced are mine. I am hopping that it
will be useful for testing and validating upcoming arm64
arch_stack_walk_reliable() support.

This patch is was tested on top of latest Madhavan work [1].

As expected unwinding trough IRQ fails. Here is the output of current
statue of affair:

# modprobe test_unwind
[   14.905945]     # Subtest: test_unwind
[   14.905948]     1..1
[   14.905949]         # Subtest: test_unwind_flags
[   14.906243]         ok 1 - UWM_DEFAULT
[   14.906375]         ok 2 - UWM_REGS
[   14.906902]         ok 3 - UWM_CALLER
[   14.907010]         ok 4 - UWM_CALLER | UWM_REGS
[   14.907220]         ok 5 - UWM_THREAD
[   14.907445]         ok 6 - UWM_THREAD | UWM_CALLER
[   14.912600]     # test_unwind_flags:  test_unwind+0x70/0x280 [test_unwind]
[   14.912602]     # test_unwind_flags:  unwindme_func4+0x64/0x260 [test_unwind]
[   14.912604]     # test_unwind_flags:  unwindme_func3+0x58/0x80 [test_unwind]
[   14.912605]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   14.912606]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   14.912607]     # test_unwind_flags:  unwindme_timer_fn+0x38/0x54 [test_unwind]
[   14.912608]     # test_unwind_flags:  call_timer_fn+0x38/0x1e0
[   14.912609]     # test_unwind_flags:  run_timer_softirq+0x500/0x550
[   14.912610]     # test_unwind_flags:  __do_softirq+0x124/0x3bc
[   14.912611]     # test_unwind_flags:  irq_exit_rcu+0xf0/0x110
[   14.912611]     # test_unwind_flags:  el1_interrupt+0x3c/0x70
[   14.912612]     # test_unwind_flags:  el1h_64_irq_handler+0x18/0x28
[   14.912612]     # test_unwind_flags:  el1h_64_irq+0x64/0x68
[   14.912613]     # test_unwind_flags:  arch_cpu_idle+0x18/0x28
[   14.912614]     # test_unwind_flags:  default_idle_call+0x6c/0x1d0
[   14.912614]     # test_unwind_flags:  do_idle+0x1f0/0x290
[   14.912615]     # test_unwind_flags:  cpu_startup_entry+0x30/0x38
[   14.912615]     # test_unwind_flags:  kernel_init+0x0/0x140
[   14.912616]     # test_unwind_flags:  arch_post_acpi_subsys_init+0x0/0x28
[   14.912617]     # test_unwind_flags:  start_kernel+0x6dc/0x718
[   14.912618]     # test_unwind_flags:  __primary_switched+0xc0/0xc8
[   14.912618]     # test_unwind_flags:
[   14.912644]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:501
[   14.912644]     Expected 0 == test_unwind_irq(&u), but
[   14.912644]         test_unwind_irq(&u) == -22
[   14.912656]         not ok 7 - UWM_IRQ
[   14.924625]     # test_unwind_flags:  unwindme_func4+0xa0/0x260 [test_unwind]
[   14.924630]     # test_unwind_flags:  unwindme_func3+0x58/0x80 [test_unwind]
[   14.924632]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   14.924634]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   14.924636]     # test_unwind_flags:  unwindme_timer_fn+0x38/0x54 [test_unwind]
[   14.924638]     # test_unwind_flags:  call_timer_fn+0x38/0x1e0
[   14.924639]     # test_unwind_flags:  run_timer_softirq+0x500/0x550
[   14.924641]     # test_unwind_flags:  __do_softirq+0x124/0x3bc
[   14.924643]     # test_unwind_flags:  irq_exit_rcu+0xf0/0x110
[   14.924645]     # test_unwind_flags:  el1_interrupt+0x3c/0x70
[   14.924646]     # test_unwind_flags:  el1h_64_irq_handler+0x18/0x28
[   14.924647]     # test_unwind_flags:  el1h_64_irq+0x64/0x68
[   14.924648]     # test_unwind_flags:  arch_cpu_idle+0x18/0x28
[   14.924649]     # test_unwind_flags:  default_idle_call+0x6c/0x1d0
[   14.924650]     # test_unwind_flags:  do_idle+0x1f0/0x290
[   14.924651]     # test_unwind_flags:  cpu_startup_entry+0x30/0x38
[   14.924653]     # test_unwind_flags:  kernel_init+0x0/0x140
[   14.924654]     # test_unwind_flags:  arch_post_acpi_subsys_init+0x0/0x28
[   14.924655]     # test_unwind_flags:  start_kernel+0x6dc/0x718
[   14.924656]     # test_unwind_flags:  __primary_switched+0xc0/0xc8
[   14.924657]     # test_unwind_flags:
[   14.924677]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:501
[   14.924677]     Expected 0 == test_unwind_irq(&u), but
[   14.924677]         test_unwind_irq(&u) == -22
[   14.924724]         not ok 8 - UWM_IRQ | UWM_REGS
[   14.936710]     # test_unwind_flags:  test_unwind+0x70/0x280 [test_unwind]
[   14.936717]     # test_unwind_flags:  unwindme_func4+0x64/0x260 [test_unwind]
[   14.936720]     # test_unwind_flags:  unwindme_func3+0x58/0x80 [test_unwind]
[   14.936722]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   14.936725]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   14.936727]     # test_unwind_flags:  unwindme_timer_fn+0x38/0x54 [test_unwind]
[   14.936729]     # test_unwind_flags:  call_timer_fn+0x38/0x1e0
[   14.936732]     # test_unwind_flags:  run_timer_softirq+0x500/0x550
[   14.936734]     # test_unwind_flags:  __do_softirq+0x124/0x3bc
[   14.936736]     # test_unwind_flags:  irq_exit_rcu+0xf0/0x110
[   14.936738]     # test_unwind_flags:  el1_interrupt+0x3c/0x70
[   14.936739]     # test_unwind_flags:  el1h_64_irq_handler+0x18/0x28
[   14.936741]     # test_unwind_flags:  el1h_64_irq+0x64/0x68
[   14.936743]     # test_unwind_flags:  arch_cpu_idle+0x18/0x28
[   14.936744]     # test_unwind_flags:  default_idle_call+0x6c/0x1d0
[   14.936746]     # test_unwind_flags:  do_idle+0x1f0/0x290
[   14.936748]     # test_unwind_flags:  cpu_startup_entry+0x30/0x38
[   14.936749]     # test_unwind_flags:  secondary_start_kernel+0x198/0x1c8
[   14.936751]     # test_unwind_flags:  __secondary_switched+0xa0/0xa4
[   14.936753]     # test_unwind_flags:
[   14.936839]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:501
[   14.936839]     Expected 0 == test_unwind_irq(&u), but
[   14.936839]         test_unwind_irq(&u) == -22
[   14.936874]         not ok 9 - UWM_IRQ | UWM_CALLER
[   14.944623]     # test_unwind_flags:  unwindme_func3+0x3c/0x80 [test_unwind]
[   14.944628]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   14.944631]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   14.944633]     # test_unwind_flags:  unwindme_timer_fn+0x38/0x54 [test_unwind]
[   14.944636]     # test_unwind_flags:  call_timer_fn+0x38/0x1e0
[   14.944638]     # test_unwind_flags:  run_timer_softirq+0x500/0x550
[   14.944641]     # test_unwind_flags:  __do_softirq+0x124/0x3bc
[   14.944643]     # test_unwind_flags:  irq_exit_rcu+0xf0/0x110
[   14.944646]     # test_unwind_flags:  el1_interrupt+0x3c/0x70
[   14.944649]     # test_unwind_flags:  el1h_64_irq_handler+0x18/0x28
[   14.944650]     # test_unwind_flags:  el1h_64_irq+0x64/0x68
[   14.944652]     # test_unwind_flags:  arch_cpu_idle+0x18/0x28
[   14.944654]     # test_unwind_flags:  default_idle_call+0x6c/0x1d0
[   14.944656]     # test_unwind_flags:  do_idle+0x1f0/0x290
[   14.944657]     # test_unwind_flags:  cpu_startup_entry+0x2c/0x38
[   14.944659]     # test_unwind_flags:  secondary_start_kernel+0x198/0x1c8
[   14.944661]     # test_unwind_flags:  __secondary_switched+0xa0/0xa4
[   14.944662]     # test_unwind_flags:
[   14.944687]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:501
[   14.944687]     Expected 0 == test_unwind_irq(&u), but
[   14.944687]         test_unwind_irq(&u) == -22
[   14.944737]         not ok 10 - UWM_IRQ | UWM_CALLER | UWM_REGS
[   14.945009]         ok 11 - UWM_REGS
[   14.945174]         ok 12 - UWM_KPROBE_ON_FTRACE
[   14.945299]         ok 13 - UWM_KPROBE_ON_FTRACE | UWM_REGS
[   14.946894]     # test_unwind_flags:  test_unwind+0x70/0x280 [test_unwind]
[   14.946902]     # test_unwind_flags:  test_unwind_ftrace_handler+0x28/0x40 [test_unwind]
[   14.946904]     # test_unwind_flags:  arch_ftrace_ops_list_func+0xd8/0x1b0
[   14.946906]     # test_unwind_flags:  ftrace_call+0x4/0x2c
[   14.946908]     # test_unwind_flags:  test_unwind_ftraced_func+0x8/0x28 [test_unwind]
[   14.946910]     # test_unwind_flags:  unwindme_func4+0x1b4/0x260 [test_unwind]
[   14.946912]     # test_unwind_flags:  unwindme_func3+0x58/0x80 [test_unwind]
[   14.946915]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   14.946917]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   14.946918]     # test_unwind_flags:  test_unwind_flags+0x5c/0x288 [test_unwind]
[   14.946920]     # test_unwind_flags:  kunit_try_run_case+0x58/0xc0 [kunit]
[   14.946921]     # test_unwind_flags:  kunit_generic_run_threadfn_adapter+0x28/0x38 [kunit]
[   14.946923]     # test_unwind_flags:  kthread+0x118/0x128
[   14.946924]     # test_unwind_flags:  ret_from_fork+0x10/0x20
[   14.946925]     # test_unwind_flags:
[   15.104639]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:503
[   15.104639]     Expected 0 == unwindme_func1(&u), but
[   15.104639]         unwindme_func1(&u) == -22
[   15.104691]         not ok 14 - UWM_FTRACE
[   15.240652]         ok 15 - UWM_FTRACE | UWM_REGS
[   15.264620]         ok 16 - UWM_KRETPROBE
[   15.292603]         ok 17 - UWM_KRETPROBE | UWM_REGS
[   15.293173]     # test_unwind_flags:  test_unwind+0x70/0x280 [test_unwind]
[   15.293175]     # test_unwind_flags:  kretprobe_ret_handler+0x38/0x50 [test_unwind]
[   15.293177]     # test_unwind_flags:  __kretprobe_trampoline_handler+0xec/0x188
[   15.293178]     # test_unwind_flags:  trampoline_probe_handler+0x30/0x50
[   15.293180]     # test_unwind_flags:  __kretprobe_trampoline+0x74/0xc8
[   15.293181]     # test_unwind_flags:  test_unwind_kretprobed_func_caller+0x18/0x28 [test_unwind]
[   15.293183]     # test_unwind_flags:  test_unwind_kretprobe+0xac/0x148 [test_unwind]
[   15.293185]     # test_unwind_flags:  unwindme_func4+0xf0/0x260 [test_unwind]
[   15.293186]     # test_unwind_flags:  unwindme_func3+0x58/0x80 [test_unwind]
[   15.293187]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   15.293188]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   15.293189]     # test_unwind_flags:  test_unwind_flags+0x5c/0x288 [test_unwind]
[   15.293190]     # test_unwind_flags:  kunit_try_run_case+0x58/0xc0 [kunit]
[   15.293191]     # test_unwind_flags:  kunit_generic_run_threadfn_adapter+0x28/0x38 [kunit]
[   15.293192]     # test_unwind_flags:  kthread+0x118/0x128
[   15.293192]     # test_unwind_flags:  ret_from_fork+0x10/0x20
[   15.293193]     # test_unwind_flags:
[   15.308570]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:503
[   15.308570]     Expected 0 == unwindme_func1(&u), but
[   15.308570]         unwindme_func1(&u) == -22
[   15.308611]         not ok 18 - UWM_KRETPROBE_HANDLER
[   15.324616]         ok 19 - UWM_KRETPROBE_HANDLER | UWM_REGS
[   15.324620]     # test_unwind_flags: pass:11 fail:6 skip:2 total:19
[   15.324623]     not ok 1 - test_unwind_flags
[   15.324626] # Totals: pass:11 fail:6 skip:2 total:19
[   15.324628] not ok 1 - test_unwind

Regards,
Ivan

[1] 20220617210717.27126-1-madvenka@linux.microsoft.com

Ivan T. Ivanov (1):
  arm64: Add initial set of stack unwinder self tests

 arch/arm64/Kconfig.debug        |  12 +
 arch/arm64/kernel/Makefile      |   1 +
 arch/arm64/kernel/stacktrace.c  |  23 ++
 arch/arm64/kernel/test_unwind.c | 518 ++++++++++++++++++++++++++++++++
 include/linux/stacktrace.h      |   1 +
 5 files changed, 555 insertions(+)
 create mode 100644 arch/arm64/kernel/test_unwind.c

-- 
2.35.3


WARNING: multiple messages have this Message-ID (diff)
From: "Ivan T. Ivanov" <iivanov@suse.de>
To: Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org>
Cc: Mark Brown <broonie@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	"Madhavan T . Venkataraman" <madvenka@linux.microsoft.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, "Ivan T. Ivanov" <iivanov@suse.de>
Subject: [PATCH 0/1] arm64: Add stack unwinder unit tests
Date: Fri, 24 Jun 2022 17:09:59 +0300	[thread overview]
Message-ID: <20220624141000.88120-1-iivanov@suse.de> (raw)

Hi,

Here is my initial arm64 unwinder test support. Code is based on s390
unwinder tests, while errors introduced are mine. I am hopping that it
will be useful for testing and validating upcoming arm64
arch_stack_walk_reliable() support.

This patch is was tested on top of latest Madhavan work [1].

As expected unwinding trough IRQ fails. Here is the output of current
statue of affair:

# modprobe test_unwind
[   14.905945]     # Subtest: test_unwind
[   14.905948]     1..1
[   14.905949]         # Subtest: test_unwind_flags
[   14.906243]         ok 1 - UWM_DEFAULT
[   14.906375]         ok 2 - UWM_REGS
[   14.906902]         ok 3 - UWM_CALLER
[   14.907010]         ok 4 - UWM_CALLER | UWM_REGS
[   14.907220]         ok 5 - UWM_THREAD
[   14.907445]         ok 6 - UWM_THREAD | UWM_CALLER
[   14.912600]     # test_unwind_flags:  test_unwind+0x70/0x280 [test_unwind]
[   14.912602]     # test_unwind_flags:  unwindme_func4+0x64/0x260 [test_unwind]
[   14.912604]     # test_unwind_flags:  unwindme_func3+0x58/0x80 [test_unwind]
[   14.912605]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   14.912606]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   14.912607]     # test_unwind_flags:  unwindme_timer_fn+0x38/0x54 [test_unwind]
[   14.912608]     # test_unwind_flags:  call_timer_fn+0x38/0x1e0
[   14.912609]     # test_unwind_flags:  run_timer_softirq+0x500/0x550
[   14.912610]     # test_unwind_flags:  __do_softirq+0x124/0x3bc
[   14.912611]     # test_unwind_flags:  irq_exit_rcu+0xf0/0x110
[   14.912611]     # test_unwind_flags:  el1_interrupt+0x3c/0x70
[   14.912612]     # test_unwind_flags:  el1h_64_irq_handler+0x18/0x28
[   14.912612]     # test_unwind_flags:  el1h_64_irq+0x64/0x68
[   14.912613]     # test_unwind_flags:  arch_cpu_idle+0x18/0x28
[   14.912614]     # test_unwind_flags:  default_idle_call+0x6c/0x1d0
[   14.912614]     # test_unwind_flags:  do_idle+0x1f0/0x290
[   14.912615]     # test_unwind_flags:  cpu_startup_entry+0x30/0x38
[   14.912615]     # test_unwind_flags:  kernel_init+0x0/0x140
[   14.912616]     # test_unwind_flags:  arch_post_acpi_subsys_init+0x0/0x28
[   14.912617]     # test_unwind_flags:  start_kernel+0x6dc/0x718
[   14.912618]     # test_unwind_flags:  __primary_switched+0xc0/0xc8
[   14.912618]     # test_unwind_flags:
[   14.912644]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:501
[   14.912644]     Expected 0 == test_unwind_irq(&u), but
[   14.912644]         test_unwind_irq(&u) == -22
[   14.912656]         not ok 7 - UWM_IRQ
[   14.924625]     # test_unwind_flags:  unwindme_func4+0xa0/0x260 [test_unwind]
[   14.924630]     # test_unwind_flags:  unwindme_func3+0x58/0x80 [test_unwind]
[   14.924632]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   14.924634]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   14.924636]     # test_unwind_flags:  unwindme_timer_fn+0x38/0x54 [test_unwind]
[   14.924638]     # test_unwind_flags:  call_timer_fn+0x38/0x1e0
[   14.924639]     # test_unwind_flags:  run_timer_softirq+0x500/0x550
[   14.924641]     # test_unwind_flags:  __do_softirq+0x124/0x3bc
[   14.924643]     # test_unwind_flags:  irq_exit_rcu+0xf0/0x110
[   14.924645]     # test_unwind_flags:  el1_interrupt+0x3c/0x70
[   14.924646]     # test_unwind_flags:  el1h_64_irq_handler+0x18/0x28
[   14.924647]     # test_unwind_flags:  el1h_64_irq+0x64/0x68
[   14.924648]     # test_unwind_flags:  arch_cpu_idle+0x18/0x28
[   14.924649]     # test_unwind_flags:  default_idle_call+0x6c/0x1d0
[   14.924650]     # test_unwind_flags:  do_idle+0x1f0/0x290
[   14.924651]     # test_unwind_flags:  cpu_startup_entry+0x30/0x38
[   14.924653]     # test_unwind_flags:  kernel_init+0x0/0x140
[   14.924654]     # test_unwind_flags:  arch_post_acpi_subsys_init+0x0/0x28
[   14.924655]     # test_unwind_flags:  start_kernel+0x6dc/0x718
[   14.924656]     # test_unwind_flags:  __primary_switched+0xc0/0xc8
[   14.924657]     # test_unwind_flags:
[   14.924677]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:501
[   14.924677]     Expected 0 == test_unwind_irq(&u), but
[   14.924677]         test_unwind_irq(&u) == -22
[   14.924724]         not ok 8 - UWM_IRQ | UWM_REGS
[   14.936710]     # test_unwind_flags:  test_unwind+0x70/0x280 [test_unwind]
[   14.936717]     # test_unwind_flags:  unwindme_func4+0x64/0x260 [test_unwind]
[   14.936720]     # test_unwind_flags:  unwindme_func3+0x58/0x80 [test_unwind]
[   14.936722]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   14.936725]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   14.936727]     # test_unwind_flags:  unwindme_timer_fn+0x38/0x54 [test_unwind]
[   14.936729]     # test_unwind_flags:  call_timer_fn+0x38/0x1e0
[   14.936732]     # test_unwind_flags:  run_timer_softirq+0x500/0x550
[   14.936734]     # test_unwind_flags:  __do_softirq+0x124/0x3bc
[   14.936736]     # test_unwind_flags:  irq_exit_rcu+0xf0/0x110
[   14.936738]     # test_unwind_flags:  el1_interrupt+0x3c/0x70
[   14.936739]     # test_unwind_flags:  el1h_64_irq_handler+0x18/0x28
[   14.936741]     # test_unwind_flags:  el1h_64_irq+0x64/0x68
[   14.936743]     # test_unwind_flags:  arch_cpu_idle+0x18/0x28
[   14.936744]     # test_unwind_flags:  default_idle_call+0x6c/0x1d0
[   14.936746]     # test_unwind_flags:  do_idle+0x1f0/0x290
[   14.936748]     # test_unwind_flags:  cpu_startup_entry+0x30/0x38
[   14.936749]     # test_unwind_flags:  secondary_start_kernel+0x198/0x1c8
[   14.936751]     # test_unwind_flags:  __secondary_switched+0xa0/0xa4
[   14.936753]     # test_unwind_flags:
[   14.936839]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:501
[   14.936839]     Expected 0 == test_unwind_irq(&u), but
[   14.936839]         test_unwind_irq(&u) == -22
[   14.936874]         not ok 9 - UWM_IRQ | UWM_CALLER
[   14.944623]     # test_unwind_flags:  unwindme_func3+0x3c/0x80 [test_unwind]
[   14.944628]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   14.944631]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   14.944633]     # test_unwind_flags:  unwindme_timer_fn+0x38/0x54 [test_unwind]
[   14.944636]     # test_unwind_flags:  call_timer_fn+0x38/0x1e0
[   14.944638]     # test_unwind_flags:  run_timer_softirq+0x500/0x550
[   14.944641]     # test_unwind_flags:  __do_softirq+0x124/0x3bc
[   14.944643]     # test_unwind_flags:  irq_exit_rcu+0xf0/0x110
[   14.944646]     # test_unwind_flags:  el1_interrupt+0x3c/0x70
[   14.944649]     # test_unwind_flags:  el1h_64_irq_handler+0x18/0x28
[   14.944650]     # test_unwind_flags:  el1h_64_irq+0x64/0x68
[   14.944652]     # test_unwind_flags:  arch_cpu_idle+0x18/0x28
[   14.944654]     # test_unwind_flags:  default_idle_call+0x6c/0x1d0
[   14.944656]     # test_unwind_flags:  do_idle+0x1f0/0x290
[   14.944657]     # test_unwind_flags:  cpu_startup_entry+0x2c/0x38
[   14.944659]     # test_unwind_flags:  secondary_start_kernel+0x198/0x1c8
[   14.944661]     # test_unwind_flags:  __secondary_switched+0xa0/0xa4
[   14.944662]     # test_unwind_flags:
[   14.944687]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:501
[   14.944687]     Expected 0 == test_unwind_irq(&u), but
[   14.944687]         test_unwind_irq(&u) == -22
[   14.944737]         not ok 10 - UWM_IRQ | UWM_CALLER | UWM_REGS
[   14.945009]         ok 11 - UWM_REGS
[   14.945174]         ok 12 - UWM_KPROBE_ON_FTRACE
[   14.945299]         ok 13 - UWM_KPROBE_ON_FTRACE | UWM_REGS
[   14.946894]     # test_unwind_flags:  test_unwind+0x70/0x280 [test_unwind]
[   14.946902]     # test_unwind_flags:  test_unwind_ftrace_handler+0x28/0x40 [test_unwind]
[   14.946904]     # test_unwind_flags:  arch_ftrace_ops_list_func+0xd8/0x1b0
[   14.946906]     # test_unwind_flags:  ftrace_call+0x4/0x2c
[   14.946908]     # test_unwind_flags:  test_unwind_ftraced_func+0x8/0x28 [test_unwind]
[   14.946910]     # test_unwind_flags:  unwindme_func4+0x1b4/0x260 [test_unwind]
[   14.946912]     # test_unwind_flags:  unwindme_func3+0x58/0x80 [test_unwind]
[   14.946915]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   14.946917]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   14.946918]     # test_unwind_flags:  test_unwind_flags+0x5c/0x288 [test_unwind]
[   14.946920]     # test_unwind_flags:  kunit_try_run_case+0x58/0xc0 [kunit]
[   14.946921]     # test_unwind_flags:  kunit_generic_run_threadfn_adapter+0x28/0x38 [kunit]
[   14.946923]     # test_unwind_flags:  kthread+0x118/0x128
[   14.946924]     # test_unwind_flags:  ret_from_fork+0x10/0x20
[   14.946925]     # test_unwind_flags:
[   15.104639]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:503
[   15.104639]     Expected 0 == unwindme_func1(&u), but
[   15.104639]         unwindme_func1(&u) == -22
[   15.104691]         not ok 14 - UWM_FTRACE
[   15.240652]         ok 15 - UWM_FTRACE | UWM_REGS
[   15.264620]         ok 16 - UWM_KRETPROBE
[   15.292603]         ok 17 - UWM_KRETPROBE | UWM_REGS
[   15.293173]     # test_unwind_flags:  test_unwind+0x70/0x280 [test_unwind]
[   15.293175]     # test_unwind_flags:  kretprobe_ret_handler+0x38/0x50 [test_unwind]
[   15.293177]     # test_unwind_flags:  __kretprobe_trampoline_handler+0xec/0x188
[   15.293178]     # test_unwind_flags:  trampoline_probe_handler+0x30/0x50
[   15.293180]     # test_unwind_flags:  __kretprobe_trampoline+0x74/0xc8
[   15.293181]     # test_unwind_flags:  test_unwind_kretprobed_func_caller+0x18/0x28 [test_unwind]
[   15.293183]     # test_unwind_flags:  test_unwind_kretprobe+0xac/0x148 [test_unwind]
[   15.293185]     # test_unwind_flags:  unwindme_func4+0xf0/0x260 [test_unwind]
[   15.293186]     # test_unwind_flags:  unwindme_func3+0x58/0x80 [test_unwind]
[   15.293187]     # test_unwind_flags:  unwindme_func2+0x18/0x28 [test_unwind]
[   15.293188]     # test_unwind_flags:  unwindme_func1+0x18/0x28 [test_unwind]
[   15.293189]     # test_unwind_flags:  test_unwind_flags+0x5c/0x288 [test_unwind]
[   15.293190]     # test_unwind_flags:  kunit_try_run_case+0x58/0xc0 [kunit]
[   15.293191]     # test_unwind_flags:  kunit_generic_run_threadfn_adapter+0x28/0x38 [kunit]
[   15.293192]     # test_unwind_flags:  kthread+0x118/0x128
[   15.293192]     # test_unwind_flags:  ret_from_fork+0x10/0x20
[   15.293193]     # test_unwind_flags:
[   15.308570]     # test_unwind_flags: EXPECTATION FAILED at arch/arm64/kernel/test_unwind.c:503
[   15.308570]     Expected 0 == unwindme_func1(&u), but
[   15.308570]         unwindme_func1(&u) == -22
[   15.308611]         not ok 18 - UWM_KRETPROBE_HANDLER
[   15.324616]         ok 19 - UWM_KRETPROBE_HANDLER | UWM_REGS
[   15.324620]     # test_unwind_flags: pass:11 fail:6 skip:2 total:19
[   15.324623]     not ok 1 - test_unwind_flags
[   15.324626] # Totals: pass:11 fail:6 skip:2 total:19
[   15.324628] not ok 1 - test_unwind

Regards,
Ivan

[1] 20220617210717.27126-1-madvenka@linux.microsoft.com

Ivan T. Ivanov (1):
  arm64: Add initial set of stack unwinder self tests

 arch/arm64/Kconfig.debug        |  12 +
 arch/arm64/kernel/Makefile      |   1 +
 arch/arm64/kernel/stacktrace.c  |  23 ++
 arch/arm64/kernel/test_unwind.c | 518 ++++++++++++++++++++++++++++++++
 include/linux/stacktrace.h      |   1 +
 5 files changed, 555 insertions(+)
 create mode 100644 arch/arm64/kernel/test_unwind.c

-- 
2.35.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

             reply	other threads:[~2022-06-24 14:17 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-24 14:09 Ivan T. Ivanov [this message]
2022-06-24 14:09 ` [PATCH 0/1] arm64: Add stack unwinder unit tests Ivan T. Ivanov
2022-06-24 14:10 ` [PATCH 1/1] arm64: Add initial set of stack unwinder self tests Ivan T. Ivanov
2022-06-24 14:10   ` Ivan T. Ivanov
2022-06-29 15:59   ` Mark Brown
2022-06-29 15:59     ` Mark Brown
2022-06-30  6:55     ` Ivan T. Ivanov
2022-06-30  6:55       ` Ivan T. Ivanov
2022-07-06 12:31 ` [PATCH 0/1] arm64: Add stack unwinder unit tests Will Deacon
2022-07-06 12:31   ` Will Deacon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220624141000.88120-1-iivanov@suse.de \
    --to=iivanov@suse.de \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=madvenka@linux.microsoft.com \
    --cc=mark.rutland@arm.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.