MIPS: early_printk: drop __init annotations
We cannot use __init for earlyprintk code or data, since the kernel parameter "keep_bootcon" allows leaving the boot console enabled. Currently MIPS will crash/hang/die if you use keep_bootcon. The patch fixes it at least on Lemote FuLoong mini-PC. Changes for other boards were done based on what I could find with grep... Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Patchwork: http://patchwork.linux-mips.org/patch/4935/ Signed-off-by: John Crispin <blogic@openwrt.org>
This commit is contained in:
parent
1e7decdb27
commit
f7be4e754b
5 changed files with 10 additions and 11 deletions
|
@ -10,7 +10,7 @@
|
|||
#include <bcm63xx_io.h>
|
||||
#include <bcm63xx_regs.h>
|
||||
|
||||
static void __init wait_xfered(void)
|
||||
static void wait_xfered(void)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
|
@ -22,7 +22,7 @@ static void __init wait_xfered(void)
|
|||
} while (1);
|
||||
}
|
||||
|
||||
void __init prom_putchar(char c)
|
||||
void prom_putchar(char c)
|
||||
{
|
||||
wait_xfered();
|
||||
bcm_uart0_writel(c, UART_FIFO_REG);
|
||||
|
|
|
@ -14,8 +14,7 @@
|
|||
|
||||
extern void prom_putchar(char);
|
||||
|
||||
static void __init
|
||||
early_console_write(struct console *con, const char *s, unsigned n)
|
||||
static void early_console_write(struct console *con, const char *s, unsigned n)
|
||||
{
|
||||
while (n-- && *s) {
|
||||
if (*s == '\n')
|
||||
|
@ -25,7 +24,7 @@ early_console_write(struct console *con, const char *s, unsigned n)
|
|||
}
|
||||
}
|
||||
|
||||
static struct console early_console __initdata = {
|
||||
static struct console early_console = {
|
||||
.name = "early",
|
||||
.write = early_console_write,
|
||||
.flags = CON_PRINTBUFFER | CON_BOOT,
|
||||
|
|
|
@ -73,7 +73,7 @@ void __init prom_free_prom_memory(void)
|
|||
|
||||
#define PORT(offset) (u8 *)(KSEG1ADDR(LS1X_UART0_BASE + offset))
|
||||
|
||||
void __init prom_putchar(char c)
|
||||
void prom_putchar(char c)
|
||||
{
|
||||
int timeout;
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ static inline struct ioc3_uartregs *console_uart(void)
|
|||
return &ioc3->sregs.uarta;
|
||||
}
|
||||
|
||||
void __init prom_putchar(char c)
|
||||
void prom_putchar(char c)
|
||||
{
|
||||
struct ioc3_uartregs *uart = console_uart();
|
||||
|
||||
|
|
|
@ -513,19 +513,19 @@ void __init txx9_sio_init(unsigned long baseaddr, int irq,
|
|||
}
|
||||
|
||||
#ifdef CONFIG_EARLY_PRINTK
|
||||
static void __init null_prom_putchar(char c)
|
||||
static void null_prom_putchar(char c)
|
||||
{
|
||||
}
|
||||
void (*txx9_prom_putchar)(char c) __initdata = null_prom_putchar;
|
||||
void (*txx9_prom_putchar)(char c) = null_prom_putchar;
|
||||
|
||||
void __init prom_putchar(char c)
|
||||
void prom_putchar(char c)
|
||||
{
|
||||
txx9_prom_putchar(c);
|
||||
}
|
||||
|
||||
static void __iomem *early_txx9_sio_port;
|
||||
|
||||
static void __init early_txx9_sio_putchar(char c)
|
||||
static void early_txx9_sio_putchar(char c)
|
||||
{
|
||||
#define TXX9_SICISR 0x0c
|
||||
#define TXX9_SITFIFO 0x1c
|
||||
|
|
Loading…
Reference in a new issue