Lines Matching full:console

10  * to the console.  Added hook for sending the console messages
11 * elsewhere, in preparation for a serial line console (someday).
26 #include <linux/console.h>
75 EXPORT_TRACEPOINT_SYMBOL_GPL(console);
85 * console_mutex protects console_list updates and console->flags updates.
87 * accessible via the console list.
92 * console_sem protects updates to console->seq
93 * and also provides serialization for console printing.
242 * console_list_lock - Lock the console list
244 * For console list or console->flags updates
266 * console_list_unlock - Unlock the console list
278 * SRCU-protected console list
280 * Use for_each_console_srcu() to iterate the console list
294 * the SRCU-protected console list
322 * because spindump/WARN/etc from under console ->lock will in __down_trylock_console_sem()
378 * keeping track if we have the console semaphore held. It's
381 * paths in the console code where we end up in places I want
382 * locked without the console semaphore held).
387 * Array of consoles built from command line options (console=)
398 /* Flag: console code may call schedule() */
468 * Specifies if a legacy console is registered. If legacy consoles are
469 * present, it is necessary to perform the console lock/unlock dance
470 * whenever console flushing should occur.
475 * Specifies if an nbcon console is registered. If nbcon consoles are present,
482 * Specifies if a boot console is registered. If boot consoles are present,
484 * the console lock. This is because boot consoles and nbcon consoles may
1307 "ignore loglevel setting (prints all kernel messages to the console)");
1805 /* Disable logging to console */ in do_syslog()
1811 /* Enable logging to console */ in do_syslog()
1818 /* Set level of messages printed to console */ in do_syslog()
1825 /* Implicitly re-enable logging to console */ in do_syslog()
2056 * The owner passed the console lock to us. in console_trylock_spinning()
2057 * Since we did not spin on console lock, annotate in console_trylock_spinning()
2426 * Try to acquire and then immediately release the console in vprintk_emit()
2464 static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress);
2476 static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress) { return true; } in __pr_flush()
2481 struct console *early_console;
2506 * @c console was defined by the user on the command line. in set_user_specified()
2510 /* At least one console defined by the user on the command line. */ in set_user_specified()
2525 * We use a signed short index for struct console for device drivers to in __add_preferred_console()
2527 * value is not valid when the console name and index are defined on in __add_preferred_console()
2575 * Set up a console. Called via do_early_param() in init/main.c
2576 * for each "console=" parameter in the boot command line.
2590 * console="" or console=null have been suggested as a way to in console_setup()
2591 * disable console output. Use ttynull that has been created in console_setup()
2602 /* For a DEVNAME:0.0 style console the character device is unknown early */ in console_setup()
2642 __setup("console=", console_setup);
2648 * @options: options for this console
2650 * The last preferred console added will be used for kernel messages
2652 * above to handle user-supplied console arguments; however it can also
2654 * commonly to provide a default console (ie from PROM variables) when
2663 * match_devname_and_update_preferred_console - Update a preferred console
2666 * @name: Name of the corresponding console driver, e.g. "ttyS"
2667 * @idx: Console index, e.g. port number.
2670 * preferred via the console=DEVNAME:0.0 command line option.
2671 * It fills the missing console driver name and console index
2677 * could predict which console driver name and index this device
2695 pr_info("associate the preferred console \"%s\" with \"%s%d\"\n", in match_devname_and_update_preferred_console()
2718 MODULE_PARM_DESC(console_suspend, "suspend console during suspend"
2731 MODULE_PARM_DESC(console_no_auto_verbose, "Disable console loglevel raise to highest on oops/panic/…
2734 * suspend_console - suspend the console subsystem
2740 struct console *con; in suspend_console()
2744 pr_info("Suspending console(s) (use no_console_suspend to debug)\n"); in suspend_console()
2764 struct console *con; in resume_console()
2791 * console_cpu_notify - print deferred console messages after CPU hotplug
2795 * will be printed on the console only if there are CON_ANYTIME consoles.
2816 * console_lock - block the console subsystem from printing
2838 * console_trylock - try to block the console subsystem from printing
2954 * console output.
2996 * has level above the console loglevel. in printk_get_next_message()
3014 * Legacy console printing from printk() caller context does not respect
3020 * console write() callback when legacy printing to avoid false positive
3042 * Used as the printk buffers for non-panic, serialized console printing.
3049 * Print one record for the given console. The record printed is whatever
3050 * record is the next available record for the given console.
3058 * Returns false if the given console has no next record to print, otherwise
3063 static bool console_emit_next_record(struct console *con, bool *handover, int cookie) in console_emit_next_record()
3136 static bool console_emit_next_record(struct console *con, bool *handover, int cookie) in console_emit_next_record()
3160 * Returns true when there was at least one usable console and all messages
3173 struct console *con; in console_flush_all()
3252 * Console drivers are called with interrupts disabled, so in __console_flush_and_unlock()
3255 * console registration path, and should invoke cond_resched() in __console_flush_and_unlock()
3257 * scheduling stall on a slow console leading to RCU stall and in __console_flush_and_unlock()
3282 * console_flush_all() but before unlocking the console. in __console_flush_and_unlock()
3290 * console_unlock - unblock the legacy console subsystem from printing
3293 * the legacy console subsystem.
3295 * While the console_lock was held, console output may have been buffered
3316 * If the console code is currently allowed to sleep, and
3332 struct console *c; in console_unblank()
3338 * console lock, which in particular can be dangerous if in console_unblank()
3353 * Stop console printing because the unblank() callback may in console_unblank()
3354 * assume the console is not within its write() callback. in console_unblank()
3365 * Attempting to trylock the console lock can deadlock in console_unblank()
3400 struct console *c; in __console_rewind_all()
3426 * console_flush_on_panic - flush console content on panic
3438 * Ignore the console lock and flush out the messages. Attempting a in console_flush_on_panic()
3448 * If another context is holding the console lock, in console_flush_on_panic()
3467 * Return the console tty driver structure and its associated index
3471 struct console *c; in console_device()
3477 * other console operations. For example, fg_console is in console_device()
3497 * Prevent further output on the passed console device so that (for example)
3498 * serial drivers can disable console output before suspending a port, and can
3501 void console_stop(struct console *console) in console_stop() argument
3503 __pr_flush(console, 1000, true); in console_stop()
3505 console_srcu_write_flags(console, console->flags & ~CON_ENABLED); in console_stop()
3510 * be able to see that this console is disabled so that (for example) in console_stop()
3518 void console_start(struct console *console) in console_start() argument
3524 console_srcu_write_flags(console, console->flags | CON_ENABLED); in console_start()
3525 is_nbcon = console->flags & CON_NBCON; in console_start()
3537 nbcon_kthread_wake(console); in console_start()
3541 __pr_flush(console, 1000, true); in console_start()
3546 static int unregister_console_locked(struct console *console);
3556 struct console *con; in legacy_kthread_should_wakeup()
3631 * It is important that console printing threads are scheduled in legacy_kthread_create()
3648 struct console *con; in printk_kthreads_shutdown()
3681 struct console *con; in printk_kthreads_check_locked()
3710 * Printer threads cannot be started as long as any boot console is in printk_kthreads_check_locked()
3712 * registers between boot console code and regular console code. in printk_kthreads_check_locked()
3714 * an nbcon console is registered. in printk_kthreads_check_locked()
3755 pr_info("debug: skip boot console de-registration.\n"); in keep_bootcon_setup()
3762 static int console_call_setup(struct console *newcon, char *options) in console_call_setup()
3769 /* Synchronize with possible boot console. */ in console_call_setup()
3779 * the newly registered console with any of the ones selected
3786 static int try_enable_preferred_console(struct console *newcon, in try_enable_preferred_console()
3795 /* Console not yet initialized? */ in try_enable_preferred_console()
3836 /* Try to enable the console unconditionally */
3837 static void try_enable_default_console(struct console *newcon) in try_enable_default_console()
3851 /* Return the starting sequence number for a newly registered console. */
3852 static u64 get_init_console_seq(struct console *newcon, bool bootcon_registered) in get_init_console_seq()
3854 struct console *con; in get_init_console_seq()
3870 * device as @newcon. Since it is not known which boot console in get_init_console_seq()
3872 * start with the message of the enabled boot console that is in get_init_console_seq()
3877 * Hold the console_lock to stop console printing and in get_init_console_seq()
3878 * guarantee safe access to console->seq. in get_init_console_seq()
3883 * Flush all consoles and set the console to start at in get_init_console_seq()
3926 hlist_entry(console_list.first, struct console, node)
3928 static int unregister_console_locked(struct console *console);
3931 * The console driver calls this routine during kernel initialization
3932 * to register the console printing procedure with printk() and to
3934 * console driver was initialized.
3944 * - As soon as a "real" console is registered, all bootconsoles
3946 * - Once a "real" console is registered, any attempt to register a
3949 void register_console(struct console *newcon) in register_console()
3954 struct console *con; in register_console()
3962 if (WARN(con == newcon, "console '%s%d' already registered\n", in register_console()
3982 * Ensure the nbcon console buffers can be allocated in register_console()
3990 * See if we want to enable this console driver by default. in register_console()
3992 * Nope when a console is preferred by the command line, device in register_console()
3995 * The first real console with tty binding (driver) wins. More in register_console()
3998 * Note that a console with tty binding will have CON_CONSDEV in register_console()
4008 /* See if this console matches one we selected on the command line */ in register_console()
4015 /* printk() messages are not printed to the Braille console. */ in register_console()
4023 * If we have a bootconsole, and are switching to a real console, in register_console()
4024 * don't print everything out again, since when the boot console, and in register_console()
4025 * the real console are the same physical device, it's annoying to in register_console()
4049 * console, it will not be aware of the nbcon synchronization. This in register_console()
4051 * simultaneously if this new console is used for atomic printing in register_console()
4055 * in use while this new console transitions to being registered. in register_console()
4061 * Put this console in the list - keep the in register_console()
4080 * on all contexts being able to see the new console before in register_console()
4084 /* This new console is now registered. */ in register_console()
4091 * By unregistering the bootconsoles after we enable the real console in register_console()
4092 * we get the "console xxx enabled" message on all the consoles - in register_console()
4095 * went to the bootconsole (that they do not see on the real console) in register_console()
4109 /* Changed console list, may require printer threads to start/stop. */ in register_console()
4117 static int unregister_console_locked(struct console *console) in unregister_console_locked() argument
4119 bool use_device_lock = (console->flags & CON_NBCON) && console->write_atomic; in unregister_console_locked()
4124 struct console *c; in unregister_console_locked()
4129 con_printk(KERN_INFO, console, "disabled\n"); in unregister_console_locked()
4131 res = _braille_unregister_console(console); in unregister_console_locked()
4137 if (!console_is_registered_locked(console)) in unregister_console_locked()
4139 else if (console_is_usable(console, console->flags, true)) in unregister_console_locked()
4140 __pr_flush(console, 1000, true); in unregister_console_locked()
4143 console_srcu_write_flags(console, console->flags & ~CON_ENABLED); in unregister_console_locked()
4150 * in use while this console transitions to being unregistered. in unregister_console_locked()
4153 console->device_lock(console, &flags); in unregister_console_locked()
4155 hlist_del_init_rcu(&console->node); in unregister_console_locked()
4158 console->device_unlock(console, flags); in unregister_console_locked()
4162 * If this isn't the last console and it has CON_CONSDEV set, we in unregister_console_locked()
4163 * need to set it on the next preferred console. in unregister_console_locked()
4167 * console has any device attached. Oh well.... in unregister_console_locked()
4169 if (!hlist_empty(&console_list) && console->flags & CON_CONSDEV) in unregister_console_locked()
4174 * must not be able to see this console in the list so that any in unregister_console_locked()
4179 if (console->flags & CON_NBCON) in unregister_console_locked()
4180 nbcon_free(console); in unregister_console_locked()
4184 if (console->exit) in unregister_console_locked()
4185 res = console->exit(console); in unregister_console_locked()
4188 * With this console gone, the global flags tracking registered in unregister_console_locked()
4189 * console types may have changed. Update them. in unregister_console_locked()
4207 /* Changed console list, may require printer threads to start/stop. */ in unregister_console_locked()
4213 int unregister_console(struct console *console) in unregister_console() argument
4218 res = unregister_console_locked(console); in unregister_console()
4225 * console_force_preferred_locked - force a registered console preferred
4226 * @con: The registered console to force preferred.
4230 void console_force_preferred_locked(struct console *con) in console_force_preferred_locked()
4232 struct console *cur_pref_con; in console_force_preferred_locked()
4244 * Delete, but do not re-initialize the entry. This allows the console in console_force_preferred_locked()
4246 * checks), even though it was briefly removed from the console list. in console_force_preferred_locked()
4251 * Ensure that all SRCU list walks have completed so that the console in console_force_preferred_locked()
4252 * can be added to the beginning of the console list and its forward in console_force_preferred_locked()
4267 * Initialize the console device. This is called *early*, so
4282 * set up the console device so that later boot sequences can in console_init()
4286 trace_initcall_level("console"); in console_init()
4302 * module, the real console hasn't registered yet at this point, there will
4303 * be a brief interval in which no messages are logged to the console, which
4308 * get unregistered when the real preferred console is registered.
4313 struct console *con; in printk_late_init()
4351 /* If @con is specified, only wait for that console. Otherwise wait for all. */
4352 static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress) in __pr_flush()
4357 struct console *c; in __pr_flush()
4390 * console->seq. Releasing console_lock flushes more in __pr_flush()
4396 * console could register at any time. Always hold the in __pr_flush()
4464 * Context: Process context. May sleep while acquiring console lock.
4530 * and the console printing of those records has already occurred or is
4543 * console printing in a deferred context
4546 * this context is responsible for console printing those records, but
4547 * the current context is not allowed to perform the console printing.
4548 * Trigger an irq_work context to perform the console printing. This
4894 * Try to obtain lock on console subsystem and replay all