From: "Antonino A. Daplas" To enable this feature, CONFIG_VT_HW_CONSOLE_BINDING must be set to 'y'. This feature will default to 'n' to minimize users accidentally corrupting their virtual terminals. Signed-off-by: Antonino Daplas Signed-off-by: Andrew Morton --- drivers/char/Kconfig | 17 ++++++++++++++++ drivers/char/vt.c | 43 +++++++++++++++++++++++++---------------- 2 files changed, 44 insertions(+), 16 deletions(-) diff -puN drivers/char/Kconfig~vt-binding-make-vt-binding-a-kconfig-option drivers/char/Kconfig --- a/drivers/char/Kconfig~vt-binding-make-vt-binding-a-kconfig-option +++ a/drivers/char/Kconfig @@ -62,6 +62,23 @@ config HW_CONSOLE depends on VT && !S390 && !UML default y +config VT_HW_CONSOLE_BINDING + bool "Support for binding and unbinding console drivers" + depends on HW_CONSOLE + default n + ---help--- + The virtual terminal is the device that interacts with the physical + terminal through console drivers. On these systems, at least one + console driver is loaded. In other configurations, additional console + drivers may be enabled, such as the framebuffer console. If more than + 1 console driver is enabled, setting this to 'y' will allow you to + select the console driver that will serve as the backend for the + virtual terminals. + + See for more + information. For framebuffer console users, please refer to + . + config SERIAL_NONSTANDARD bool "Non-standard serial port support" ---help--- diff -puN drivers/char/vt.c~vt-binding-make-vt-binding-a-kconfig-option drivers/char/vt.c --- a/drivers/char/vt.c~vt-binding-make-vt-binding-a-kconfig-option +++ a/drivers/char/vt.c @@ -2691,22 +2691,6 @@ int __init vty_init(void) static struct class *vtconsole_class; -static int con_is_graphics(const struct consw *csw, int first, int last) -{ - int i, retval = 0; - - for (i = first; i <= last; i++) { - struct vc_data *vc = vc_cons[i].d; - - if (vc && vc->vc_mode == KD_GRAPHICS) { - retval = 1; - break; - } - } - - return retval; -} - static int bind_con_driver(const struct consw *csw, int first, int last, int deflt) { @@ -2808,6 +2792,23 @@ err: return retval; }; +#ifdef CONFIG_VT_HW_CONSOLE_BINDING +static int con_is_graphics(const struct consw *csw, int first, int last) +{ + int i, retval = 0; + + for (i = first; i <= last; i++) { + struct vc_data *vc = vc_cons[i].d; + + if (vc && vc->vc_mode == KD_GRAPHICS) { + retval = 1; + break; + } + } + + return retval; +} + static int unbind_con_driver(const struct consw *csw, int first, int last, int deflt) { @@ -2977,6 +2978,16 @@ static int vt_unbind(struct con_driver * err: return 0; } +#else +static inline int vt_bind(struct con_driver *con) +{ + return 0; +} +static inline int vt_unbind(struct con_driver *con) +{ + return 0; +} +#endif /* CONFIG_VT_HW_CONSOLE_BINDING */ static ssize_t store_bind(struct class_device *class_device, const char *buf, size_t count) _