1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Callers outside of misc.c need access to the error reporting routines,
4 * but the *_putstr() functions need to stay in misc.c because of how
5 * memcpy() and memmove() are defined for the compressed boot environment.
6 */
7#include "misc.h"
8#include "error.h"
9
10void warn(const char *m)
11{
12 error_putstr("\n\n");
13 error_putstr(m);
14 error_putstr("\n\n");
15}
16
17void error(char *m)
18{
19 warn(m);
20 error_putstr(" -- System halted");
21
22 while (1)
23 asm("hlt");
24}
25
26/* EFI libstub provides vsnprintf() */
27#ifdef CONFIG_EFI_STUB
28void panic(const char *fmt, ...)
29{
30 static char buf[1024];
31 va_list args;
32 int len;
33
34 va_start(args, fmt);
35 len = vsnprintf(buf, size: sizeof(buf), fmt, args);
36 va_end(args);
37
38 if (len && buf[len - 1] == '\n')
39 buf[len - 1] = '\0';
40
41 error(m: buf);
42}
43#endif
44

source code of linux/arch/x86/boot/compressed/error.c