Merge commit '4cb38750d49010ae72e718d46605ac9ba5a851b4' into stable/for-linus-3.6
[platform/adaptation/renesas_rcar/renesas_kernel.git] / kernel / printk.c
1 /*
2  *  linux/kernel/printk.c
3  *
4  *  Copyright (C) 1991, 1992  Linus Torvalds
5  *
6  * Modified to make sys_syslog() more flexible: added commands to
7  * return the last 4k of kernel messages, regardless of whether
8  * they've been read or not.  Added option to suppress kernel printk's
9  * to the console.  Added hook for sending the console messages
10  * elsewhere, in preparation for a serial line console (someday).
11  * Ted Ts'o, 2/11/93.
12  * Modified for sysctl support, 1/8/97, Chris Horn.
13  * Fixed SMP synchronization, 08/08/99, Manfred Spraul
14  *     manfred@colorfullife.com
15  * Rewrote bits to get rid of console_lock
16  *      01Mar01 Andrew Morton
17  */
18
19 #include <linux/kernel.h>
20 #include <linux/mm.h>
21 #include <linux/tty.h>
22 #include <linux/tty_driver.h>
23 #include <linux/console.h>
24 #include <linux/init.h>
25 #include <linux/jiffies.h>
26 #include <linux/nmi.h>
27 #include <linux/module.h>
28 #include <linux/moduleparam.h>
29 #include <linux/interrupt.h>                    /* For in_interrupt() */
30 #include <linux/delay.h>
31 #include <linux/smp.h>
32 #include <linux/security.h>
33 #include <linux/bootmem.h>
34 #include <linux/memblock.h>
35 #include <linux/syscalls.h>
36 #include <linux/kexec.h>
37 #include <linux/kdb.h>
38 #include <linux/ratelimit.h>
39 #include <linux/kmsg_dump.h>
40 #include <linux/syslog.h>
41 #include <linux/cpu.h>
42 #include <linux/notifier.h>
43 #include <linux/rculist.h>
44 #include <linux/poll.h>
45
46 #include <asm/uaccess.h>
47
48 #define CREATE_TRACE_POINTS
49 #include <trace/events/printk.h>
50
51 /*
52  * Architectures can override it:
53  */
54 void asmlinkage __attribute__((weak)) early_printk(const char *fmt, ...)
55 {
56 }
57
58 /* printk's without a loglevel use this.. */
59 #define DEFAULT_MESSAGE_LOGLEVEL CONFIG_DEFAULT_MESSAGE_LOGLEVEL
60
61 /* We show everything that is MORE important than this.. */
62 #define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */
63 #define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */
64
65 DECLARE_WAIT_QUEUE_HEAD(log_wait);
66
67 int console_printk[4] = {
68         DEFAULT_CONSOLE_LOGLEVEL,       /* console_loglevel */
69         DEFAULT_MESSAGE_LOGLEVEL,       /* default_message_loglevel */
70         MINIMUM_CONSOLE_LOGLEVEL,       /* minimum_console_loglevel */
71         DEFAULT_CONSOLE_LOGLEVEL,       /* default_console_loglevel */
72 };
73
74 /*
75  * Low level drivers may need that to know if they can schedule in
76  * their unblank() callback or not. So let's export it.
77  */
78 int oops_in_progress;
79 EXPORT_SYMBOL(oops_in_progress);
80
81 /*
82  * console_sem protects the console_drivers list, and also
83  * provides serialisation for access to the entire console
84  * driver system.
85  */
86 static DEFINE_SEMAPHORE(console_sem);
87 struct console *console_drivers;
88 EXPORT_SYMBOL_GPL(console_drivers);
89
90 /*
91  * This is used for debugging the mess that is the VT code by
92  * keeping track if we have the console semaphore held. It's
93  * definitely not the perfect debug tool (we don't know if _WE_
94  * hold it are racing, but it helps tracking those weird code
95  * path in the console code where we end up in places I want
96  * locked without the console sempahore held
97  */
98 static int console_locked, console_suspended;
99
100 /*
101  * If exclusive_console is non-NULL then only this console is to be printed to.
102  */
103 static struct console *exclusive_console;
104
105 /*
106  *      Array of consoles built from command line options (console=)
107  */
108 struct console_cmdline
109 {
110         char    name[8];                        /* Name of the driver       */
111         int     index;                          /* Minor dev. to use        */
112         char    *options;                       /* Options for the driver   */
113 #ifdef CONFIG_A11Y_BRAILLE_CONSOLE
114         char    *brl_options;                   /* Options for braille driver */
115 #endif
116 };
117
118 #define MAX_CMDLINECONSOLES 8
119
120 static struct console_cmdline console_cmdline[MAX_CMDLINECONSOLES];
121 static int selected_console = -1;
122 static int preferred_console = -1;
123 int console_set_on_cmdline;
124 EXPORT_SYMBOL(console_set_on_cmdline);
125
126 /* Flag: console code may call schedule() */
127 static int console_may_schedule;
128
129 /*
130  * The printk log buffer consists of a chain of concatenated variable
131  * length records. Every record starts with a record header, containing
132  * the overall length of the record.
133  *
134  * The heads to the first and last entry in the buffer, as well as the
135  * sequence numbers of these both entries are maintained when messages
136  * are stored..
137  *
138  * If the heads indicate available messages, the length in the header
139  * tells the start next message. A length == 0 for the next message
140  * indicates a wrap-around to the beginning of the buffer.
141  *
142  * Every record carries the monotonic timestamp in microseconds, as well as
143  * the standard userspace syslog level and syslog facility. The usual
144  * kernel messages use LOG_KERN; userspace-injected messages always carry
145  * a matching syslog facility, by default LOG_USER. The origin of every
146  * message can be reliably determined that way.
147  *
148  * The human readable log message directly follows the message header. The
149  * length of the message text is stored in the header, the stored message
150  * is not terminated.
151  *
152  * Optionally, a message can carry a dictionary of properties (key/value pairs),
153  * to provide userspace with a machine-readable message context.
154  *
155  * Examples for well-defined, commonly used property names are:
156  *   DEVICE=b12:8               device identifier
157  *                                b12:8         block dev_t
158  *                                c127:3        char dev_t
159  *                                n8            netdev ifindex
160  *                                +sound:card0  subsystem:devname
161  *   SUBSYSTEM=pci              driver-core subsystem name
162  *
163  * Valid characters in property names are [a-zA-Z0-9.-_]. The plain text value
164  * follows directly after a '=' character. Every property is terminated by
165  * a '\0' character. The last property is not terminated.
166  *
167  * Example of a message structure:
168  *   0000  ff 8f 00 00 00 00 00 00      monotonic time in nsec
169  *   0008  34 00                        record is 52 bytes long
170  *   000a        0b 00                  text is 11 bytes long
171  *   000c              1f 00            dictionary is 23 bytes long
172  *   000e                    03 00      LOG_KERN (facility) LOG_ERR (level)
173  *   0010  69 74 27 73 20 61 20 6c      "it's a l"
174  *         69 6e 65                     "ine"
175  *   001b           44 45 56 49 43      "DEVIC"
176  *         45 3d 62 38 3a 32 00 44      "E=b8:2\0D"
177  *         52 49 56 45 52 3d 62 75      "RIVER=bu"
178  *         67                           "g"
179  *   0032     00 00 00                  padding to next message header
180  *
181  * The 'struct log' buffer header must never be directly exported to
182  * userspace, it is a kernel-private implementation detail that might
183  * need to be changed in the future, when the requirements change.
184  *
185  * /dev/kmsg exports the structured data in the following line format:
186  *   "level,sequnum,timestamp;<message text>\n"
187  *
188  * The optional key/value pairs are attached as continuation lines starting
189  * with a space character and terminated by a newline. All possible
190  * non-prinatable characters are escaped in the "\xff" notation.
191  *
192  * Users of the export format should ignore possible additional values
193  * separated by ',', and find the message after the ';' character.
194  */
195
196 enum log_flags {
197         LOG_NOCONS      = 1,    /* already flushed, do not print to console */
198         LOG_NEWLINE     = 2,    /* text ended with a newline */
199         LOG_PREFIX      = 4,    /* text started with a prefix */
200         LOG_CONT        = 8,    /* text is a fragment of a continuation line */
201 };
202
203 struct log {
204         u64 ts_nsec;            /* timestamp in nanoseconds */
205         u16 len;                /* length of entire record */
206         u16 text_len;           /* length of text buffer */
207         u16 dict_len;           /* length of dictionary buffer */
208         u8 facility;            /* syslog facility */
209         u8 flags:5;             /* internal record flags */
210         u8 level:3;             /* syslog level */
211 };
212
213 /*
214  * The logbuf_lock protects kmsg buffer, indices, counters. It is also
215  * used in interesting ways to provide interlocking in console_unlock();
216  */
217 static DEFINE_RAW_SPINLOCK(logbuf_lock);
218
219 #ifdef CONFIG_PRINTK
220 /* the next printk record to read by syslog(READ) or /proc/kmsg */
221 static u64 syslog_seq;
222 static u32 syslog_idx;
223 static enum log_flags syslog_prev;
224 static size_t syslog_partial;
225
226 /* index and sequence number of the first record stored in the buffer */
227 static u64 log_first_seq;
228 static u32 log_first_idx;
229
230 /* index and sequence number of the next record to store in the buffer */
231 static u64 log_next_seq;
232 static u32 log_next_idx;
233
234 /* the next printk record to write to the console */
235 static u64 console_seq;
236 static u32 console_idx;
237 static enum log_flags console_prev;
238
239 /* the next printk record to read after the last 'clear' command */
240 static u64 clear_seq;
241 static u32 clear_idx;
242
243 #define PREFIX_MAX              32
244 #define LOG_LINE_MAX            1024 - PREFIX_MAX
245
246 /* record buffer */
247 #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
248 #define LOG_ALIGN 4
249 #else
250 #define LOG_ALIGN __alignof__(struct log)
251 #endif
252 #define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
253 static char __log_buf[__LOG_BUF_LEN] __aligned(LOG_ALIGN);
254 static char *log_buf = __log_buf;
255 static u32 log_buf_len = __LOG_BUF_LEN;
256
257 /* cpu currently holding logbuf_lock */
258 static volatile unsigned int logbuf_cpu = UINT_MAX;
259
260 /* human readable text of the record */
261 static char *log_text(const struct log *msg)
262 {
263         return (char *)msg + sizeof(struct log);
264 }
265
266 /* optional key/value pair dictionary attached to the record */
267 static char *log_dict(const struct log *msg)
268 {
269         return (char *)msg + sizeof(struct log) + msg->text_len;
270 }
271
272 /* get record by index; idx must point to valid msg */
273 static struct log *log_from_idx(u32 idx)
274 {
275         struct log *msg = (struct log *)(log_buf + idx);
276
277         /*
278          * A length == 0 record is the end of buffer marker. Wrap around and
279          * read the message at the start of the buffer.
280          */
281         if (!msg->len)
282                 return (struct log *)log_buf;
283         return msg;
284 }
285
286 /* get next record; idx must point to valid msg */
287 static u32 log_next(u32 idx)
288 {
289         struct log *msg = (struct log *)(log_buf + idx);
290
291         /* length == 0 indicates the end of the buffer; wrap */
292         /*
293          * A length == 0 record is the end of buffer marker. Wrap around and
294          * read the message at the start of the buffer as *this* one, and
295          * return the one after that.
296          */
297         if (!msg->len) {
298                 msg = (struct log *)log_buf;
299                 return msg->len;
300         }
301         return idx + msg->len;
302 }
303
304 /* insert record into the buffer, discard old ones, update heads */
305 static void log_store(int facility, int level,
306                       enum log_flags flags, u64 ts_nsec,
307                       const char *dict, u16 dict_len,
308                       const char *text, u16 text_len)
309 {
310         struct log *msg;
311         u32 size, pad_len;
312
313         /* number of '\0' padding bytes to next message */
314         size = sizeof(struct log) + text_len + dict_len;
315         pad_len = (-size) & (LOG_ALIGN - 1);
316         size += pad_len;
317
318         while (log_first_seq < log_next_seq) {
319                 u32 free;
320
321                 if (log_next_idx > log_first_idx)
322                         free = max(log_buf_len - log_next_idx, log_first_idx);
323                 else
324                         free = log_first_idx - log_next_idx;
325
326                 if (free > size + sizeof(struct log))
327                         break;
328
329                 /* drop old messages until we have enough contiuous space */
330                 log_first_idx = log_next(log_first_idx);
331                 log_first_seq++;
332         }
333
334         if (log_next_idx + size + sizeof(struct log) >= log_buf_len) {
335                 /*
336                  * This message + an additional empty header does not fit
337                  * at the end of the buffer. Add an empty header with len == 0
338                  * to signify a wrap around.
339                  */
340                 memset(log_buf + log_next_idx, 0, sizeof(struct log));
341                 log_next_idx = 0;
342         }
343
344         /* fill message */
345         msg = (struct log *)(log_buf + log_next_idx);
346         memcpy(log_text(msg), text, text_len);
347         msg->text_len = text_len;
348         memcpy(log_dict(msg), dict, dict_len);
349         msg->dict_len = dict_len;
350         msg->facility = facility;
351         msg->level = level & 7;
352         msg->flags = flags & 0x1f;
353         if (ts_nsec > 0)
354                 msg->ts_nsec = ts_nsec;
355         else
356                 msg->ts_nsec = local_clock();
357         memset(log_dict(msg) + dict_len, 0, pad_len);
358         msg->len = sizeof(struct log) + text_len + dict_len + pad_len;
359
360         /* insert message */
361         log_next_idx += msg->len;
362         log_next_seq++;
363 }
364
365 /* /dev/kmsg - userspace message inject/listen interface */
366 struct devkmsg_user {
367         u64 seq;
368         u32 idx;
369         enum log_flags prev;
370         struct mutex lock;
371         char buf[8192];
372 };
373
374 static ssize_t devkmsg_writev(struct kiocb *iocb, const struct iovec *iv,
375                               unsigned long count, loff_t pos)
376 {
377         char *buf, *line;
378         int i;
379         int level = default_message_loglevel;
380         int facility = 1;       /* LOG_USER */
381         size_t len = iov_length(iv, count);
382         ssize_t ret = len;
383
384         if (len > LOG_LINE_MAX)
385                 return -EINVAL;
386         buf = kmalloc(len+1, GFP_KERNEL);
387         if (buf == NULL)
388                 return -ENOMEM;
389
390         line = buf;
391         for (i = 0; i < count; i++) {
392                 if (copy_from_user(line, iv[i].iov_base, iv[i].iov_len))
393                         goto out;
394                 line += iv[i].iov_len;
395         }
396
397         /*
398          * Extract and skip the syslog prefix <[0-9]*>. Coming from userspace
399          * the decimal value represents 32bit, the lower 3 bit are the log
400          * level, the rest are the log facility.
401          *
402          * If no prefix or no userspace facility is specified, we
403          * enforce LOG_USER, to be able to reliably distinguish
404          * kernel-generated messages from userspace-injected ones.
405          */
406         line = buf;
407         if (line[0] == '<') {
408                 char *endp = NULL;
409
410                 i = simple_strtoul(line+1, &endp, 10);
411                 if (endp && endp[0] == '>') {
412                         level = i & 7;
413                         if (i >> 3)
414                                 facility = i >> 3;
415                         endp++;
416                         len -= endp - line;
417                         line = endp;
418                 }
419         }
420         line[len] = '\0';
421
422         printk_emit(facility, level, NULL, 0, "%s", line);
423 out:
424         kfree(buf);
425         return ret;
426 }
427
428 static ssize_t devkmsg_read(struct file *file, char __user *buf,
429                             size_t count, loff_t *ppos)
430 {
431         struct devkmsg_user *user = file->private_data;
432         struct log *msg;
433         u64 ts_usec;
434         size_t i;
435         char cont = '-';
436         size_t len;
437         ssize_t ret;
438
439         if (!user)
440                 return -EBADF;
441
442         ret = mutex_lock_interruptible(&user->lock);
443         if (ret)
444                 return ret;
445         raw_spin_lock_irq(&logbuf_lock);
446         while (user->seq == log_next_seq) {
447                 if (file->f_flags & O_NONBLOCK) {
448                         ret = -EAGAIN;
449                         raw_spin_unlock_irq(&logbuf_lock);
450                         goto out;
451                 }
452
453                 raw_spin_unlock_irq(&logbuf_lock);
454                 ret = wait_event_interruptible(log_wait,
455                                                user->seq != log_next_seq);
456                 if (ret)
457                         goto out;
458                 raw_spin_lock_irq(&logbuf_lock);
459         }
460
461         if (user->seq < log_first_seq) {
462                 /* our last seen message is gone, return error and reset */
463                 user->idx = log_first_idx;
464                 user->seq = log_first_seq;
465                 ret = -EPIPE;
466                 raw_spin_unlock_irq(&logbuf_lock);
467                 goto out;
468         }
469
470         msg = log_from_idx(user->idx);
471         ts_usec = msg->ts_nsec;
472         do_div(ts_usec, 1000);
473
474         /*
475          * If we couldn't merge continuation line fragments during the print,
476          * export the stored flags to allow an optional external merge of the
477          * records. Merging the records isn't always neccessarily correct, like
478          * when we hit a race during printing. In most cases though, it produces
479          * better readable output. 'c' in the record flags mark the first
480          * fragment of a line, '+' the following.
481          */
482         if (msg->flags & LOG_CONT && !(user->prev & LOG_CONT))
483                 cont = 'c';
484         else if ((msg->flags & LOG_CONT) ||
485                  ((user->prev & LOG_CONT) && !(msg->flags & LOG_PREFIX)))
486                 cont = '+';
487
488         len = sprintf(user->buf, "%u,%llu,%llu,%c;",
489                       (msg->facility << 3) | msg->level,
490                       user->seq, ts_usec, cont);
491         user->prev = msg->flags;
492
493         /* escape non-printable characters */
494         for (i = 0; i < msg->text_len; i++) {
495                 unsigned char c = log_text(msg)[i];
496
497                 if (c < ' ' || c >= 127 || c == '\\')
498                         len += sprintf(user->buf + len, "\\x%02x", c);
499                 else
500                         user->buf[len++] = c;
501         }
502         user->buf[len++] = '\n';
503
504         if (msg->dict_len) {
505                 bool line = true;
506
507                 for (i = 0; i < msg->dict_len; i++) {
508                         unsigned char c = log_dict(msg)[i];
509
510                         if (line) {
511                                 user->buf[len++] = ' ';
512                                 line = false;
513                         }
514
515                         if (c == '\0') {
516                                 user->buf[len++] = '\n';
517                                 line = true;
518                                 continue;
519                         }
520
521                         if (c < ' ' || c >= 127 || c == '\\') {
522                                 len += sprintf(user->buf + len, "\\x%02x", c);
523                                 continue;
524                         }
525
526                         user->buf[len++] = c;
527                 }
528                 user->buf[len++] = '\n';
529         }
530
531         user->idx = log_next(user->idx);
532         user->seq++;
533         raw_spin_unlock_irq(&logbuf_lock);
534
535         if (len > count) {
536                 ret = -EINVAL;
537                 goto out;
538         }
539
540         if (copy_to_user(buf, user->buf, len)) {
541                 ret = -EFAULT;
542                 goto out;
543         }
544         ret = len;
545 out:
546         mutex_unlock(&user->lock);
547         return ret;
548 }
549
550 static loff_t devkmsg_llseek(struct file *file, loff_t offset, int whence)
551 {
552         struct devkmsg_user *user = file->private_data;
553         loff_t ret = 0;
554
555         if (!user)
556                 return -EBADF;
557         if (offset)
558                 return -ESPIPE;
559
560         raw_spin_lock_irq(&logbuf_lock);
561         switch (whence) {
562         case SEEK_SET:
563                 /* the first record */
564                 user->idx = log_first_idx;
565                 user->seq = log_first_seq;
566                 break;
567         case SEEK_DATA:
568                 /*
569                  * The first record after the last SYSLOG_ACTION_CLEAR,
570                  * like issued by 'dmesg -c'. Reading /dev/kmsg itself
571                  * changes no global state, and does not clear anything.
572                  */
573                 user->idx = clear_idx;
574                 user->seq = clear_seq;
575                 break;
576         case SEEK_END:
577                 /* after the last record */
578                 user->idx = log_next_idx;
579                 user->seq = log_next_seq;
580                 break;
581         default:
582                 ret = -EINVAL;
583         }
584         raw_spin_unlock_irq(&logbuf_lock);
585         return ret;
586 }
587
588 static unsigned int devkmsg_poll(struct file *file, poll_table *wait)
589 {
590         struct devkmsg_user *user = file->private_data;
591         int ret = 0;
592
593         if (!user)
594                 return POLLERR|POLLNVAL;
595
596         poll_wait(file, &log_wait, wait);
597
598         raw_spin_lock_irq(&logbuf_lock);
599         if (user->seq < log_next_seq) {
600                 /* return error when data has vanished underneath us */
601                 if (user->seq < log_first_seq)
602                         ret = POLLIN|POLLRDNORM|POLLERR|POLLPRI;
603                 ret = POLLIN|POLLRDNORM;
604         }
605         raw_spin_unlock_irq(&logbuf_lock);
606
607         return ret;
608 }
609
610 static int devkmsg_open(struct inode *inode, struct file *file)
611 {
612         struct devkmsg_user *user;
613         int err;
614
615         /* write-only does not need any file context */
616         if ((file->f_flags & O_ACCMODE) == O_WRONLY)
617                 return 0;
618
619         err = security_syslog(SYSLOG_ACTION_READ_ALL);
620         if (err)
621                 return err;
622
623         user = kmalloc(sizeof(struct devkmsg_user), GFP_KERNEL);
624         if (!user)
625                 return -ENOMEM;
626
627         mutex_init(&user->lock);
628
629         raw_spin_lock_irq(&logbuf_lock);
630         user->idx = log_first_idx;
631         user->seq = log_first_seq;
632         raw_spin_unlock_irq(&logbuf_lock);
633
634         file->private_data = user;
635         return 0;
636 }
637
638 static int devkmsg_release(struct inode *inode, struct file *file)
639 {
640         struct devkmsg_user *user = file->private_data;
641
642         if (!user)
643                 return 0;
644
645         mutex_destroy(&user->lock);
646         kfree(user);
647         return 0;
648 }
649
650 const struct file_operations kmsg_fops = {
651         .open = devkmsg_open,
652         .read = devkmsg_read,
653         .aio_write = devkmsg_writev,
654         .llseek = devkmsg_llseek,
655         .poll = devkmsg_poll,
656         .release = devkmsg_release,
657 };
658
659 #ifdef CONFIG_KEXEC
660 /*
661  * This appends the listed symbols to /proc/vmcoreinfo
662  *
663  * /proc/vmcoreinfo is used by various utiilties, like crash and makedumpfile to
664  * obtain access to symbols that are otherwise very difficult to locate.  These
665  * symbols are specifically used so that utilities can access and extract the
666  * dmesg log from a vmcore file after a crash.
667  */
668 void log_buf_kexec_setup(void)
669 {
670         VMCOREINFO_SYMBOL(log_buf);
671         VMCOREINFO_SYMBOL(log_buf_len);
672         VMCOREINFO_SYMBOL(log_first_idx);
673         VMCOREINFO_SYMBOL(log_next_idx);
674         /*
675          * Export struct log size and field offsets. User space tools can
676          * parse it and detect any changes to structure down the line.
677          */
678         VMCOREINFO_STRUCT_SIZE(log);
679         VMCOREINFO_OFFSET(log, ts_nsec);
680         VMCOREINFO_OFFSET(log, len);
681         VMCOREINFO_OFFSET(log, text_len);
682         VMCOREINFO_OFFSET(log, dict_len);
683 }
684 #endif
685
686 /* requested log_buf_len from kernel cmdline */
687 static unsigned long __initdata new_log_buf_len;
688
689 /* save requested log_buf_len since it's too early to process it */
690 static int __init log_buf_len_setup(char *str)
691 {
692         unsigned size = memparse(str, &str);
693
694         if (size)
695                 size = roundup_pow_of_two(size);
696         if (size > log_buf_len)
697                 new_log_buf_len = size;
698
699         return 0;
700 }
701 early_param("log_buf_len", log_buf_len_setup);
702
703 void __init setup_log_buf(int early)
704 {
705         unsigned long flags;
706         char *new_log_buf;
707         int free;
708
709         if (!new_log_buf_len)
710                 return;
711
712         if (early) {
713                 unsigned long mem;
714
715                 mem = memblock_alloc(new_log_buf_len, PAGE_SIZE);
716                 if (!mem)
717                         return;
718                 new_log_buf = __va(mem);
719         } else {
720                 new_log_buf = alloc_bootmem_nopanic(new_log_buf_len);
721         }
722
723         if (unlikely(!new_log_buf)) {
724                 pr_err("log_buf_len: %ld bytes not available\n",
725                         new_log_buf_len);
726                 return;
727         }
728
729         raw_spin_lock_irqsave(&logbuf_lock, flags);
730         log_buf_len = new_log_buf_len;
731         log_buf = new_log_buf;
732         new_log_buf_len = 0;
733         free = __LOG_BUF_LEN - log_next_idx;
734         memcpy(log_buf, __log_buf, __LOG_BUF_LEN);
735         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
736
737         pr_info("log_buf_len: %d\n", log_buf_len);
738         pr_info("early log buf free: %d(%d%%)\n",
739                 free, (free * 100) / __LOG_BUF_LEN);
740 }
741
742 #ifdef CONFIG_BOOT_PRINTK_DELAY
743
744 static int boot_delay; /* msecs delay after each printk during bootup */
745 static unsigned long long loops_per_msec;       /* based on boot_delay */
746
747 static int __init boot_delay_setup(char *str)
748 {
749         unsigned long lpj;
750
751         lpj = preset_lpj ? preset_lpj : 1000000;        /* some guess */
752         loops_per_msec = (unsigned long long)lpj / 1000 * HZ;
753
754         get_option(&str, &boot_delay);
755         if (boot_delay > 10 * 1000)
756                 boot_delay = 0;
757
758         pr_debug("boot_delay: %u, preset_lpj: %ld, lpj: %lu, "
759                 "HZ: %d, loops_per_msec: %llu\n",
760                 boot_delay, preset_lpj, lpj, HZ, loops_per_msec);
761         return 1;
762 }
763 __setup("boot_delay=", boot_delay_setup);
764
765 static void boot_delay_msec(void)
766 {
767         unsigned long long k;
768         unsigned long timeout;
769
770         if (boot_delay == 0 || system_state != SYSTEM_BOOTING)
771                 return;
772
773         k = (unsigned long long)loops_per_msec * boot_delay;
774
775         timeout = jiffies + msecs_to_jiffies(boot_delay);
776         while (k) {
777                 k--;
778                 cpu_relax();
779                 /*
780                  * use (volatile) jiffies to prevent
781                  * compiler reduction; loop termination via jiffies
782                  * is secondary and may or may not happen.
783                  */
784                 if (time_after(jiffies, timeout))
785                         break;
786                 touch_nmi_watchdog();
787         }
788 }
789 #else
790 static inline void boot_delay_msec(void)
791 {
792 }
793 #endif
794
795 #ifdef CONFIG_SECURITY_DMESG_RESTRICT
796 int dmesg_restrict = 1;
797 #else
798 int dmesg_restrict;
799 #endif
800
801 static int syslog_action_restricted(int type)
802 {
803         if (dmesg_restrict)
804                 return 1;
805         /* Unless restricted, we allow "read all" and "get buffer size" for everybody */
806         return type != SYSLOG_ACTION_READ_ALL && type != SYSLOG_ACTION_SIZE_BUFFER;
807 }
808
809 static int check_syslog_permissions(int type, bool from_file)
810 {
811         /*
812          * If this is from /proc/kmsg and we've already opened it, then we've
813          * already done the capabilities checks at open time.
814          */
815         if (from_file && type != SYSLOG_ACTION_OPEN)
816                 return 0;
817
818         if (syslog_action_restricted(type)) {
819                 if (capable(CAP_SYSLOG))
820                         return 0;
821                 /* For historical reasons, accept CAP_SYS_ADMIN too, with a warning */
822                 if (capable(CAP_SYS_ADMIN)) {
823                         printk_once(KERN_WARNING "%s (%d): "
824                                  "Attempt to access syslog with CAP_SYS_ADMIN "
825                                  "but no CAP_SYSLOG (deprecated).\n",
826                                  current->comm, task_pid_nr(current));
827                         return 0;
828                 }
829                 return -EPERM;
830         }
831         return 0;
832 }
833
834 #if defined(CONFIG_PRINTK_TIME)
835 static bool printk_time = 1;
836 #else
837 static bool printk_time;
838 #endif
839 module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);
840
841 static size_t print_time(u64 ts, char *buf)
842 {
843         unsigned long rem_nsec;
844
845         if (!printk_time)
846                 return 0;
847
848         if (!buf)
849                 return 15;
850
851         rem_nsec = do_div(ts, 1000000000);
852         return sprintf(buf, "[%5lu.%06lu] ",
853                        (unsigned long)ts, rem_nsec / 1000);
854 }
855
856 static size_t print_prefix(const struct log *msg, bool syslog, char *buf)
857 {
858         size_t len = 0;
859         unsigned int prefix = (msg->facility << 3) | msg->level;
860
861         if (syslog) {
862                 if (buf) {
863                         len += sprintf(buf, "<%u>", prefix);
864                 } else {
865                         len += 3;
866                         if (prefix > 999)
867                                 len += 3;
868                         else if (prefix > 99)
869                                 len += 2;
870                         else if (prefix > 9)
871                                 len++;
872                 }
873         }
874
875         len += print_time(msg->ts_nsec, buf ? buf + len : NULL);
876         return len;
877 }
878
879 static size_t msg_print_text(const struct log *msg, enum log_flags prev,
880                              bool syslog, char *buf, size_t size)
881 {
882         const char *text = log_text(msg);
883         size_t text_size = msg->text_len;
884         bool prefix = true;
885         bool newline = true;
886         size_t len = 0;
887
888         if ((prev & LOG_CONT) && !(msg->flags & LOG_PREFIX))
889                 prefix = false;
890
891         if (msg->flags & LOG_CONT) {
892                 if ((prev & LOG_CONT) && !(prev & LOG_NEWLINE))
893                         prefix = false;
894
895                 if (!(msg->flags & LOG_NEWLINE))
896                         newline = false;
897         }
898
899         do {
900                 const char *next = memchr(text, '\n', text_size);
901                 size_t text_len;
902
903                 if (next) {
904                         text_len = next - text;
905                         next++;
906                         text_size -= next - text;
907                 } else {
908                         text_len = text_size;
909                 }
910
911                 if (buf) {
912                         if (print_prefix(msg, syslog, NULL) +
913                             text_len + 1 >= size - len)
914                                 break;
915
916                         if (prefix)
917                                 len += print_prefix(msg, syslog, buf + len);
918                         memcpy(buf + len, text, text_len);
919                         len += text_len;
920                         if (next || newline)
921                                 buf[len++] = '\n';
922                 } else {
923                         /* SYSLOG_ACTION_* buffer size only calculation */
924                         if (prefix)
925                                 len += print_prefix(msg, syslog, NULL);
926                         len += text_len;
927                         if (next || newline)
928                                 len++;
929                 }
930
931                 prefix = true;
932                 text = next;
933         } while (text);
934
935         return len;
936 }
937
938 static int syslog_print(char __user *buf, int size)
939 {
940         char *text;
941         struct log *msg;
942         int len = 0;
943
944         text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL);
945         if (!text)
946                 return -ENOMEM;
947
948         while (size > 0) {
949                 size_t n;
950                 size_t skip;
951
952                 raw_spin_lock_irq(&logbuf_lock);
953                 if (syslog_seq < log_first_seq) {
954                         /* messages are gone, move to first one */
955                         syslog_seq = log_first_seq;
956                         syslog_idx = log_first_idx;
957                         syslog_prev = 0;
958                         syslog_partial = 0;
959                 }
960                 if (syslog_seq == log_next_seq) {
961                         raw_spin_unlock_irq(&logbuf_lock);
962                         break;
963                 }
964
965                 skip = syslog_partial;
966                 msg = log_from_idx(syslog_idx);
967                 n = msg_print_text(msg, syslog_prev, true, text,
968                                    LOG_LINE_MAX + PREFIX_MAX);
969                 if (n - syslog_partial <= size) {
970                         /* message fits into buffer, move forward */
971                         syslog_idx = log_next(syslog_idx);
972                         syslog_seq++;
973                         syslog_prev = msg->flags;
974                         n -= syslog_partial;
975                         syslog_partial = 0;
976                 } else if (!len){
977                         /* partial read(), remember position */
978                         n = size;
979                         syslog_partial += n;
980                 } else
981                         n = 0;
982                 raw_spin_unlock_irq(&logbuf_lock);
983
984                 if (!n)
985                         break;
986
987                 if (copy_to_user(buf, text + skip, n)) {
988                         if (!len)
989                                 len = -EFAULT;
990                         break;
991                 }
992
993                 len += n;
994                 size -= n;
995                 buf += n;
996         }
997
998         kfree(text);
999         return len;
1000 }
1001
1002 static int syslog_print_all(char __user *buf, int size, bool clear)
1003 {
1004         char *text;
1005         int len = 0;
1006
1007         text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL);
1008         if (!text)
1009                 return -ENOMEM;
1010
1011         raw_spin_lock_irq(&logbuf_lock);
1012         if (buf) {
1013                 u64 next_seq;
1014                 u64 seq;
1015                 u32 idx;
1016                 enum log_flags prev;
1017
1018                 if (clear_seq < log_first_seq) {
1019                         /* messages are gone, move to first available one */
1020                         clear_seq = log_first_seq;
1021                         clear_idx = log_first_idx;
1022                 }
1023
1024                 /*
1025                  * Find first record that fits, including all following records,
1026                  * into the user-provided buffer for this dump.
1027                  */
1028                 seq = clear_seq;
1029                 idx = clear_idx;
1030                 prev = 0;
1031                 while (seq < log_next_seq) {
1032                         struct log *msg = log_from_idx(idx);
1033
1034                         len += msg_print_text(msg, prev, true, NULL, 0);
1035                         idx = log_next(idx);
1036                         seq++;
1037                 }
1038
1039                 /* move first record forward until length fits into the buffer */
1040                 seq = clear_seq;
1041                 idx = clear_idx;
1042                 prev = 0;
1043                 while (len > size && seq < log_next_seq) {
1044                         struct log *msg = log_from_idx(idx);
1045
1046                         len -= msg_print_text(msg, prev, true, NULL, 0);
1047                         idx = log_next(idx);
1048                         seq++;
1049                 }
1050
1051                 /* last message fitting into this dump */
1052                 next_seq = log_next_seq;
1053
1054                 len = 0;
1055                 prev = 0;
1056                 while (len >= 0 && seq < next_seq) {
1057                         struct log *msg = log_from_idx(idx);
1058                         int textlen;
1059
1060                         textlen = msg_print_text(msg, prev, true, text,
1061                                                  LOG_LINE_MAX + PREFIX_MAX);
1062                         if (textlen < 0) {
1063                                 len = textlen;
1064                                 break;
1065                         }
1066                         idx = log_next(idx);
1067                         seq++;
1068                         prev = msg->flags;
1069
1070                         raw_spin_unlock_irq(&logbuf_lock);
1071                         if (copy_to_user(buf + len, text, textlen))
1072                                 len = -EFAULT;
1073                         else
1074                                 len += textlen;
1075                         raw_spin_lock_irq(&logbuf_lock);
1076
1077                         if (seq < log_first_seq) {
1078                                 /* messages are gone, move to next one */
1079                                 seq = log_first_seq;
1080                                 idx = log_first_idx;
1081                                 prev = 0;
1082                         }
1083                 }
1084         }
1085
1086         if (clear) {
1087                 clear_seq = log_next_seq;
1088                 clear_idx = log_next_idx;
1089         }
1090         raw_spin_unlock_irq(&logbuf_lock);
1091
1092         kfree(text);
1093         return len;
1094 }
1095
1096 int do_syslog(int type, char __user *buf, int len, bool from_file)
1097 {
1098         bool clear = false;
1099         static int saved_console_loglevel = -1;
1100         int error;
1101
1102         error = check_syslog_permissions(type, from_file);
1103         if (error)
1104                 goto out;
1105
1106         error = security_syslog(type);
1107         if (error)
1108                 return error;
1109
1110         switch (type) {
1111         case SYSLOG_ACTION_CLOSE:       /* Close log */
1112                 break;
1113         case SYSLOG_ACTION_OPEN:        /* Open log */
1114                 break;
1115         case SYSLOG_ACTION_READ:        /* Read from log */
1116                 error = -EINVAL;
1117                 if (!buf || len < 0)
1118                         goto out;
1119                 error = 0;
1120                 if (!len)
1121                         goto out;
1122                 if (!access_ok(VERIFY_WRITE, buf, len)) {
1123                         error = -EFAULT;
1124                         goto out;
1125                 }
1126                 error = wait_event_interruptible(log_wait,
1127                                                  syslog_seq != log_next_seq);
1128                 if (error)
1129                         goto out;
1130                 error = syslog_print(buf, len);
1131                 break;
1132         /* Read/clear last kernel messages */
1133         case SYSLOG_ACTION_READ_CLEAR:
1134                 clear = true;
1135                 /* FALL THRU */
1136         /* Read last kernel messages */
1137         case SYSLOG_ACTION_READ_ALL:
1138                 error = -EINVAL;
1139                 if (!buf || len < 0)
1140                         goto out;
1141                 error = 0;
1142                 if (!len)
1143                         goto out;
1144                 if (!access_ok(VERIFY_WRITE, buf, len)) {
1145                         error = -EFAULT;
1146                         goto out;
1147                 }
1148                 error = syslog_print_all(buf, len, clear);
1149                 break;
1150         /* Clear ring buffer */
1151         case SYSLOG_ACTION_CLEAR:
1152                 syslog_print_all(NULL, 0, true);
1153                 break;
1154         /* Disable logging to console */
1155         case SYSLOG_ACTION_CONSOLE_OFF:
1156                 if (saved_console_loglevel == -1)
1157                         saved_console_loglevel = console_loglevel;
1158                 console_loglevel = minimum_console_loglevel;
1159                 break;
1160         /* Enable logging to console */
1161         case SYSLOG_ACTION_CONSOLE_ON:
1162                 if (saved_console_loglevel != -1) {
1163                         console_loglevel = saved_console_loglevel;
1164                         saved_console_loglevel = -1;
1165                 }
1166                 break;
1167         /* Set level of messages printed to console */
1168         case SYSLOG_ACTION_CONSOLE_LEVEL:
1169                 error = -EINVAL;
1170                 if (len < 1 || len > 8)
1171                         goto out;
1172                 if (len < minimum_console_loglevel)
1173                         len = minimum_console_loglevel;
1174                 console_loglevel = len;
1175                 /* Implicitly re-enable logging to console */
1176                 saved_console_loglevel = -1;
1177                 error = 0;
1178                 break;
1179         /* Number of chars in the log buffer */
1180         case SYSLOG_ACTION_SIZE_UNREAD:
1181                 raw_spin_lock_irq(&logbuf_lock);
1182                 if (syslog_seq < log_first_seq) {
1183                         /* messages are gone, move to first one */
1184                         syslog_seq = log_first_seq;
1185                         syslog_idx = log_first_idx;
1186                         syslog_prev = 0;
1187                         syslog_partial = 0;
1188                 }
1189                 if (from_file) {
1190                         /*
1191                          * Short-cut for poll(/"proc/kmsg") which simply checks
1192                          * for pending data, not the size; return the count of
1193                          * records, not the length.
1194                          */
1195                         error = log_next_idx - syslog_idx;
1196                 } else {
1197                         u64 seq = syslog_seq;
1198                         u32 idx = syslog_idx;
1199                         enum log_flags prev = syslog_prev;
1200
1201                         error = 0;
1202                         while (seq < log_next_seq) {
1203                                 struct log *msg = log_from_idx(idx);
1204
1205                                 error += msg_print_text(msg, prev, true, NULL, 0);
1206                                 idx = log_next(idx);
1207                                 seq++;
1208                                 prev = msg->flags;
1209                         }
1210                         error -= syslog_partial;
1211                 }
1212                 raw_spin_unlock_irq(&logbuf_lock);
1213                 break;
1214         /* Size of the log buffer */
1215         case SYSLOG_ACTION_SIZE_BUFFER:
1216                 error = log_buf_len;
1217                 break;
1218         default:
1219                 error = -EINVAL;
1220                 break;
1221         }
1222 out:
1223         return error;
1224 }
1225
1226 SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len)
1227 {
1228         return do_syslog(type, buf, len, SYSLOG_FROM_CALL);
1229 }
1230
1231 static bool __read_mostly ignore_loglevel;
1232
1233 static int __init ignore_loglevel_setup(char *str)
1234 {
1235         ignore_loglevel = 1;
1236         printk(KERN_INFO "debug: ignoring loglevel setting.\n");
1237
1238         return 0;
1239 }
1240
1241 early_param("ignore_loglevel", ignore_loglevel_setup);
1242 module_param(ignore_loglevel, bool, S_IRUGO | S_IWUSR);
1243 MODULE_PARM_DESC(ignore_loglevel, "ignore loglevel setting, to"
1244         "print all kernel messages to the console.");
1245
1246 /*
1247  * Call the console drivers, asking them to write out
1248  * log_buf[start] to log_buf[end - 1].
1249  * The console_lock must be held.
1250  */
1251 static void call_console_drivers(int level, const char *text, size_t len)
1252 {
1253         struct console *con;
1254
1255         trace_console(text, 0, len, len);
1256
1257         if (level >= console_loglevel && !ignore_loglevel)
1258                 return;
1259         if (!console_drivers)
1260                 return;
1261
1262         for_each_console(con) {
1263                 if (exclusive_console && con != exclusive_console)
1264                         continue;
1265                 if (!(con->flags & CON_ENABLED))
1266                         continue;
1267                 if (!con->write)
1268                         continue;
1269                 if (!cpu_online(smp_processor_id()) &&
1270                     !(con->flags & CON_ANYTIME))
1271                         continue;
1272                 con->write(con, text, len);
1273         }
1274 }
1275
1276 /*
1277  * Zap console related locks when oopsing. Only zap at most once
1278  * every 10 seconds, to leave time for slow consoles to print a
1279  * full oops.
1280  */
1281 static void zap_locks(void)
1282 {
1283         static unsigned long oops_timestamp;
1284
1285         if (time_after_eq(jiffies, oops_timestamp) &&
1286                         !time_after(jiffies, oops_timestamp + 30 * HZ))
1287                 return;
1288
1289         oops_timestamp = jiffies;
1290
1291         debug_locks_off();
1292         /* If a crash is occurring, make sure we can't deadlock */
1293         raw_spin_lock_init(&logbuf_lock);
1294         /* And make sure that we print immediately */
1295         sema_init(&console_sem, 1);
1296 }
1297
1298 /* Check if we have any console registered that can be called early in boot. */
1299 static int have_callable_console(void)
1300 {
1301         struct console *con;
1302
1303         for_each_console(con)
1304                 if (con->flags & CON_ANYTIME)
1305                         return 1;
1306
1307         return 0;
1308 }
1309
1310 /*
1311  * Can we actually use the console at this time on this cpu?
1312  *
1313  * Console drivers may assume that per-cpu resources have
1314  * been allocated. So unless they're explicitly marked as
1315  * being able to cope (CON_ANYTIME) don't call them until
1316  * this CPU is officially up.
1317  */
1318 static inline int can_use_console(unsigned int cpu)
1319 {
1320         return cpu_online(cpu) || have_callable_console();
1321 }
1322
1323 /*
1324  * Try to get console ownership to actually show the kernel
1325  * messages from a 'printk'. Return true (and with the
1326  * console_lock held, and 'console_locked' set) if it
1327  * is successful, false otherwise.
1328  *
1329  * This gets called with the 'logbuf_lock' spinlock held and
1330  * interrupts disabled. It should return with 'lockbuf_lock'
1331  * released but interrupts still disabled.
1332  */
1333 static int console_trylock_for_printk(unsigned int cpu)
1334         __releases(&logbuf_lock)
1335 {
1336         int retval = 0, wake = 0;
1337
1338         if (console_trylock()) {
1339                 retval = 1;
1340
1341                 /*
1342                  * If we can't use the console, we need to release
1343                  * the console semaphore by hand to avoid flushing
1344                  * the buffer. We need to hold the console semaphore
1345                  * in order to do this test safely.
1346                  */
1347                 if (!can_use_console(cpu)) {
1348                         console_locked = 0;
1349                         wake = 1;
1350                         retval = 0;
1351                 }
1352         }
1353         logbuf_cpu = UINT_MAX;
1354         if (wake)
1355                 up(&console_sem);
1356         raw_spin_unlock(&logbuf_lock);
1357         return retval;
1358 }
1359
1360 int printk_delay_msec __read_mostly;
1361
1362 static inline void printk_delay(void)
1363 {
1364         if (unlikely(printk_delay_msec)) {
1365                 int m = printk_delay_msec;
1366
1367                 while (m--) {
1368                         mdelay(1);
1369                         touch_nmi_watchdog();
1370                 }
1371         }
1372 }
1373
1374 /*
1375  * Continuation lines are buffered, and not committed to the record buffer
1376  * until the line is complete, or a race forces it. The line fragments
1377  * though, are printed immediately to the consoles to ensure everything has
1378  * reached the console in case of a kernel crash.
1379  */
1380 static struct cont {
1381         char buf[LOG_LINE_MAX];
1382         size_t len;                     /* length == 0 means unused buffer */
1383         size_t cons;                    /* bytes written to console */
1384         struct task_struct *owner;      /* task of first print*/
1385         u64 ts_nsec;                    /* time of first print */
1386         u8 level;                       /* log level of first message */
1387         u8 facility;                    /* log level of first message */
1388         enum log_flags flags;           /* prefix, newline flags */
1389         bool flushed:1;                 /* buffer sealed and committed */
1390 } cont;
1391
1392 static void cont_flush(enum log_flags flags)
1393 {
1394         if (cont.flushed)
1395                 return;
1396         if (cont.len == 0)
1397                 return;
1398
1399         if (cont.cons) {
1400                 /*
1401                  * If a fragment of this line was directly flushed to the
1402                  * console; wait for the console to pick up the rest of the
1403                  * line. LOG_NOCONS suppresses a duplicated output.
1404                  */
1405                 log_store(cont.facility, cont.level, flags | LOG_NOCONS,
1406                           cont.ts_nsec, NULL, 0, cont.buf, cont.len);
1407                 cont.flags = flags;
1408                 cont.flushed = true;
1409         } else {
1410                 /*
1411                  * If no fragment of this line ever reached the console,
1412                  * just submit it to the store and free the buffer.
1413                  */
1414                 log_store(cont.facility, cont.level, flags, 0,
1415                           NULL, 0, cont.buf, cont.len);
1416                 cont.len = 0;
1417         }
1418 }
1419
1420 static bool cont_add(int facility, int level, const char *text, size_t len)
1421 {
1422         if (cont.len && cont.flushed)
1423                 return false;
1424
1425         if (cont.len + len > sizeof(cont.buf)) {
1426                 /* the line gets too long, split it up in separate records */
1427                 cont_flush(LOG_CONT);
1428                 return false;
1429         }
1430
1431         if (!cont.len) {
1432                 cont.facility = facility;
1433                 cont.level = level;
1434                 cont.owner = current;
1435                 cont.ts_nsec = local_clock();
1436                 cont.flags = 0;
1437                 cont.cons = 0;
1438                 cont.flushed = false;
1439         }
1440
1441         memcpy(cont.buf + cont.len, text, len);
1442         cont.len += len;
1443
1444         if (cont.len > (sizeof(cont.buf) * 80) / 100)
1445                 cont_flush(LOG_CONT);
1446
1447         return true;
1448 }
1449
1450 static size_t cont_print_text(char *text, size_t size)
1451 {
1452         size_t textlen = 0;
1453         size_t len;
1454
1455         if (cont.cons == 0 && (console_prev & LOG_NEWLINE)) {
1456                 textlen += print_time(cont.ts_nsec, text);
1457                 size -= textlen;
1458         }
1459
1460         len = cont.len - cont.cons;
1461         if (len > 0) {
1462                 if (len+1 > size)
1463                         len = size-1;
1464                 memcpy(text + textlen, cont.buf + cont.cons, len);
1465                 textlen += len;
1466                 cont.cons = cont.len;
1467         }
1468
1469         if (cont.flushed) {
1470                 if (cont.flags & LOG_NEWLINE)
1471                         text[textlen++] = '\n';
1472                 /* got everything, release buffer */
1473                 cont.len = 0;
1474         }
1475         return textlen;
1476 }
1477
1478 asmlinkage int vprintk_emit(int facility, int level,
1479                             const char *dict, size_t dictlen,
1480                             const char *fmt, va_list args)
1481 {
1482         static int recursion_bug;
1483         static char textbuf[LOG_LINE_MAX];
1484         char *text = textbuf;
1485         size_t text_len;
1486         enum log_flags lflags = 0;
1487         unsigned long flags;
1488         int this_cpu;
1489         int printed_len = 0;
1490
1491         boot_delay_msec();
1492         printk_delay();
1493
1494         /* This stops the holder of console_sem just where we want him */
1495         local_irq_save(flags);
1496         this_cpu = smp_processor_id();
1497
1498         /*
1499          * Ouch, printk recursed into itself!
1500          */
1501         if (unlikely(logbuf_cpu == this_cpu)) {
1502                 /*
1503                  * If a crash is occurring during printk() on this CPU,
1504                  * then try to get the crash message out but make sure
1505                  * we can't deadlock. Otherwise just return to avoid the
1506                  * recursion and return - but flag the recursion so that
1507                  * it can be printed at the next appropriate moment:
1508                  */
1509                 if (!oops_in_progress && !lockdep_recursing(current)) {
1510                         recursion_bug = 1;
1511                         goto out_restore_irqs;
1512                 }
1513                 zap_locks();
1514         }
1515
1516         lockdep_off();
1517         raw_spin_lock(&logbuf_lock);
1518         logbuf_cpu = this_cpu;
1519
1520         if (recursion_bug) {
1521                 static const char recursion_msg[] =
1522                         "BUG: recent printk recursion!";
1523
1524                 recursion_bug = 0;
1525                 printed_len += strlen(recursion_msg);
1526                 /* emit KERN_CRIT message */
1527                 log_store(0, 2, LOG_PREFIX|LOG_NEWLINE, 0,
1528                           NULL, 0, recursion_msg, printed_len);
1529         }
1530
1531         /*
1532          * The printf needs to come first; we need the syslog
1533          * prefix which might be passed-in as a parameter.
1534          */
1535         text_len = vscnprintf(text, sizeof(textbuf), fmt, args);
1536
1537         /* mark and strip a trailing newline */
1538         if (text_len && text[text_len-1] == '\n') {
1539                 text_len--;
1540                 lflags |= LOG_NEWLINE;
1541         }
1542
1543         /* strip syslog prefix and extract log level or control flags */
1544         if (text[0] == '<' && text[1] && text[2] == '>') {
1545                 switch (text[1]) {
1546                 case '0' ... '7':
1547                         if (level == -1)
1548                                 level = text[1] - '0';
1549                 case 'd':       /* KERN_DEFAULT */
1550                         lflags |= LOG_PREFIX;
1551                 case 'c':       /* KERN_CONT */
1552                         text += 3;
1553                         text_len -= 3;
1554                 }
1555         }
1556
1557         if (level == -1)
1558                 level = default_message_loglevel;
1559
1560         if (dict)
1561                 lflags |= LOG_PREFIX|LOG_NEWLINE;
1562
1563         if (!(lflags & LOG_NEWLINE)) {
1564                 /*
1565                  * Flush the conflicting buffer. An earlier newline was missing,
1566                  * or another task also prints continuation lines.
1567                  */
1568                 if (cont.len && (lflags & LOG_PREFIX || cont.owner != current))
1569                         cont_flush(LOG_NEWLINE);
1570
1571                 /* buffer line if possible, otherwise store it right away */
1572                 if (!cont_add(facility, level, text, text_len))
1573                         log_store(facility, level, lflags | LOG_CONT, 0,
1574                                   dict, dictlen, text, text_len);
1575         } else {
1576                 bool stored = false;
1577
1578                 /*
1579                  * If an earlier newline was missing and it was the same task,
1580                  * either merge it with the current buffer and flush, or if
1581                  * there was a race with interrupts (prefix == true) then just
1582                  * flush it out and store this line separately.
1583                  */
1584                 if (cont.len && cont.owner == current) {
1585                         if (!(lflags & LOG_PREFIX))
1586                                 stored = cont_add(facility, level, text, text_len);
1587                         cont_flush(LOG_NEWLINE);
1588                 }
1589
1590                 if (!stored)
1591                         log_store(facility, level, lflags, 0,
1592                                   dict, dictlen, text, text_len);
1593         }
1594         printed_len += text_len;
1595
1596         /*
1597          * Try to acquire and then immediately release the console semaphore.
1598          * The release will print out buffers and wake up /dev/kmsg and syslog()
1599          * users.
1600          *
1601          * The console_trylock_for_printk() function will release 'logbuf_lock'
1602          * regardless of whether it actually gets the console semaphore or not.
1603          */
1604         if (console_trylock_for_printk(this_cpu))
1605                 console_unlock();
1606
1607         lockdep_on();
1608 out_restore_irqs:
1609         local_irq_restore(flags);
1610
1611         return printed_len;
1612 }
1613 EXPORT_SYMBOL(vprintk_emit);
1614
1615 asmlinkage int vprintk(const char *fmt, va_list args)
1616 {
1617         return vprintk_emit(0, -1, NULL, 0, fmt, args);
1618 }
1619 EXPORT_SYMBOL(vprintk);
1620
1621 asmlinkage int printk_emit(int facility, int level,
1622                            const char *dict, size_t dictlen,
1623                            const char *fmt, ...)
1624 {
1625         va_list args;
1626         int r;
1627
1628         va_start(args, fmt);
1629         r = vprintk_emit(facility, level, dict, dictlen, fmt, args);
1630         va_end(args);
1631
1632         return r;
1633 }
1634 EXPORT_SYMBOL(printk_emit);
1635
1636 /**
1637  * printk - print a kernel message
1638  * @fmt: format string
1639  *
1640  * This is printk(). It can be called from any context. We want it to work.
1641  *
1642  * We try to grab the console_lock. If we succeed, it's easy - we log the
1643  * output and call the console drivers.  If we fail to get the semaphore, we
1644  * place the output into the log buffer and return. The current holder of
1645  * the console_sem will notice the new output in console_unlock(); and will
1646  * send it to the consoles before releasing the lock.
1647  *
1648  * One effect of this deferred printing is that code which calls printk() and
1649  * then changes console_loglevel may break. This is because console_loglevel
1650  * is inspected when the actual printing occurs.
1651  *
1652  * See also:
1653  * printf(3)
1654  *
1655  * See the vsnprintf() documentation for format string extensions over C99.
1656  */
1657 asmlinkage int printk(const char *fmt, ...)
1658 {
1659         va_list args;
1660         int r;
1661
1662 #ifdef CONFIG_KGDB_KDB
1663         if (unlikely(kdb_trap_printk)) {
1664                 va_start(args, fmt);
1665                 r = vkdb_printf(fmt, args);
1666                 va_end(args);
1667                 return r;
1668         }
1669 #endif
1670         va_start(args, fmt);
1671         r = vprintk_emit(0, -1, NULL, 0, fmt, args);
1672         va_end(args);
1673
1674         return r;
1675 }
1676 EXPORT_SYMBOL(printk);
1677
1678 #else /* CONFIG_PRINTK */
1679
1680 #define LOG_LINE_MAX            0
1681 #define PREFIX_MAX              0
1682 #define LOG_LINE_MAX 0
1683 static u64 syslog_seq;
1684 static u32 syslog_idx;
1685 static u64 console_seq;
1686 static u32 console_idx;
1687 static enum log_flags syslog_prev;
1688 static u64 log_first_seq;
1689 static u32 log_first_idx;
1690 static u64 log_next_seq;
1691 static enum log_flags console_prev;
1692 static struct cont {
1693         size_t len;
1694         size_t cons;
1695         u8 level;
1696         bool flushed:1;
1697 } cont;
1698 static struct log *log_from_idx(u32 idx) { return NULL; }
1699 static u32 log_next(u32 idx) { return 0; }
1700 static void call_console_drivers(int level, const char *text, size_t len) {}
1701 static size_t msg_print_text(const struct log *msg, enum log_flags prev,
1702                              bool syslog, char *buf, size_t size) { return 0; }
1703 static size_t cont_print_text(char *text, size_t size) { return 0; }
1704
1705 #endif /* CONFIG_PRINTK */
1706
1707 static int __add_preferred_console(char *name, int idx, char *options,
1708                                    char *brl_options)
1709 {
1710         struct console_cmdline *c;
1711         int i;
1712
1713         /*
1714          *      See if this tty is not yet registered, and
1715          *      if we have a slot free.
1716          */
1717         for (i = 0; i < MAX_CMDLINECONSOLES && console_cmdline[i].name[0]; i++)
1718                 if (strcmp(console_cmdline[i].name, name) == 0 &&
1719                           console_cmdline[i].index == idx) {
1720                                 if (!brl_options)
1721                                         selected_console = i;
1722                                 return 0;
1723                 }
1724         if (i == MAX_CMDLINECONSOLES)
1725                 return -E2BIG;
1726         if (!brl_options)
1727                 selected_console = i;
1728         c = &console_cmdline[i];
1729         strlcpy(c->name, name, sizeof(c->name));
1730         c->options = options;
1731 #ifdef CONFIG_A11Y_BRAILLE_CONSOLE
1732         c->brl_options = brl_options;
1733 #endif
1734         c->index = idx;
1735         return 0;
1736 }
1737 /*
1738  * Set up a list of consoles.  Called from init/main.c
1739  */
1740 static int __init console_setup(char *str)
1741 {
1742         char buf[sizeof(console_cmdline[0].name) + 4]; /* 4 for index */
1743         char *s, *options, *brl_options = NULL;
1744         int idx;
1745
1746 #ifdef CONFIG_A11Y_BRAILLE_CONSOLE
1747         if (!memcmp(str, "brl,", 4)) {
1748                 brl_options = "";
1749                 str += 4;
1750         } else if (!memcmp(str, "brl=", 4)) {
1751                 brl_options = str + 4;
1752                 str = strchr(brl_options, ',');
1753                 if (!str) {
1754                         printk(KERN_ERR "need port name after brl=\n");
1755                         return 1;
1756                 }
1757                 *(str++) = 0;
1758         }
1759 #endif
1760
1761         /*
1762          * Decode str into name, index, options.
1763          */
1764         if (str[0] >= '0' && str[0] <= '9') {
1765                 strcpy(buf, "ttyS");
1766                 strncpy(buf + 4, str, sizeof(buf) - 5);
1767         } else {
1768                 strncpy(buf, str, sizeof(buf) - 1);
1769         }
1770         buf[sizeof(buf) - 1] = 0;
1771         if ((options = strchr(str, ',')) != NULL)
1772                 *(options++) = 0;
1773 #ifdef __sparc__
1774         if (!strcmp(str, "ttya"))
1775                 strcpy(buf, "ttyS0");
1776         if (!strcmp(str, "ttyb"))
1777                 strcpy(buf, "ttyS1");
1778 #endif
1779         for (s = buf; *s; s++)
1780                 if ((*s >= '0' && *s <= '9') || *s == ',')
1781                         break;
1782         idx = simple_strtoul(s, NULL, 10);
1783         *s = 0;
1784
1785         __add_preferred_console(buf, idx, options, brl_options);
1786         console_set_on_cmdline = 1;
1787         return 1;
1788 }
1789 __setup("console=", console_setup);
1790
1791 /**
1792  * add_preferred_console - add a device to the list of preferred consoles.
1793  * @name: device name
1794  * @idx: device index
1795  * @options: options for this console
1796  *
1797  * The last preferred console added will be used for kernel messages
1798  * and stdin/out/err for init.  Normally this is used by console_setup
1799  * above to handle user-supplied console arguments; however it can also
1800  * be used by arch-specific code either to override the user or more
1801  * commonly to provide a default console (ie from PROM variables) when
1802  * the user has not supplied one.
1803  */
1804 int add_preferred_console(char *name, int idx, char *options)
1805 {
1806         return __add_preferred_console(name, idx, options, NULL);
1807 }
1808
1809 int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options)
1810 {
1811         struct console_cmdline *c;
1812         int i;
1813
1814         for (i = 0; i < MAX_CMDLINECONSOLES && console_cmdline[i].name[0]; i++)
1815                 if (strcmp(console_cmdline[i].name, name) == 0 &&
1816                           console_cmdline[i].index == idx) {
1817                                 c = &console_cmdline[i];
1818                                 strlcpy(c->name, name_new, sizeof(c->name));
1819                                 c->name[sizeof(c->name) - 1] = 0;
1820                                 c->options = options;
1821                                 c->index = idx_new;
1822                                 return i;
1823                 }
1824         /* not found */
1825         return -1;
1826 }
1827
1828 bool console_suspend_enabled = 1;
1829 EXPORT_SYMBOL(console_suspend_enabled);
1830
1831 static int __init console_suspend_disable(char *str)
1832 {
1833         console_suspend_enabled = 0;
1834         return 1;
1835 }
1836 __setup("no_console_suspend", console_suspend_disable);
1837 module_param_named(console_suspend, console_suspend_enabled,
1838                 bool, S_IRUGO | S_IWUSR);
1839 MODULE_PARM_DESC(console_suspend, "suspend console during suspend"
1840         " and hibernate operations");
1841
1842 /**
1843  * suspend_console - suspend the console subsystem
1844  *
1845  * This disables printk() while we go into suspend states
1846  */
1847 void suspend_console(void)
1848 {
1849         if (!console_suspend_enabled)
1850                 return;
1851         printk("Suspending console(s) (use no_console_suspend to debug)\n");
1852         console_lock();
1853         console_suspended = 1;
1854         up(&console_sem);
1855 }
1856
1857 void resume_console(void)
1858 {
1859         if (!console_suspend_enabled)
1860                 return;
1861         down(&console_sem);
1862         console_suspended = 0;
1863         console_unlock();
1864 }
1865
1866 /**
1867  * console_cpu_notify - print deferred console messages after CPU hotplug
1868  * @self: notifier struct
1869  * @action: CPU hotplug event
1870  * @hcpu: unused
1871  *
1872  * If printk() is called from a CPU that is not online yet, the messages
1873  * will be spooled but will not show up on the console.  This function is
1874  * called when a new CPU comes online (or fails to come up), and ensures
1875  * that any such output gets printed.
1876  */
1877 static int __cpuinit console_cpu_notify(struct notifier_block *self,
1878         unsigned long action, void *hcpu)
1879 {
1880         switch (action) {
1881         case CPU_ONLINE:
1882         case CPU_DEAD:
1883         case CPU_DYING:
1884         case CPU_DOWN_FAILED:
1885         case CPU_UP_CANCELED:
1886                 console_lock();
1887                 console_unlock();
1888         }
1889         return NOTIFY_OK;
1890 }
1891
1892 /**
1893  * console_lock - lock the console system for exclusive use.
1894  *
1895  * Acquires a lock which guarantees that the caller has
1896  * exclusive access to the console system and the console_drivers list.
1897  *
1898  * Can sleep, returns nothing.
1899  */
1900 void console_lock(void)
1901 {
1902         BUG_ON(in_interrupt());
1903         down(&console_sem);
1904         if (console_suspended)
1905                 return;
1906         console_locked = 1;
1907         console_may_schedule = 1;
1908 }
1909 EXPORT_SYMBOL(console_lock);
1910
1911 /**
1912  * console_trylock - try to lock the console system for exclusive use.
1913  *
1914  * Tried to acquire a lock which guarantees that the caller has
1915  * exclusive access to the console system and the console_drivers list.
1916  *
1917  * returns 1 on success, and 0 on failure to acquire the lock.
1918  */
1919 int console_trylock(void)
1920 {
1921         if (down_trylock(&console_sem))
1922                 return 0;
1923         if (console_suspended) {
1924                 up(&console_sem);
1925                 return 0;
1926         }
1927         console_locked = 1;
1928         console_may_schedule = 0;
1929         return 1;
1930 }
1931 EXPORT_SYMBOL(console_trylock);
1932
1933 int is_console_locked(void)
1934 {
1935         return console_locked;
1936 }
1937
1938 /*
1939  * Delayed printk version, for scheduler-internal messages:
1940  */
1941 #define PRINTK_BUF_SIZE         512
1942
1943 #define PRINTK_PENDING_WAKEUP   0x01
1944 #define PRINTK_PENDING_SCHED    0x02
1945
1946 static DEFINE_PER_CPU(int, printk_pending);
1947 static DEFINE_PER_CPU(char [PRINTK_BUF_SIZE], printk_sched_buf);
1948
1949 void printk_tick(void)
1950 {
1951         if (__this_cpu_read(printk_pending)) {
1952                 int pending = __this_cpu_xchg(printk_pending, 0);
1953                 if (pending & PRINTK_PENDING_SCHED) {
1954                         char *buf = __get_cpu_var(printk_sched_buf);
1955                         printk(KERN_WARNING "[sched_delayed] %s", buf);
1956                 }
1957                 if (pending & PRINTK_PENDING_WAKEUP)
1958                         wake_up_interruptible(&log_wait);
1959         }
1960 }
1961
1962 int printk_needs_cpu(int cpu)
1963 {
1964         if (cpu_is_offline(cpu))
1965                 printk_tick();
1966         return __this_cpu_read(printk_pending);
1967 }
1968
1969 void wake_up_klogd(void)
1970 {
1971         if (waitqueue_active(&log_wait))
1972                 this_cpu_or(printk_pending, PRINTK_PENDING_WAKEUP);
1973 }
1974
1975 static void console_cont_flush(char *text, size_t size)
1976 {
1977         unsigned long flags;
1978         size_t len;
1979
1980         raw_spin_lock_irqsave(&logbuf_lock, flags);
1981
1982         if (!cont.len)
1983                 goto out;
1984
1985         /*
1986          * We still queue earlier records, likely because the console was
1987          * busy. The earlier ones need to be printed before this one, we
1988          * did not flush any fragment so far, so just let it queue up.
1989          */
1990         if (console_seq < log_next_seq && !cont.cons)
1991                 goto out;
1992
1993         len = cont_print_text(text, size);
1994         raw_spin_unlock(&logbuf_lock);
1995         stop_critical_timings();
1996         call_console_drivers(cont.level, text, len);
1997         start_critical_timings();
1998         local_irq_restore(flags);
1999         return;
2000 out:
2001         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2002 }
2003
2004 /**
2005  * console_unlock - unlock the console system
2006  *
2007  * Releases the console_lock which the caller holds on the console system
2008  * and the console driver list.
2009  *
2010  * While the console_lock was held, console output may have been buffered
2011  * by printk().  If this is the case, console_unlock(); emits
2012  * the output prior to releasing the lock.
2013  *
2014  * If there is output waiting, we wake /dev/kmsg and syslog() users.
2015  *
2016  * console_unlock(); may be called from any context.
2017  */
2018 void console_unlock(void)
2019 {
2020         static char text[LOG_LINE_MAX + PREFIX_MAX];
2021         static u64 seen_seq;
2022         unsigned long flags;
2023         bool wake_klogd = false;
2024         bool retry;
2025
2026         if (console_suspended) {
2027                 up(&console_sem);
2028                 return;
2029         }
2030
2031         console_may_schedule = 0;
2032
2033         /* flush buffered message fragment immediately to console */
2034         console_cont_flush(text, sizeof(text));
2035 again:
2036         for (;;) {
2037                 struct log *msg;
2038                 size_t len;
2039                 int level;
2040
2041                 raw_spin_lock_irqsave(&logbuf_lock, flags);
2042                 if (seen_seq != log_next_seq) {
2043                         wake_klogd = true;
2044                         seen_seq = log_next_seq;
2045                 }
2046
2047                 if (console_seq < log_first_seq) {
2048                         /* messages are gone, move to first one */
2049                         console_seq = log_first_seq;
2050                         console_idx = log_first_idx;
2051                         console_prev = 0;
2052                 }
2053 skip:
2054                 if (console_seq == log_next_seq)
2055                         break;
2056
2057                 msg = log_from_idx(console_idx);
2058                 if (msg->flags & LOG_NOCONS) {
2059                         /*
2060                          * Skip record we have buffered and already printed
2061                          * directly to the console when we received it.
2062                          */
2063                         console_idx = log_next(console_idx);
2064                         console_seq++;
2065                         /*
2066                          * We will get here again when we register a new
2067                          * CON_PRINTBUFFER console. Clear the flag so we
2068                          * will properly dump everything later.
2069                          */
2070                         msg->flags &= ~LOG_NOCONS;
2071                         console_prev = msg->flags;
2072                         goto skip;
2073                 }
2074
2075                 level = msg->level;
2076                 len = msg_print_text(msg, console_prev, false,
2077                                      text, sizeof(text));
2078                 console_idx = log_next(console_idx);
2079                 console_seq++;
2080                 console_prev = msg->flags;
2081                 raw_spin_unlock(&logbuf_lock);
2082
2083                 stop_critical_timings();        /* don't trace print latency */
2084                 call_console_drivers(level, text, len);
2085                 start_critical_timings();
2086                 local_irq_restore(flags);
2087         }
2088         console_locked = 0;
2089
2090         /* Release the exclusive_console once it is used */
2091         if (unlikely(exclusive_console))
2092                 exclusive_console = NULL;
2093
2094         raw_spin_unlock(&logbuf_lock);
2095
2096         up(&console_sem);
2097
2098         /*
2099          * Someone could have filled up the buffer again, so re-check if there's
2100          * something to flush. In case we cannot trylock the console_sem again,
2101          * there's a new owner and the console_unlock() from them will do the
2102          * flush, no worries.
2103          */
2104         raw_spin_lock(&logbuf_lock);
2105         retry = console_seq != log_next_seq;
2106         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2107
2108         if (retry && console_trylock())
2109                 goto again;
2110
2111         if (wake_klogd)
2112                 wake_up_klogd();
2113 }
2114 EXPORT_SYMBOL(console_unlock);
2115
2116 /**
2117  * console_conditional_schedule - yield the CPU if required
2118  *
2119  * If the console code is currently allowed to sleep, and
2120  * if this CPU should yield the CPU to another task, do
2121  * so here.
2122  *
2123  * Must be called within console_lock();.
2124  */
2125 void __sched console_conditional_schedule(void)
2126 {
2127         if (console_may_schedule)
2128                 cond_resched();
2129 }
2130 EXPORT_SYMBOL(console_conditional_schedule);
2131
2132 void console_unblank(void)
2133 {
2134         struct console *c;
2135
2136         /*
2137          * console_unblank can no longer be called in interrupt context unless
2138          * oops_in_progress is set to 1..
2139          */
2140         if (oops_in_progress) {
2141                 if (down_trylock(&console_sem) != 0)
2142                         return;
2143         } else
2144                 console_lock();
2145
2146         console_locked = 1;
2147         console_may_schedule = 0;
2148         for_each_console(c)
2149                 if ((c->flags & CON_ENABLED) && c->unblank)
2150                         c->unblank();
2151         console_unlock();
2152 }
2153
2154 /*
2155  * Return the console tty driver structure and its associated index
2156  */
2157 struct tty_driver *console_device(int *index)
2158 {
2159         struct console *c;
2160         struct tty_driver *driver = NULL;
2161
2162         console_lock();
2163         for_each_console(c) {
2164                 if (!c->device)
2165                         continue;
2166                 driver = c->device(c, index);
2167                 if (driver)
2168                         break;
2169         }
2170         console_unlock();
2171         return driver;
2172 }
2173
2174 /*
2175  * Prevent further output on the passed console device so that (for example)
2176  * serial drivers can disable console output before suspending a port, and can
2177  * re-enable output afterwards.
2178  */
2179 void console_stop(struct console *console)
2180 {
2181         console_lock();
2182         console->flags &= ~CON_ENABLED;
2183         console_unlock();
2184 }
2185 EXPORT_SYMBOL(console_stop);
2186
2187 void console_start(struct console *console)
2188 {
2189         console_lock();
2190         console->flags |= CON_ENABLED;
2191         console_unlock();
2192 }
2193 EXPORT_SYMBOL(console_start);
2194
2195 static int __read_mostly keep_bootcon;
2196
2197 static int __init keep_bootcon_setup(char *str)
2198 {
2199         keep_bootcon = 1;
2200         printk(KERN_INFO "debug: skip boot console de-registration.\n");
2201
2202         return 0;
2203 }
2204
2205 early_param("keep_bootcon", keep_bootcon_setup);
2206
2207 /*
2208  * The console driver calls this routine during kernel initialization
2209  * to register the console printing procedure with printk() and to
2210  * print any messages that were printed by the kernel before the
2211  * console driver was initialized.
2212  *
2213  * This can happen pretty early during the boot process (because of
2214  * early_printk) - sometimes before setup_arch() completes - be careful
2215  * of what kernel features are used - they may not be initialised yet.
2216  *
2217  * There are two types of consoles - bootconsoles (early_printk) and
2218  * "real" consoles (everything which is not a bootconsole) which are
2219  * handled differently.
2220  *  - Any number of bootconsoles can be registered at any time.
2221  *  - As soon as a "real" console is registered, all bootconsoles
2222  *    will be unregistered automatically.
2223  *  - Once a "real" console is registered, any attempt to register a
2224  *    bootconsoles will be rejected
2225  */
2226 void register_console(struct console *newcon)
2227 {
2228         int i;
2229         unsigned long flags;
2230         struct console *bcon = NULL;
2231
2232         /*
2233          * before we register a new CON_BOOT console, make sure we don't
2234          * already have a valid console
2235          */
2236         if (console_drivers && newcon->flags & CON_BOOT) {
2237                 /* find the last or real console */
2238                 for_each_console(bcon) {
2239                         if (!(bcon->flags & CON_BOOT)) {
2240                                 printk(KERN_INFO "Too late to register bootconsole %s%d\n",
2241                                         newcon->name, newcon->index);
2242                                 return;
2243                         }
2244                 }
2245         }
2246
2247         if (console_drivers && console_drivers->flags & CON_BOOT)
2248                 bcon = console_drivers;
2249
2250         if (preferred_console < 0 || bcon || !console_drivers)
2251                 preferred_console = selected_console;
2252
2253         if (newcon->early_setup)
2254                 newcon->early_setup();
2255
2256         /*
2257          *      See if we want to use this console driver. If we
2258          *      didn't select a console we take the first one
2259          *      that registers here.
2260          */
2261         if (preferred_console < 0) {
2262                 if (newcon->index < 0)
2263                         newcon->index = 0;
2264                 if (newcon->setup == NULL ||
2265                     newcon->setup(newcon, NULL) == 0) {
2266                         newcon->flags |= CON_ENABLED;
2267                         if (newcon->device) {
2268                                 newcon->flags |= CON_CONSDEV;
2269                                 preferred_console = 0;
2270                         }
2271                 }
2272         }
2273
2274         /*
2275          *      See if this console matches one we selected on
2276          *      the command line.
2277          */
2278         for (i = 0; i < MAX_CMDLINECONSOLES && console_cmdline[i].name[0];
2279                         i++) {
2280                 if (strcmp(console_cmdline[i].name, newcon->name) != 0)
2281                         continue;
2282                 if (newcon->index >= 0 &&
2283                     newcon->index != console_cmdline[i].index)
2284                         continue;
2285                 if (newcon->index < 0)
2286                         newcon->index = console_cmdline[i].index;
2287 #ifdef CONFIG_A11Y_BRAILLE_CONSOLE
2288                 if (console_cmdline[i].brl_options) {
2289                         newcon->flags |= CON_BRL;
2290                         braille_register_console(newcon,
2291                                         console_cmdline[i].index,
2292                                         console_cmdline[i].options,
2293                                         console_cmdline[i].brl_options);
2294                         return;
2295                 }
2296 #endif
2297                 if (newcon->setup &&
2298                     newcon->setup(newcon, console_cmdline[i].options) != 0)
2299                         break;
2300                 newcon->flags |= CON_ENABLED;
2301                 newcon->index = console_cmdline[i].index;
2302                 if (i == selected_console) {
2303                         newcon->flags |= CON_CONSDEV;
2304                         preferred_console = selected_console;
2305                 }
2306                 break;
2307         }
2308
2309         if (!(newcon->flags & CON_ENABLED))
2310                 return;
2311
2312         /*
2313          * If we have a bootconsole, and are switching to a real console,
2314          * don't print everything out again, since when the boot console, and
2315          * the real console are the same physical device, it's annoying to
2316          * see the beginning boot messages twice
2317          */
2318         if (bcon && ((newcon->flags & (CON_CONSDEV | CON_BOOT)) == CON_CONSDEV))
2319                 newcon->flags &= ~CON_PRINTBUFFER;
2320
2321         /*
2322          *      Put this console in the list - keep the
2323          *      preferred driver at the head of the list.
2324          */
2325         console_lock();
2326         if ((newcon->flags & CON_CONSDEV) || console_drivers == NULL) {
2327                 newcon->next = console_drivers;
2328                 console_drivers = newcon;
2329                 if (newcon->next)
2330                         newcon->next->flags &= ~CON_CONSDEV;
2331         } else {
2332                 newcon->next = console_drivers->next;
2333                 console_drivers->next = newcon;
2334         }
2335         if (newcon->flags & CON_PRINTBUFFER) {
2336                 /*
2337                  * console_unlock(); will print out the buffered messages
2338                  * for us.
2339                  */
2340                 raw_spin_lock_irqsave(&logbuf_lock, flags);
2341                 console_seq = syslog_seq;
2342                 console_idx = syslog_idx;
2343                 console_prev = syslog_prev;
2344                 raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2345                 /*
2346                  * We're about to replay the log buffer.  Only do this to the
2347                  * just-registered console to avoid excessive message spam to
2348                  * the already-registered consoles.
2349                  */
2350                 exclusive_console = newcon;
2351         }
2352         console_unlock();
2353         console_sysfs_notify();
2354
2355         /*
2356          * By unregistering the bootconsoles after we enable the real console
2357          * we get the "console xxx enabled" message on all the consoles -
2358          * boot consoles, real consoles, etc - this is to ensure that end
2359          * users know there might be something in the kernel's log buffer that
2360          * went to the bootconsole (that they do not see on the real console)
2361          */
2362         if (bcon &&
2363             ((newcon->flags & (CON_CONSDEV | CON_BOOT)) == CON_CONSDEV) &&
2364             !keep_bootcon) {
2365                 /* we need to iterate through twice, to make sure we print
2366                  * everything out, before we unregister the console(s)
2367                  */
2368                 printk(KERN_INFO "console [%s%d] enabled, bootconsole disabled\n",
2369                         newcon->name, newcon->index);
2370                 for_each_console(bcon)
2371                         if (bcon->flags & CON_BOOT)
2372                                 unregister_console(bcon);
2373         } else {
2374                 printk(KERN_INFO "%sconsole [%s%d] enabled\n",
2375                         (newcon->flags & CON_BOOT) ? "boot" : "" ,
2376                         newcon->name, newcon->index);
2377         }
2378 }
2379 EXPORT_SYMBOL(register_console);
2380
2381 int unregister_console(struct console *console)
2382 {
2383         struct console *a, *b;
2384         int res = 1;
2385
2386 #ifdef CONFIG_A11Y_BRAILLE_CONSOLE
2387         if (console->flags & CON_BRL)
2388                 return braille_unregister_console(console);
2389 #endif
2390
2391         console_lock();
2392         if (console_drivers == console) {
2393                 console_drivers=console->next;
2394                 res = 0;
2395         } else if (console_drivers) {
2396                 for (a=console_drivers->next, b=console_drivers ;
2397                      a; b=a, a=b->next) {
2398                         if (a == console) {
2399                                 b->next = a->next;
2400                                 res = 0;
2401                                 break;
2402                         }
2403                 }
2404         }
2405
2406         /*
2407          * If this isn't the last console and it has CON_CONSDEV set, we
2408          * need to set it on the next preferred console.
2409          */
2410         if (console_drivers != NULL && console->flags & CON_CONSDEV)
2411                 console_drivers->flags |= CON_CONSDEV;
2412
2413         console_unlock();
2414         console_sysfs_notify();
2415         return res;
2416 }
2417 EXPORT_SYMBOL(unregister_console);
2418
2419 static int __init printk_late_init(void)
2420 {
2421         struct console *con;
2422
2423         for_each_console(con) {
2424                 if (!keep_bootcon && con->flags & CON_BOOT) {
2425                         printk(KERN_INFO "turn off boot console %s%d\n",
2426                                 con->name, con->index);
2427                         unregister_console(con);
2428                 }
2429         }
2430         hotcpu_notifier(console_cpu_notify, 0);
2431         return 0;
2432 }
2433 late_initcall(printk_late_init);
2434
2435 #if defined CONFIG_PRINTK
2436
2437 int printk_sched(const char *fmt, ...)
2438 {
2439         unsigned long flags;
2440         va_list args;
2441         char *buf;
2442         int r;
2443
2444         local_irq_save(flags);
2445         buf = __get_cpu_var(printk_sched_buf);
2446
2447         va_start(args, fmt);
2448         r = vsnprintf(buf, PRINTK_BUF_SIZE, fmt, args);
2449         va_end(args);
2450
2451         __this_cpu_or(printk_pending, PRINTK_PENDING_SCHED);
2452         local_irq_restore(flags);
2453
2454         return r;
2455 }
2456
2457 /*
2458  * printk rate limiting, lifted from the networking subsystem.
2459  *
2460  * This enforces a rate limit: not more than 10 kernel messages
2461  * every 5s to make a denial-of-service attack impossible.
2462  */
2463 DEFINE_RATELIMIT_STATE(printk_ratelimit_state, 5 * HZ, 10);
2464
2465 int __printk_ratelimit(const char *func)
2466 {
2467         return ___ratelimit(&printk_ratelimit_state, func);
2468 }
2469 EXPORT_SYMBOL(__printk_ratelimit);
2470
2471 /**
2472  * printk_timed_ratelimit - caller-controlled printk ratelimiting
2473  * @caller_jiffies: pointer to caller's state
2474  * @interval_msecs: minimum interval between prints
2475  *
2476  * printk_timed_ratelimit() returns true if more than @interval_msecs
2477  * milliseconds have elapsed since the last time printk_timed_ratelimit()
2478  * returned true.
2479  */
2480 bool printk_timed_ratelimit(unsigned long *caller_jiffies,
2481                         unsigned int interval_msecs)
2482 {
2483         if (*caller_jiffies == 0
2484                         || !time_in_range(jiffies, *caller_jiffies,
2485                                         *caller_jiffies
2486                                         + msecs_to_jiffies(interval_msecs))) {
2487                 *caller_jiffies = jiffies;
2488                 return true;
2489         }
2490         return false;
2491 }
2492 EXPORT_SYMBOL(printk_timed_ratelimit);
2493
2494 static DEFINE_SPINLOCK(dump_list_lock);
2495 static LIST_HEAD(dump_list);
2496
2497 /**
2498  * kmsg_dump_register - register a kernel log dumper.
2499  * @dumper: pointer to the kmsg_dumper structure
2500  *
2501  * Adds a kernel log dumper to the system. The dump callback in the
2502  * structure will be called when the kernel oopses or panics and must be
2503  * set. Returns zero on success and %-EINVAL or %-EBUSY otherwise.
2504  */
2505 int kmsg_dump_register(struct kmsg_dumper *dumper)
2506 {
2507         unsigned long flags;
2508         int err = -EBUSY;
2509
2510         /* The dump callback needs to be set */
2511         if (!dumper->dump)
2512                 return -EINVAL;
2513
2514         spin_lock_irqsave(&dump_list_lock, flags);
2515         /* Don't allow registering multiple times */
2516         if (!dumper->registered) {
2517                 dumper->registered = 1;
2518                 list_add_tail_rcu(&dumper->list, &dump_list);
2519                 err = 0;
2520         }
2521         spin_unlock_irqrestore(&dump_list_lock, flags);
2522
2523         return err;
2524 }
2525 EXPORT_SYMBOL_GPL(kmsg_dump_register);
2526
2527 /**
2528  * kmsg_dump_unregister - unregister a kmsg dumper.
2529  * @dumper: pointer to the kmsg_dumper structure
2530  *
2531  * Removes a dump device from the system. Returns zero on success and
2532  * %-EINVAL otherwise.
2533  */
2534 int kmsg_dump_unregister(struct kmsg_dumper *dumper)
2535 {
2536         unsigned long flags;
2537         int err = -EINVAL;
2538
2539         spin_lock_irqsave(&dump_list_lock, flags);
2540         if (dumper->registered) {
2541                 dumper->registered = 0;
2542                 list_del_rcu(&dumper->list);
2543                 err = 0;
2544         }
2545         spin_unlock_irqrestore(&dump_list_lock, flags);
2546         synchronize_rcu();
2547
2548         return err;
2549 }
2550 EXPORT_SYMBOL_GPL(kmsg_dump_unregister);
2551
2552 static bool always_kmsg_dump;
2553 module_param_named(always_kmsg_dump, always_kmsg_dump, bool, S_IRUGO | S_IWUSR);
2554
2555 /**
2556  * kmsg_dump - dump kernel log to kernel message dumpers.
2557  * @reason: the reason (oops, panic etc) for dumping
2558  *
2559  * Call each of the registered dumper's dump() callback, which can
2560  * retrieve the kmsg records with kmsg_dump_get_line() or
2561  * kmsg_dump_get_buffer().
2562  */
2563 void kmsg_dump(enum kmsg_dump_reason reason)
2564 {
2565         struct kmsg_dumper *dumper;
2566         unsigned long flags;
2567
2568         if ((reason > KMSG_DUMP_OOPS) && !always_kmsg_dump)
2569                 return;
2570
2571         rcu_read_lock();
2572         list_for_each_entry_rcu(dumper, &dump_list, list) {
2573                 if (dumper->max_reason && reason > dumper->max_reason)
2574                         continue;
2575
2576                 /* initialize iterator with data about the stored records */
2577                 dumper->active = true;
2578
2579                 raw_spin_lock_irqsave(&logbuf_lock, flags);
2580                 dumper->cur_seq = clear_seq;
2581                 dumper->cur_idx = clear_idx;
2582                 dumper->next_seq = log_next_seq;
2583                 dumper->next_idx = log_next_idx;
2584                 raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2585
2586                 /* invoke dumper which will iterate over records */
2587                 dumper->dump(dumper, reason);
2588
2589                 /* reset iterator */
2590                 dumper->active = false;
2591         }
2592         rcu_read_unlock();
2593 }
2594
2595 /**
2596  * kmsg_dump_get_line_nolock - retrieve one kmsg log line (unlocked version)
2597  * @dumper: registered kmsg dumper
2598  * @syslog: include the "<4>" prefixes
2599  * @line: buffer to copy the line to
2600  * @size: maximum size of the buffer
2601  * @len: length of line placed into buffer
2602  *
2603  * Start at the beginning of the kmsg buffer, with the oldest kmsg
2604  * record, and copy one record into the provided buffer.
2605  *
2606  * Consecutive calls will return the next available record moving
2607  * towards the end of the buffer with the youngest messages.
2608  *
2609  * A return value of FALSE indicates that there are no more records to
2610  * read.
2611  *
2612  * The function is similar to kmsg_dump_get_line(), but grabs no locks.
2613  */
2614 bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, bool syslog,
2615                                char *line, size_t size, size_t *len)
2616 {
2617         struct log *msg;
2618         size_t l = 0;
2619         bool ret = false;
2620
2621         if (!dumper->active)
2622                 goto out;
2623
2624         if (dumper->cur_seq < log_first_seq) {
2625                 /* messages are gone, move to first available one */
2626                 dumper->cur_seq = log_first_seq;
2627                 dumper->cur_idx = log_first_idx;
2628         }
2629
2630         /* last entry */
2631         if (dumper->cur_seq >= log_next_seq)
2632                 goto out;
2633
2634         msg = log_from_idx(dumper->cur_idx);
2635         l = msg_print_text(msg, 0, syslog, line, size);
2636
2637         dumper->cur_idx = log_next(dumper->cur_idx);
2638         dumper->cur_seq++;
2639         ret = true;
2640 out:
2641         if (len)
2642                 *len = l;
2643         return ret;
2644 }
2645
2646 /**
2647  * kmsg_dump_get_line - retrieve one kmsg log line
2648  * @dumper: registered kmsg dumper
2649  * @syslog: include the "<4>" prefixes
2650  * @line: buffer to copy the line to
2651  * @size: maximum size of the buffer
2652  * @len: length of line placed into buffer
2653  *
2654  * Start at the beginning of the kmsg buffer, with the oldest kmsg
2655  * record, and copy one record into the provided buffer.
2656  *
2657  * Consecutive calls will return the next available record moving
2658  * towards the end of the buffer with the youngest messages.
2659  *
2660  * A return value of FALSE indicates that there are no more records to
2661  * read.
2662  */
2663 bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog,
2664                         char *line, size_t size, size_t *len)
2665 {
2666         unsigned long flags;
2667         bool ret;
2668
2669         raw_spin_lock_irqsave(&logbuf_lock, flags);
2670         ret = kmsg_dump_get_line_nolock(dumper, syslog, line, size, len);
2671         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2672
2673         return ret;
2674 }
2675 EXPORT_SYMBOL_GPL(kmsg_dump_get_line);
2676
2677 /**
2678  * kmsg_dump_get_buffer - copy kmsg log lines
2679  * @dumper: registered kmsg dumper
2680  * @syslog: include the "<4>" prefixes
2681  * @buf: buffer to copy the line to
2682  * @size: maximum size of the buffer
2683  * @len: length of line placed into buffer
2684  *
2685  * Start at the end of the kmsg buffer and fill the provided buffer
2686  * with as many of the the *youngest* kmsg records that fit into it.
2687  * If the buffer is large enough, all available kmsg records will be
2688  * copied with a single call.
2689  *
2690  * Consecutive calls will fill the buffer with the next block of
2691  * available older records, not including the earlier retrieved ones.
2692  *
2693  * A return value of FALSE indicates that there are no more records to
2694  * read.
2695  */
2696 bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog,
2697                           char *buf, size_t size, size_t *len)
2698 {
2699         unsigned long flags;
2700         u64 seq;
2701         u32 idx;
2702         u64 next_seq;
2703         u32 next_idx;
2704         enum log_flags prev;
2705         size_t l = 0;
2706         bool ret = false;
2707
2708         if (!dumper->active)
2709                 goto out;
2710
2711         raw_spin_lock_irqsave(&logbuf_lock, flags);
2712         if (dumper->cur_seq < log_first_seq) {
2713                 /* messages are gone, move to first available one */
2714                 dumper->cur_seq = log_first_seq;
2715                 dumper->cur_idx = log_first_idx;
2716         }
2717
2718         /* last entry */
2719         if (dumper->cur_seq >= dumper->next_seq) {
2720                 raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2721                 goto out;
2722         }
2723
2724         /* calculate length of entire buffer */
2725         seq = dumper->cur_seq;
2726         idx = dumper->cur_idx;
2727         prev = 0;
2728         while (seq < dumper->next_seq) {
2729                 struct log *msg = log_from_idx(idx);
2730
2731                 l += msg_print_text(msg, prev, true, NULL, 0);
2732                 idx = log_next(idx);
2733                 seq++;
2734                 prev = msg->flags;
2735         }
2736
2737         /* move first record forward until length fits into the buffer */
2738         seq = dumper->cur_seq;
2739         idx = dumper->cur_idx;
2740         prev = 0;
2741         while (l > size && seq < dumper->next_seq) {
2742                 struct log *msg = log_from_idx(idx);
2743
2744                 l -= msg_print_text(msg, prev, true, NULL, 0);
2745                 idx = log_next(idx);
2746                 seq++;
2747                 prev = msg->flags;
2748         }
2749
2750         /* last message in next interation */
2751         next_seq = seq;
2752         next_idx = idx;
2753
2754         l = 0;
2755         prev = 0;
2756         while (seq < dumper->next_seq) {
2757                 struct log *msg = log_from_idx(idx);
2758
2759                 l += msg_print_text(msg, prev, syslog, buf + l, size - l);
2760                 idx = log_next(idx);
2761                 seq++;
2762                 prev = msg->flags;
2763         }
2764
2765         dumper->next_seq = next_seq;
2766         dumper->next_idx = next_idx;
2767         ret = true;
2768         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2769 out:
2770         if (len)
2771                 *len = l;
2772         return ret;
2773 }
2774 EXPORT_SYMBOL_GPL(kmsg_dump_get_buffer);
2775
2776 /**
2777  * kmsg_dump_rewind_nolock - reset the interator (unlocked version)
2778  * @dumper: registered kmsg dumper
2779  *
2780  * Reset the dumper's iterator so that kmsg_dump_get_line() and
2781  * kmsg_dump_get_buffer() can be called again and used multiple
2782  * times within the same dumper.dump() callback.
2783  *
2784  * The function is similar to kmsg_dump_rewind(), but grabs no locks.
2785  */
2786 void kmsg_dump_rewind_nolock(struct kmsg_dumper *dumper)
2787 {
2788         dumper->cur_seq = clear_seq;
2789         dumper->cur_idx = clear_idx;
2790         dumper->next_seq = log_next_seq;
2791         dumper->next_idx = log_next_idx;
2792 }
2793
2794 /**
2795  * kmsg_dump_rewind - reset the interator
2796  * @dumper: registered kmsg dumper
2797  *
2798  * Reset the dumper's iterator so that kmsg_dump_get_line() and
2799  * kmsg_dump_get_buffer() can be called again and used multiple
2800  * times within the same dumper.dump() callback.
2801  */
2802 void kmsg_dump_rewind(struct kmsg_dumper *dumper)
2803 {
2804         unsigned long flags;
2805
2806         raw_spin_lock_irqsave(&logbuf_lock, flags);
2807         kmsg_dump_rewind_nolock(dumper);
2808         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2809 }
2810 EXPORT_SYMBOL_GPL(kmsg_dump_rewind);
2811 #endif