riscv: Add GENERIC_ENTRY support
Subsystems (3)
v17 cover riscv: Add GENERIC_ENTRY support
From: Guo Ren <[email protected]>
The patches convert riscv to use the generic entry infrastructure from kernel/entry/*. Some optimization for entry.S with new .macro and merge ret_from_kernel_thread into ret_from_fork.
The 1,2 are the preparation of generic entry. 3~7 are the main part of generic entry.
All tested with rv64, rv32, rv64 + 32rootfs, all are passed.
You can directly try it with:
[1] https://github.com/guoren83/linux/tree/generic_entry_v17
Any reviews and tests are helpful.
v17:
- Rebase on newest palmer/for-next 20230222
- Modify save_from_x6_to_x31/restore_from_x6_to_x31 to fit ftrace size reduce patch in for-next.
v16:
https://lore.kernel.org/linux-riscv/[email protected]/
- Re-order commit tags for "compiler_types.h: Add __noinstr_section() for noinstr" (Thx Miguel)
v15:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixup compile error for !MMU (Thx Conor)
- Rebase on riscv for-next (20230127)
v14:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixup W=1 warning reported by kernel test robot <[email protected]>
v13:
https://lore.kernel.org/linux-riscv/[email protected]/
- Remove noinstr for original do_page_fault
- Centralize all the necesarily-noinstr bits in
arch/riscv/kernel/traps.c
v12:
https://lore.kernel.org/linux-riscv/[email protected]/
- Rebase on newest for-next-20230103 (Linux 6.2-rc1)
- Add Reviewed-by: Björn Töpel
v11:
https://lore.kernel.org/linux-riscv/[email protected]/
- Rebase on newest for-next-20221211
- Remove stack optimization patch series
- Optimize comments
- Replace ENTRY with SYM_CODE/FUNC_START in entry.S
v10:
https://lore.kernel.org/linux-riscv/[email protected]/
- Rebase on palmer/for-next branch (20221208)
- Remove unrelated patches from the series (Suggested-by: Bjorn)
- Fixup Typos.
v9:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixup NR_syscalls check (by Ben Hutchings)
- Add Tested-by: Jisheng Zhang
v8:
https://lore.kernel.org/linux-riscv/[email protected]/
- Rebase on palmer/for-next branch (20221102)
- Add save/restore_from_x5_to_x31 .macro (JishengZhang)
- Consolidate ret_from_kernel_thread into ret_from_fork (JishengZhang)
- Optimize __noinstr_section comment (JiangshanLai)
v7:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixup regs_irqs_disabled with SR_PIE
- Optimize stackleak_erase -> stackleak_erase_on_task_stack (Thx Mark Rutland)
- Add BUG_ON(!irqs_disabled()) in trap handlers
- Using regs_irqs_disabled in __do_page_fault
- Remove unnecessary irq disable in ret_from_exception and add comment
v6:
https://lore.kernel.org/linux-riscv/[email protected]/
- Use THEAD_SIZE_ORDER for thread size adjustment in kconfig (Thx Arnd)
- Move call_on_stack to inline style (Thx Peter Zijlstra)
- Fixup fp chain broken (Thx Chen Zhongjin)
- Remove common entry modification, and fixup page_fault entry (Thx Peter Zijlstra)
- Treat some traps as nmi entry (Thx Peter Zijlstra)
v5:
https://lore.kernel.org/linux-riscv/[email protected]/
- Add riscv own stackleak patch instead of generic entry modification (by Mark Rutland)
- Add EXPERT dependency for THREAD_SIZE (by Arnd)
- Add EXPERT dependency for IRQ_STACK (by Sebastian, David Laight)
- Corrected __trap_section (by Peter Zijlstra)
- Add Tested-by (Yipeng Zou)
- Use CONFIG_SOFTIRQ_ON_OWN_STACK replace "#ifndef CONFIG_PREEMPT_RT"
- Fixup systrace_enter compile error
- Fixup exit_to_user_mode_prepare preempt_disable warning
V4:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixup entry.S with "la" bug (by Conor.Dooley)
- Fixup missing noinstr bug (by Peter Zijlstra)
V3:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixup CONFIG_COMPAT=n compile error
- Add THREAD_SIZE_ORDER config
- Optimize elf_kexec.c warning fixup
- Add static to irq_stack_ptr definition
V2:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixup compile error by include "riscv: ptrace: Remove duplicate operation"
- Fixup compile warning
- Add test repo link in cover letter
V1:
https://lore.kernel.org/linux-riscv/[email protected]/
Guo Ren (3):
riscv: ptrace: Remove duplicate operation
riscv: entry: Add noinstr to prevent instrumentation inserted
riscv: entry: Convert to generic entry
Jisheng Zhang (3):
riscv: entry: Remove extra level wrappers of trace_hardirqs_{on,off}
riscv: entry: Consolidate ret_from_kernel_thread into ret_from_fork
riscv: entry: Consolidate general regs saving/restoring
Lai Jiangshan (1):
compiler_types.h: Add __noinstr_section() for noinstr
arch/riscv/Kconfig | 1 + arch/riscv/include/asm/asm-prototypes.h | 2 + arch/riscv/include/asm/asm.h | 61 +++++ arch/riscv/include/asm/csr.h | 1 - arch/riscv/include/asm/entry-common.h | 11 + arch/riscv/include/asm/ptrace.h | 10 +- arch/riscv/include/asm/stacktrace.h | 5 + arch/riscv/include/asm/syscall.h | 21 ++ arch/riscv/include/asm/thread_info.h | 13 +- arch/riscv/kernel/Makefile | 2 - arch/riscv/kernel/entry.S | 321 +++--------------------- arch/riscv/kernel/head.h | 1 - arch/riscv/kernel/mcount-dyn.S | 57 +---- arch/riscv/kernel/process.c | 5 +- arch/riscv/kernel/ptrace.c | 44 ---- arch/riscv/kernel/signal.c | 29 +-- arch/riscv/kernel/trace_irq.c | 27 -- arch/riscv/kernel/trace_irq.h | 11 - arch/riscv/kernel/traps.c | 144 +++++++++-- arch/riscv/mm/fault.c | 6 +- include/linux/compiler_types.h | 15 +- 21 files changed, 289 insertions(+), 498 deletions(-) create mode 100644 arch/riscv/include/asm/entry-common.h delete mode 100644 arch/riscv/kernel/trace_irq.c delete mode 100644 arch/riscv/kernel/trace_irq.h
Signature · 1 line
2.36.1
PATCH v17 1/7 compiler_types.h: Add __noinstr_section() for noinstr
From: Lai Jiangshan <[email protected]>
Using __noinstr_section() doesn't automatically disable all instrumentations on the section. Inhibition for some instrumentations requires extra code. I.E. KPROBES explicitly avoids instrumenting on .noinstr.text.
--- include/linux/compiler_types.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
include/linux/compiler_types.h +11 -4
@@ -231,12 +231,19 @@ struct ftrace_likely_data {#define __no_sanitize_or_inline __always_inline#endif -/* Section for code which can't be instrumented at all */ -#define noinstr \ - noinline notrace __attribute((__section__(".noinstr.text"))) \ - __no_kcsan __no_sanitize_address __no_profile __no_sanitize_coverage \ +/* +* Using __noinstr_section() doesn't automatically disable all instrumentations +* on the section. Inhibition for some instrumentations requires extra code. +* I.E. KPROBES explicitly avoids instrumenting on .noinstr.text. +*/ +#define __noinstr_section (section) \ + noinline notrace __section(section) __no_profile \ + __no_kcsan __no_sanitize_address __no_sanitize_coverage \ __no_sanitize_memory +/* Section for code which can't be instrumented at all */ +#define noinstr __noinstr_section(".noinstr.text") +#endif /* __KERNEL__ */ #endif /* __ASSEMBLY__ */
Signature · 1 line
2.36.1
Re: [PATCH -next V17 1/7] compiler_types.h: Add __noinstr_section() for noinstr
Quoted 6 lines · [email protected] writes:
From: Lai Jiangshan <[email protected]>
Using
__noinstr_section()doesn't automatically disable all instrumentations on the section. Inhibition for some instrumentations requires extra code. I.E. KPROBES explicitly avoids instrumenting on .noinstr.text.
Guo, the generic entry series doesn't apply cleanly on riscv/for-next >6.2-rc1, and this patch is the issue.
Could you do a respin (potentially w/o this patch)?
Cheers,
Björn
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 1/7] compiler_types.h: Add __noinstr_section() for noinstr
Quoted 5 lines · Björn Töpel
Quoted 2 lines · [email protected] writes:
From: Lai Jiangshan <[email protected]>
Quoted 7 lines
Quoted 4 lines
Using
__noinstr_section()doesn't automatically disable all instrumentations on the section. Inhibition for some instrumentations requires extra code. I.E. KPROBES explicitly avoids instrumenting on .noinstr.text.Guo, the generic entry series doesn't apply cleanly on riscv/for-next >6.2-rc1, and this patch is the issue.
It has been merged in palmer/for-next.
Thx for taking care.
54b3948f381c (HEAD -> for-next, palmer/for-next) Merge patch series "riscv: Add GENERIC_ENTRY support"45b32b946a97 riscv: entry: Consolidate general regs saving/restoring ab9164dae273 riscv: entry: Consolidate ret_from_kernel_thread into ret_from_fork 0bf298ad2b61 riscv: entry: Remove extra level wrappers of trace_hardirqs_{on,off}f0bddf50586d riscv: entry: Convert to generic entryd0db02c62879 riscv: entry: Add noinstr to prevent instrumentation inserted 8574bf8d0ddd riscv: ptrace: Remove duplicate operation
Quoted 6 lines
Could you do a respin (potentially w/o this patch)?
Cheers,
Björn
Signature · 2 lines
Best Regards Guo Ren
Re: [PATCH -next V17 1/7] compiler_types.h: Add __noinstr_section() for noinstr
In reply to [email protected]Quoted 8 lines · On Wed, Feb 22, 2023 at 11:56 AM <[email protected]> wrote:
From: Lai Jiangshan <[email protected]>
Using
__noinstr_section()doesn't automatically disable all instrumentations on the section. Inhibition for some instrumentations requires extra code. I.E. KPROBES explicitly avoids instrumenting on .noinstr.text.
Quoted 9 lines
Suggested-by Nick Desaulniers <[email protected]>Suggested-by Peter Zijlstra <[email protected]>Reviewed-by Miguel Ojeda <[email protected]>Reviewed-by Kees Cook <[email protected]>Reviewed-by Björn Töpel <[email protected]>Tested-by Jisheng Zhang <[email protected]>Tested-by Guo Ren <[email protected]>Signed-off-by Lai Jiangshan <[email protected]>Signed-off-by Guo Ren <[email protected]>
Hello
The change has been made upstream as a part of the commit 2b5a0e425e6e(objtool/idle: Validate __cpuidle code as noinstr).
https://lore.kernel.org/r/[email protected]
Thanks
Lai
Quoted 35 lines
--- include/linux/compiler_types.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)include/linux/compiler_types.h +11
-5@@ -231,12 +231,19 @@ struct ftrace_likely_data {#define __no_sanitize_or_inline __always_inline#endif -/* Section for code which can't be instrumented at all */ -#define noinstr \ - noinline notrace __attribute((__section__(".noinstr.text"))) \ - __no_kcsan __no_sanitize_address __no_profile __no_sanitize_coverage \ +/* +* Using __noinstr_section() doesn't automatically disable all instrumentations +* on the section. Inhibition for some instrumentations requires extra code. +* I.E. KPROBES explicitly avoids instrumenting on .noinstr.text. +*/ +#define __noinstr_section (section) \ + noinline notrace __section(section) __no_profile \ + __no_kcsan __no_sanitize_address __no_sanitize_coverage \ __no_sanitize_memory +/* Section for code which can't be instrumented at all */ +#define noinstr __noinstr_section(".noinstr.text") +#endif /* __KERNEL__ */ #endif /* __ASSEMBLY__ */ --2.36.1
PATCH v17 2/7 riscv: ptrace: Remove duplicate operation
In reply to [email protected]From: Guo Ren <[email protected]>
The TIF_SYSCALL_TRACE is controlled by a common code, see kernel/ptrace.c and include/linux/thread_info.h.
clear_task_syscall_work(child, SYSCALL_TRACE);
--- arch/riscv/kernel/ptrace.c | 1 - 1 file changed, 1 deletion(-)
arch/riscv/kernel/ptrace.c +0 -1
@@ -212,7 +212,6 @@ unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, unsigned int n)void ptrace_disable (struct task_struct *child) { -clear_tsk_thread_flag (child,TIF_SYSCALL_TRACE ); } long arch_ptrace(struct task_struct *child, long request,
Signature · 1 line
2.36.1
PATCH v17 3/7 riscv: entry: Add noinstr to prevent instrumentation inserted
In reply to [email protected]From: Guo Ren <[email protected]>
Without noinstr the compiler is free to insert instrumentation (think all the k*SAN, KCov, GCov, ftrace etc..) which can call code we're not yet ready to run this early in the entry path, for instance it could rely on RCU which isn't on yet, or expect lockdep state. (by peterz)
--- arch/riscv/kernel/traps.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/riscv/kernel/traps.c +2 -2
@@ -119,9 +119,9 @@ static void do_trap_error(struct pt_regs *regs, int signo, int code, }#if defined(CONFIG_XIP_KERNEL ) && defined(CONFIG_RISCV_ALTERNATIVE ) -#define __trap_section __section(".xip.traps") +#define __trap_section __noinstr_section(".xip.traps")#else -#define __trap_section +#define __trap_section noinstr#endif #define DO_ERROR_INFO (name, signo, code, str) \ asmlinkage __visible __trap_section void name(struct pt_regs *regs) \
Signature · 7 lines
2.36.1 _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
PATCH v17 4/7 riscv: entry: Convert to generic entry
In reply to [email protected]From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:
- More clear entry.S with handle_exception and ret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connect ret_from_fork & ret_from_kernel_thread to generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of custom
--- arch/riscv/Kconfig | 1 + arch/riscv/include/asm/asm-prototypes.h | 2 + arch/riscv/include/asm/csr.h | 1 - arch/riscv/include/asm/entry-common.h | 11 ++ arch/riscv/include/asm/ptrace.h | 10 +- arch/riscv/include/asm/stacktrace.h | 5 + arch/riscv/include/asm/syscall.h | 21 ++ arch/riscv/include/asm/thread_info.h | 13 +- arch/riscv/kernel/entry.S | 242 ++++-------------------- arch/riscv/kernel/head.h | 1 - arch/riscv/kernel/ptrace.c | 43 ----- arch/riscv/kernel/signal.c | 29 +-- arch/riscv/kernel/traps.c | 140 ++++++++++++-- arch/riscv/mm/fault.c | 6 +- 14 files changed, 210 insertions(+), 315 deletions(-) create mode 100644 arch/riscv/include/asm/entry-common.h
arch/riscv/Kconfig +1 -0
@@ -61,6 +61,7 @@ config RISCV select GENERIC_ATOMIC64 if !64BIT select GENERIC_CLOCKEVENTS_BROADCAST if SMP select GENERIC_EARLY_IOREMAP + select GENERIC_ENTRY select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO select GENERIC_IDLE_POLL_SETUP select GENERIC_IOREMAP if MMU
arch/riscv/include/asm/asm-prototypes.h +2 -0
@@ -27,5 +27,7 @@ DECLARE_DO_ERROR_INFO(do_trap_break);asmlinkage unsigned long get_overflow_stack (void ); asmlinkage void handle_bad_stack(struct pt_regs *regs); +asmlinkage void do_page_fault(struct pt_regs *regs); +asmlinkage void do_irq(struct pt_regs *regs);#endif /* _ASM_RISCV_PROTOTYPES_H */
arch/riscv/include/asm/csr.h +0 -1
@@ -40,7 +40,6 @@#define SR_UXL _AC(0x300000000, UL)/* XLEN mask for U-mode */ #define SR_UXL_32 _AC(0x100000000, UL)/* XLEN = 32 for U-mode */ #define SR_UXL_64 _AC(0x200000000, UL)/* XLEN = 64 for U-mode */ -#define SR_UXL_SHIFT 32#endif /* SATP flags */
arch/riscv/include/asm/entry-common.h new file +11 -0
@@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef _ASM_RISCV_ENTRY_COMMON_H +#define _ASM_RISCV_ENTRY_COMMON_H + +#include <asm/stacktrace.h> + +void handle_page_fault (struct pt_regs *regs); +void handle_break (struct pt_regs *regs); + +#endif /* _ASM_RISCV_ENTRY_COMMON_H */
arch/riscv/include/asm/ptrace.h +8 -2
@@ -53,6 +53,9 @@ struct pt_regs {unsigned long orig_a0; }; +#define PTRACE_SYSEMU 0x1f +#define PTRACE_SYSEMU_SINGLESTEP 0x20 +#ifdef CONFIG_64BIT #define REG_FMT "%016lx"#else
@@ -121,8 +124,6 @@ extern unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs,void prepare_ftrace_return (unsigned long *parent,unsigned long self_addr,unsigned long frame_pointer); -int do_syscall_trace_enter (struct pt_regs *regs); -void do_syscall_trace_exit (struct pt_regs *regs);/** * regs_get_register() - get register value from its offset
@@ -172,6 +173,11 @@ static inline unsigned long regs_get_kernel_argument(struct pt_regs *regs,return 0 ; } +static inline int regs_irqs_disabled (struct pt_regs *regs) +{ +return !(regs->status &SR_PIE ); +} +#endif /* __ASSEMBLY__ */ #endif /* _ASM_RISCV_PTRACE_H */
arch/riscv/include/asm/stacktrace.h +5 -0
@@ -16,4 +16,9 @@ extern void notrace walk_stackframe(struct task_struct *task, struct pt_regs *reextern void dump_backtrace (struct pt_regs *regs,struct task_struct *task,const char *loglvl); +static inline bool on_thread_stack (void ) +{ +return !(((unsigned long )(current->stack) ^ current_stack_pointer) & ~(THREAD_SIZE -1 )); +} +#endif /* _ASM_RISCV_STACKTRACE_H */
arch/riscv/include/asm/syscall.h +21 -0
@@ -74,5 +74,26 @@ static inline int syscall_get_arch(struct task_struct *task)#endif } +typedef long (*syscall_t )(ulong ,ulong ,ulong ,ulong ,ulong ,ulong ,ulong ); +static inline void syscall_handler (struct pt_regs *regs,ulong syscall) +{ +syscall_t fn; + +#ifdef CONFIG_COMPAT +if ((regs->status &SR_UXL ) ==SR_UXL_32 ) + fn = compat_sys_call_table[syscall]; + else +#endif + fn = sys_call_table[syscall]; + + regs->a0 =fn (regs->orig_a0, regs->a1, regs->a2, + regs->a3, regs->a4, regs->a5, regs->a6); +} + +static inline bool arch_syscall_is_vdso_sigreturn (struct pt_regs *regs) +{ +return false; +} +asmlinkage long sys_riscv_flush_icache (uintptr_t ,uintptr_t ,uintptr_t );#endif /* _ASM_RISCV_SYSCALL_H */
arch/riscv/include/asm/thread_info.h +1 -12
@@ -67,6 +67,7 @@ struct thread_info {long kernel_sp;/* Kernel stack pointer */ long user_sp;/* User stack pointer */ int cpu; +unsigned long syscall_work;/* SYSCALL_WORK_ flags */ };/*
@@ -89,26 +90,18 @@ struct thread_info {* - pending work-to-be-done flags are in lowest half-word * - other flags in upper half-word(s) */ -#define TIF_SYSCALL_TRACE 0/* syscall trace active */ #define TIF_NOTIFY_RESUME 1/* callback before returning to user */ #define TIF_SIGPENDING 2/* signal pending */ #define TIF_NEED_RESCHED 3/* rescheduling necessary */ #define TIF_RESTORE_SIGMASK 4/* restore signal mask in do_signal() */ #define TIF_MEMDIE 5/* is terminating due to OOM killer */ -#define TIF_SYSCALL_TRACEPOINT 6/* syscall tracepoint instrumentation */ -#define TIF_SYSCALL_AUDIT 7/* syscall auditing */ -#define TIF_SECCOMP 8/* syscall secure computing */ #define TIF_NOTIFY_SIGNAL 9/* signal notifications exist */ #define TIF_UPROBE 10/* uprobe breakpoint or singlestep */ #define TIF_32BIT 11/* compat-mode 32bit process */ -#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)#define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) -#define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) -#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) -#define _TIF_SECCOMP (1 << TIF_SECCOMP)#define _TIF_NOTIFY_SIGNAL (1 << TIF_NOTIFY_SIGNAL)#define _TIF_UPROBE (1 << TIF_UPROBE)
@@ -116,8 +109,4 @@ struct thread_info { (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING | _TIF_NEED_RESCHED | \ _TIF_NOTIFY_SIGNAL | _TIF_UPROBE) -#define _TIF_SYSCALL_WORK \ - (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_SYSCALL_AUDIT | \ - _TIF_SECCOMP) -#endif /* _ASM_RISCV_THREAD_INFO_H */
arch/riscv/kernel/entry.S +34 -208
341 lines not on this page · raw message
arch/riscv/kernel/head.h +0 -1
@@ -10,7 +10,6 @@extern atomic_t hart_lottery; -asmlinkage void do_page_fault(struct pt_regs *regs); asmlinkage void __init setup_vm(uintptr_t dtb_pa);#ifdef CONFIG_XIP_KERNEL asmlinkage void __init __copy_data(void);
arch/riscv/kernel/ptrace.c +0 -43
55 lines not on this page · raw message
arch/riscv/kernel/signal.c +2 -27
@@ -12,6 +12,7 @@#include <linux/syscalls.h> #include <linux/resume_user_mode.h> #include <linux/linkage.h> +#include <linux/entry-common.h> #include <asm/ucontext.h> #include <asm/vdso.h>
@@ -274,7 +275,7 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs)signal_setup_done (ret, ksig,0 ); } -static void do_signal (struct pt_regs *regs) +void arch_do_signal_or_restart (struct pt_regs *regs) {struct ksignal ksig;
@@ -311,29 +312,3 @@ static void do_signal(struct pt_regs *regs)*/ restore_saved_sigmask (); } - -/* -* Handle any pending work on the resume-to-userspace path, as indicated by -* _TIF_WORK_MASK. Entered from assembly with IRQs off. -*/ -asmlinkage __visible void do_work_pending(struct pt_regs *regs, -unsigned long thread_info_flags) -{ -do { -if (thread_info_flags & _TIF_NEED_RESCHED) { -schedule (); - }else { -local_irq_enable (); -if (thread_info_flags & _TIF_UPROBE) -uprobe_notify_resume (regs); -/* Handle pending signal delivery */ -if (thread_info_flags & (_TIF_SIGPENDING | - _TIF_NOTIFY_SIGNAL)) -do_signal (regs); -if (thread_info_flags & _TIF_NOTIFY_RESUME) -resume_user_mode_work (regs); - } -local_irq_disable (); - thread_info_flags =read_thread_flags (); - }while (thread_info_flags & _TIF_WORK_MASK); -}
arch/riscv/kernel/traps.c +122 -18
184 lines not on this page · raw message
arch/riscv/mm/fault.c +3 -3
@@ -15,6 +15,7 @@#include <linux/uaccess.h> #include <linux/kprobes.h> #include <linux/kfence.h> +#include <linux/entry-common.h> #include <asm/ptrace.h> #include <asm/tlbflush.h>
@@ -204,7 +205,7 @@ static inline bool access_error(unsigned long cause, struct vm_area_struct *vma)* This routine handles page faults. It determines the address and the * problem, and then passes it off to one of the appropriate routines. */ -asmlinkage void do_page_fault(struct pt_regs *regs) +void handle_page_fault (struct pt_regs *regs) {struct task_struct *tsk;struct vm_area_struct *vma;
@@ -251,7 +252,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) }#endif /* Enable interrupts if they were enabled in the parent context. */ -if (likely (regs->status &SR_PIE )) +if (!regs_irqs_disabled (regs))local_irq_enable ();/*
@@ -353,4 +354,3 @@ asmlinkage void do_page_fault(struct pt_regs *regs) }return ; } -NOKPROBE_SYMBOL (do_page_fault);
Signature · 7 lines
2.36.1 _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 6 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:
Quoted 7 lines
- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of custom
This has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/
It gets pretty far into things, it's once systemd is operational that things go pear shaped:
[ OK ] Mounted Huge Pages File System.
[ 70.297439] systemd[1]: Mounted POSIX Message Queue File System. [ OK ] Mounted POSIX Message Queue File System. [ 70.453489] systemd[1]: Mounted Kernel Debug File System. [ OK ] Mounted Kernel Debug File System. [ 70.516331] systemd[1]: Mounted Kernel Trace File System. [ OK ] Mounted Kernel Trace File System. [ 70.679253] systemd[1]: [email protected]: Succeeded. [ 70.788400] systemd[1]: Finished Load Kernel Module configfs. [ OK ] Finished Load Kernel Module configfs. [ 71.501222] systemd[1]: [email protected]: Succeeded. [ 71.573295] systemd[1]: Finished Load Kernel Module drm. [ OK ] Finished Load Kernel Module drm. [ 71.825934] systemd[1]: [email protected]: Succeeded. [ 71.886945] systemd[1]: Finished Load Kernel Module fuse. [ OK ] Finished Load Kernel Module fuse. [ 71.991932] systemd[1]: nfs-convert.service: Succeeded. [ 72.034674] systemd[1]: Finished Preprocess NFS configuration convertion. [ OK ] Finished Preprocess NFS configuration convertion. [ 72.148778] systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE [ 72.256659] systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'. [ 72.337818] systemd[1]: Failed to start Load Kernel Modules. [FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details. [ 72.410491] systemd[1]: systemd-modules-load.service: Consumed 1.463s CPU time. [ 72.496739] systemd[1]: Condition check resulted in FUSE Control File System being skipped. [ 72.513689] systemd[1]: Condition check resulted in Kernel Configuration File System being skipped. [ 72.682549] systemd[1]: Starting Apply Kernel Variables.. [ OK ] Finished Apply Kernel Variables. [ 76.314434] systemd[1]: Finished Load/Save Random Seed. [ OK ] Finished Load/Save Random Seed. [*** ] (1 of 6) A start job is running for…p Virtual Console (14s / no limit) [ OK ] Finished Create Static Device Nodes in /dev. [ 79.787065] systemd[1]: Started Entropy Daemon based on the HAVEGE algorithm. [ OK ] Started Entropy Daemon based on the HAVEGE algorithm. [ 80.186295] systemd[1]: Starting Journal Service... Starting Journal Service... [ 80.713508] systemd[1]: Starting Rule-based Manager for Device Events and Files... Starting Rule-based Manage…for Device Events and Files... [ *** ] (2 of 7) A start job is running for… All udev Devices (17s / no limit) [ 82.939347] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 83.032046] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 83.210041] systemd[1]: Dependency failed for Flush Journal to Persistent Storage. [DEPEND] Dependency failed for Flus…Journal to Persistent Storage. [ 83.254122] systemd[1]: systemd-journal-flush.service: Job systemd-journal-flush.service/start failed with result 'dependency'. [ 83.272366] systemd[1]: systemd-journald.service: Consumed 1.443s CPU time. [ 83.334360] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 1. [ 83.427839] systemd[1]: Finished Setup Virtual Console. [ OK ] Finished Setup Virtual Console. [ 83.510650] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 83.554417] systemd[1]: systemd-journald.service: Consumed 1.443s CPU time. [ 83.576573] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 83.904878] systemd[1]: Starting Journal Service... Starting Journal Service... [ 85.752090] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 85.826421] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [ 85.876165] systemd[1]: Failed to start Journal Service. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 85.952221] systemd[1]: systemd-journald.service: Consumed 1.355s CPU time. [ 86.002092] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 2. [ 86.015081] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 86.076429] systemd[1]: systemd-journald.service: Consumed 1.355s CPU time. [ 86.089700] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 86.390162] systemd[1]: Starting Journal Service... Starting Journal Service... [ 87.904427] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 87.950259] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [ 88.000661] systemd[1]: Failed to start Journal Service. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 88.079953] systemd[1]: systemd-journald.service: Consumed 1.316s CPU time. [ 88.128956] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 3. [ 88.145365] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 88.189975] systemd[1]: systemd-journald.service: Consumed 1.316s CPU time. [ 88.205799] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 88.514817] systemd[1]: Starting Journal Service... Starting Journal Service...
(Note, you need to merge -rc2 into riscv/for-next to actually boot)
Cheers,
Conor.
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 15 lines · Conor Dooley
Quoted 6 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:Quoted 7 lines
- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of custom
Quoted 6 lines
This has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
Quoted 89 lines
[ OK ] Mounted Huge Pages File System.
[ 70.297439] systemd[1]: Mounted POSIX Message Queue File System. [ OK ] Mounted POSIX Message Queue File System. [ 70.453489] systemd[1]: Mounted Kernel Debug File System. [ OK ] Mounted Kernel Debug File System. [ 70.516331] systemd[1]: Mounted Kernel Trace File System. [ OK ] Mounted Kernel Trace File System. [ 70.679253] systemd[1]: [email protected]: Succeeded. [ 70.788400] systemd[1]: Finished Load Kernel Module configfs. [ OK ] Finished Load Kernel Module configfs. [ 71.501222] systemd[1]: [email protected]: Succeeded. [ 71.573295] systemd[1]: Finished Load Kernel Module drm. [ OK ] Finished Load Kernel Module drm. [ 71.825934] systemd[1]: [email protected]: Succeeded. [ 71.886945] systemd[1]: Finished Load Kernel Module fuse. [ OK ] Finished Load Kernel Module fuse. [ 71.991932] systemd[1]: nfs-convert.service: Succeeded. [ 72.034674] systemd[1]: Finished Preprocess NFS configuration convertion. [ OK ] Finished Preprocess NFS configuration convertion. [ 72.148778] systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE [ 72.256659] systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'. [ 72.337818] systemd[1]: Failed to start Load Kernel Modules. [FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details. [ 72.410491] systemd[1]: systemd-modules-load.service: Consumed 1.463s CPU time. [ 72.496739] systemd[1]: Condition check resulted in FUSE Control File System being skipped. [ 72.513689] systemd[1]: Condition check resulted in Kernel Configuration File System being skipped. [ 72.682549] systemd[1]: Starting Apply Kernel Variables.. [ OK ] Finished Apply Kernel Variables. [ 76.314434] systemd[1]: Finished Load/Save Random Seed. [ OK ] Finished Load/Save Random Seed. [*** ] (1 of 6) A start job is running for…p Virtual Console (14s / no limit) [ OK ] Finished Create Static Device Nodes in /dev. [ 79.787065] systemd[1]: Started Entropy Daemon based on the HAVEGE algorithm. [ OK ] Started Entropy Daemon based on the HAVEGE algorithm. [ 80.186295] systemd[1]: Starting Journal Service... Starting Journal Service... [ 80.713508] systemd[1]: Starting Rule-based Manager for Device Events and Files... Starting Rule-based Manage…for Device Events and Files... [ *** ] (2 of 7) A start job is running for… All udev Devices (17s / no limit) [ 82.939347] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 83.032046] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 83.210041] systemd[1]: Dependency failed for Flush Journal to Persistent Storage. [DEPEND] Dependency failed for Flus…Journal to Persistent Storage. [ 83.254122] systemd[1]: systemd-journal-flush.service: Job systemd-journal-flush.service/start failed with result 'dependency'. [ 83.272366] systemd[1]: systemd-journald.service: Consumed 1.443s CPU time. [ 83.334360] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 1. [ 83.427839] systemd[1]: Finished Setup Virtual Console. [ OK ] Finished Setup Virtual Console. [ 83.510650] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 83.554417] systemd[1]: systemd-journald.service: Consumed 1.443s CPU time. [ 83.576573] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 83.904878] systemd[1]: Starting Journal Service... Starting Journal Service... [ 85.752090] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 85.826421] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [ 85.876165] systemd[1]: Failed to start Journal Service. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 85.952221] systemd[1]: systemd-journald.service: Consumed 1.355s CPU time. [ 86.002092] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 2. [ 86.015081] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 86.076429] systemd[1]: systemd-journald.service: Consumed 1.355s CPU time. [ 86.089700] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 86.390162] systemd[1]: Starting Journal Service... Starting Journal Service... [ 87.904427] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 87.950259] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [ 88.000661] systemd[1]: Failed to start Journal Service. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 88.079953] systemd[1]: systemd-journald.service: Consumed 1.316s CPU time. [ 88.128956] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 3. [ 88.145365] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 88.189975] systemd[1]: systemd-journald.service: Consumed 1.316s CPU time. [ 88.205799] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 88.514817] systemd[1]: Starting Journal Service... Starting Journal Service...(Note, you need to merge -rc2 into riscv/for-next to actually boot)
Cheers,
Conor.
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Hi,
Am Freitag, 31. März 2023, 20:41:35 CEST schrieb Conor Dooley:
Quoted 20 lines · Conor Dooley
Quoted 19 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
Quoted 6 lines
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:Quoted 7 lines
- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customThis has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/
Quoted 5 lines
Quoted 2 lines
It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Though my board is stuck in some failure loop with both the journal- as well as the timesyncd service failing again and again. And I haven't figured out how to get logs without a working login console yet.
Heiko
Quoted 93 lines
Quoted 90 lines
[ OK ] Mounted Huge Pages File System.
[ 70.297439] systemd[1]: Mounted POSIX Message Queue File System. [ OK ] Mounted POSIX Message Queue File System. [ 70.453489] systemd[1]: Mounted Kernel Debug File System. [ OK ] Mounted Kernel Debug File System. [ 70.516331] systemd[1]: Mounted Kernel Trace File System. [ OK ] Mounted Kernel Trace File System. [ 70.679253] systemd[1]: [email protected]: Succeeded. [ 70.788400] systemd[1]: Finished Load Kernel Module configfs. [ OK ] Finished Load Kernel Module configfs. [ 71.501222] systemd[1]: [email protected]: Succeeded. [ 71.573295] systemd[1]: Finished Load Kernel Module drm. [ OK ] Finished Load Kernel Module drm. [ 71.825934] systemd[1]: [email protected]: Succeeded. [ 71.886945] systemd[1]: Finished Load Kernel Module fuse. [ OK ] Finished Load Kernel Module fuse. [ 71.991932] systemd[1]: nfs-convert.service: Succeeded. [ 72.034674] systemd[1]: Finished Preprocess NFS configuration convertion. [ OK ] Finished Preprocess NFS configuration convertion. [ 72.148778] systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE [ 72.256659] systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'. [ 72.337818] systemd[1]: Failed to start Load Kernel Modules. [FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details. [ 72.410491] systemd[1]: systemd-modules-load.service: Consumed 1.463s CPU time. [ 72.496739] systemd[1]: Condition check resulted in FUSE Control File System being skipped. [ 72.513689] systemd[1]: Condition check resulted in Kernel Configuration File System being skipped. [ 72.682549] systemd[1]: Starting Apply Kernel Variables.. [ OK ] Finished Apply Kernel Variables. [ 76.314434] systemd[1]: Finished Load/Save Random Seed. [ OK ] Finished Load/Save Random Seed. [*** ] (1 of 6) A start job is running for…p Virtual Console (14s / no limit) [ OK ] Finished Create Static Device Nodes in /dev. [ 79.787065] systemd[1]: Started Entropy Daemon based on the HAVEGE algorithm. [ OK ] Started Entropy Daemon based on the HAVEGE algorithm. [ 80.186295] systemd[1]: Starting Journal Service... Starting Journal Service... [ 80.713508] systemd[1]: Starting Rule-based Manager for Device Events and Files... Starting Rule-based Manage…for Device Events and Files... [ *** ] (2 of 7) A start job is running for… All udev Devices (17s / no limit) [ 82.939347] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 83.032046] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 83.210041] systemd[1]: Dependency failed for Flush Journal to Persistent Storage. [DEPEND] Dependency failed for Flus…Journal to Persistent Storage. [ 83.254122] systemd[1]: systemd-journal-flush.service: Job systemd-journal-flush.service/start failed with result 'dependency'. [ 83.272366] systemd[1]: systemd-journald.service: Consumed 1.443s CPU time. [ 83.334360] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 1. [ 83.427839] systemd[1]: Finished Setup Virtual Console. [ OK ] Finished Setup Virtual Console. [ 83.510650] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 83.554417] systemd[1]: systemd-journald.service: Consumed 1.443s CPU time. [ 83.576573] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 83.904878] systemd[1]: Starting Journal Service... Starting Journal Service... [ 85.752090] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 85.826421] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [ 85.876165] systemd[1]: Failed to start Journal Service. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 85.952221] systemd[1]: systemd-journald.service: Consumed 1.355s CPU time. [ 86.002092] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 2. [ 86.015081] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 86.076429] systemd[1]: systemd-journald.service: Consumed 1.355s CPU time. [ 86.089700] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 86.390162] systemd[1]: Starting Journal Service... Starting Journal Service... [ 87.904427] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 87.950259] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [ 88.000661] systemd[1]: Failed to start Journal Service. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 88.079953] systemd[1]: systemd-journald.service: Consumed 1.316s CPU time. [ 88.128956] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 3. [ 88.145365] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 88.189975] systemd[1]: systemd-journald.service: Consumed 1.316s CPU time. [ 88.205799] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 88.514817] systemd[1]: Starting Journal Service... Starting Journal Service...(Note, you need to merge -rc2 into riscv/for-next to actually boot)
Cheers,
Conor.
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 32 lines · Heiko Stübner
Hi,
Am Freitag, 31. März 2023, 20:41:35 CEST schrieb Conor Dooley:
Quoted 20 lines · Conor Dooley
Quoted 19 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
Quoted 6 lines
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:Quoted 7 lines
- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customThis has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/Quoted 5 lines
Quoted 2 lines
It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
Quoted 6 lines
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Though my board is stuck in some failure loop with both the journal- as well as the timesyncd service failing again and again. And I haven't figured out how to get logs without a working login console yet.
I'll attach the full output from a run I guess. journald fails ad infinitum for me too after I cut this log off.
Cheers,
Conor.
[ 0.000000] Linux version 6.3.0-rc2-gd5e0396cf8bf-dirty (conor@spud) (ClangBuiltLinux clang version 15.0.7 (/stuff/brsdk/llvm/clang 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a), ClangBuiltLinux LLD 15.0.7) #1 SMP PREEMPT @7 [ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 [ 0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020000000 (options '115200n8') [ 0.000000] printk: bootconsole [ns16550a0] enabled [ 0.000000] efi: UEFI not found. [ 0.000000] OF: fdt: Reserved memory: failed to reserve memory for node 'region@BFC00000': base 0x00000000bfc00000, size 4 MiB [ 0.000000] OF: reserved mem: 0x00000000bfc00000..0x00000000bfffffff (4096 KiB) nomap non-reusable region@BFC00000 [ 0.000000] Zone ranges: [ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] Normal empty [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] On node 0, zone DMA32: 512 pages in unavailable ranges [ 0.000000] SBI specification v0.3 detected [ 0.000000] SBI implementation ID=0x1 Version=0x10000 [ 0.000000] SBI TIME extension detected [ 0.000000] SBI IPI extension detected [ 0.000000] SBI RFENCE extension detected [ 0.000000] SBI SRST extension detected [ 0.000000] SBI HSM extension detected [ 0.000000] CPU with hartid=0 is not available [ 0.000000] CPU with hartid=0 is not available [ 0.000000] CPU with hartid=0 is not available [ 0.000000] riscv: base ISA extensions acdfim [ 0.000000] riscv: ELF capabilities acdfim [ 0.000000] percpu: Embedded 29 pages/cpu s79648 r8192 d30944 u118784 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 258055 [ 0.000000] Kernel command line: root=/dev/nfs rw ip=dhcp nfsroot=99.99.99.5:/stuff/nfs_share,tcp,v3 rdinit=/usr/sbin/init rootwait=10 earlycon [ 0.000000] Unknown kernel command line parameters "rootwait=10", will be passed to user space. [ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear) [ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear) [ 0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off [ 0.000000] stackdepot: allocating hash table via alloc_large_system_hash [ 0.000000] stackdepot hash table entries: 1048576 (order: 11, 8388608 bytes, linear) [ 0.000000] Virtual kernel memory layout: [ 0.000000] fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000 (2048 kB) [ 0.000000] pci io : 0xffffffc6ff000000 - 0xffffffc700000000 ( 16 MB) [ 0.000000] vmemmap : 0xffffffc700000000 - 0xffffffc800000000 (4096 MB) [ 0.000000] vmalloc : 0xffffffc800000000 - 0xffffffd800000000 ( 64 GB) [ 0.000000] modules : 0xffffffff0305f000 - 0xffffffff80000000 (1999 MB) [ 0.000000] lowmem : 0xffffffd800000000 - 0xffffffd83fe00000 (1022 MB) [ 0.000000] kasan : 0xfffffff700000000 - 0xffffffff00000000 ( 32 GB) [ 0.000000] kernel : 0xffffffff80000000 - 0xffffffffffffffff (2047 MB) [ 0.000000] Memory: 545616K/1046528K available (16518K kernel code, 8042K rwdata, 8192K rodata, 2303K init, 12559K bss, 500912K reserved, 0K cma-reserved) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] trace event string verifier disabled [ 0.000000] Running RCU self tests [ 0.000000] Running RCU synchronous self tests [ 0.000000] rcu: Preemptible hierarchical RCU implementation. [ 0.000000] rcu: RCU lockdep checking is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4. [ 0.000000] rcu: RCU debug extended QS entry/exit. [ 0.000000] Trampoline variant of Tasks RCU enabled. [ 0.000000] Tracing variant of Tasks RCU enabled. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 [ 0.000000] Running RCU synchronous self tests [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] CPU with hartid=0 is not available [ 0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller [ 0.000000] riscv-intc: 64 local interrupts mapped [ 0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts. [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. [ 0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1] [ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns [ 0.000006] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns [ 0.015372] Console: colour dummy device 80x25 [ 0.020991] printk: console [tty0] enabled [ 0.026672] printk: bootconsole [ns16550a0] disabled [ 0.000000] Linux version 6.3.0-rc2-gd5e0396cf8bf-dirty (conor@spud) (ClangBuiltLinux clang version 15.0.7 (/stuff/brsdk/llvm/clang 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a), ClangBuiltLinux LLD 15.0.7) #1 SMP PREEMPT @7 [ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 [ 0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020000000 (options '115200n8') [ 0.000000] printk: bootconsole [ns16550a0] enabled [ 0.000000] efi: UEFI not found. [ 0.000000] OF: fdt: Reserved memory: failed to reserve memory for node 'region@BFC00000': base 0x00000000bfc00000, size 4 MiB [ 0.000000] OF: reserved mem: 0x00000000bfc00000..0x00000000bfffffff (4096 KiB) nomap non-reusable region@BFC00000 [ 0.000000] Zone ranges: [ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] Normal empty [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] On node 0, zone DMA32: 512 pages in unavailable ranges [ 0.000000] SBI specification v0.3 detected [ 0.000000] SBI implementation ID=0x1 Version=0x10000 [ 0.000000] SBI TIME extension detected [ 0.000000] SBI IPI extension detected [ 0.000000] SBI RFENCE extension detected [ 0.000000] SBI SRST extension detected [ 0.000000] SBI HSM extension detected [ 0.000000] CPU with hartid=0 is not available [ 0.000000] CPU with hartid=0 is not available [ 0.000000] CPU with hartid=0 is not available [ 0.000000] riscv: base ISA extensions acdfim [ 0.000000] riscv: ELF capabilities acdfim [ 0.000000] percpu: Embedded 29 pages/cpu s79648 r8192 d30944 u118784 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 258055 [ 0.000000] Kernel command line: root=/dev/nfs rw ip=dhcp nfsroot=99.99.99.5:/stuff/nfs_share,tcp,v3 rdinit=/usr/sbin/init rootwait=10 earlycon [ 0.000000] Unknown kernel command line parameters "rootwait=10", will be passed to user space. [ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear) [ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear) [ 0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off [ 0.000000] stackdepot: allocating hash table via alloc_large_system_hash [ 0.000000] stackdepot hash table entries: 1048576 (order: 11, 8388608 bytes, linear) [ 0.000000] Virtual kernel memory layout: [ 0.000000] fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000 (2048 kB) [ 0.000000] pci io : 0xffffffc6ff000000 - 0xffffffc700000000 ( 16 MB) [ 0.000000] vmemmap : 0xffffffc700000000 - 0xffffffc800000000 (4096 MB) [ 0.000000] vmalloc : 0xffffffc800000000 - 0xffffffd800000000 ( 64 GB) [ 0.000000] modules : 0xffffffff0305f000 - 0xffffffff80000000 (1999 MB) [ 0.000000] lowmem : 0xffffffd800000000 - 0xffffffd83fe00000 (1022 MB) [ 0.000000] kasan : 0xfffffff700000000 - 0xffffffff00000000 ( 32 GB) [ 0.000000] kernel : 0xffffffff80000000 - 0xffffffffffffffff (2047 MB) [ 0.000000] Memory: 545616K/1046528K available (16518K kernel code, 8042K rwdata, 8192K rodata, 2303K init, 12559K bss, 500912K reserved, 0K cma-reserved) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] trace event string verifier disabled [ 0.000000] Running RCU self tests [ 0.000000] Running RCU synchronous self tests [ 0.000000] rcu: Preemptible hierarchical RCU implementation. [ 0.000000] rcu: RCU lockdep checking is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4. [ 0.000000] rcu: RCU debug extended QS entry/exit. [ 0.000000] Trampoline variant of Tasks RCU enabled. [ 0.000000] Tracing variant of Tasks RCU enabled. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 [ 0.000000] Running RCU synchronous self tests [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] CPU with hartid=0 is not available [ 0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller [ 0.000000] riscv-intc: 64 local interrupts mapped [ 0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts. [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. [ 0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1] [ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns [ 0.000006] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns [ 0.015372] Console: colour dummy device 80x25 [ 0.020991] printk: console [tty0] enabled [ 0.026672] printk: bootconsole [ns16550a0] disabled [ 0.033749] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.035065] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.035844] ... MAX_LOCK_DEPTH: 48 [ 0.036633] ... MAX_LOCKDEP_KEYS: 8192 [ 0.037658] ... CLASSHASH_SIZE: 4096 [ 0.038478] ... MAX_LOCKDEP_ENTRIES: 32768 [ 0.039307] ... MAX_LOCKDEP_CHAINS: 65536 [ 0.040135] ... CHAINHASH_SIZE: 32768 [ 0.040963] memory used by lock dependency info: 6365 kB [ 0.042130] memory used for stack traces: 4224 kB [ 0.043012] per task-struct memory footprint: 1920 bytes [ 0.044452] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000) [ 0.046447] pid_max: default: 32768 minimum: 301 [ 0.052917] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear) [ 0.054369] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear) [ 0.084506] Running RCU synchronous self tests [ 0.085686] Running RCU synchronous self tests [ 0.095405] CPU node for /cpus/cpu@0 exist but the possible cpu range is :0-3 [ 0.130236] cblist_init_generic: Setting adjustable number of callback queues. [ 0.133050] cblist_init_generic: Setting shift to 2 and lim to 1. [ 0.137669] cblist_init_generic: Setting shift to 2 and lim to 1. [ 0.142192] Running RCU-tasks wait API self tests [ 0.263638] riscv: ELF compat mode unsupported [ 0.263807] ASID allocator disabled (0 bits) [ 0.270226] Callback from call_rcu_tasks_trace() invoked. [ 0.272903] rcu: Hierarchical SRCU implementation. [ 0.274289] rcu: Max phase no-delay instances is 1000. [ 0.302638] EFI services will not be available. [ 0.315637] smp: Bringing up secondary CPUs ... [ 0.396166] smp: Brought up 1 node, 4 CPUs [ 0.422047] devtmpfs: initialized [ 0.490692] Callback from call_rcu_tasks() invoked. [ 0.681118] Running RCU synchronous self tests [ 0.682861] Running RCU synchronous self tests [ 0.691211] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.693981] futex hash table entries: 1024 (order: 5, 131072 bytes, linear) [ 0.702882] pinctrl core: initialized pinctrl subsystem [ 0.744067] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 0.758314] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations [ 0.761255] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations [ 0.795383] cpuidle: using governor menu [ 1.272427] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages [ 1.274292] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page [ 1.411012] SCSI subsystem initialized [ 1.431885] usbcore: registered new interface driver usbfs [ 1.435740] usbcore: registered new interface driver hub [ 1.439351] usbcore: registered new device driver usb [ 1.462261] FPGA manager framework [ 1.512290] vgaarb: loaded [ 1.519890] clocksource: Switched to clocksource riscv_clocksource [ 2.009122] NET: Registered PF_INET protocol family [ 2.016053] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear) [ 2.052865] tcp_listen_portaddr_hash hash table entries: 512 (order: 3, 36864 bytes, linear) [ 2.056616] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 2.059500] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear) [ 2.072933] TCP bind hash table entries: 8192 (order: 8, 1179648 bytes, linear) [ 2.113517] TCP: Hash tables configured (established 8192 bind 8192) [ 2.120319] UDP hash table entries: 512 (order: 4, 81920 bytes, linear) [ 2.125390] UDP-Lite hash table entries: 512 (order: 4, 81920 bytes, linear) [ 2.136344] NET: Registered PF_UNIX/PF_LOCAL protocol family [ 2.161084] RPC: Registered named UNIX socket transport module. [ 2.162843] RPC: Registered udp transport module. [ 2.164402] RPC: Registered tcp transport module. [ 2.165631] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 2.167599] PCI: CLS 0 bytes, default 64 [ 2.190148] Unpacking initramfs... [ 2.251957] workingset: timestamp_bits=62 max_order=18 bucket_order=0 [ 2.296023] NFS: Registering the id_resolver key type [ 2.299423] Key type id_resolver registered [ 2.300826] Key type id_legacy registered [ 2.303490] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 2.305408] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering... [ 2.314304] 9p: Installing v9fs 9p2000 file system support [ 2.330388] NET: Registered PF_ALG protocol family [ 2.335558] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246) [ 2.337681] io scheduler mq-deadline registered [ 2.338886] io scheduler kyber registered [ 2.341159] io scheduler bfq registered [ 13.013052] String selftests succeeded [ 13.014173] test_string_helpers: Running tests... [ 13.386804] CCACHE: DataError @ 0x00000000.0807FFF8 [ 13.391444] CCACHE: DataFail @ 0x00000000.0807FFF0 [ 13.397053] CCACHE: 4 banks, 16 ways, sets/bank=512, bytes/block=64 [ 13.398602] CCACHE: Index of the largest way enabled: 11 [ 16.037879] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled [ 16.149343] 20000000.serial: ttyS0 at MMIO 0x20000000 (irq = 15, base_baud = 9375000) is a 16550A [ 16.156089] printk: console [ttyS0] enabled [ 17.265279] 20100000.serial: ttyS1 at MMIO 0x20100000 (irq = 16, base_baud = 9375000) is a 16550A [ 17.327497] 20102000.serial: ttyS2 at MMIO 0x20102000 (irq = 17, base_baud = 9375000) is a 16550A [ 17.389076] 20104000.serial: ttyS3 at MMIO 0x20104000 (irq = 18, base_baud = 9375000) is a 16550A [ 17.426517] of_serial: probe of 20106000.serial failed with error -28 [ 17.916595] loop: module loaded [ 17.964831] zram: Added device: zram0 [ 18.086264] microchip-corespi 20108000.spi: Registered SPI controller 0 [ 18.121095] microchip-corespi 20109000.spi: Registered SPI controller 1 [ 18.203919] spi-nor spi3.0: w25q128 (16384 Kbytes) [ 21.169496] Freeing initrd memory: 15668K [ 21.395452] macb 20110000.ethernet eth0: Cadence GEM rev 0x0107010c at 0x20110000 irq 23 (00:04:a3:41:d0:fd) [ 21.412679] e1000e: Intel(R) PRO/1000 Network Driver [ 21.419777] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. [ 21.460117] usbcore: registered new interface driver uas [ 21.469638] usbcore: registered new interface driver usb-storage [ 21.524504] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver [ 21.540183] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1 [ 21.610837] hub 1-0:1.0: USB hub found [ 21.621142] hub 1-0:1.0: 1 port detected [ 21.680372] mpfs-musb 20201000.usb: Registered MPFS MUSB driver [ 21.702517] mousedev: PS/2 mouse device common for all mice [ 21.724021] i2c_dev: i2c /dev entries driver [ 21.763554] microchip-corei2c 2010a000.i2c: registered CoreI2C bus driver [ 21.797752] microchip-corei2c 2010b000.i2c: registered CoreI2C bus driver [ 21.852615] sdhci: Secure Digital Host Controller Interface driver [ 21.860773] sdhci: Copyright(c) Pierre Ossman [ 21.868727] sdhci-pltfm: SDHCI platform and OF driver helper [ 21.895884] usbcore: registered new interface driver usbhid [ 21.902221] usbhid: USB HID core driver [ 21.936265] mpfs-mailbox 37020000.mailbox: Registered MPFS mailbox controller driver [ 21.966319] riscv-pmu-sbi: SBI PMU extension is available [ 21.973922] riscv-pmu-sbi: 15 firmware and 4 hardware counters [ 21.981727] riscv-pmu-sbi: Perf sampling/filtering is not supported as sscof extension is not available [ 21.996006] mmc0: SDHCI controller on 20008000.mmc [20008000.mmc] using ADMA 64-bit [ 22.032435] NET: Registered PF_INET6 protocol family [ 22.080829] Segment Routing with IPv6 [ 22.087604] In-situ OAM (IOAM) with IPv6 [ 22.094555] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 22.132241] NET: Registered PF_PACKET protocol family [ 22.143837] 9pnet: Installing 9P2000 support [ 22.145445] mmc0: new HS200 MMC card at address 0001 [ 22.160350] Key type dns_resolver registered [ 22.198172] mmcblk0: mmc0:0001 TB2916 14.6 GiB [ 22.359675] mmcblk0boot0: mmc0:0001 TB2916 4.00 MiB [ 22.472842] mmcblk0boot1: mmc0:0001 TB2916 4.00 MiB [ 22.574290] mmcblk0rpmb: mmc0:0001 TB2916 4.00 MiB, chardev (242:0) [ 23.619821] debug_vm_pgtable: [debug_vm_pgtable ]: Validating architecture page table helpers [ 23.910330] mpfs-sys-controller syscontroller: Registered MPFS system controller [ 23.955403] random: crng init done [ 23.961736] mpfs-rng mpfs-rng: Registered MPFS hwrng [ 24.040123] macb 20110000.ethernet eth0: PHY [20110000.ethernet-ffffffff:00] driver [RTL8211F Gigabit Ethernet] (irq=POLL) [ 24.055924] macb 20110000.ethernet eth0: configuring for phy/sgmii link mode [ 28.254478] macb 20110000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off [ 28.266341] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 28.275892] Sending DHCP requests ., OK [ 28.306175] IP-Config: Got DHCP answer from 99.99.99.1, my address is 99.99.99.97 [ 28.316744] IP-Config: Complete: [ 28.321357] device=eth0, hwaddr=00:04:a3:41:d0:fd, ipaddr=99.99.99.97, mask=255.255.255.0, gw=99.99.99.1 [ 28.334209] host=99.99.99.97, domain=, nis-domain=(none) [ 28.341874] bootserver=99.99.99.1, rootserver=99.99.99.5, rootpath= [ 28.342051] nameserver0=99.99.99.1 [ 28.684402] VFS: Mounted root (nfs filesystem) on device 0:16. [ 28.708272] devtmpfs: mounted [ 28.747831] Freeing unused kernel image (initmem) memory: 2300K [ 28.757755] Run /sbin/init as init process [ 39.469486] systemd[1]: System time before build time, advancing clock. [ 41.382394] systemd[1]: systemd v246.15-1.0.riscv64.fc33 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=unified) [ 41.432906] systemd[1]: Detected architecture riscv64.
Welcome to [0;34mFedora 33 (Rawhide)[0m!
[ 41.587681] systemd[1]: Set hostname to <fedora-riscv>.
[ 50.761418] systemd-sysv-generator[95]: SysV service '/etc/rc.d/init.d/livesys' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
[ 51.527913] zram_generator::generator[97]: Creating dev-zram0.swap for /dev/zram0 (275MB)
[ 57.964444] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.service:27: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 57.993549] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.service:28: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether.
[ 58.053419] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.service:23: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 58.081477] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.service:24: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether.
[ 58.145535] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.service:30: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 58.174372] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.service:31: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether.
[ 58.447602] systemd[1]: /usr/lib/systemd/system/gssproxy.service:13: PIDFile= references a path below legacy directory /var/run/, updating /var/run/gssproxy.pid → /run/gssproxy.pid; please update the unit file accordingly.
[ 59.596376] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.service:22: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 59.624034] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.service:23: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether.
[ 59.682316] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.service:22: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 59.709969] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.service:23: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether.
[ 59.766799] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.service:24: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 59.795713] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.service:25: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether.
[ 59.854333] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.service:26: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 59.882177] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.service:27: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether.
[ 63.677176] systemd[1]: /usr/lib/systemd/system/ip6tables.service:14: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 63.702465] systemd[1]: /usr/lib/systemd/system/ip6tables.service:15: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 63.755847] systemd[1]: /usr/lib/systemd/system/iptables.service:14: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 63.780923] systemd[1]: /usr/lib/systemd/system/iptables.service:15: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
[ 64.176567] systemd[1]: Queued start job for default target Graphical Interface.
[ 64.280125] systemd[1]: Created slice Slice /system/getty.
[[0;32m OK [0m] Created slice [0;1;39mSlice /system/getty[0m.
[ 64.354451] systemd[1]: Created slice Slice /system/modprobe.
[[0;32m OK [0m] Created slice [0;1;39mSlice /system/modprobe[0m.
[ 64.419976] systemd[1]: Created slice Slice /system/serial-getty.
[[0;32m OK [0m] Created slice [0;1;39mSlice /system/serial-getty[0m.
[ 64.488102] systemd[1]: Created slice Slice /system/sshd-keygen.
[[0;32m OK [0m] Created slice [0;1;39mSlice /system/sshd-keygen[0m.
[ 64.554661] systemd[1]: Created slice Slice /system/swap-create.
[[0;32m OK [0m] Created slice [0;1;39mSlice /system/swap-create[0m.
[ 64.621316] systemd[1]: Created slice User and Session Slice.
[[0;32m OK [0m] Created slice [0;1;39mUser and Session Slice[0m.
[ 64.678839] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[[0;32m OK [0m] Started [0;1;39mForward Password R…uests to Wall Directory Watch[0m.
[ 64.732402] systemd[1]: Condition check resulted in Arbitrary Executable File Formats File System Automount Point being skipped.
[ 64.749679] systemd[1]: Reached target Slices.
[[0;32m OK [0m] Reached target [0;1;39mSlices[0m.
[ 64.804090] systemd[1]: Listening on Device-mapper event daemon FIFOs.
[[0;32m OK [0m] Listening on [0;1;39mDevice-mapper event daemon FIFOs[0m.
[ 64.868427] systemd[1]: Listening on LVM2 poll daemon socket.
[[0;32m OK [0m] Listening on [0;1;39mLVM2 poll daemon socket[0m.
[ 64.998827] systemd[1]: Listening on Process Core Dump Socket.
[[0;32m OK [0m] Listening on [0;1;39mProcess Core Dump Socket[0m.
[ 65.061733] systemd[1]: Listening on initctl Compatibility Named Pipe.
[[0;32m OK [0m] Listening on [0;1;39minitctl Compatibility Named Pipe[0m.
[ 65.762318] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
[ 65.803879] systemd[1]: Listening on Journal Socket (/dev/log).
[[0;32m OK [0m] Listening on [0;1;39mJournal Socket (/dev/log)[0m.
[ 65.870028] systemd[1]: Listening on Journal Socket.
[[0;32m OK [0m] Listening on [0;1;39mJournal Socket[0m.
[ 65.966580] systemd[1]: Listening on udev Control Socket.
[[0;32m OK [0m] Listening on [0;1;39mudev Control Socket[0m.
[ 66.016638] systemd[1]: Listening on udev Kernel Socket.
[[0;32m OK [0m] Listening on [0;1;39mudev Kernel Socket[0m.
[ 66.072113] systemd[1]: Listening on User Database Manager Socket.
[[0;32m OK [0m] Listening on [0;1;39mUser Database Manager Socket[0m.
[ 66.265196] systemd[1]: Mounting Huge Pages File System...
Mounting [0;1;39mHuge Pages File System[0m...
[ 66.477098] systemd[1]: Mounting POSIX Message Queue File System...
Mounting [0;1;39mPOSIX Message Queue File System[0m...
[ 66.717215] systemd[1]: Mounting Kernel Debug File System...
Mounting [0;1;39mKernel Debug File System[0m...
[ 67.000634] systemd[1]: Mounting Kernel Trace File System...
Mounting [0;1;39mKernel Trace File System[0m...
[ 67.061135] systemd[1]: Condition check resulted in Kernel Module supporting RPCSEC_GSS being skipped.
[ 67.078706] systemd[1]: Condition check resulted in Create list of static device nodes for the current kernel being skipped.
[ 67.246059] systemd[1]: Starting Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling...
Starting [0;1;39mMonitoring of LVM…meventd or progress polling[0m...
[ 67.451615] systemd[1]: Starting Load Kernel Module configfs...
Starting [0;1;39mLoad Kernel Module configfs[0m...
[ 67.643795] systemd[1]: Starting Load Kernel Module drm...
Starting [0;1;39mLoad Kernel Module drm[0m...
[ 67.889066] systemd[1]: Starting Load Kernel Module fuse...
Starting [0;1;39mLoad Kernel Module fuse[0m...
[ 68.223484] systemd[1]: Starting Preprocess NFS configuration convertion...
Starting [0;1;39mPreprocess NFS configuration convertion[0m...
[ 68.405239] systemd[1]: Condition check resulted in Set Up Additional Binary Formats being skipped.
[ 68.685006] systemd[1]: Starting Load Kernel Modules...
Starting [0;1;39mLoad Kernel Modules[0m...
[ 68.936926] systemd[1]: Starting Remount Root and Kernel File Systems...
Starting [0;1;39mRemount Root and Kernel File Systems[0m...
[ 69.026562] systemd[1]: Condition check resulted in Repartition Root Disk being skipped.
[ 69.217824] systemd[1]: Starting Coldplug All udev Devices...
Starting [0;1;39mColdplug All udev Devices[0m...
[ 69.476888] systemd[1]: Starting Setup Virtual Console...
Starting [0;1;39mSetup Virtual Console[0m...
[ 69.908789] systemd[1]: Mounted Huge Pages File System.
[[0;32m OK [0m] Mounted [0;1;39mHuge Pages File System[0m.
[ 69.985603] systemd[1]: Mounted POSIX Message Queue File System.
[[0;32m OK [0m] Mounted [0;1;39mPOSIX Message Queue File System[0m.
[ 70.097151] systemd[1]: Mounted Kernel Debug File System.
[[0;32m OK [0m] Mounted [0;1;39mKernel Debug File System[0m.
[ 70.243463] systemd[1]: Mounted Kernel Trace File System.
[[0;32m OK [0m] Mounted [0;1;39mKernel Trace File System[0m.
[ 70.407632] systemd[1]: [email protected]: Succeeded.
[ 70.493564] systemd[1]: Finished Load Kernel Module configfs.
[[0;32m OK [0m] Finished [0;1;39mLoad Kernel Module configfs[0m.
[ 71.599759] systemd[1]: [email protected]: Succeeded.
[ 71.667485] systemd[1]: Finished Load Kernel Module drm.
[[0;32m OK [0m] Finished [0;1;39mLoad Kernel Module drm[0m.
[ 71.800153] systemd[1]: [email protected]: Succeeded.
[ 71.890649] systemd[1]: Finished Load Kernel Module fuse.
[[0;32m OK [0m] Finished [0;1;39mLoad Kernel Module fuse[0m.
[ 72.030929] systemd[1]: nfs-convert.service: Succeeded.
[ 72.143720] systemd[1]: Finished Preprocess NFS configuration convertion.
[[0;32m OK [0m] Finished [0;1;39mPreprocess NFS configuration convertion[0m.
[ 72.226306] systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE
[ 72.288874] systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'.
[ 72.405669] systemd[1]: Failed to start Load Kernel Modules.
[[0;1;31mFAILED[0m] Failed to start [0;1;39mLoad Kernel Modules[0m.
See 'systemctl status systemd-modules-load.service' for details.
[ 72.490312] systemd[1]: systemd-modules-load.service: Consumed 1.437s CPU time.
[ 72.572603] systemd[1]: Condition check resulted in FUSE Control File System being skipped.
[ 72.596232] systemd[1]: Condition check resulted in Kernel Configuration File System being skipped.
[ 72.813113] systemd[1]: Starting Apply Kernel Variables...
Starting [0;1;39mApply Kernel Variables[0m...
[ 73.694614] systemd[1]: systemd-remount-fs.service: Main process exited, code=exited, status=1/FAILURE
[ 73.736508] systemd[1]: systemd-remount-fs.service: Failed with result 'exit-code'.
[ 73.781556] systemd[1]: Failed to start Remount Root and Kernel File Systems.
[[0;1;31mFAILED[0m] Failed to start [0;1;39mRemount Root and Kernel File Systems[0m.
See 'systemctl status systemd-remount-fs.service' for details.
[ 73.866320] systemd[1]: systemd-remount-fs.service: Consumed 2.933s CPU time.
[ 73.899554] systemd[1]: Condition check resulted in First Boot Wizard being skipped.
[ 73.988234] systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped.
[ 74.177164] systemd[1]: Starting Load/Save Random Seed...
Starting [0;1;39mLoad/Save Random Seed[0m...
[ 74.298545] systemd[1]: Condition check resulted in Create System Users being skipped.
[ 74.658647] systemd[1]: Starting Create Static Device Nodes in /dev...
Starting [0;1;39mCreate Static Device Nodes in /dev[0m...
[ 75.179823] systemd[1]: Finished Apply Kernel Variables.[[0;32m OK [0m] Finished [0;1;39mApply Kernel Variables[0m.
Palmer Dabbelt
maintainerRe: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 36 lines · Conor Dooley
Quoted 35 lines · Heiko Stübner
Hi,
Am Freitag, 31. März 2023, 20:41:35 CEST schrieb Conor Dooley:
Quoted 20 lines · Conor Dooley
Quoted 19 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
Quoted 6 lines
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:Quoted 7 lines
- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customThis has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/Quoted 5 lines
Quoted 2 lines
It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Quoted 6 lines
Quoted 3 lines
Though my board is stuck in some failure loop with both the journal- as well as the timesyncd service failing again and again. And I haven't figured out how to get logs without a working login console yet.
I'll attach the full output from a run I guess. journald fails ad infinitum for me too after I cut this log off.
Thanks for looking at this. I'm not opposed to reverting the generic entry stuff if it's breaking things, but it's a nice cleanup so it'd be great to keep it if possible. I'm going to keep picking up other features for now, but if folks run out of patience trying to fix the bug then LMK and I'll figure out how to drop the series.
Quoted 440 lines
Cheers,
Conor.[ 0.000000] Linux version 6.3.0-rc2-gd5e0396cf8bf-dirty (conor@spud) (ClangBuiltLinux clang version 15.0.7 (/stuff/brsdk/llvm/clang 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a), ClangBuiltLinux LLD 15.0.7) #1 SMP PREEMPT @7 [ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 [ 0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020000000 (options '115200n8') [ 0.000000] printk: bootconsole [ns16550a0] enabled [ 0.000000] efi: UEFI not found. [ 0.000000] OF: fdt: Reserved memory: failed to reserve memory for node 'region@BFC00000': base 0x00000000bfc00000, size 4 MiB [ 0.000000] OF: reserved mem: 0x00000000bfc00000..0x00000000bfffffff (4096 KiB) nomap non-reusable region@BFC00000 [ 0.000000] Zone ranges: [ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] Normal empty [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] On node 0, zone DMA32: 512 pages in unavailable ranges [ 0.000000] SBI specification v0.3 detected [ 0.000000] SBI implementation ID=0x1 Version=0x10000 [ 0.000000] SBI TIME extension detected [ 0.000000] SBI IPI extension detected [ 0.000000] SBI RFENCE extension detected [ 0.000000] SBI SRST extension detected [ 0.000000] SBI HSM extension detected [ 0.000000] CPU with hartid=0 is not available [ 0.000000] CPU with hartid=0 is not available [ 0.000000] CPU with hartid=0 is not available [ 0.000000] riscv: base ISA extensions acdfim [ 0.000000] riscv: ELF capabilities acdfim [ 0.000000] percpu: Embedded 29 pages/cpu s79648 r8192 d30944 u118784 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 258055 [ 0.000000] Kernel command line: root=/dev/nfs rw ip=dhcp nfsroot=99.99.99.5:/stuff/nfs_share,tcp,v3 rdinit=/usr/sbin/init rootwait=10 earlycon [ 0.000000] Unknown kernel command line parameters "rootwait=10", will be passed to user space. [ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear) [ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear) [ 0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off [ 0.000000] stackdepot: allocating hash table via alloc_large_system_hash [ 0.000000] stackdepot hash table entries: 1048576 (order: 11, 8388608 bytes, linear) [ 0.000000] Virtual kernel memory layout: [ 0.000000] fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000 (2048 kB) [ 0.000000] pci io : 0xffffffc6ff000000 - 0xffffffc700000000 ( 16 MB) [ 0.000000] vmemmap : 0xffffffc700000000 - 0xffffffc800000000 (4096 MB) [ 0.000000] vmalloc : 0xffffffc800000000 - 0xffffffd800000000 ( 64 GB) [ 0.000000] modules : 0xffffffff0305f000 - 0xffffffff80000000 (1999 MB) [ 0.000000] lowmem : 0xffffffd800000000 - 0xffffffd83fe00000 (1022 MB) [ 0.000000] kasan : 0xfffffff700000000 - 0xffffffff00000000 ( 32 GB) [ 0.000000] kernel : 0xffffffff80000000 - 0xffffffffffffffff (2047 MB) [ 0.000000] Memory: 545616K/1046528K available (16518K kernel code, 8042K rwdata, 8192K rodata, 2303K init, 12559K bss, 500912K reserved, 0K cma-reserved) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] trace event string verifier disabled [ 0.000000] Running RCU self tests [ 0.000000] Running RCU synchronous self tests [ 0.000000] rcu: Preemptible hierarchical RCU implementation. [ 0.000000] rcu: RCU lockdep checking is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4. [ 0.000000] rcu: RCU debug extended QS entry/exit. [ 0.000000] Trampoline variant of Tasks RCU enabled. [ 0.000000] Tracing variant of Tasks RCU enabled. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 [ 0.000000] Running RCU synchronous self tests [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] CPU with hartid=0 is not available [ 0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller [ 0.000000] riscv-intc: 64 local interrupts mapped [ 0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts. [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. [ 0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1] [ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns [ 0.000006] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns [ 0.015372] Console: colour dummy device 80x25 [ 0.020991] printk: console [tty0] enabled [ 0.026672] printk: bootconsole [ns16550a0] disabled [ 0.000000] Linux version 6.3.0-rc2-gd5e0396cf8bf-dirty (conor@spud) (ClangBuiltLinux clang version 15.0.7 (/stuff/brsdk/llvm/clang 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a), ClangBuiltLinux LLD 15.0.7) #1 SMP PREEMPT @7 [ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 [ 0.000000] Machine model: Microchip PolarFire-SoC Icicle Kit [ 0.000000] earlycon: ns16550a0 at MMIO32 0x0000000020000000 (options '115200n8') [ 0.000000] printk: bootconsole [ns16550a0] enabled [ 0.000000] efi: UEFI not found. [ 0.000000] OF: fdt: Reserved memory: failed to reserve memory for node 'region@BFC00000': base 0x00000000bfc00000, size 4 MiB [ 0.000000] OF: reserved mem: 0x00000000bfc00000..0x00000000bfffffff (4096 KiB) nomap non-reusable region@BFC00000 [ 0.000000] Zone ranges: [ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] Normal empty [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff] [ 0.000000] On node 0, zone DMA32: 512 pages in unavailable ranges [ 0.000000] SBI specification v0.3 detected [ 0.000000] SBI implementation ID=0x1 Version=0x10000 [ 0.000000] SBI TIME extension detected [ 0.000000] SBI IPI extension detected [ 0.000000] SBI RFENCE extension detected [ 0.000000] SBI SRST extension detected [ 0.000000] SBI HSM extension detected [ 0.000000] CPU with hartid=0 is not available [ 0.000000] CPU with hartid=0 is not available [ 0.000000] CPU with hartid=0 is not available [ 0.000000] riscv: base ISA extensions acdfim [ 0.000000] riscv: ELF capabilities acdfim [ 0.000000] percpu: Embedded 29 pages/cpu s79648 r8192 d30944 u118784 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 258055 [ 0.000000] Kernel command line: root=/dev/nfs rw ip=dhcp nfsroot=99.99.99.5:/stuff/nfs_share,tcp,v3 rdinit=/usr/sbin/init rootwait=10 earlycon [ 0.000000] Unknown kernel command line parameters "rootwait=10", will be passed to user space. [ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear) [ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear) [ 0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off [ 0.000000] stackdepot: allocating hash table via alloc_large_system_hash [ 0.000000] stackdepot hash table entries: 1048576 (order: 11, 8388608 bytes, linear) [ 0.000000] Virtual kernel memory layout: [ 0.000000] fixmap : 0xffffffc6fee00000 - 0xffffffc6ff000000 (2048 kB) [ 0.000000] pci io : 0xffffffc6ff000000 - 0xffffffc700000000 ( 16 MB) [ 0.000000] vmemmap : 0xffffffc700000000 - 0xffffffc800000000 (4096 MB) [ 0.000000] vmalloc : 0xffffffc800000000 - 0xffffffd800000000 ( 64 GB) [ 0.000000] modules : 0xffffffff0305f000 - 0xffffffff80000000 (1999 MB) [ 0.000000] lowmem : 0xffffffd800000000 - 0xffffffd83fe00000 (1022 MB) [ 0.000000] kasan : 0xfffffff700000000 - 0xffffffff00000000 ( 32 GB) [ 0.000000] kernel : 0xffffffff80000000 - 0xffffffffffffffff (2047 MB) [ 0.000000] Memory: 545616K/1046528K available (16518K kernel code, 8042K rwdata, 8192K rodata, 2303K init, 12559K bss, 500912K reserved, 0K cma-reserved) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] trace event string verifier disabled [ 0.000000] Running RCU self tests [ 0.000000] Running RCU synchronous self tests [ 0.000000] rcu: Preemptible hierarchical RCU implementation. [ 0.000000] rcu: RCU lockdep checking is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=4. [ 0.000000] rcu: RCU debug extended QS entry/exit. [ 0.000000] Trampoline variant of Tasks RCU enabled. [ 0.000000] Tracing variant of Tasks RCU enabled. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 [ 0.000000] Running RCU synchronous self tests [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] CPU with hartid=0 is not available [ 0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller [ 0.000000] riscv-intc: 64 local interrupts mapped [ 0.000000] plic: interrupt-controller@c000000: mapped 186 interrupts with 4 handlers for 9 contexts. [ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. [ 0.000000] riscv-timer: riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1] [ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns [ 0.000006] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns [ 0.015372] Console: colour dummy device 80x25 [ 0.020991] printk: console [tty0] enabled [ 0.026672] printk: bootconsole [ns16550a0] disabled [ 0.033749] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.035065] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.035844] ... MAX_LOCK_DEPTH: 48 [ 0.036633] ... MAX_LOCKDEP_KEYS: 8192 [ 0.037658] ... CLASSHASH_SIZE: 4096 [ 0.038478] ... MAX_LOCKDEP_ENTRIES: 32768 [ 0.039307] ... MAX_LOCKDEP_CHAINS: 65536 [ 0.040135] ... CHAINHASH_SIZE: 32768 [ 0.040963] memory used by lock dependency info: 6365 kB [ 0.042130] memory used for stack traces: 4224 kB [ 0.043012] per task-struct memory footprint: 1920 bytes [ 0.044452] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000) [ 0.046447] pid_max: default: 32768 minimum: 301 [ 0.052917] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear) [ 0.054369] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear) [ 0.084506] Running RCU synchronous self tests [ 0.085686] Running RCU synchronous self tests [ 0.095405] CPU node for /cpus/cpu@0 exist but the possible cpu range is :0-3 [ 0.130236] cblist_init_generic: Setting adjustable number of callback queues. [ 0.133050] cblist_init_generic: Setting shift to 2 and lim to 1. [ 0.137669] cblist_init_generic: Setting shift to 2 and lim to 1. [ 0.142192] Running RCU-tasks wait API self tests [ 0.263638] riscv: ELF compat mode unsupported [ 0.263807] ASID allocator disabled (0 bits) [ 0.270226] Callback from call_rcu_tasks_trace() invoked. [ 0.272903] rcu: Hierarchical SRCU implementation. [ 0.274289] rcu: Max phase no-delay instances is 1000. [ 0.302638] EFI services will not be available. [ 0.315637] smp: Bringing up secondary CPUs ... [ 0.396166] smp: Brought up 1 node, 4 CPUs [ 0.422047] devtmpfs: initialized [ 0.490692] Callback from call_rcu_tasks() invoked. [ 0.681118] Running RCU synchronous self tests [ 0.682861] Running RCU synchronous self tests [ 0.691211] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.693981] futex hash table entries: 1024 (order: 5, 131072 bytes, linear) [ 0.702882] pinctrl core: initialized pinctrl subsystem [ 0.744067] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 0.758314] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations [ 0.761255] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations [ 0.795383] cpuidle: using governor menu [ 1.272427] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages [ 1.274292] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page [ 1.411012] SCSI subsystem initialized [ 1.431885] usbcore: registered new interface driver usbfs [ 1.435740] usbcore: registered new interface driver hub [ 1.439351] usbcore: registered new device driver usb [ 1.462261] FPGA manager framework [ 1.512290] vgaarb: loaded [ 1.519890] clocksource: Switched to clocksource riscv_clocksource [ 2.009122] NET: Registered PF_INET protocol family [ 2.016053] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear) [ 2.052865] tcp_listen_portaddr_hash hash table entries: 512 (order: 3, 36864 bytes, linear) [ 2.056616] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 2.059500] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear) [ 2.072933] TCP bind hash table entries: 8192 (order: 8, 1179648 bytes, linear) [ 2.113517] TCP: Hash tables configured (established 8192 bind 8192) [ 2.120319] UDP hash table entries: 512 (order: 4, 81920 bytes, linear) [ 2.125390] UDP-Lite hash table entries: 512 (order: 4, 81920 bytes, linear) [ 2.136344] NET: Registered PF_UNIX/PF_LOCAL protocol family [ 2.161084] RPC: Registered named UNIX socket transport module. [ 2.162843] RPC: Registered udp transport module. [ 2.164402] RPC: Registered tcp transport module. [ 2.165631] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 2.167599] PCI: CLS 0 bytes, default 64 [ 2.190148] Unpacking initramfs... [ 2.251957] workingset: timestamp_bits=62 max_order=18 bucket_order=0 [ 2.296023] NFS: Registering the id_resolver key type [ 2.299423] Key type id_resolver registered [ 2.300826] Key type id_legacy registered [ 2.303490] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 2.305408] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering... [ 2.314304] 9p: Installing v9fs 9p2000 file system support [ 2.330388] NET: Registered PF_ALG protocol family [ 2.335558] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246) [ 2.337681] io scheduler mq-deadline registered [ 2.338886] io scheduler kyber registered [ 2.341159] io scheduler bfq registered [ 13.013052] String selftests succeeded [ 13.014173] test_string_helpers: Running tests... [ 13.386804] CCACHE: DataError @ 0x00000000.0807FFF8 [ 13.391444] CCACHE: DataFail @ 0x00000000.0807FFF0 [ 13.397053] CCACHE: 4 banks, 16 ways, sets/bank=512, bytes/block=64 [ 13.398602] CCACHE: Index of the largest way enabled: 11 [ 16.037879] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled [ 16.149343] 20000000.serial: ttyS0 at MMIO 0x20000000 (irq = 15, base_baud = 9375000) is a 16550A [ 16.156089] printk: console [ttyS0] enabled [ 17.265279] 20100000.serial: ttyS1 at MMIO 0x20100000 (irq = 16, base_baud = 9375000) is a 16550A [ 17.327497] 20102000.serial: ttyS2 at MMIO 0x20102000 (irq = 17, base_baud = 9375000) is a 16550A [ 17.389076] 20104000.serial: ttyS3 at MMIO 0x20104000 (irq = 18, base_baud = 9375000) is a 16550A [ 17.426517] of_serial: probe of 20106000.serial failed with error -28 [ 17.916595] loop: module loaded [ 17.964831] zram: Added device: zram0 [ 18.086264] microchip-corespi 20108000.spi: Registered SPI controller 0 [ 18.121095] microchip-corespi 20109000.spi: Registered SPI controller 1 [ 18.203919] spi-nor spi3.0: w25q128 (16384 Kbytes) [ 21.169496] Freeing initrd memory: 15668K [ 21.395452] macb 20110000.ethernet eth0: Cadence GEM rev 0x0107010c at 0x20110000 irq 23 (00:04:a3:41:d0:fd) [ 21.412679] e1000e: Intel(R) PRO/1000 Network Driver [ 21.419777] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. [ 21.460117] usbcore: registered new interface driver uas [ 21.469638] usbcore: registered new interface driver usb-storage [ 21.524504] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver [ 21.540183] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1 [ 21.610837] hub 1-0:1.0: USB hub found [ 21.621142] hub 1-0:1.0: 1 port detected [ 21.680372] mpfs-musb 20201000.usb: Registered MPFS MUSB driver [ 21.702517] mousedev: PS/2 mouse device common for all mice [ 21.724021] i2c_dev: i2c /dev entries driver [ 21.763554] microchip-corei2c 2010a000.i2c: registered CoreI2C bus driver [ 21.797752] microchip-corei2c 2010b000.i2c: registered CoreI2C bus driver [ 21.852615] sdhci: Secure Digital Host Controller Interface driver [ 21.860773] sdhci: Copyright(c) Pierre Ossman [ 21.868727] sdhci-pltfm: SDHCI platform and OF driver helper [ 21.895884] usbcore: registered new interface driver usbhid [ 21.902221] usbhid: USB HID core driver [ 21.936265] mpfs-mailbox 37020000.mailbox: Registered MPFS mailbox controller driver [ 21.966319] riscv-pmu-sbi: SBI PMU extension is available [ 21.973922] riscv-pmu-sbi: 15 firmware and 4 hardware counters [ 21.981727] riscv-pmu-sbi: Perf sampling/filtering is not supported as sscof extension is not available [ 21.996006] mmc0: SDHCI controller on 20008000.mmc [20008000.mmc] using ADMA 64-bit [ 22.032435] NET: Registered PF_INET6 protocol family [ 22.080829] Segment Routing with IPv6 [ 22.087604] In-situ OAM (IOAM) with IPv6 [ 22.094555] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 22.132241] NET: Registered PF_PACKET protocol family [ 22.143837] 9pnet: Installing 9P2000 support [ 22.145445] mmc0: new HS200 MMC card at address 0001 [ 22.160350] Key type dns_resolver registered [ 22.198172] mmcblk0: mmc0:0001 TB2916 14.6 GiB [ 22.359675] mmcblk0boot0: mmc0:0001 TB2916 4.00 MiB [ 22.472842] mmcblk0boot1: mmc0:0001 TB2916 4.00 MiB [ 22.574290] mmcblk0rpmb: mmc0:0001 TB2916 4.00 MiB, chardev (242:0) [ 23.619821] debug_vm_pgtable: [debug_vm_pgtable ]: Validating architecture page table helpers [ 23.910330] mpfs-sys-controller syscontroller: Registered MPFS system controller [ 23.955403] random: crng init done [ 23.961736] mpfs-rng mpfs-rng: Registered MPFS hwrng [ 24.040123] macb 20110000.ethernet eth0: PHY [20110000.ethernet-ffffffff:00] driver [RTL8211F Gigabit Ethernet] (irq=POLL) [ 24.055924] macb 20110000.ethernet eth0: configuring for phy/sgmii link mode [ 28.254478] macb 20110000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off [ 28.266341] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 28.275892] Sending DHCP requests ., OK [ 28.306175] IP-Config: Got DHCP answer from 99.99.99.1, my address is 99.99.99.97 [ 28.316744] IP-Config: Complete: [ 28.321357] device=eth0, hwaddr=00:04:a3:41:d0:fd, ipaddr=99.99.99.97, mask=255.255.255.0, gw=99.99.99.1 [ 28.334209] host=99.99.99.97, domain=, nis-domain=(none) [ 28.341874] bootserver=99.99.99.1, rootserver=99.99.99.5, rootpath= [ 28.342051] nameserver0=99.99.99.1 [ 28.684402] VFS: Mounted root (nfs filesystem) on device 0:16. [ 28.708272] devtmpfs: mounted [ 28.747831] Freeing unused kernel image (initmem) memory: 2300K [ 28.757755] Run /sbin/init as init process [ 39.469486] systemd[1]: System time before build time, advancing clock. [ 41.382394] systemd[1]: systemd v246.15-1.0.riscv64.fc33 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=unified) [ 41.432906] systemd[1]: Detected architecture riscv64.Welcome to [0;34mFedora 33 (Rawhide)[0m!
[ 41.587681] systemd[1]: Set hostname to <fedora-riscv>. [ 50.761418] systemd-sysv-generator[95]: SysV service '/etc/rc.d/init.d/livesys' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust. [ 51.527913] zram_generator::generator[97]: Creating dev-zram0.swap for /dev/zram0 (275MB) [ 57.964444] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.service:27: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 57.993549] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-udev.service:28: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether. [ 58.053419] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.service:23: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 58.081477] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-trigger.service:24: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether. [ 58.145535] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.service:30: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 58.174372] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-pivot.service:31: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether. [ 58.447602] systemd[1]: /usr/lib/systemd/system/gssproxy.service:13: PIDFile= references a path below legacy directory /var/run/, updating /var/run/gssproxy.pid → /run/gssproxy.pid; please update the unit file accordingly. [ 59.596376] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.service:22: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 59.624034] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-pre-mount.service:23: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether. [ 59.682316] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.service:22: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 59.709969] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-mount.service:23: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether. [ 59.766799] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.service:24: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 59.795713] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-initqueue.service:25: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether. [ 59.854333] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.service:26: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 59.882177] systemd[1]: /usr/lib/dracut/modules.d/98dracut-systemd/dracut-cmdline.service:27: Standard output type syslog+console is obsolete, automatically updating to journal+console. Please update your unit file, and consider removing the setting altogether. [ 63.677176] systemd[1]: /usr/lib/systemd/system/ip6tables.service:14: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 63.702465] systemd[1]: /usr/lib/systemd/system/ip6tables.service:15: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 63.755847] systemd[1]: /usr/lib/systemd/system/iptables.service:14: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 63.780923] systemd[1]: /usr/lib/systemd/system/iptables.service:15: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether. [ 64.176567] systemd[1]: Queued start job for default target Graphical Interface. [ 64.280125] systemd[1]: Created slice Slice /system/getty. [[0;32m OK [0m] Created slice [0;1;39mSlice /system/getty[0m. [ 64.354451] systemd[1]: Created slice Slice /system/modprobe. [[0;32m OK [0m] Created slice [0;1;39mSlice /system/modprobe[0m. [ 64.419976] systemd[1]: Created slice Slice /system/serial-getty. [[0;32m OK [0m] Created slice [0;1;39mSlice /system/serial-getty[0m. [ 64.488102] systemd[1]: Created slice Slice /system/sshd-keygen. [[0;32m OK [0m] Created slice [0;1;39mSlice /system/sshd-keygen[0m. [ 64.554661] systemd[1]: Created slice Slice /system/swap-create. [[0;32m OK [0m] Created slice [0;1;39mSlice /system/swap-create[0m. [ 64.621316] systemd[1]: Created slice User and Session Slice. [[0;32m OK [0m] Created slice [0;1;39mUser and Session Slice[0m. [ 64.678839] systemd[1]: Started Forward Password Requests to Wall Directory Watch. [[0;32m OK [0m] Started [0;1;39mForward Password R…uests to Wall Directory Watch[0m. [ 64.732402] systemd[1]: Condition check resulted in Arbitrary Executable File Formats File System Automount Point being skipped. [ 64.749679] systemd[1]: Reached target Slices. [[0;32m OK [0m] Reached target [0;1;39mSlices[0m. [ 64.804090] systemd[1]: Listening on Device-mapper event daemon FIFOs. [[0;32m OK [0m] Listening on [0;1;39mDevice-mapper event daemon FIFOs[0m. [ 64.868427] systemd[1]: Listening on LVM2 poll daemon socket. [[0;32m OK [0m] Listening on [0;1;39mLVM2 poll daemon socket[0m. [ 64.998827] systemd[1]: Listening on Process Core Dump Socket. [[0;32m OK [0m] Listening on [0;1;39mProcess Core Dump Socket[0m. [ 65.061733] systemd[1]: Listening on initctl Compatibility Named Pipe. [[0;32m OK [0m] Listening on [0;1;39minitctl Compatibility Named Pipe[0m. [ 65.762318] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 65.803879] systemd[1]: Listening on Journal Socket (/dev/log). [[0;32m OK [0m] Listening on [0;1;39mJournal Socket (/dev/log)[0m. [ 65.870028] systemd[1]: Listening on Journal Socket. [[0;32m OK [0m] Listening on [0;1;39mJournal Socket[0m. [ 65.966580] systemd[1]: Listening on udev Control Socket. [[0;32m OK [0m] Listening on [0;1;39mudev Control Socket[0m. [ 66.016638] systemd[1]: Listening on udev Kernel Socket. [[0;32m OK [0m] Listening on [0;1;39mudev Kernel Socket[0m. [ 66.072113] systemd[1]: Listening on User Database Manager Socket. [[0;32m OK [0m] Listening on [0;1;39mUser Database Manager Socket[0m. [ 66.265196] systemd[1]: Mounting Huge Pages File System... Mounting [0;1;39mHuge Pages File System[0m... [ 66.477098] systemd[1]: Mounting POSIX Message Queue File System... Mounting [0;1;39mPOSIX Message Queue File System[0m... [ 66.717215] systemd[1]: Mounting Kernel Debug File System... Mounting [0;1;39mKernel Debug File System[0m... [ 67.000634] systemd[1]: Mounting Kernel Trace File System... Mounting [0;1;39mKernel Trace File System[0m... [ 67.061135] systemd[1]: Condition check resulted in Kernel Module supporting RPCSEC_GSS being skipped. [ 67.078706] systemd[1]: Condition check resulted in Create list of static device nodes for the current kernel being skipped. [ 67.246059] systemd[1]: Starting Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling... Starting [0;1;39mMonitoring of LVM…meventd or progress polling[0m... [ 67.451615] systemd[1]: Starting Load Kernel Module configfs... Starting [0;1;39mLoad Kernel Module configfs[0m... [ 67.643795] systemd[1]: Starting Load Kernel Module drm... Starting [0;1;39mLoad Kernel Module drm[0m... [ 67.889066] systemd[1]: Starting Load Kernel Module fuse... Starting [0;1;39mLoad Kernel Module fuse[0m... [ 68.223484] systemd[1]: Starting Preprocess NFS configuration convertion... Starting [0;1;39mPreprocess NFS configuration convertion[0m... [ 68.405239] systemd[1]: Condition check resulted in Set Up Additional Binary Formats being skipped. [ 68.685006] systemd[1]: Starting Load Kernel Modules... Starting [0;1;39mLoad Kernel Modules[0m... [ 68.936926] systemd[1]: Starting Remount Root and Kernel File Systems... Starting [0;1;39mRemount Root and Kernel File Systems[0m... [ 69.026562] systemd[1]: Condition check resulted in Repartition Root Disk being skipped. [ 69.217824] systemd[1]: Starting Coldplug All udev Devices... Starting [0;1;39mColdplug All udev Devices[0m... [ 69.476888] systemd[1]: Starting Setup Virtual Console... Starting [0;1;39mSetup Virtual Console[0m... [ 69.908789] systemd[1]: Mounted Huge Pages File System. [[0;32m OK [0m] Mounted [0;1;39mHuge Pages File System[0m. [ 69.985603] systemd[1]: Mounted POSIX Message Queue File System. [[0;32m OK [0m] Mounted [0;1;39mPOSIX Message Queue File System[0m. [ 70.097151] systemd[1]: Mounted Kernel Debug File System. [[0;32m OK [0m] Mounted [0;1;39mKernel Debug File System[0m. [ 70.243463] systemd[1]: Mounted Kernel Trace File System. [[0;32m OK [0m] Mounted [0;1;39mKernel Trace File System[0m. [ 70.407632] systemd[1]: [email protected]: Succeeded. [ 70.493564] systemd[1]: Finished Load Kernel Module configfs. [[0;32m OK [0m] Finished [0;1;39mLoad Kernel Module configfs[0m. [ 71.599759] systemd[1]: [email protected]: Succeeded. [ 71.667485] systemd[1]: Finished Load Kernel Module drm. [[0;32m OK [0m] Finished [0;1;39mLoad Kernel Module drm[0m. [ 71.800153] systemd[1]: [email protected]: Succeeded. [ 71.890649] systemd[1]: Finished Load Kernel Module fuse. [[0;32m OK [0m] Finished [0;1;39mLoad Kernel Module fuse[0m. [ 72.030929] systemd[1]: nfs-convert.service: Succeeded. [ 72.143720] systemd[1]: Finished Preprocess NFS configuration convertion. [[0;32m OK [0m] Finished [0;1;39mPreprocess NFS configuration convertion[0m. [ 72.226306] systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE [ 72.288874] systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'. [ 72.405669] systemd[1]: Failed to start Load Kernel Modules. [[0;1;31mFAILED[0m] Failed to start [0;1;39mLoad Kernel Modules[0m. See 'systemctl status systemd-modules-load.service' for details. [ 72.490312] systemd[1]: systemd-modules-load.service: Consumed 1.437s CPU time. [ 72.572603] systemd[1]: Condition check resulted in FUSE Control File System being skipped. [ 72.596232] systemd[1]: Condition check resulted in Kernel Configuration File System being skipped. [ 72.813113] systemd[1]: Starting Apply Kernel Variables... Starting [0;1;39mApply Kernel Variables[0m... [ 73.694614] systemd[1]: systemd-remount-fs.service: Main process exited, code=exited, status=1/FAILURE [ 73.736508] systemd[1]: systemd-remount-fs.service: Failed with result 'exit-code'. [ 73.781556] systemd[1]: Failed to start Remount Root and Kernel File Systems. [[0;1;31mFAILED[0m] Failed to start [0;1;39mRemount Root and Kernel File Systems[0m. See 'systemctl status systemd-remount-fs.service' for details. [ 73.866320] systemd[1]: systemd-remount-fs.service: Consumed 2.933s CPU time. [ 73.899554] systemd[1]: Condition check resulted in First Boot Wizard being skipped. [ 73.988234] systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped. [ 74.177164] systemd[1]: Starting Load/Save Random Seed... Starting [0;1;39mLoad/Save Random Seed[0m... [ 74.298545] systemd[1]: Condition check resulted in Create System Users being skipped. [ 74.658647] systemd[1]: Starting Create Static Device Nodes in /dev... Starting [0;1;39mCreate Static Device Nodes in /dev[0m... [ 75.179823] systemd[1]: Finished Apply Kernel Variables.[[0;32m OK [0m] Finished [0;1;39mApply Kernel Variables[0m.
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
In reply to Heiko StübnerQuoted 27 lines · Heiko Stübner
Hi,
Am Freitag, 31. März 2023, 20:41:35 CEST schrieb Conor Dooley:
Quoted 23 lines · Conor Dooley
Quoted 21 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
Quoted 6 lines
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:Quoted 7 lines
- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customThis has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Quoted 8 lines
Quoted 2 lines
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Can you reproduce it with qemu? Could give me some tips and let me reproduce it on qemu?
Quoted 106 lines
Though my board is stuck in some failure loop with both the journal- as well as the timesyncd service failing again and again. And I haven't figured out how to get logs without a working login console yet.
Heiko
Quoted 93 lines
Quoted 90 lines
[ OK ] Mounted Huge Pages File System.
[ 70.297439] systemd[1]: Mounted POSIX Message Queue File System. [ OK ] Mounted POSIX Message Queue File System. [ 70.453489] systemd[1]: Mounted Kernel Debug File System. [ OK ] Mounted Kernel Debug File System. [ 70.516331] systemd[1]: Mounted Kernel Trace File System. [ OK ] Mounted Kernel Trace File System. [ 70.679253] systemd[1]: [email protected]: Succeeded. [ 70.788400] systemd[1]: Finished Load Kernel Module configfs. [ OK ] Finished Load Kernel Module configfs. [ 71.501222] systemd[1]: [email protected]: Succeeded. [ 71.573295] systemd[1]: Finished Load Kernel Module drm. [ OK ] Finished Load Kernel Module drm. [ 71.825934] systemd[1]: [email protected]: Succeeded. [ 71.886945] systemd[1]: Finished Load Kernel Module fuse. [ OK ] Finished Load Kernel Module fuse. [ 71.991932] systemd[1]: nfs-convert.service: Succeeded. [ 72.034674] systemd[1]: Finished Preprocess NFS configuration convertion. [ OK ] Finished Preprocess NFS configuration convertion. [ 72.148778] systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE [ 72.256659] systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'. [ 72.337818] systemd[1]: Failed to start Load Kernel Modules. [FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details. [ 72.410491] systemd[1]: systemd-modules-load.service: Consumed 1.463s CPU time. [ 72.496739] systemd[1]: Condition check resulted in FUSE Control File System being skipped. [ 72.513689] systemd[1]: Condition check resulted in Kernel Configuration File System being skipped. [ 72.682549] systemd[1]: Starting Apply Kernel Variables.. [ OK ] Finished Apply Kernel Variables. [ 76.314434] systemd[1]: Finished Load/Save Random Seed. [ OK ] Finished Load/Save Random Seed. [*** ] (1 of 6) A start job is running for…p Virtual Console (14s / no limit) [ OK ] Finished Create Static Device Nodes in /dev. [ 79.787065] systemd[1]: Started Entropy Daemon based on the HAVEGE algorithm. [ OK ] Started Entropy Daemon based on the HAVEGE algorithm. [ 80.186295] systemd[1]: Starting Journal Service... Starting Journal Service... [ 80.713508] systemd[1]: Starting Rule-based Manager for Device Events and Files... Starting Rule-based Manage…for Device Events and Files... [ *** ] (2 of 7) A start job is running for… All udev Devices (17s / no limit) [ 82.939347] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 83.032046] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 83.210041] systemd[1]: Dependency failed for Flush Journal to Persistent Storage. [DEPEND] Dependency failed for Flus…Journal to Persistent Storage. [ 83.254122] systemd[1]: systemd-journal-flush.service: Job systemd-journal-flush.service/start failed with result 'dependency'. [ 83.272366] systemd[1]: systemd-journald.service: Consumed 1.443s CPU time. [ 83.334360] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 1. [ 83.427839] systemd[1]: Finished Setup Virtual Console. [ OK ] Finished Setup Virtual Console. [ 83.510650] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 83.554417] systemd[1]: systemd-journald.service: Consumed 1.443s CPU time. [ 83.576573] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 83.904878] systemd[1]: Starting Journal Service... Starting Journal Service... [ 85.752090] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 85.826421] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [ 85.876165] systemd[1]: Failed to start Journal Service. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 85.952221] systemd[1]: systemd-journald.service: Consumed 1.355s CPU time. [ 86.002092] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 2. [ 86.015081] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 86.076429] systemd[1]: systemd-journald.service: Consumed 1.355s CPU time. [ 86.089700] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 86.390162] systemd[1]: Starting Journal Service... Starting Journal Service... [ 87.904427] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 87.950259] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [ 88.000661] systemd[1]: Failed to start Journal Service. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 88.079953] systemd[1]: systemd-journald.service: Consumed 1.316s CPU time. [ 88.128956] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 3. [ 88.145365] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 88.189975] systemd[1]: systemd-journald.service: Consumed 1.316s CPU time. [ 88.205799] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 88.514817] systemd[1]: Starting Journal Service... Starting Journal Service...(Note, you need to merge -rc2 into riscv/for-next to actually boot)
Cheers,
Conor.
Signature · 2 lines
Best Regards Guo Ren
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Hi Guo,
Am Samstag, 1. April 2023, 04:15:32 CEST schrieb Guo Ren:
Quoted 28 lines · Heiko Stübner
Quoted 27 lines
Am Freitag, 31. März 2023, 20:41:35 CEST schrieb Conor Dooley:
Quoted 25 lines · Conor Dooley
Quoted 15 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
Quoted 6 lines
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:Quoted 7 lines
- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customQuoted 6 lines
This has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
Quoted 7 lines
Quoted 5 lines
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Can you reproduce it with qemu? Could give me some tips and let me reproduce it on qemu?
As written the issue both happens on qemu-virt and also the d1-nezha board. Below I've summarized my setup a bit:
(1) Qemu-commandline:
---------------------
/usr/local/bin/qemu-system-riscv64 -M virt -smp 2 -m 1G -display none \
-cpu rv64,zbb=true,zbc=true,svpbmt=true,Zicbom=true,Zawrs=true,sscofpmf=true,v=true \
-serial telnet:localhost:5500,server,nowait -kernel /home/devel/nfs/kernel/riscv64/Image \
-append "earlycon=sbi root=/dev/nfs nfsroot=10.0.2.2:/home/devel/nfs/rootfs-riscv64virt ip=dhcp rw" \
-netdev user,id=n1 -device virtio-net-pci,netdev=n1
Which does the start using a nfs-root coming from an nfs-server running on the same host as qemu.
Though the issue does not seem to be related to the nfs. I also tried starting with a local disk image like [0] and the issue with the journald still persists.
(2) the rootfs-contents:
------------------------
Conor seems to be using Fedora, while my distribution of choice is Debian. My rootfs was created following the instructions on the Debian wiki for the debports with debootstrap [1].
This morning I also re-created a completely new and pristine rootfs using those instructions and the issue appeared immediately on first-boot.
Hope this helps a bit
Heiko
[0] same result with a disk-image ... journald failing /usr/local/bin/qemu-system-riscv64 -M virt -smp 2 -m 1G -display none \
-cpu rv64,zbb=true,zbc=true,svpbmt=true,Zicbom=true,Zawrs=true,sscofpmf=true,v=true \
-serial telnet:localhost:5500,server,nowait -kernel /home/devel/nfs/kernel/riscv64/Image \
-append 'root=/dev/vda console=ttyS0' \
-drive file=/home/devel/nfs/rootfs-riscv64virt.ext4,format=raw,id=hd0 \
-device virtio-blk-pci,drive=hd0
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 10 lines
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
This has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Can you reproduce it with qemu? Could give me some tips and let me reproduce it on qemu?
FWIW, I'm getting the systemd issue w/o NFS, on a regular 9p virtfs.
| $ sudo mmdebstrap --architecture=riscv64 lunar rv-rootfs http://ports.ubuntu.com
and the rootfs qemu config:
| -fsdev local,id=root,path=/path/to/rv-rootfs/,security_model=none \ | -device virtio-9p-pci,fsdev=root,mount_tag=/dev/root \ | -append "root=/dev/root rw rootfstype=9p rootflags=version=9p2000.L,trans=virtio,cache=mmap,access=any security=none earlycon console=tty0 console=ttyS0"
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
(Narrowing the Cc list.)
Quoted 18 lines · Björn Töpel
Quoted 10 lines
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
This has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Can you reproduce it with qemu? Could give me some tips and let me reproduce it on qemu?
Quoted 8 lines
FWIW, I'm getting the systemd issue w/o NFS, on a regular 9p virtfs.
| $ sudo mmdebstrap --architecture=riscv64 lunar rv-rootfs http://ports.ubuntu.com
and the rootfs qemu config:
| -fsdev local,id=root,path=/path/to/rv-rootfs/,security_model=none \ | -device virtio-9p-pci,fsdev=root,mount_tag=/dev/root \ | -append "root=/dev/root rw rootfstype=9p rootflags=version=9p2000.L,trans=virtio,cache=mmap,access=any security=none earlycon console=tty0 console=ttyS0"
I took a couple of different versions of the series for a spin, and for me it stops working between these versions.
$ git fetch https://github.com/guoren83/linux.git generic_entry_v12:ge-v12 $ git fetch https://github.com/guoren83/linux.git generic_entry_v13:g2-v13
v12 is happy with systemd, v13 is not.
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 31 lines · Björn Töpel
(Narrowing the Cc list.)
Quoted 18 lines · Björn Töpel
Quoted 10 lines
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
This has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Can you reproduce it with qemu? Could give me some tips and let me reproduce it on qemu?
Quoted 8 lines
FWIW, I'm getting the systemd issue w/o NFS, on a regular 9p virtfs.
| $ sudo mmdebstrap --architecture=riscv64 lunar rv-rootfs http://ports.ubuntu.com
and the rootfs qemu config:
| -fsdev local,id=root,path=/path/to/rv-rootfs/,security_model=none \ | -device virtio-9p-pci,fsdev=root,mount_tag=/dev/root \ | -append "root=/dev/root rw rootfstype=9p rootflags=version=9p2000.L,trans=virtio,cache=mmap,access=any security=none earlycon console=tty0 console=ttyS0"
Quoted 7 lines
I took a couple of different versions of the series for a spin, and for me it stops working between these versions.
$ git fetch https://github.com/guoren83/linux.git generic_entry_v12:ge-v12 $ git fetch https://github.com/guoren83/linux.git generic_entry_v13:g2-v13v12 is happy with systemd, v13 is not.
Hmm, this patch seems to resolve the issue for me:
--8<--
arch/riscv/kernel/traps.c +2 -2
@@ -270,11 +270,11 @@ asmlinkage __visible __trap_section void do_trap_ecall_u(struct pt_regs *regs)if (user_mode (regs)) {ulong syscall = regs->a7; - syscall =syscall_enter_from_user_mode (regs, syscall); - regs->epc +=4 ; regs->orig_a0 = regs->a0; + syscall =syscall_enter_from_user_mode (regs, syscall); +if (syscall < NR_syscalls)syscall_handler (regs, syscall);else
-->8--
Seems like syscall_enter_from_user_mode() clobber regs->a0.
Björn
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Am Samstag, 1. April 2023, 16:58:01 CEST schrieb Björn Töpel:
Quoted 53 lines
Quoted 31 lines · Björn Töpel
(Narrowing the Cc list.)
Quoted 18 lines · Björn Töpel
Quoted 10 lines
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
This has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Can you reproduce it with qemu? Could give me some tips and let me reproduce it on qemu?
Quoted 8 lines
FWIW, I'm getting the systemd issue w/o NFS, on a regular 9p virtfs.
| $ sudo mmdebstrap --architecture=riscv64 lunar rv-rootfs http://ports.ubuntu.com
and the rootfs qemu config:
| -fsdev local,id=root,path=/path/to/rv-rootfs/,security_model=none \ | -device virtio-9p-pci,fsdev=root,mount_tag=/dev/root \ | -append "root=/dev/root rw rootfstype=9p rootflags=version=9p2000.L,trans=virtio,cache=mmap,access=any security=none earlycon console=tty0 console=ttyS0"Quoted 7 lines
I took a couple of different versions of the series for a spin, and for me it stops working between these versions.
$ git fetch https://github.com/guoren83/linux.git generic_entry_v12:ge-v12 $ git fetch https://github.com/guoren83/linux.git generic_entry_v13:g2-v13v12 is happy with systemd, v13 is not.
Hmm, this patch seems to resolve the issue for me:
--8<--
arch/riscv/kernel/traps.c +0
-1@@ -270,11 +270,11 @@ asmlinkage __visible __trap_section void do_trap_ecall_u(struct pt_regs *regs)if (user_mode (regs)) {ulong syscall = regs->a7; - syscall =syscall_enter_from_user_mode (regs, syscall);
arch/riscv/kernel/traps.c asmlinkage __visible __trap_section void do_trap_ecall_u(struct pt_regs *regs)
Quoted 10 lines
arch/riscv/kernel/traps.c +2
-2- regs->epc +=4 ; regs->orig_a0 = regs->a0; + syscall =syscall_enter_from_user_mode (regs, syscall); +if (syscall < NR_syscalls)syscall_handler (regs, syscall);else -->8--
Woohoo, thanks for tracking that down. This change makes both my Qemu and D1-Nezha boot again.
Quoted 1 line
Seems like
syscall_enter_from_user_mode()clobberregs->a0.
With a0 also being the return value in the calling conventions (and being the syscall value here), I guess that could be somehow expected and thus as your patch does, the a0 value should be saved first I guess?
An it looks like Loonarch also does save a0 before calling syscall_enter_from_user_mode() [0]
Heiko
[0] https://elixir.bootlin.com/linux/latest/source/arch/loongarch/kernel/syscall.c#L54
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 74 lines · Heiko Stübner
Am Samstag, 1. April 2023, 16:58:01 CEST schrieb Björn Töpel:
Quoted 53 lines
Quoted 31 lines · Björn Töpel
(Narrowing the Cc list.)
Quoted 18 lines · Björn Töpel
Quoted 10 lines
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
This has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Can you reproduce it with qemu? Could give me some tips and let me reproduce it on qemu?
Quoted 8 lines
FWIW, I'm getting the systemd issue w/o NFS, on a regular 9p virtfs.
| $ sudo mmdebstrap --architecture=riscv64 lunar rv-rootfs http://ports.ubuntu.com
and the rootfs qemu config:
| -fsdev local,id=root,path=/path/to/rv-rootfs/,security_model=none \ | -device virtio-9p-pci,fsdev=root,mount_tag=/dev/root \ | -append "root=/dev/root rw rootfstype=9p rootflags=version=9p2000.L,trans=virtio,cache=mmap,access=any security=none earlycon console=tty0 console=ttyS0"Quoted 7 lines
I took a couple of different versions of the series for a spin, and for me it stops working between these versions.
$ git fetch https://github.com/guoren83/linux.git generic_entry_v12:ge-v12 $ git fetch https://github.com/guoren83/linux.git generic_entry_v13:g2-v13v12 is happy with systemd, v13 is not.
Hmm, this patch seems to resolve the issue for me:
--8<--
arch/riscv/kernel/traps.c +0
-1@@ -270,11 +270,11 @@ asmlinkage __visible __trap_section void do_trap_ecall_u(struct pt_regs *regs)if (user_mode (regs)) {ulong syscall = regs->a7; - syscall =syscall_enter_from_user_mode (regs, syscall);arch/riscv/kernel/traps.c asmlinkage __visible __trap_section void do_trap_ecall_u(struct pt_regs *regs)
Quoted 10 lines
arch/riscv/kernel/traps.c +2
-2- regs->epc +=4 ; regs->orig_a0 = regs->a0; + syscall =syscall_enter_from_user_mode (regs, syscall); +if (syscall < NR_syscalls)syscall_handler (regs, syscall);else -->8--Woohoo, thanks for tracking that down. This change makes both my Qemu and D1-Nezha boot again.
Quoted 1 line
Seems like
syscall_enter_from_user_mode()clobberregs->a0.With a0 also being the return value in the calling conventions (and being the syscall value here), I guess that could be somehow expected and thus as your patch does, the a0 value should be saved first I guess?
Quoted 5 lines
An it looks like Loonarch also does save a0 before calling
syscall_enter_from_user_mode()[0]Reviewed-by Heiko Stuebner <[email protected]>Tested-by Heiko Stuebner <[email protected]>
Cool, and thanks for testing/verifying! I'll cook a proper patch on Monday.
Björn
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 77 lines · Björn Töpel
Quoted 74 lines · Heiko Stübner
Am Samstag, 1. April 2023, 16:58:01 CEST schrieb Björn Töpel:
Quoted 53 lines
Quoted 31 lines · Björn Töpel
(Narrowing the Cc list.)
Quoted 18 lines · Björn Töpel
Quoted 10 lines
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
This has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/It gets pretty far into things, it's once systemd is operational that things go pear shaped:
Shoulda said, can share the full logs if required of course, but they're quite verbose cos systemd etc.
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
I was just investigating the same thing just now. So that saves me some tracking down the culprit :-) .
My main qemu is living as a "board" in my boardfarm (also doing nfsroot) as well as my d1 nezha with nfsroot was affected.
Can you reproduce it with qemu? Could give me some tips and let me reproduce it on qemu?
Quoted 8 lines
FWIW, I'm getting the systemd issue w/o NFS, on a regular 9p virtfs.
| $ sudo mmdebstrap --architecture=riscv64 lunar rv-rootfs http://ports.ubuntu.com
and the rootfs qemu config:
| -fsdev local,id=root,path=/path/to/rv-rootfs/,security_model=none \ | -device virtio-9p-pci,fsdev=root,mount_tag=/dev/root \ | -append "root=/dev/root rw rootfstype=9p rootflags=version=9p2000.L,trans=virtio,cache=mmap,access=any security=none earlycon console=tty0 console=ttyS0"Quoted 7 lines
I took a couple of different versions of the series for a spin, and for me it stops working between these versions.
$ git fetch https://github.com/guoren83/linux.git generic_entry_v12:ge-v12 $ git fetch https://github.com/guoren83/linux.git generic_entry_v13:g2-v13v12 is happy with systemd, v13 is not.
Hmm, this patch seems to resolve the issue for me:
--8<--
arch/riscv/kernel/traps.c +0
-1@@ -270,11 +270,11 @@ asmlinkage __visible __trap_section void do_trap_ecall_u(struct pt_regs *regs)if (user_mode (regs)) {ulong syscall = regs->a7; - syscall =syscall_enter_from_user_mode (regs, syscall);arch/riscv/kernel/traps.c asmlinkage __visible __trap_section void do_trap_ecall_u(struct pt_regs *regs)
Quoted 10 lines
arch/riscv/kernel/traps.c +2
-2- regs->epc +=4 ; regs->orig_a0 = regs->a0; + syscall =syscall_enter_from_user_mode (regs, syscall); +if (syscall < NR_syscalls)syscall_handler (regs, syscall);else -->8--Woohoo, thanks for tracking that down. This change makes both my Qemu and D1-Nezha boot again.
Quoted 1 line
Seems like
syscall_enter_from_user_mode()clobberregs->a0.With a0 also being the return value in the calling conventions (and being the syscall value here), I guess that could be somehow expected and thus as your patch does, the a0 value should be saved first I guess?
Quoted 8 lines
Quoted 5 lines
An it looks like Loonarch also does save a0 before calling
syscall_enter_from_user_mode()[0]Reviewed-by Heiko Stuebner <[email protected]>Tested-by Heiko Stuebner <[email protected]>Cool, and thanks for testing/verifying! I'll cook a proper patch on Monday.
Just ping gently :) Have you done it?
Quoted 5 lines
Björn
Signature · 7 lines
Best Regards Guo Ren _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 6 lines · Guo Ren
Quoted 4 lines · Björn Töpel
Cool, and thanks for testing/verifying! I'll cook a proper patch on Monday.
Just ping gently :) Have you done it?
Yup, he did!
https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 4 lines · On Fri, Apr 7, 2023 at 5:18 AM <[email protected]> wrote:
Quoted 1 line · Guo Ren
Quoted 1 line · Björn Töpel
Quoted 9 lines
Quoted 4 lines
Quoted 2 lines
Cool, and thanks for testing/verifying! I'll cook a proper patch on Monday.
Just ping gently :) Have you done it?
Yup, he did!
https://patchwork.kernel.org/project/linux-riscv/patch/[email protected]/
Great, thx.
Signature · 7 lines
Best Regards Guo Ren _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
In reply to Conor DooleyQuoted 45 lines · Conor Dooley
Quoted 6 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:Quoted 7 lines
- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customThis has unfortunately broken booting my usual NFS rootfs on both my D1 and Icicle. It's one of the Fedora images from David, I think this one:
http://fedora.riscv.rocks/kojifiles/work/tasks/3933/1313933/It gets pretty far into things, it's once systemd is operational that things go pear shaped:
[ OK ] Mounted Huge Pages File System.
[ 70.297439] systemd[1]: Mounted POSIX Message Queue File System. [ OK ] Mounted POSIX Message Queue File System. [ 70.453489] systemd[1]: Mounted Kernel Debug File System. [ OK ] Mounted Kernel Debug File System. [ 70.516331] systemd[1]: Mounted Kernel Trace File System. [ OK ] Mounted Kernel Trace File System. [ 70.679253] systemd[1]: [email protected]: Succeeded. [ 70.788400] systemd[1]: Finished Load Kernel Module configfs. [ OK ] Finished Load Kernel Module configfs. [ 71.501222] systemd[1]: [email protected]: Succeeded. [ 71.573295] systemd[1]: Finished Load Kernel Module drm. [ OK ] Finished Load Kernel Module drm. [ 71.825934] systemd[1]: [email protected]: Succeeded. [ 71.886945] systemd[1]: Finished Load Kernel Module fuse. [ OK ] Finished Load Kernel Module fuse. [ 71.991932] systemd[1]: nfs-convert.service: Succeeded. [ 72.034674] systemd[1]: Finished Preprocess NFS configuration convertion. [ OK ] Finished Preprocess NFS configuration convertion. [ 72.148778] systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE [ 72.256659] systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'. [ 72.337818] systemd[1]: Failed to start Load Kernel Modules.
Quoted 1 line
[FAILED] Failed to start Load Kernel Modules.
Are you sure, you've compiled all kernel modules? This patch needs all kernel stuff re-compiled.
Quoted 65 lines
See 'systemctl status systemd-modules-load.service' for details.
[ 72.410491] systemd[1]: systemd-modules-load.service: Consumed 1.463s CPU time. [ 72.496739] systemd[1]: Condition check resulted in FUSE Control File System being skipped. [ 72.513689] systemd[1]: Condition check resulted in Kernel Configuration File System being skipped. [ 72.682549] systemd[1]: Starting Apply Kernel Variables.. [ OK ] Finished Apply Kernel Variables. [ 76.314434] systemd[1]: Finished Load/Save Random Seed. [ OK ] Finished Load/Save Random Seed. [*** ] (1 of 6) A start job is running for…p Virtual Console (14s / no limit) [ OK ] Finished Create Static Device Nodes in /dev. [ 79.787065] systemd[1]: Started Entropy Daemon based on the HAVEGE algorithm. [ OK ] Started Entropy Daemon based on the HAVEGE algorithm. [ 80.186295] systemd[1]: Starting Journal Service... Starting Journal Service... [ 80.713508] systemd[1]: Starting Rule-based Manager for Device Events and Files... Starting Rule-based Manage…for Device Events and Files... [ *** ] (2 of 7) A start job is running for… All udev Devices (17s / no limit) [ 82.939347] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 83.032046] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 83.210041] systemd[1]: Dependency failed for Flush Journal to Persistent Storage. [DEPEND] Dependency failed for Flus…Journal to Persistent Storage. [ 83.254122] systemd[1]: systemd-journal-flush.service: Job systemd-journal-flush.service/start failed with result 'dependency'. [ 83.272366] systemd[1]: systemd-journald.service: Consumed 1.443s CPU time. [ 83.334360] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 1. [ 83.427839] systemd[1]: Finished Setup Virtual Console. [ OK ] Finished Setup Virtual Console. [ 83.510650] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 83.554417] systemd[1]: systemd-journald.service: Consumed 1.443s CPU time. [ 83.576573] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 83.904878] systemd[1]: Starting Journal Service... Starting Journal Service... [ 85.752090] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 85.826421] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [ 85.876165] systemd[1]: Failed to start Journal Service. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 85.952221] systemd[1]: systemd-journald.service: Consumed 1.355s CPU time. [ 86.002092] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 2. [ 86.015081] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 86.076429] systemd[1]: systemd-journald.service: Consumed 1.355s CPU time. [ 86.089700] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 86.390162] systemd[1]: Starting Journal Service... Starting Journal Service... [ 87.904427] systemd[1]: systemd-journald.service: Main process exited, code=exited, status=1/FAILURE [ 87.950259] systemd[1]: systemd-journald.service: Failed with result 'exit-code'. [ 88.000661] systemd[1]: Failed to start Journal Service. [FAILED] Failed to start Journal Service. See 'systemctl status systemd-journald.service' for details. [ 88.079953] systemd[1]: systemd-journald.service: Consumed 1.316s CPU time. [ 88.128956] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 3. [ 88.145365] systemd[1]: Stopped Journal Service. [ OK ] Stopped Journal Service. [ 88.189975] systemd[1]: systemd-journald.service: Consumed 1.316s CPU time. [ 88.205799] systemd[1]: Condition check resulted in Journal Audit Socket being skipped. [ 88.514817] systemd[1]: Starting Journal Service... Starting Journal Service...(Note, you need to merge -rc2 into riscv/for-next to actually boot)
Cheers,
Conor.
Signature · 2 lines
Best Regards Guo Ren
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 7 lines · Guo Ren
Quoted 2 lines · Conor Dooley
[ 72.337818] systemd[1]: Failed to start Load Kernel Modules.[FAILED] Failed to start Load Kernel Modules.
Are you sure, you've compiled all kernel modules? This patch needs all kernel stuff re-compiled.
It does this with CONFIG_MODULES=n kernels too FWIW.
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
In reply to [email protected]Quoted 14 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of custom
Quoted 7 lines
Suggested-by Huacai Chen <[email protected]>Reviewed-by Björn Töpel <[email protected]>Tested-by Yipeng Zou <[email protected]>Tested-by Jisheng Zhang <[email protected]>Signed-off-by Guo Ren <[email protected]>Signed-off-by Guo Ren <[email protected]>Cc Ben Hutchings <[email protected]>
Apologies for the late feedback but I've been swamped lately and only recently got round to running the full kgdb test suite on the v6.4 series.
The kgdb test suite includes a couple of tests that verify that the system resumes after breakpointing due to a BUG():
https://github.com/daniel-thompson/kgdbtest/blob/master/tests/test_kdb_fault_injection.py#L24-L45
These tests have regressed on riscv between v6.3 and v6.4 and a bisect is pointing at this patch. With these changes in place then, after kdb resumes the system, the BUG() message is printed as normal but then immediately fails. From the backtrace it looks like the new entry/exit code cannot advance past a compiled breakpoint instruction:
~~~
PANIC: Fatal exception in interrupt
Entering kdb (current=0xff60000001a2a280, pid 104) on processor 1 due to NonMask
able Interrupt @ 0xffffffff800bb3c4
[1]kdb> bt
Stack traceback for pid 1040xff60000001a2a280 104 92 1 1 R 0xff60000001a2ac50
*echo
CPU: 1 PID: 104 Comm: echo Tainted: G D 6.3.0-rc1-00003-gf0bddf50586d #119 Hardware name: riscv-virtio,qemu (DT) Call Trace: [<ffffffff800050dc>] dump_backtrace+0x1c/0x24 [<ffffffff808458f8>] show_stack+0x2c/0x38 [<ffffffff80851b00>] dump_stack_lvl+0x3c/0x54 [<ffffffff80851b2c>] dump_stack+0x14/0x1c [<ffffffff800bc4b8>] kdb_dump_stack_on_cpu+0x64/0x66 [<ffffffff800c3d2a>] kdb_show_stack+0x82/0x88 [<ffffffff800c3dc0>] kdb_bt1+0x90/0xf2 [<ffffffff800c4206>] kdb_bt+0x34c/0x384 [<ffffffff800c1d28>] kdb_parse+0x27a/0x618 [<ffffffff800c2566>] kdb_main_loop+0x3b2/0x8fa [<ffffffff800c4c5a>] kdb_stub+0x1ba/0x3a8 [<ffffffff800bbba8>] kgdb_cpu_enter+0x342/0x5ba [<ffffffff800bc3da>] kgdb_handle_exception+0xe0/0x11a [<ffffffff8000810c>] kgdb_riscv_notify+0x86/0xb4 [<ffffffff8002f210>] notify_die+0x6a/0xa6 [<ffffffff80004db0>] handle_break+0x70/0xe0 [<ffffffff80852462>] do_trap_break+0x48/0x5c [<ffffffff80003598>] ret_from_exception+0x0/0x64 [<ffffffff800bb3c4>] kgdb_compiled_break+0x0/0x14
~~~
Daniel.
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 32 lines · Daniel Thompson
Quoted 14 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customQuoted 7 lines
Suggested-by Huacai Chen <[email protected]>Reviewed-by Björn Töpel <[email protected]>Tested-by Yipeng Zou <[email protected]>Tested-by Jisheng Zhang <[email protected]>Signed-off-by Guo Ren <[email protected]>Signed-off-by Guo Ren <[email protected]>Cc Ben Hutchings <[email protected]>Apologies for the late feedback but I've been swamped lately and only recently got round to running the full kgdb test suite on the v6.4 series.
The kgdb test suite includes a couple of tests that verify that the system resumes after breakpointing due to a
BUG():
https://github.com/daniel-thompson/kgdbtest/blob/master/tests/test_kdb_fault_injection.py#L24-L45
Quoted 7 lines
These tests have regressed on riscv between v6.3 and v6.4 and a bisect is pointing at this patch. With these changes in place then, after kdb resumes the system, the
BUG()message is printed as normal but then immediately fails. From the backtrace it looks like the new entry/exit code cannot advance past a compiled breakpoint instruction:
~~~
PANIC: Fatal exception in interrupt
It comes from:
void die(struct pt_regs *regs, ...
{
...
if (in_interrupt())
panic("Fatal exception in interrupt");...
We could add a dump_backtrace to see what happened:
if (in_interrupt()) {
+ dump_backtrace(regs, NULL, KERN_DEFAULT);
panic("Fatal exception in interrupt");
}Quoted 35 lines
Entering kdb (current=0xff60000001a2a280, pid 104) on processor 1 due to NonMask
able Interrupt @0xffffffff800bb3c4
[1]kdb> bt
Stack traceback for pid 1040xff60000001a2a280104 92 1 1 R0xff60000001a2ac50
*echoCPU: 1 PID: 104 Comm: echo Tainted: G D 6.3.0-rc1-00003-gf0bddf50586d #119 Hardware name: riscv-virtio,qemu (DT) Call Trace: [<ffffffff800050dc>] dump_backtrace+0x1c/0x24 [<ffffffff808458f8>] show_stack+0x2c/0x38 [<ffffffff80851b00>] dump_stack_lvl+0x3c/0x54 [<ffffffff80851b2c>] dump_stack+0x14/0x1c [<ffffffff800bc4b8>] kdb_dump_stack_on_cpu+0x64/0x66 [<ffffffff800c3d2a>] kdb_show_stack+0x82/0x88 [<ffffffff800c3dc0>] kdb_bt1+0x90/0xf2 [<ffffffff800c4206>] kdb_bt+0x34c/0x384 [<ffffffff800c1d28>] kdb_parse+0x27a/0x618 [<ffffffff800c2566>] kdb_main_loop+0x3b2/0x8fa [<ffffffff800c4c5a>] kdb_stub+0x1ba/0x3a8 [<ffffffff800bbba8>] kgdb_cpu_enter+0x342/0x5ba [<ffffffff800bc3da>] kgdb_handle_exception+0xe0/0x11a [<ffffffff8000810c>] kgdb_riscv_notify+0x86/0xb4 [<ffffffff8002f210>] notify_die+0x6a/0xa6 [<ffffffff80004db0>] handle_break+0x70/0xe0 [<ffffffff80852462>] do_trap_break+0x48/0x5c [<ffffffff80003598>] ret_from_exception+0x0/0x64 [<ffffffff800bb3c4>] kgdb_compiled_break+0x0/0x14~~~
Daniel.
Signature · 2 lines
Best Regards Guo Ren
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 47 lines · Guo Ren
Quoted 32 lines · Daniel Thompson
Quoted 14 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customQuoted 7 lines
Suggested-by Huacai Chen <[email protected]>Reviewed-by Björn Töpel <[email protected]>Tested-by Yipeng Zou <[email protected]>Tested-by Jisheng Zhang <[email protected]>Signed-off-by Guo Ren <[email protected]>Signed-off-by Guo Ren <[email protected]>Cc Ben Hutchings <[email protected]>Apologies for the late feedback but I've been swamped lately and only recently got round to running the full kgdb test suite on the v6.4 series.
The kgdb test suite includes a couple of tests that verify that the system resumes after breakpointing due to a
BUG():
https://github.com/daniel-thompson/kgdbtest/blob/master/tests/test_kdb_fault_injection.py#L24-L45Quoted 7 lines
These tests have regressed on riscv between v6.3 and v6.4 and a bisect is pointing at this patch. With these changes in place then, after kdb resumes the system, the
BUG()message is printed as normal but then immediately fails. From the backtrace it looks like the new entry/exit code cannot advance past a compiled breakpoint instruction:
~~~
PANIC: Fatal exception in interruptIt comes from:
void die(structpt_regs*regs, ...
{
...
if (in_interrupt())
Quoted 6 lines
panic("Fatal exception in interrupt");...
We could add a
dump_backtraceto see what happened:
if (in_interrupt()) {
+dump_backtrace(regs, NULL, KERN_DEFAULT);
Sorry, it should be:
+ dump_backtrace(NULL, NULL, KERN_DEFAULT);
We need current stack info, not exception context.
Quoted 39 lines
panic("Fatal exception in interrupt"); }Quoted 34 lines
Entering kdb (current=0xff60000001a2a280, pid 104) on processor 1 due to NonMask
able Interrupt @0xffffffff800bb3c4
[1]kdb> bt
Stack traceback for pid 1040xff60000001a2a280104 92 1 1 R0xff60000001a2ac50
*echoCPU: 1 PID: 104 Comm: echo Tainted: G D 6.3.0-rc1-00003-gf0bddf50586d #119 Hardware name: riscv-virtio,qemu (DT) Call Trace: [<ffffffff800050dc>] dump_backtrace+0x1c/0x24 [<ffffffff808458f8>] show_stack+0x2c/0x38 [<ffffffff80851b00>] dump_stack_lvl+0x3c/0x54 [<ffffffff80851b2c>] dump_stack+0x14/0x1c [<ffffffff800bc4b8>] kdb_dump_stack_on_cpu+0x64/0x66 [<ffffffff800c3d2a>] kdb_show_stack+0x82/0x88 [<ffffffff800c3dc0>] kdb_bt1+0x90/0xf2 [<ffffffff800c4206>] kdb_bt+0x34c/0x384 [<ffffffff800c1d28>] kdb_parse+0x27a/0x618 [<ffffffff800c2566>] kdb_main_loop+0x3b2/0x8fa [<ffffffff800c4c5a>] kdb_stub+0x1ba/0x3a8 [<ffffffff800bbba8>] kgdb_cpu_enter+0x342/0x5ba [<ffffffff800bc3da>] kgdb_handle_exception+0xe0/0x11a [<ffffffff8000810c>] kgdb_riscv_notify+0x86/0xb4 [<ffffffff8002f210>] notify_die+0x6a/0xa6 [<ffffffff80004db0>] handle_break+0x70/0xe0 [<ffffffff80852462>] do_trap_break+0x48/0x5c [<ffffffff80003598>] ret_from_exception+0x0/0x64 [<ffffffff800bb3c4>] kgdb_compiled_break+0x0/0x14~~~
Quoted 7 lines
Quoted 1 line
Daniel.
--
Best Regards
Guo Ren
--
Best Regards
Guo Ren
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 51 lines · Guo Ren
Quoted 50 lines · Guo Ren
Quoted 32 lines · Daniel Thompson
Quoted 14 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customQuoted 7 lines
Suggested-by Huacai Chen <[email protected]>Reviewed-by Björn Töpel <[email protected]>Tested-by Yipeng Zou <[email protected]>Tested-by Jisheng Zhang <[email protected]>Signed-off-by Guo Ren <[email protected]>Signed-off-by Guo Ren <[email protected]>Cc Ben Hutchings <[email protected]>Apologies for the late feedback but I've been swamped lately and only recently got round to running the full kgdb test suite on the v6.4 series.
The kgdb test suite includes a couple of tests that verify that the system resumes after breakpointing due to a
BUG():
https://github.com/daniel-thompson/kgdbtest/blob/master/tests/test_kdb_fault_injection.py#L24-L45Quoted 7 lines
These tests have regressed on riscv between v6.3 and v6.4 and a bisect is pointing at this patch. With these changes in place then, after kdb resumes the system, the
BUG()message is printed as normal but then immediately fails. From the backtrace it looks like the new entry/exit code cannot advance past a compiled breakpoint instruction:
~~~
PANIC: Fatal exception in interruptIt comes from:
void die(structpt_regs*regs, ...
{
...
if (in_interrupt())panic("Fatal exception in interrupt");...
Quoted 6 lines
Quoted 3 lines
We could add a
dump_backtraceto see what happened:
if (in_interrupt()) {
+dump_backtrace(regs, NULL, KERN_DEFAULT);Sorry, it should be:
+dump_backtrace(NULL, NULL, KERN_DEFAULT);
We need current stack info, not exception context.
I added this... and I also stopped kgdb from intercepting the panic() since that interferes with the console output from dump_backtrace().
~~~
# /bin/echo BUG > /sys/kernel/debug/provoke-crash/DIRECT [ 3.380565] lkdtm: Performing direct entry BUG
Entering kdb (current=0xff6000000380ab00, pid 98) on processor 0 due to NonMaskable Interrupt @ 0xffffffff8064b844 kdb> go
Catastrophic error detected
kdb_continue_catastrophic=0, type go a second time if you really want to continue
kdb> go
Catastrophic error detected
kdb_continue_catastrophic=0, attempting to continue
[ 3.381411] ------------[ cut here ]------------ [ 3.381454] kernel BUG at drivers/misc/lkdtm/bugs.c:78! [ 3.381609] Kernel BUG [#1] [ 3.381632] Modules linked in: [ 3.381734] CPU: 0 PID: 98 Comm: echo Not tainted 6.4.0-rc6-00004-ge6e9d4598760-dirty #126 [ 3.381817] Hardware name: riscv-virtio,qemu (DT) [ 3.381885] epc : lkdtm_BUG+0x6/0x8 [ 3.381959] ra : lkdtm_do_action+0x10/0x1c [ 3.381978] epc : ffffffff8064b844 ra : ffffffff8064afb4 sp : ff200000008c3d30 [ 3.381991] gp : ffffffff810665a0 tp : ff6000000380ab00 t0 : 6500000000000000 [ 3.382002] t1 : 0000000000000001 t2 : 6550203a6d74646b s0 : ff200000008c3d40 [ 3.382012] s1 : ff60000003988000 a0 : ffffffff80fc0260 a1 : ff6000003ffad788 [ 3.382023] a2 : ff6000003ffb9530 a3 : 0000000000000000 a4 : 0000000000000000 [ 3.382034] a5 : ffffffff8064b83e a6 : 0000000000000050 a7 : 0000000000040000 [ 3.382045] s2 : 0000000000000004 s3 : ffffffff80fc0260 s4 : ff200000008c3e70 [ 3.382056] s5 : ff600000033223a8 s6 : 00000000000f0cc0 s7 : ff60000002211000 [ 3.382066] s8 : 00ffffffafc50c08 s9 : 00ffffffafc4b9b8 s10: 0000000000000000 [ 3.382077] s11: 0000000000000001 t3 : 461f715700000000 t4 : 0000000000000002 [ 3.382087] t5 : 0000000000000000 t6 : ff200000008c3b58 [ 3.382097] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003 [ 3.382139] [<ffffffff8064b844>] lkdtm_BUG+0x6/0x8 [ 3.382245] Code: 0513 9245 b097 0039 80e7 7f20 bf39 1141 e422 0800 (9002) 1141 [ 3.594697] ---[ end trace 0000000000000000 ]---
At this point we expect a shell prompt since we should have taken the BUG(), killed the echo process and returned to the shell. However in v6.4 we get the following instead (including the instrumentation you asked for):
[ 3.594801] [<ffffffff80005e3a>] dump_backtrace+0x1c/0x24 [ 3.594826] [<ffffffff800059f0>] die+0x228/0x238 [ 3.594835] [<ffffffff80005b38>] handle_break+0x9a/0xe0 [ 3.594843] [<ffffffff809f30d6>] do_trap_break+0x48/0x5c [ 3.594854] [<ffffffff80003ee4>] ret_from_exception+0x0/0x64 [ 3.594862] [<ffffffff8064b844>] lkdtm_BUG+0x6/0x8 [ 3.594959] Kernel panic - not syncing: Fatal exception in interrupt [ 3.595005] SMP: stopping secondary CPUs [ 3.596444] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
~~~
Daniel.
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 98 lines · Daniel Thompson
Quoted 51 lines · Guo Ren
Quoted 50 lines · Guo Ren
Quoted 32 lines · Daniel Thompson
Quoted 14 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customQuoted 7 lines
Suggested-by Huacai Chen <[email protected]>Reviewed-by Björn Töpel <[email protected]>Tested-by Yipeng Zou <[email protected]>Tested-by Jisheng Zhang <[email protected]>Signed-off-by Guo Ren <[email protected]>Signed-off-by Guo Ren <[email protected]>Cc Ben Hutchings <[email protected]>Apologies for the late feedback but I've been swamped lately and only recently got round to running the full kgdb test suite on the v6.4 series.
The kgdb test suite includes a couple of tests that verify that the system resumes after breakpointing due to a
BUG():
https://github.com/daniel-thompson/kgdbtest/blob/master/tests/test_kdb_fault_injection.py#L24-L45Quoted 7 lines
These tests have regressed on riscv between v6.3 and v6.4 and a bisect is pointing at this patch. With these changes in place then, after kdb resumes the system, the
BUG()message is printed as normal but then immediately fails. From the backtrace it looks like the new entry/exit code cannot advance past a compiled breakpoint instruction:
~~~
PANIC: Fatal exception in interruptIt comes from:
void die(structpt_regs*regs, ...
{
...
if (in_interrupt())panic("Fatal exception in interrupt");...
Quoted 6 lines
Quoted 3 lines
We could add a
dump_backtraceto see what happened:
if (in_interrupt()) {
+dump_backtrace(regs, NULL, KERN_DEFAULT);Sorry, it should be:
+dump_backtrace(NULL, NULL, KERN_DEFAULT);
We need current stack info, not exception context.I added this... and I also stopped kgdb from intercepting the
panic()since that interferes with the console output fromdump_backtrace().~~~
# /bin/echo BUG > /sys/kernel/debug/provoke-crash/DIRECT [ 3.380565] lkdtm: Performing direct entry BUGEntering kdb (current=0xff6000000380ab00, pid 98) on processor 0 due to NonMaskable Interrupt @
0xffffffff8064b844kdb> go
Catastrophic error detected
kdb_continue_catastrophic=0, type go a second time if you really want to continue
kdb> go
Catastrophic error detected
kdb_continue_catastrophic=0, attempting to continue[ 3.381411] ------------[ cut here ]------------ [ 3.381454] kernel BUG at drivers/misc/lkdtm/bugs.c:78! [ 3.381609] Kernel BUG [#1] [ 3.381632] Modules linked in: [ 3.381734] CPU: 0 PID: 98 Comm: echo Not tainted 6.4.0-rc6-00004-ge6e9d4598760-dirty #126 [ 3.381817] Hardware name: riscv-virtio,qemu (DT) [ 3.381885] epc : lkdtm_BUG+0x6/0x8 [ 3.381959] ra : lkdtm_do_action+0x10/0x1c [ 3.381978] epc : ffffffff8064b844 ra : ffffffff8064afb4 sp : ff200000008c3d30 [ 3.381991] gp : ffffffff810665a0 tp : ff6000000380ab00 t0 : 6500000000000000 [ 3.382002] t1 : 0000000000000001 t2 : 6550203a6d74646b s0 : ff200000008c3d40 [ 3.382012] s1 : ff60000003988000 a0 : ffffffff80fc0260 a1 : ff6000003ffad788 [ 3.382023] a2 : ff6000003ffb9530 a3 : 0000000000000000 a4 : 0000000000000000 [ 3.382034] a5 : ffffffff8064b83e a6 : 0000000000000050 a7 : 0000000000040000 [ 3.382045] s2 : 0000000000000004 s3 : ffffffff80fc0260 s4 : ff200000008c3e70 [ 3.382056] s5 : ff600000033223a8 s6 : 00000000000f0cc0 s7 : ff60000002211000 [ 3.382066] s8 : 00ffffffafc50c08 s9 : 00ffffffafc4b9b8 s10: 0000000000000000 [ 3.382077] s11: 0000000000000001 t3 : 461f715700000000 t4 : 0000000000000002 [ 3.382087] t5 : 0000000000000000 t6 : ff200000008c3b58 [ 3.382097] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003 [ 3.382139] [<ffffffff8064b844>] lkdtm_BUG+0x6/0x8 [ 3.382245] Code: 0513 9245 b097 0039 80e7 7f20 bf39 1141 e422 0800 (9002) 1141 [ 3.594697] ---[ end trace 0000000000000000 ]---
Quoted 3 lines
At this point we expect a shell prompt since we should have taken the
BUG(), killed the echo process and returned to the shell. However in v6.4 we get the following instead (including the instrumentation you asked for):
After comparing with arm64, I found that arm64 uses spinlock_irq to protect the in_interrupt(). I think this would make in_interrupt() = 0.
So how about trying:
arch/riscv/kernel/traps.c +3 -1
@@ -82,13 +82,15 @@ void die(struct pt_regs *regs, const char *str)bust_spinlocks (0 );add_taint (TAINT_DIE ,LOCKDEP_NOW_UNRELIABLE ); -spin_unlock_irqrestore (&die_lock, flags);oops_exit ();if (in_interrupt ())panic ("Fatal exception in interrupt" );if (panic_on_oops)panic ("Fatal exception" ); + +spin_unlock_irqrestore (&die_lock, flags); +if (ret !=NOTIFY_STOP )make_task_dead (SIGSEGV ); }
Quoted 14 lines
[ 3.594801] [<ffffffff80005e3a>] dump_backtrace+0x1c/0x24 [ 3.594826] [<ffffffff800059f0>] die+0x228/0x238 [ 3.594835] [<ffffffff80005b38>] handle_break+0x9a/0xe0 [ 3.594843] [<ffffffff809f30d6>] do_trap_break+0x48/0x5c [ 3.594854] [<ffffffff80003ee4>] ret_from_exception+0x0/0x64 [ 3.594862] [<ffffffff8064b844>] lkdtm_BUG+0x6/0x8 [ 3.594959] Kernel panic - not syncing: Fatal exception in interrupt [ 3.595005] SMP: stopping secondary CPUs [ 3.596444] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---~~~
Daniel.
Signature · 7 lines
Best Regards Guo Ren _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 118 lines · Guo Ren
Quoted 98 lines · Daniel Thompson
Quoted 51 lines · Guo Ren
Quoted 50 lines · Guo Ren
Quoted 32 lines · Daniel Thompson
Quoted 14 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customQuoted 7 lines
Suggested-by Huacai Chen <[email protected]>Reviewed-by Björn Töpel <[email protected]>Tested-by Yipeng Zou <[email protected]>Tested-by Jisheng Zhang <[email protected]>Signed-off-by Guo Ren <[email protected]>Signed-off-by Guo Ren <[email protected]>Cc Ben Hutchings <[email protected]>Apologies for the late feedback but I've been swamped lately and only recently got round to running the full kgdb test suite on the v6.4 series.
The kgdb test suite includes a couple of tests that verify that the system resumes after breakpointing due to a
BUG():
https://github.com/daniel-thompson/kgdbtest/blob/master/tests/test_kdb_fault_injection.py#L24-L45Quoted 7 lines
These tests have regressed on riscv between v6.3 and v6.4 and a bisect is pointing at this patch. With these changes in place then, after kdb resumes the system, the
BUG()message is printed as normal but then immediately fails. From the backtrace it looks like the new entry/exit code cannot advance past a compiled breakpoint instruction:
~~~
PANIC: Fatal exception in interruptIt comes from:
void die(structpt_regs*regs, ...
{
...
if (in_interrupt())panic("Fatal exception in interrupt");...
Quoted 6 lines
Quoted 3 lines
We could add a
dump_backtraceto see what happened:
if (in_interrupt()) {
+dump_backtrace(regs, NULL, KERN_DEFAULT);Sorry, it should be:
+dump_backtrace(NULL, NULL, KERN_DEFAULT);
We need current stack info, not exception context.I added this... and I also stopped kgdb from intercepting the
panic()since that interferes with the console output fromdump_backtrace().~~~
# /bin/echo BUG > /sys/kernel/debug/provoke-crash/DIRECT [ 3.380565] lkdtm: Performing direct entry BUGEntering kdb (current=0xff6000000380ab00, pid 98) on processor 0 due to NonMaskable Interrupt @
0xffffffff8064b844kdb> go
Catastrophic error detected
kdb_continue_catastrophic=0, type go a second time if you really want to continue
kdb> go
Catastrophic error detected
kdb_continue_catastrophic=0, attempting to continue[ 3.381411] ------------[ cut here ]------------ [ 3.381454] kernel BUG at drivers/misc/lkdtm/bugs.c:78! [ 3.381609] Kernel BUG [#1] [ 3.381632] Modules linked in: [ 3.381734] CPU: 0 PID: 98 Comm: echo Not tainted 6.4.0-rc6-00004-ge6e9d4598760-dirty #126 [ 3.381817] Hardware name: riscv-virtio,qemu (DT) [ 3.381885] epc : lkdtm_BUG+0x6/0x8 [ 3.381959] ra : lkdtm_do_action+0x10/0x1c [ 3.381978] epc : ffffffff8064b844 ra : ffffffff8064afb4 sp : ff200000008c3d30 [ 3.381991] gp : ffffffff810665a0 tp : ff6000000380ab00 t0 : 6500000000000000 [ 3.382002] t1 : 0000000000000001 t2 : 6550203a6d74646b s0 : ff200000008c3d40 [ 3.382012] s1 : ff60000003988000 a0 : ffffffff80fc0260 a1 : ff6000003ffad788 [ 3.382023] a2 : ff6000003ffb9530 a3 : 0000000000000000 a4 : 0000000000000000 [ 3.382034] a5 : ffffffff8064b83e a6 : 0000000000000050 a7 : 0000000000040000 [ 3.382045] s2 : 0000000000000004 s3 : ffffffff80fc0260 s4 : ff200000008c3e70 [ 3.382056] s5 : ff600000033223a8 s6 : 00000000000f0cc0 s7 : ff60000002211000 [ 3.382066] s8 : 00ffffffafc50c08 s9 : 00ffffffafc4b9b8 s10: 0000000000000000 [ 3.382077] s11: 0000000000000001 t3 : 461f715700000000 t4 : 0000000000000002 [ 3.382087] t5 : 0000000000000000 t6 : ff200000008c3b58 [ 3.382097] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003 [ 3.382139] [<ffffffff8064b844>] lkdtm_BUG+0x6/0x8 [ 3.382245] Code: 0513 9245 b097 0039 80e7 7f20 bf39 1141 e422 0800 (9002) 1141 [ 3.594697] ---[ end trace 0000000000000000 ]---Quoted 3 lines
At this point we expect a shell prompt since we should have taken the
BUG(), killed the echo process and returned to the shell. However in v6.4 we get the following instead (including the instrumentation you asked for):After comparing with arm64, I found that arm64 uses
spinlock_irqto protect thein_interrupt(). I think this would makein_interrupt()= 0.So how about trying:
arch/riscv/kernel/traps.c +0
-0@@ -82,13 +82,15 @@ void die(struct pt_regs *regs, const char *str)bust_spinlocks (0 );
arch/riscv/kernel/traps.c void die(struct pt_regs *regs, const char *str) · line 92
Quoted 10 lines
arch/riscv/kernel/traps.c +2
-1add_taint (TAINT_DIE ,LOCKDEP_NOW_UNRELIABLE ); -spin_unlock_irqrestore (&die_lock, flags);oops_exit ();if (in_interrupt ())panic ("Fatal exception in interrupt" );if (panic_on_oops)panic ("Fatal exception" ); + +spin_unlock_irqrestore (&die_lock, flags);
En... It seems it's not correct, how can I reproduce your environment on qemu? Sorry, I'm not familiar with kgdb.
Quoted 25 lines
arch/riscv/kernel/traps.c +1
-0+if (ret !=NOTIFY_STOP )make_task_dead (SIGSEGV ); }Quoted 11 lines
[ 3.594801] [<ffffffff80005e3a>] dump_backtrace+0x1c/0x24 [ 3.594826] [<ffffffff800059f0>] die+0x228/0x238 [ 3.594835] [<ffffffff80005b38>] handle_break+0x9a/0xe0 [ 3.594843] [<ffffffff809f30d6>] do_trap_break+0x48/0x5c [ 3.594854] [<ffffffff80003ee4>] ret_from_exception+0x0/0x64 [ 3.594862] [<ffffffff8064b844>] lkdtm_BUG+0x6/0x8 [ 3.594959] Kernel panic - not syncing: Fatal exception in interrupt [ 3.595005] SMP: stopping secondary CPUs [ 3.596444] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---Quoted 4 lines
~~~
Daniel.
--
Best Regards
Guo Ren
Signature · 7 lines
Best Regards Guo Ren _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 124 lines · Guo Ren
Quoted 122 lines · Guo Ren
Quoted 98 lines · Daniel Thompson
Quoted 51 lines · Guo Ren
Quoted 50 lines · Guo Ren
Quoted 32 lines · Daniel Thompson
Quoted 14 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customQuoted 7 lines
Suggested-by Huacai Chen <[email protected]>Reviewed-by Björn Töpel <[email protected]>Tested-by Yipeng Zou <[email protected]>Tested-by Jisheng Zhang <[email protected]>Signed-off-by Guo Ren <[email protected]>Signed-off-by Guo Ren <[email protected]>Cc Ben Hutchings <[email protected]>Apologies for the late feedback but I've been swamped lately and only recently got round to running the full kgdb test suite on the v6.4 series.
The kgdb test suite includes a couple of tests that verify that the system resumes after breakpointing due to a
BUG():
https://github.com/daniel-thompson/kgdbtest/blob/master/tests/test_kdb_fault_injection.py#L24-L45Quoted 7 lines
These tests have regressed on riscv between v6.3 and v6.4 and a bisect is pointing at this patch. With these changes in place then, after kdb resumes the system, the
BUG()message is printed as normal but then immediately fails. From the backtrace it looks like the new entry/exit code cannot advance past a compiled breakpoint instruction:
~~~
PANIC: Fatal exception in interruptIt comes from:
void die(structpt_regs*regs, ...
{
...
if (in_interrupt())panic("Fatal exception in interrupt");...
Quoted 6 lines
Quoted 3 lines
We could add a
dump_backtraceto see what happened:
if (in_interrupt()) {
+dump_backtrace(regs, NULL, KERN_DEFAULT);Sorry, it should be:
+dump_backtrace(NULL, NULL, KERN_DEFAULT);
We need current stack info, not exception context.I added this... and I also stopped kgdb from intercepting the
panic()since that interferes with the console output fromdump_backtrace().~~~
# /bin/echo BUG > /sys/kernel/debug/provoke-crash/DIRECT [ 3.380565] lkdtm: Performing direct entry BUGEntering kdb (current=0xff6000000380ab00, pid 98) on processor 0 due to NonMaskable Interrupt @
0xffffffff8064b844kdb> go
Catastrophic error detected
kdb_continue_catastrophic=0, type go a second time if you really want to continue
kdb> go
Catastrophic error detected
kdb_continue_catastrophic=0, attempting to continue[ 3.381411] ------------[ cut here ]------------ [ 3.381454] kernel BUG at drivers/misc/lkdtm/bugs.c:78! [ 3.381609] Kernel BUG [#1] [ 3.381632] Modules linked in: [ 3.381734] CPU: 0 PID: 98 Comm: echo Not tainted 6.4.0-rc6-00004-ge6e9d4598760-dirty #126 [ 3.381817] Hardware name: riscv-virtio,qemu (DT) [ 3.381885] epc : lkdtm_BUG+0x6/0x8 [ 3.381959] ra : lkdtm_do_action+0x10/0x1c [ 3.381978] epc : ffffffff8064b844 ra : ffffffff8064afb4 sp : ff200000008c3d30 [ 3.381991] gp : ffffffff810665a0 tp : ff6000000380ab00 t0 : 6500000000000000 [ 3.382002] t1 : 0000000000000001 t2 : 6550203a6d74646b s0 : ff200000008c3d40 [ 3.382012] s1 : ff60000003988000 a0 : ffffffff80fc0260 a1 : ff6000003ffad788 [ 3.382023] a2 : ff6000003ffb9530 a3 : 0000000000000000 a4 : 0000000000000000 [ 3.382034] a5 : ffffffff8064b83e a6 : 0000000000000050 a7 : 0000000000040000 [ 3.382045] s2 : 0000000000000004 s3 : ffffffff80fc0260 s4 : ff200000008c3e70 [ 3.382056] s5 : ff600000033223a8 s6 : 00000000000f0cc0 s7 : ff60000002211000 [ 3.382066] s8 : 00ffffffafc50c08 s9 : 00ffffffafc4b9b8 s10: 0000000000000000 [ 3.382077] s11: 0000000000000001 t3 : 461f715700000000 t4 : 0000000000000002 [ 3.382087] t5 : 0000000000000000 t6 : ff200000008c3b58 [ 3.382097] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003 [ 3.382139] [<ffffffff8064b844>] lkdtm_BUG+0x6/0x8 [ 3.382245] Code: 0513 9245 b097 0039 80e7 7f20 bf39 1141 e422 0800 (9002) 1141 [ 3.594697] ---[ end trace 0000000000000000 ]---Quoted 3 lines
At this point we expect a shell prompt since we should have taken the
BUG(), killed the echo process and returned to the shell. However in v6.4 we get the following instead (including the instrumentation you asked for):After comparing with arm64, I found that arm64 uses
spinlock_irqto protect thein_interrupt(). I think this would makein_interrupt()= 0.So how about trying:
arch/riscv/kernel/traps.c +0
-1@@ -82,13 +82,15 @@ void die(struct pt_regs *regs, const char *str)bust_spinlocks (0 );add_taint (TAINT_DIE ,LOCKDEP_NOW_UNRELIABLE ); -spin_unlock_irqrestore (&die_lock, flags);oops_exit ();
Quoted 8 lines
arch/riscv/kernel/traps.c void die(struct pt_regs *regs, const char *str) · line 92
Quoted 6 lines
arch/riscv/kernel/traps.c +2
-0if (in_interrupt ())panic ("Fatal exception in interrupt" );if (panic_on_oops)panic ("Fatal exception" ); + +spin_unlock_irqrestore (&die_lock, flags);En... It seems it's not correct, how can I reproduce your environment on qemu? Sorry, I'm not familiar with kgdb.
I got it:
Normal is:
# mount -t debugfs none /sys/kernel/debug/ # /bin/echo BUG > /sys/kernel/debug/provoke-crash/DIRECT [ 8.948041] lkdtm: Performing direct entry BUG [ 8.949228] ------------[ cut here ]------------ [ 8.949640] kernel BUG at drivers/misc/lkdtm/bugs.c:78! [ 8.950534] Kernel BUG [#1] [ 8.950944] Modules linked in: [ 8.951805] CPU: 0 PID: 106 Comm: echo Not tainted 6.3.0-rc2-00295-gb4e5219985e8 #22 [ 8.952831] Hardware name: riscv-virtio,qemu (DT) [ 8.953587] epc : lkdtm_BUG+0x6/0x8 [ 8.954232] ra : lkdtm_do_action+0x14/0x1c [ 8.954713] epc : ffffffff805549e2 ra : ffffffff8087245c sp : ff2000000081bd60 [ 8.955378] gp : ffffffff814ffec0 tp : ff600000023c8000 t0 : 6500000000000000 [ 8.956029] t1 : 000000000000006c t2 : 6550203a6d74646b s0 : ff2000000081bd70 [ 8.956699] s1 : ffffffff814bee50 a0 : ffffffff814bee50 a1 : ff6000001fbd8608 [ 8.957381] a2 : ff6000001fbdb868 a3 : 0000000000000000 a4 : 0000000000000000 [ 8.958035] a5 : ffffffff805549dc a6 : 0000000000000032 a7 : 0000000000000038 [ 8.958708] s2 : 0000000000000004 s3 : 00000000556371a0 s4 : ff2000000081be90 [ 8.959397] s5 : ff60000001c90000 s6 : 00000000556371a0 s7 : 0000000000000030 [ 8.960053] s8 : 000000007fffec78 s9 : 0000000000000007 s10: 0000000055637480 [ 8.960717] s11: 0000000000000001 t3 : ffffffff81512e97 t4 : ffffffff81512e97 [ 8.961379] t5 : ffffffff81512e98 t6 : ff2000000081bba8 [ 8.961888] status: 0000000100000120 badaddr: 0000000000000000 cause: 0000000000000003 [ 8.962923] [<ffffffff805549e2>] lkdtm_BUG+0x6/0x8 [ 8.964194] Code: 0513 d665 7097 0031 80e7 f000 b705 1141 e422 0800 (9002) 1141 [ 8.965847] ---[ end trace 0000000000000000 ]--- [ 8.966637] note: echo[106] exited with irqs disabled Segmentation fault #
After generic_entry:
# mount -t debugfs none /sys/kernel/debug/ # /bin/echo BUG > /sys/kernel/debug/provoke-crash/DIRECT [ 8.152247] lkdtm: Performing direct entry BUG [ 8.153652] ------------[ cut here ]------------ [ 8.153825] kernel BUG at drivers/misc/lkdtm/bugs.c:78! [ 8.154341] Kernel BUG [#1] [ 8.154440] Modules linked in: [ 8.154918] CPU: 0 PID: 106 Comm: echo Not tainted 6.4.0-rc1-00055-g0ca05a4b079f #21 [ 8.155301] Hardware name: riscv-virtio,qemu (DT) [ 8.155581] epc : lkdtm_BUG+0x6/0x8 [ 8.155880] ra : lkdtm_do_action+0x14/0x1c [ 8.155977] epc : ffffffff8059d4b4 ra : ffffffff808c1a84 sp : ff2000000081bd40 [ 8.156030] gp : ffffffff81503c08 tp : ff600000028ebac0 t0 : 6500000000000000 [ 8.156079] t1 : 000000000000006c t2 : 6550203a6d74646b s0 : ff2000000081bd50 [ 8.156144] s1 : ffffffff814c2e88 a0 : ffffffff814c2e88 a1 : ff6000001ffd8608 [ 8.156193] a2 : ff6000001ffdb870 a3 : 0000000000000000 a4 : 0000000000000000 [ 8.156241] a5 : ffffffff8059d4ae a6 : 0000000000000032 a7 : 0000000000000038 [ 8.156288] s2 : 0000000000000004 s3 : 00000000556371a0 s4 : ff2000000081be70 [ 8.156335] s5 : ff60000002090000 s6 : 00000000556371a0 s7 : 0000000000000030 [ 8.156382] s8 : 000000007fffec78 s9 : 0000000000000007 s10: 0000000055637480 [ 8.156428] s11: 0000000000000001 t3 : ffffffff815173d7 t4 : ffffffff815173d7 [ 8.156473] t5 : ffffffff815173d8 t6 : ff2000000081bb88 [ 8.156516] status: 0000000100000120 badaddr: 0000000000000000 cause: 0000000000000003 [ 8.156830] [<ffffffff8059d4b4>] lkdtm_BUG+0x6/0x8 [ 8.157630] Code: 0513 1745 d097 0031 80e7 70a0 b705 1141 e422 0800 (9002) 1141 [ 8.169646] ---[ end trace 0000000000000000 ]--- [ 8.170148] Kernel panic - not syncing: Fatal exception in interrupt [ 8.171839] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
I'm debugging on it, and soon give the patch.
Quoted 32 lines
Quoted 19 lines
arch/riscv/kernel/traps.c +1
-0+if (ret !=NOTIFY_STOP )make_task_dead (SIGSEGV ); }Quoted 14 lines
[ 3.594801] [<ffffffff80005e3a>] dump_backtrace+0x1c/0x24 [ 3.594826] [<ffffffff800059f0>] die+0x228/0x238 [ 3.594835] [<ffffffff80005b38>] handle_break+0x9a/0xe0 [ 3.594843] [<ffffffff809f30d6>] do_trap_break+0x48/0x5c [ 3.594854] [<ffffffff80003ee4>] ret_from_exception+0x0/0x64 [ 3.594862] [<ffffffff8064b844>] lkdtm_BUG+0x6/0x8 [ 3.594959] Kernel panic - not syncing: Fatal exception in interrupt [ 3.595005] SMP: stopping secondary CPUs [ 3.596444] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---~~~
Quoted 7 lines
Quoted 1 line
Daniel.
--
Best Regards
Guo Ren--
Best Regards
Guo Ren
Signature · 2 lines
Best Regards Guo Ren
Re: [PATCH -next V17 4/7] riscv: entry: Convert to generic entry
Quoted 224 lines · Guo Ren
Quoted 124 lines · Guo Ren
Quoted 122 lines · Guo Ren
Quoted 98 lines · Daniel Thompson
Quoted 51 lines · Guo Ren
Quoted 50 lines · Guo Ren
Quoted 32 lines · Daniel Thompson
Quoted 14 lines · On Tue, Feb 21, 2023 at 10:30:18PM -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
This patch converts riscv to use the generic entry infrastructure from
kernel/entry/*. The generic entry makes maintainers' work easier and codes more elegant. Here are the changes:- More clear
entry.Swithhandle_exceptionandret_from_exception
- Get rid of complex custom signal implementation
- Move syscall procedure from assembly to C, which is much more readable.
- Connectret_from_fork&ret_from_kernel_threadto generic entry.
- Wrap with irqentry_enter/exit and syscall_enter/exit_from_user_mode
- Use the standard preemption code instead of customQuoted 7 lines
Suggested-by Huacai Chen <[email protected]>Reviewed-by Björn Töpel <[email protected]>Tested-by Yipeng Zou <[email protected]>Tested-by Jisheng Zhang <[email protected]>Signed-off-by Guo Ren <[email protected]>Signed-off-by Guo Ren <[email protected]>Cc Ben Hutchings <[email protected]>Apologies for the late feedback but I've been swamped lately and only recently got round to running the full kgdb test suite on the v6.4 series.
The kgdb test suite includes a couple of tests that verify that the system resumes after breakpointing due to a
BUG():
https://github.com/daniel-thompson/kgdbtest/blob/master/tests/test_kdb_fault_injection.py#L24-L45Quoted 7 lines
These tests have regressed on riscv between v6.3 and v6.4 and a bisect is pointing at this patch. With these changes in place then, after kdb resumes the system, the
BUG()message is printed as normal but then immediately fails. From the backtrace it looks like the new entry/exit code cannot advance past a compiled breakpoint instruction:
~~~
PANIC: Fatal exception in interruptIt comes from:
void die(structpt_regs*regs, ...
{
...
if (in_interrupt())panic("Fatal exception in interrupt");...
Quoted 6 lines
Quoted 3 lines
We could add a
dump_backtraceto see what happened:
if (in_interrupt()) {
+dump_backtrace(regs, NULL, KERN_DEFAULT);Sorry, it should be:
+dump_backtrace(NULL, NULL, KERN_DEFAULT);
We need current stack info, not exception context.I added this... and I also stopped kgdb from intercepting the
panic()since that interferes with the console output fromdump_backtrace().~~~
# /bin/echo BUG > /sys/kernel/debug/provoke-crash/DIRECT [ 3.380565] lkdtm: Performing direct entry BUGEntering kdb (current=0xff6000000380ab00, pid 98) on processor 0 due to NonMaskable Interrupt @
0xffffffff8064b844kdb> go
Catastrophic error detected
kdb_continue_catastrophic=0, type go a second time if you really want to continue
kdb> go
Catastrophic error detected
kdb_continue_catastrophic=0, attempting to continue[ 3.381411] ------------[ cut here ]------------ [ 3.381454] kernel BUG at drivers/misc/lkdtm/bugs.c:78! [ 3.381609] Kernel BUG [#1] [ 3.381632] Modules linked in: [ 3.381734] CPU: 0 PID: 98 Comm: echo Not tainted 6.4.0-rc6-00004-ge6e9d4598760-dirty #126 [ 3.381817] Hardware name: riscv-virtio,qemu (DT) [ 3.381885] epc : lkdtm_BUG+0x6/0x8 [ 3.381959] ra : lkdtm_do_action+0x10/0x1c [ 3.381978] epc : ffffffff8064b844 ra : ffffffff8064afb4 sp : ff200000008c3d30 [ 3.381991] gp : ffffffff810665a0 tp : ff6000000380ab00 t0 : 6500000000000000 [ 3.382002] t1 : 0000000000000001 t2 : 6550203a6d74646b s0 : ff200000008c3d40 [ 3.382012] s1 : ff60000003988000 a0 : ffffffff80fc0260 a1 : ff6000003ffad788 [ 3.382023] a2 : ff6000003ffb9530 a3 : 0000000000000000 a4 : 0000000000000000 [ 3.382034] a5 : ffffffff8064b83e a6 : 0000000000000050 a7 : 0000000000040000 [ 3.382045] s2 : 0000000000000004 s3 : ffffffff80fc0260 s4 : ff200000008c3e70 [ 3.382056] s5 : ff600000033223a8 s6 : 00000000000f0cc0 s7 : ff60000002211000 [ 3.382066] s8 : 00ffffffafc50c08 s9 : 00ffffffafc4b9b8 s10: 0000000000000000 [ 3.382077] s11: 0000000000000001 t3 : 461f715700000000 t4 : 0000000000000002 [ 3.382087] t5 : 0000000000000000 t6 : ff200000008c3b58 [ 3.382097] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003 [ 3.382139] [<ffffffff8064b844>] lkdtm_BUG+0x6/0x8 [ 3.382245] Code: 0513 9245 b097 0039 80e7 7f20 bf39 1141 e422 0800 (9002) 1141 [ 3.594697] ---[ end trace 0000000000000000 ]---Quoted 3 lines
At this point we expect a shell prompt since we should have taken the
BUG(), killed the echo process and returned to the shell. However in v6.4 we get the following instead (including the instrumentation you asked for):After comparing with arm64, I found that arm64 uses
spinlock_irqto protect thein_interrupt(). I think this would makein_interrupt()= 0.So how about trying:
arch/riscv/kernel/traps.c +0
-1@@ -82,13 +82,15 @@ void die(struct pt_regs *regs, const char *str)bust_spinlocks (0 );add_taint (TAINT_DIE ,LOCKDEP_NOW_UNRELIABLE ); -spin_unlock_irqrestore (&die_lock, flags);oops_exit ();Quoted 8 lines
arch/riscv/kernel/traps.c void die(struct pt_regs *regs, const char *str) · line 92
Quoted 6 lines
arch/riscv/kernel/traps.c +2
-0if (in_interrupt ())panic ("Fatal exception in interrupt" );if (panic_on_oops)panic ("Fatal exception" ); + +spin_unlock_irqrestore (&die_lock, flags);En... It seems it's not correct, how can I reproduce your environment on qemu? Sorry, I'm not familiar with kgdb.
I got it:
Normal is:# mount -t debugfs none /sys/kernel/debug/ # /bin/echo BUG > /sys/kernel/debug/provoke-crash/DIRECT [ 8.948041] lkdtm: Performing direct entry BUG [ 8.949228] ------------[ cut here ]------------ [ 8.949640] kernel BUG at drivers/misc/lkdtm/bugs.c:78! [ 8.950534] Kernel BUG [#1] [ 8.950944] Modules linked in: [ 8.951805] CPU: 0 PID: 106 Comm: echo Not tainted 6.3.0-rc2-00295-gb4e5219985e8 #22 [ 8.952831] Hardware name: riscv-virtio,qemu (DT) [ 8.953587] epc : lkdtm_BUG+0x6/0x8 [ 8.954232] ra : lkdtm_do_action+0x14/0x1c [ 8.954713] epc : ffffffff805549e2 ra : ffffffff8087245c sp : ff2000000081bd60 [ 8.955378] gp : ffffffff814ffec0 tp : ff600000023c8000 t0 : 6500000000000000 [ 8.956029] t1 : 000000000000006c t2 : 6550203a6d74646b s0 : ff2000000081bd70 [ 8.956699] s1 : ffffffff814bee50 a0 : ffffffff814bee50 a1 : ff6000001fbd8608 [ 8.957381] a2 : ff6000001fbdb868 a3 : 0000000000000000 a4 : 0000000000000000 [ 8.958035] a5 : ffffffff805549dc a6 : 0000000000000032 a7 : 0000000000000038 [ 8.958708] s2 : 0000000000000004 s3 : 00000000556371a0 s4 : ff2000000081be90 [ 8.959397] s5 : ff60000001c90000 s6 : 00000000556371a0 s7 : 0000000000000030 [ 8.960053] s8 : 000000007fffec78 s9 : 0000000000000007 s10: 0000000055637480 [ 8.960717] s11: 0000000000000001 t3 : ffffffff81512e97 t4 : ffffffff81512e97 [ 8.961379] t5 : ffffffff81512e98 t6 : ff2000000081bba8 [ 8.961888] status: 0000000100000120 badaddr: 0000000000000000 cause: 0000000000000003 [ 8.962923] [<ffffffff805549e2>] lkdtm_BUG+0x6/0x8 [ 8.964194] Code: 0513 d665 7097 0031 80e7 f000 b705 1141 e422 0800 (9002) 1141 [ 8.965847] ---[ end trace 0000000000000000 ]--- [ 8.966637] note: echo[106] exited with irqs disabled Segmentation fault #After
generic_entry:# mount -t debugfs none /sys/kernel/debug/ # /bin/echo BUG > /sys/kernel/debug/provoke-crash/DIRECT [ 8.152247] lkdtm: Performing direct entry BUG [ 8.153652] ------------[ cut here ]------------ [ 8.153825] kernel BUG at drivers/misc/lkdtm/bugs.c:78! [ 8.154341] Kernel BUG [#1] [ 8.154440] Modules linked in: [ 8.154918] CPU: 0 PID: 106 Comm: echo Not tainted 6.4.0-rc1-00055-g0ca05a4b079f #21 [ 8.155301] Hardware name: riscv-virtio,qemu (DT) [ 8.155581] epc : lkdtm_BUG+0x6/0x8 [ 8.155880] ra : lkdtm_do_action+0x14/0x1c [ 8.155977] epc : ffffffff8059d4b4 ra : ffffffff808c1a84 sp : ff2000000081bd40 [ 8.156030] gp : ffffffff81503c08 tp : ff600000028ebac0 t0 : 6500000000000000 [ 8.156079] t1 : 000000000000006c t2 : 6550203a6d74646b s0 : ff2000000081bd50 [ 8.156144] s1 : ffffffff814c2e88 a0 : ffffffff814c2e88 a1 : ff6000001ffd8608 [ 8.156193] a2 : ff6000001ffdb870 a3 : 0000000000000000 a4 : 0000000000000000 [ 8.156241] a5 : ffffffff8059d4ae a6 : 0000000000000032 a7 : 0000000000000038 [ 8.156288] s2 : 0000000000000004 s3 : 00000000556371a0 s4 : ff2000000081be70 [ 8.156335] s5 : ff60000002090000 s6 : 00000000556371a0 s7 : 0000000000000030 [ 8.156382] s8 : 000000007fffec78 s9 : 0000000000000007 s10: 0000000055637480 [ 8.156428] s11: 0000000000000001 t3 : ffffffff815173d7 t4 : ffffffff815173d7 [ 8.156473] t5 : ffffffff815173d8 t6 : ff2000000081bb88 [ 8.156516] status: 0000000100000120 badaddr: 0000000000000000 cause: 0000000000000003 [ 8.156830] [<ffffffff8059d4b4>] lkdtm_BUG+0x6/0x8 [ 8.157630] Code: 0513 1745 d097 0031 80e7 70a0 b705 1141 e422 0800 (9002) 1141 [ 8.169646] ---[ end trace 0000000000000000 ]--- [ 8.170148] Kernel panic - not syncing: Fatal exception in interrupt [ 8.171839] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
Quoted 1 line
I'm debugging on it, and soon give the patch.
Thx, Daniel, for the report; here is the fixup:
https://lore.kernel.org/linux-riscv/[email protected]/
I've tested, and it's okay now.
# /bin/echo BUG > /sys/kernel/debug/provoke-crash/DIRECT
Quoted 39 lines
Quoted 30 lines
Quoted 20 lines
arch/riscv/kernel/traps.c +1
-0+if (ret !=NOTIFY_STOP )make_task_dead (SIGSEGV ); }Quoted 14 lines
[ 3.594801] [<ffffffff80005e3a>] dump_backtrace+0x1c/0x24 [ 3.594826] [<ffffffff800059f0>] die+0x228/0x238 [ 3.594835] [<ffffffff80005b38>] handle_break+0x9a/0xe0 [ 3.594843] [<ffffffff809f30d6>] do_trap_break+0x48/0x5c [ 3.594854] [<ffffffff80003ee4>] ret_from_exception+0x0/0x64 [ 3.594862] [<ffffffff8064b844>] lkdtm_BUG+0x6/0x8 [ 3.594959] Kernel panic - not syncing: Fatal exception in interrupt [ 3.595005] SMP: stopping secondary CPUs [ 3.596444] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---~~~
Quoted 7 lines
Quoted 1 line
Daniel.
--
Best Regards
Guo RenQuoted 3 lines
--
Best Regards
Guo Ren--
Best Regards
Guo Ren
Signature · 2 lines
Best Regards Guo Ren
PATCH v17 5/7 riscv: entry: Remove extra level wrappers of trace_hardirqs_{on,off}
In reply to [email protected]From: Jisheng Zhang <[email protected]>
Since riscv is converted to generic entry, there's no need for the extra wrappers of trace_hardirqs_{on,off}.
--- arch/riscv/kernel/Makefile | 2 -- arch/riscv/kernel/trace_irq.c | 27 --------------------------- arch/riscv/kernel/trace_irq.h | 11 ----------- 3 files changed, 40 deletions(-) delete mode 100644 arch/riscv/kernel/trace_irq.c delete mode 100644 arch/riscv/kernel/trace_irq.h
arch/riscv/kernel/Makefile +0 -2
@@ -68,8 +68,6 @@ obj-$(CONFIG_CPU_PM) += suspend_entry.o suspend.o obj-$(CONFIG_FUNCTION_TRACER) += mcount.o ftrace.o obj-$(CONFIG_DYNAMIC_FTRACE) += mcount-dyn.o -obj-$(CONFIG_TRACE_IRQFLAGS) += trace_irq.o - obj-$(CONFIG_PERF_EVENTS) += perf_callchain.o obj-$(CONFIG_HAVE_PERF_REGS) += perf_regs.o obj-$(CONFIG_RISCV_SBI) += sbi.o
arch/riscv/kernel/trace_irq.c deleted +0 -27
@@ -1,27 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* -* Copyright (C) 2022 Changbin Du <[email protected]> -*/ - -#include <linux/irqflags.h> -#include <linux/kprobes.h> -#include "trace_irq.h" - -/* -* trace_hardirqs_on/off require the caller to setup frame pointer properly. -* Otherwise, CALLER_ADDR1 might trigger an pagging exception in kernel. -* Here we add one extra level so they can be safely called by low -* level entry code which $fp is used for other purpose. -*/ - -void __trace_hardirqs_on (void ) -{ -trace_hardirqs_on (); -} -NOKPROBE_SYMBOL (__trace_hardirqs_on); - -void __trace_hardirqs_off (void ) -{ -trace_hardirqs_off (); -} -NOKPROBE_SYMBOL (__trace_hardirqs_off);
arch/riscv/kernel/trace_irq.h deleted +0 -11
@@ -1,11 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* -* Copyright (C) 2022 Changbin Du <[email protected]> -*/ -#ifndef __TRACE_IRQ_H -#define __TRACE_IRQ_H - -void __trace_hardirqs_on (void ); -void __trace_hardirqs_off (void ); - -#endif /* __TRACE_IRQ_H */
Signature · 7 lines
2.36.1 _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
PATCH v17 6/7 riscv: entry: Consolidate ret_from_kernel_thread into ret_from_fork
In reply to [email protected]From: Jisheng Zhang <[email protected]>
The ret_from_kernel_thread() behaves similarly with ret_from_fork(), the only difference is whether call the fn(arg) or not, this can be achieved by testing fn is NULL or not, I.E s0 is 0 or not. Many architectures have done the same thing, it makes entry.S more clean.
--- arch/riscv/kernel/entry.S | 12 +++--------- arch/riscv/kernel/process.c | 5 ++--- 2 files changed, 5 insertions(+), 12 deletions(-)
arch/riscv/kernel/entry.S +3 -9
@@ -132,7 +132,6 @@ SYM_CODE_END(handle_exception) * caller list: * - handle_exception * - ret_from_fork - * - ret_from_kernel_thread */ SYM_CODE_START_NOALIGN(ret_from_exception) REG_L s0, PT_STATUS(sp)
@@ -334,20 +333,15 @@ SYM_CODE_END(handle_kernel_stack_overflow) SYM_CODE_START(ret_from_fork) call schedule_tail - move a0, sp /* pt_regs */ - la ra, ret_from_exception - tail syscall_exit_to_user_mode -SYM_CODE_END(ret_from_fork) - -SYM_CODE_START(ret_from_kernel_thread) - call schedule_tail + beqz s0, 1f /* not from kernel thread */ /* Call fn(arg) */ move a0, s1 jalr s0 +1: move a0, sp /* pt_regs */ la ra, ret_from_exception tail syscall_exit_to_user_mode -SYM_CODE_END(ret_from_kernel_thread) +SYM_CODE_END(ret_from_fork) /* * Integer register context switch
arch/riscv/kernel/process.c +2 -3
@@ -34,7 +34,6 @@ EXPORT_SYMBOL(__stack_chk_guard);#endif extern asmlinkage void ret_from_fork(void); -extern asmlinkage void ret_from_kernel_thread(void);void arch_cpu_idle (void ) {
@@ -174,7 +173,6 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)/* Supervisor/Machine, irqs on: */ childregs->status =SR_PP |SR_PIE ; - p->thread.ra = (unsigned long )ret_from_kernel_thread; p->thread.s[0 ] = (unsigned long )args->fn; p->thread.s[1 ] = (unsigned long )args->fn_arg; }else {
@@ -184,8 +182,9 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)if (clone_flags &CLONE_SETTLS ) childregs->tp = tls; childregs->a0 =0 ;/* Return value of fork() */ - p->thread.ra = (unsigned long )ret_from_fork; + p->thread.s[0 ] =0 ; } + p->thread.ra = (unsigned long )ret_from_fork; p->thread.sp = (unsigned long )childregs;/* kernel sp */ return 0 ; }
Signature · 7 lines
2.36.1 _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
PATCH v17 7/7 riscv: entry: Consolidate general regs saving/restoring
In reply to [email protected]From: Jisheng Zhang <[email protected]>
Consolidate the saving/restoring GPs (except zero, ra, sp, gp, tp and t0) into save_from_x6_to_x31/restore_from_x6_to_x31 macros.
No functional change intended.
--- arch/riscv/include/asm/asm.h | 61 +++++++++++++++++++++++++ arch/riscv/kernel/entry.S | 81 ++-------------------------------- arch/riscv/kernel/mcount-dyn.S | 57 ++---------------------- 3 files changed, 68 insertions(+), 131 deletions(-)
arch/riscv/include/asm/asm.h +61 -0
@@ -69,6 +69,7 @@#endif #ifdef __ASSEMBLY__ +#include <asm/asm-offsets.h> /* Common assembly source macros */
@@ -81,6 +82,66 @@ .endr .endm + /* save all GPs except x1 ~ x5 */ + .macro save_from_x6_to_x31 + REG_S x6, PT_T1(sp) + REG_S x7, PT_T2(sp) + REG_S x8, PT_S0(sp) + REG_S x9, PT_S1(sp) + REG_S x10, PT_A0(sp) + REG_S x11, PT_A1(sp) + REG_S x12, PT_A2(sp) + REG_S x13, PT_A3(sp) + REG_S x14, PT_A4(sp) + REG_S x15, PT_A5(sp) + REG_S x16, PT_A6(sp) + REG_S x17, PT_A7(sp) + REG_S x18, PT_S2(sp) + REG_S x19, PT_S3(sp) + REG_S x20, PT_S4(sp) + REG_S x21, PT_S5(sp) + REG_S x22, PT_S6(sp) + REG_S x23, PT_S7(sp) + REG_S x24, PT_S8(sp) + REG_S x25, PT_S9(sp) + REG_S x26, PT_S10(sp) + REG_S x27, PT_S11(sp) + REG_S x28, PT_T3(sp) + REG_S x29, PT_T4(sp) + REG_S x30, PT_T5(sp) + REG_S x31, PT_T6(sp) + .endm + + /* restore all GPs except x1 ~ x5 */ + .macro restore_from_x6_to_x31 + REG_L x6, PT_T1(sp) + REG_L x7, PT_T2(sp) + REG_L x8, PT_S0(sp) + REG_L x9, PT_S1(sp) + REG_L x10, PT_A0(sp) + REG_L x11, PT_A1(sp) + REG_L x12, PT_A2(sp) + REG_L x13, PT_A3(sp) + REG_L x14, PT_A4(sp) + REG_L x15, PT_A5(sp) + REG_L x16, PT_A6(sp) + REG_L x17, PT_A7(sp) + REG_L x18, PT_S2(sp) + REG_L x19, PT_S3(sp) + REG_L x20, PT_S4(sp) + REG_L x21, PT_S5(sp) + REG_L x22, PT_S6(sp) + REG_L x23, PT_S7(sp) + REG_L x24, PT_S8(sp) + REG_L x25, PT_S9(sp) + REG_L x26, PT_S10(sp) + REG_L x27, PT_S11(sp) + REG_L x28, PT_T3(sp) + REG_L x29, PT_T4(sp) + REG_L x30, PT_T5(sp) + REG_L x31, PT_T6(sp) + .endm +#endif /* __ASSEMBLY__ */ #endif /* _ASM_RISCV_ASM_H */
arch/riscv/kernel/entry.S +3 -78
99 lines not on this page · raw message
arch/riscv/kernel/mcount-dyn.S +4 -53
70 lines not on this page · raw message
Signature · 7 lines
2.36.1 _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Palmer Dabbelt
AppliedRe: (subset) [PATCH -next V17 0/7] riscv: Add GENERIC_ENTRY support
In reply to [email protected]Quoted 10 lines · On Tue, 21 Feb 2023 22:30:14 -0500, [email protected] wrote:
From: Guo Ren <[email protected]>
The patches convert riscv to use the generic entry infrastructure from
kernel/entry/*. Some optimization forentry.Swith new .macro and mergeret_from_kernel_threadintoret_from_fork.The 1,2 are the preparation of generic entry. 3~7 are the main part of generic entry.
[...]
Applied, thanks!
[2/7] riscv: ptrace: Remove duplicate operation
https://git.kernel.org/palmer/c/8574bf8d0ddd [3/7] riscv: entry: Add noinstr to prevent instrumentation inserted https://git.kernel.org/palmer/c/d0db02c62879 [4/7] riscv: entry: Convert to generic entry https://git.kernel.org/palmer/c/f0bddf50586d [5/7] riscv: entry: Remove extra level wrappers of trace_hardirqs_{on,off} https://git.kernel.org/palmer/c/0bf298ad2b61 [6/7] riscv: entry: Consolidate ret_from_kernel_thread into ret_from_fork https://git.kernel.org/palmer/c/ab9164dae273 [7/7] riscv: entry: Consolidate general regs saving/restoring https://git.kernel.org/palmer/c/45b32b946a97
Best regards,
Signature · 1 line
Palmer Dabbelt <[email protected]>
This series was applied to riscv/linux.git (for-next) by Palmer Dabbelt <[email protected]>:
Hello:
This series was applied to riscv/linux.git (for-next) by Palmer Dabbelt <[email protected]>:
Quoted 10 lines · On Tue, 21 Feb 2023 22:30:14 -0500 you wrote:
From: Guo Ren <[email protected]>
The patches convert riscv to use the generic entry infrastructure from
kernel/entry/*. Some optimization forentry.Swith new .macro and mergeret_from_kernel_threadintoret_from_fork.The 1,2 are the preparation of generic entry. 3~7 are the main part of generic entry.
[...]
Here is the summary with links:
- [-next,V17,1/7] compiler_types.h: Add __noinstr_section() for noinstr (no matching commit)
- [-next,V17,2/7] riscv: ptrace: Remove duplicate operation
https://git.kernel.org/riscv/c/8574bf8d0ddd - [-next,V17,3/7] riscv: entry: Add noinstr to prevent instrumentation inserted https://git.kernel.org/riscv/c/d0db02c62879 - [-next,V17,4/7] riscv: entry: Convert to generic entry https://git.kernel.org/riscv/c/f0bddf50586d - [-next,V17,5/7] riscv: entry: Remove extra level wrappers of trace_hardirqs_{on,off} https://git.kernel.org/riscv/c/0bf298ad2b61 - [-next,V17,6/7] riscv: entry: Consolidate ret_from_kernel_thread into ret_from_fork https://git.kernel.org/riscv/c/ab9164dae273 - [-next,V17,7/7] riscv: entry: Consolidate general regs saving/restoring https://git.kernel.org/riscv/c/45b32b946a97
You are awesome, thank you!
Signature · 9 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Palmer Dabbelt
maintainerQuoted 154 lines · On Tue, 21 Feb 2023 19:30:14 PST (-0800), [email protected] wrote:
From: Guo Ren <[email protected]>
The patches convert riscv to use the generic entry infrastructure from
kernel/entry/*. Some optimization forentry.Swith new .macro and mergeret_from_kernel_threadintoret_from_fork.The 1,2 are the preparation of generic entry. 3~7 are the main part of generic entry.
All tested with rv64, rv32, rv64 + 32rootfs, all are passed.
You can directly try it with:
[1] https://github.com/guoren83/linux/tree/generic_entry_v17Any reviews and tests are helpful.
v17:
- Rebase on newest palmer/for-next 20230222
- Modify save_from_x6_to_x31/restore_from_x6_to_x31 to fit ftrace size reduce patch in for-next.v16:
https://lore.kernel.org/linux-riscv/[email protected]/
- Re-order commit tags for "compiler_types.h: Add__noinstr_section()for noinstr" (Thx Miguel)v15:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixup compile error for !MMU (Thx Conor)
- Rebase on riscv for-next (20230127)v14:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixup W=1 warning reported by kernel test robot <[email protected]>v13:
https://lore.kernel.org/linux-riscv/[email protected]/
- Remove noinstr for originaldo_page_fault
- Centralize all the necesarily-noinstr bits in
arch/riscv/kernel/traps.cv12:
https://lore.kernel.org/linux-riscv/[email protected]/
- Rebase on newest for-next-20230103 (Linux 6.2-rc1)
- Add Reviewed-by: Björn Töpelv11:
https://lore.kernel.org/linux-riscv/[email protected]/
- Rebase on newest for-next-20221211
- Remove stack optimization patch series
- Optimize comments
- Replace ENTRY with SYM_CODE/FUNC_START inentry.Sv10:
https://lore.kernel.org/linux-riscv/[email protected]/
- Rebase on palmer/for-next branch (20221208)
- Remove unrelated patches from the series (Suggested-by: Bjorn)
- Fixup Typos.v9:
https://lore.kernel.org/linux-riscv/[email protected]/
- FixupNR_syscallscheck (by Ben Hutchings)
- Add Tested-by: Jisheng Zhangv8:
https://lore.kernel.org/linux-riscv/[email protected]/
- Rebase on palmer/for-next branch (20221102)
- Add save/restore_from_x5_to_x31 .macro (JishengZhang)
- Consolidateret_from_kernel_threadintoret_from_fork(JishengZhang)
- Optimize__noinstr_sectioncomment (JiangshanLai)v7:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixupregs_irqs_disabledwithSR_PIE
- Optimizestackleak_erase->stackleak_erase_on_task_stack(Thx Mark Rutland)
- Add BUG_ON(!irqs_disabled()) in trap handlers
- Usingregs_irqs_disabledin__do_page_fault
- Remove unnecessary irq disable inret_from_exceptionand add commentv6:
https://lore.kernel.org/linux-riscv/[email protected]/
- UseTHEAD_SIZE_ORDERfor thread size adjustment in kconfig (Thx Arnd)
- Movecall_on_stackto inline style (Thx Peter Zijlstra)
- Fixup fp chain broken (Thx Chen Zhongjin)
- Remove common entry modification, and fixuppage_faultentry (Thx Peter Zijlstra)
- Treat some traps as nmi entry (Thx Peter Zijlstra)v5:
https://lore.kernel.org/linux-riscv/[email protected]/
- Add riscv own stackleak patch instead of generic entry modification (by Mark Rutland)
- Add EXPERT dependency forTHREAD_SIZE(by Arnd)
- Add EXPERT dependency forIRQ_STACK(by Sebastian, David Laight)
- Corrected__trap_section(by Peter Zijlstra)
- Add Tested-by (Yipeng Zou)
- UseCONFIG_SOFTIRQ_ON_OWN_STACKreplace "#ifndefCONFIG_PREEMPT_RT"
- Fixupsystrace_entercompile error
- Fixupexit_to_user_mode_preparepreempt_disablewarningV4:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixupentry.Swith "la" bug (by Conor.Dooley)
- Fixup missing noinstr bug (by Peter Zijlstra)V3:
https://lore.kernel.org/linux-riscv/[email protected]/
- FixupCONFIG_COMPAT=ncompile error
- AddTHREAD_SIZE_ORDERconfig
- Optimizeelf_kexec.cwarning fixup
- Add static toirq_stack_ptrdefinitionV2:
https://lore.kernel.org/linux-riscv/[email protected]/
- Fixup compile error by include "riscv: ptrace: Remove duplicate operation"
- Fixup compile warningReported-by kernel test robot <[email protected]>- Add test repo link in cover letter
V1:
https://lore.kernel.org/linux-riscv/[email protected]/Guo Ren (3):
riscv: ptrace: Remove duplicate operation
riscv: entry: Add noinstr to prevent instrumentation inserted
riscv: entry: Convert to generic entryJisheng Zhang (3):
riscv: entry: Remove extra level wrappers of trace_hardirqs_{on,off}
riscv: entry: Consolidateret_from_kernel_threadintoret_from_fork
riscv: entry: Consolidate general regs saving/restoringLai Jiangshan (1):
compiler_types.h: Add__noinstr_section()for noinstrarch/riscv/Kconfig | 1 + arch/riscv/include/asm/asm-prototypes.h | 2 + arch/riscv/include/asm/asm.h | 61 +++++ arch/riscv/include/asm/csr.h | 1 - arch/riscv/include/asm/entry-common.h | 11 + arch/riscv/include/asm/ptrace.h | 10 +- arch/riscv/include/asm/stacktrace.h | 5 + arch/riscv/include/asm/syscall.h | 21 ++ arch/riscv/include/asm/thread_info.h | 13 +- arch/riscv/kernel/Makefile | 2 - arch/riscv/kernel/entry.S | 321 +++--------------------- arch/riscv/kernel/head.h | 1 - arch/riscv/kernel/mcount-dyn.S | 57 +---- arch/riscv/kernel/process.c | 5 +- arch/riscv/kernel/ptrace.c | 44 ---- arch/riscv/kernel/signal.c | 29 +-- arch/riscv/kernel/trace_irq.c | 27 --
Quoted 8 lines
arch/riscv/kernel/trace_irq.h | 11 - arch/riscv/kernel/traps.c | 144 +++++++++-- arch/riscv/mm/fault.c | 6 +- include/linux/compiler_types.h | 15 +- 21 files changed, 289 insertions(+), 498 deletions(-) create mode 100644 arch/riscv/include/asm/entry-common.h delete mode 100644 arch/riscv/kernel/trace_irq.c delete mode 100644 arch/riscv/kernel/trace_irq.h
Thanks, this is on for-next.