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()
2444 * Try to acquire and then immediately release the console in vprintk_emit()
2482 static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress);
2494 static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress) { return true; } in __pr_flush()
2499 struct console *early_console;
2524 * @c console was defined by the user on the command line. in set_user_specified()
2528 /* At least one console defined by the user on the command line. */ in set_user_specified()
2543 * We use a signed short index for struct console for device drivers to in __add_preferred_console()
2545 * value is not valid when the console name and index are defined on in __add_preferred_console()
2593 * Set up a console. Called via do_early_param() in init/main.c
2594 * for each "console=" parameter in the boot command line.
2608 * console="" or console=null have been suggested as a way to in console_setup()
2609 * disable console output. Use ttynull that has been created in console_setup()
2620 /* For a DEVNAME:0.0 style console the character device is unknown early */ in console_setup()
2660 __setup("console=", console_setup);
2666 * @options: options for this console
2668 * The last preferred console added will be used for kernel messages
2670 * above to handle user-supplied console arguments; however it can also
2672 * commonly to provide a default console (ie from PROM variables) when
2681 * match_devname_and_update_preferred_console - Update a preferred console
2684 * @name: Name of the corresponding console driver, e.g. "ttyS"
2685 * @idx: Console index, e.g. port number.
2688 * preferred via the console=DEVNAME:0.0 command line option.
2689 * It fills the missing console driver name and console index
2695 * could predict which console driver name and index this device
2713 pr_info("associate the preferred console \"%s\" with \"%s%d\"\n", in match_devname_and_update_preferred_console()
2736 MODULE_PARM_DESC(console_suspend, "suspend console during suspend"
2749 MODULE_PARM_DESC(console_no_auto_verbose, "Disable console loglevel raise to highest on oops/panic/…
2752 * console_suspend_all - suspend the console subsystem
2758 struct console *con; in console_suspend_all()
2762 pr_info("Suspending console(s) (use no_console_suspend to debug)\n"); in console_suspend_all()
2782 struct console *con; in console_resume_all()
2809 * console_cpu_notify - print deferred console messages after CPU hotplug
2813 * will be printed on the console only if there are CON_ANYTIME consoles.
2834 * console_lock - block the console subsystem from printing
2856 * console_trylock - try to block the console subsystem from printing
2972 * console output.
3014 * has level above the console loglevel. in printk_get_next_message()
3032 * Legacy console printing from printk() caller context does not respect
3038 * console write() callback when legacy printing to avoid false positive
3060 * Used as the printk buffers for non-panic, serialized console printing.
3067 * Print one record for the given console. The record printed is whatever
3068 * record is the next available record for the given console.
3076 * Returns false if the given console has no next record to print, otherwise
3081 static bool console_emit_next_record(struct console *con, bool *handover, int cookie) in console_emit_next_record()
3154 static bool console_emit_next_record(struct console *con, bool *handover, int cookie) in console_emit_next_record()
3178 * Returns true when there was at least one usable console and all messages
3191 struct console *con; in console_flush_all()
3270 * Console drivers are called with interrupts disabled, so in __console_flush_and_unlock()
3273 * console registration path, and should invoke cond_resched() in __console_flush_and_unlock()
3275 * scheduling stall on a slow console leading to RCU stall and in __console_flush_and_unlock()
3300 * console_flush_all() but before unlocking the console. in __console_flush_and_unlock()
3308 * console_unlock - unblock the legacy console subsystem from printing
3311 * the legacy console subsystem.
3313 * While the console_lock was held, console output may have been buffered
3334 * If the console code is currently allowed to sleep, and
3350 struct console *c; in console_unblank()
3356 * console lock, which in particular can be dangerous if in console_unblank()
3376 * Stop console printing because the unblank() callback may in console_unblank()
3377 * assume the console is not within its write() callback. in console_unblank()
3388 * Attempting to trylock the console lock can deadlock in console_unblank()
3428 struct console *c; in __console_rewind_all()
3454 * console_flush_on_panic - flush console content on panic
3466 * Ignore the console lock and flush out the messages. Attempting a in console_flush_on_panic()
3476 * If another context is holding the console lock, in console_flush_on_panic()
3495 * Return the console tty driver structure and its associated index
3499 struct console *c; in console_device()
3505 * other console operations. For example, fg_console is in console_device()
3525 * Prevent further output on the passed console device so that (for example)
3526 * serial drivers can suspend console output before suspending a port, and can
3529 void console_suspend(struct console *console) in console_suspend() argument
3531 __pr_flush(console, 1000, true); in console_suspend()
3533 console_srcu_write_flags(console, console->flags & ~CON_ENABLED); in console_suspend()
3538 * be able to see that this console is disabled so that (for example) in console_suspend()
3546 void console_resume(struct console *console) in console_resume() argument
3552 console_srcu_write_flags(console, console->flags | CON_ENABLED); in console_resume()
3553 is_nbcon = console->flags & CON_NBCON; in console_resume()
3565 nbcon_kthread_wake(console); in console_resume()
3569 __pr_flush(console, 1000, true); in console_resume()
3574 static int unregister_console_locked(struct console *console);
3584 struct console *con; in legacy_kthread_should_wakeup()
3659 * It is important that console printing threads are scheduled in legacy_kthread_create()
3676 struct console *con; in printk_kthreads_shutdown()
3709 struct console *con; in printk_kthreads_check_locked()
3738 * Printer threads cannot be started as long as any boot console is in printk_kthreads_check_locked()
3740 * registers between boot console code and regular console code. in printk_kthreads_check_locked()
3742 * an nbcon console is registered. in printk_kthreads_check_locked()
3783 pr_info("debug: skip boot console de-registration.\n"); in keep_bootcon_setup()
3790 static int console_call_setup(struct console *newcon, char *options) in console_call_setup()
3797 /* Synchronize with possible boot console. */ in console_call_setup()
3807 * the newly registered console with any of the ones selected
3814 static int try_enable_preferred_console(struct console *newcon, in try_enable_preferred_console()
3823 /* Console not yet initialized? */ in try_enable_preferred_console()
3864 /* Try to enable the console unconditionally */
3865 static void try_enable_default_console(struct console *newcon) in try_enable_default_console()
3879 /* Return the starting sequence number for a newly registered console. */
3880 static u64 get_init_console_seq(struct console *newcon, bool bootcon_registered) in get_init_console_seq()
3882 struct console *con; in get_init_console_seq()
3898 * device as @newcon. Since it is not known which boot console in get_init_console_seq()
3900 * start with the message of the enabled boot console that is in get_init_console_seq()
3905 * Hold the console_lock to stop console printing and in get_init_console_seq()
3906 * guarantee safe access to console->seq. in get_init_console_seq()
3911 * Flush all consoles and set the console to start at in get_init_console_seq()
3954 hlist_entry(console_list.first, struct console, node)
3956 static int unregister_console_locked(struct console *console);
3959 * The console driver calls this routine during kernel initialization
3960 * to register the console printing procedure with printk() and to
3962 * console driver was initialized.
3972 * - As soon as a "real" console is registered, all bootconsoles
3974 * - Once a "real" console is registered, any attempt to register a
3977 void register_console(struct console *newcon) in register_console()
3982 struct console *con; in register_console()
3990 if (WARN(con == newcon, "console '%s%d' already registered\n", in register_console()
4010 * Ensure the nbcon console buffers can be allocated in register_console()
4018 * See if we want to enable this console driver by default. in register_console()
4020 * Nope when a console is preferred by the command line, device in register_console()
4023 * The first real console with tty binding (driver) wins. More in register_console()
4026 * Note that a console with tty binding will have CON_CONSDEV in register_console()
4036 /* See if this console matches one we selected on the command line */ in register_console()
4043 /* printk() messages are not printed to the Braille console. */ in register_console()
4051 * If we have a bootconsole, and are switching to a real console, in register_console()
4052 * don't print everything out again, since when the boot console, and in register_console()
4053 * the real console are the same physical device, it's annoying to in register_console()
4077 * console, it will not be aware of the nbcon synchronization. This in register_console()
4079 * simultaneously if this new console is used for atomic printing in register_console()
4083 * in use while this new console transitions to being registered. in register_console()
4089 * Put this console in the list - keep the in register_console()
4108 * on all contexts being able to see the new console before in register_console()
4112 /* This new console is now registered. */ in register_console()
4119 * By unregistering the bootconsoles after we enable the real console in register_console()
4120 * we get the "console xxx enabled" message on all the consoles - in register_console()
4123 * went to the bootconsole (that they do not see on the real console) in register_console()
4137 /* Changed console list, may require printer threads to start/stop. */ in register_console()
4145 static int unregister_console_locked(struct console *console) in unregister_console_locked() argument
4147 bool use_device_lock = (console->flags & CON_NBCON) && console->write_atomic; in unregister_console_locked()
4152 struct console *c; in unregister_console_locked()
4157 con_printk(KERN_INFO, console, "disabled\n"); in unregister_console_locked()
4159 res = _braille_unregister_console(console); in unregister_console_locked()
4165 if (!console_is_registered_locked(console)) in unregister_console_locked()
4167 else if (console_is_usable(console, console->flags, true)) in unregister_console_locked()
4168 __pr_flush(console, 1000, true); in unregister_console_locked()
4171 console_srcu_write_flags(console, console->flags & ~CON_ENABLED); in unregister_console_locked()
4178 * in use while this console transitions to being unregistered. in unregister_console_locked()
4181 console->device_lock(console, &flags); in unregister_console_locked()
4183 hlist_del_init_rcu(&console->node); in unregister_console_locked()
4186 console->device_unlock(console, flags); in unregister_console_locked()
4190 * If this isn't the last console and it has CON_CONSDEV set, we in unregister_console_locked()
4191 * need to set it on the next preferred console. in unregister_console_locked()
4195 * console has any device attached. Oh well.... in unregister_console_locked()
4197 if (!hlist_empty(&console_list) && console->flags & CON_CONSDEV) in unregister_console_locked()
4202 * must not be able to see this console in the list so that any in unregister_console_locked()
4207 if (console->flags & CON_NBCON) in unregister_console_locked()
4208 nbcon_free(console); in unregister_console_locked()
4212 if (console->exit) in unregister_console_locked()
4213 res = console->exit(console); in unregister_console_locked()
4216 * With this console gone, the global flags tracking registered in unregister_console_locked()
4217 * console types may have changed. Update them. in unregister_console_locked()
4235 /* Changed console list, may require printer threads to start/stop. */ in unregister_console_locked()
4241 int unregister_console(struct console *console) in unregister_console() argument
4246 res = unregister_console_locked(console); in unregister_console()
4253 * console_force_preferred_locked - force a registered console preferred
4254 * @con: The registered console to force preferred.
4258 void console_force_preferred_locked(struct console *con) in console_force_preferred_locked()
4260 struct console *cur_pref_con; in console_force_preferred_locked()
4272 * Delete, but do not re-initialize the entry. This allows the console in console_force_preferred_locked()
4274 * checks), even though it was briefly removed from the console list. in console_force_preferred_locked()
4279 * Ensure that all SRCU list walks have completed so that the console in console_force_preferred_locked()
4280 * can be added to the beginning of the console list and its forward in console_force_preferred_locked()
4295 * Initialize the console device. This is called *early*, so
4315 * set up the console device so that later boot sequences can in console_init()
4319 trace_initcall_level("console"); in console_init()
4335 * module, the real console hasn't registered yet at this point, there will
4336 * be a brief interval in which no messages are logged to the console, which
4341 * get unregistered when the real preferred console is registered.
4346 struct console *con; in printk_late_init()
4384 /* If @con is specified, only wait for that console. Otherwise wait for all. */
4385 static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress) in __pr_flush()
4390 struct console *c; in __pr_flush()
4423 * console->seq. Releasing console_lock flushes more in __pr_flush()
4429 * console could register at any time. Always hold the in __pr_flush()
4497 * Context: Process context. May sleep while acquiring console lock.
4563 * and the console printing of those records has already occurred or is
4576 * console printing in a deferred context
4579 * this context is responsible for console printing those records, but
4580 * the current context is not allowed to perform the console printing.
4581 * Trigger an irq_work context to perform the console printing. This
4927 * Try to obtain lock on console subsystem and replay all