mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
![Stas Sergeev](/assets/img/avatar_default.png)
The history is that -mm kernels do not work for me for a few months already. The things started from crashing somewhere after starting init, and for the last month - no boot at all, just "Uncompressing... OK, booting kernel", and silence. Early console didn't work too. With the latest releases this degraded into an infinite stream of the "Unknown interrupt or fault" messages. So today my patience ran out and I started to think how can I collect at least some info for the bug-report. Attached is the patch that allows to gather some valueable debug info on the problem by making an early console more useable. I can't properly test the patch, as the kernel still doesn't boot, so I'll explain it in details in a hope someone else can justify the intrusive changes. arch_hooks.h: added prototypes for setup_early_printk() and early_printk(). setup.c: killed wrong setup_early_printk() prototype. Moved setup_early_printk() a bit earlier, as it was not "early enough" to cover the bug I was fighting with. early_printk.c: made it to start printing from the bottom of the screen, otherwise the messages interfere with the ones of the boot-loader, so you can't read them. Signed-off-by: Stas Sergeev <stsp@aknet.ru> Cc: Andi Kleen <ak@muc.de> Cc: Zwane Mwaikambo <zwane@arm.linux.org.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
30 lines
820 B
C
30 lines
820 B
C
#ifndef _ASM_ARCH_HOOKS_H
|
|
#define _ASM_ARCH_HOOKS_H
|
|
|
|
#include <linux/interrupt.h>
|
|
|
|
/*
|
|
* linux/include/asm/arch_hooks.h
|
|
*
|
|
* define the architecture specific hooks
|
|
*/
|
|
|
|
/* these aren't arch hooks, they are generic routines
|
|
* that can be used by the hooks */
|
|
extern void init_ISA_irqs(void);
|
|
extern void apic_intr_init(void);
|
|
extern void smp_intr_init(void);
|
|
extern irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs);
|
|
|
|
/* these are the defined hooks */
|
|
extern void intr_init_hook(void);
|
|
extern void pre_intr_init_hook(void);
|
|
extern void pre_setup_arch_hook(void);
|
|
extern void trap_init_hook(void);
|
|
extern void time_init_hook(void);
|
|
extern void mca_nmi_hook(void);
|
|
|
|
extern int setup_early_printk(char *);
|
|
extern void early_printk(const char *fmt, ...) __attribute__((format(printf,1,2)));
|
|
|
|
#endif
|