diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2025-10-05 01:57:44 +0300 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2025-10-05 01:57:44 +0300 |
| commit | 5d2f4730bb7550d64c87785f1035d0e641dbc979 (patch) | |
| tree | 1860e48a2a3b37d7b5f68cbb1aa075283646f07a /include | |
| parent | cc07b0a3afc8c15c1308497033453b44f7ccfc49 (diff) | |
| parent | f4abab350840d58d69814c6993736f03ac27df83 (diff) | |
| download | linux-5d2f4730bb7550d64c87785f1035d0e641dbc979.tar.xz | |
Merge tag 'tty-6.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty/serial updates from Greg KH:
"Here are some small updates for tty/serial drivers for 6.18-rc1.
Not many changes overall, just the usual:
- abi cleanups and reworking of the tty functions by Jiri by adding
console lock guard logic
- 8250_platform driver updates
- qcom-geni driver updates
- other minor serial driver updates
- some more vt escape codes added
All of these have been in linux-next for a while with no reported
issues"
* tag 'tty-6.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (43 commits)
tty: serial: fix help message for SERIAL_CPM
serial: 8250: omap: Support wakeup pinctrl state on suspend
dt-bindings: serial: 8250_omap: Add wakeup pinctrl state
serial: max310x: improve interrupt handling
vt: move vc_saved_screen to within tty allocated judgment
Revert "m68k: make HPDCA and HPAPCI bools"
tty: remove redundant condition checks
tty/vt: Add missing return value for VT_RESIZE in vt_ioctl()
vt: remove redundant check on vc_mode in con_font_set()
serial: qcom-geni: Add DFS clock mode support to GENI UART driver
m68k: make HPDCA and HPAPCI bools
tty: n_gsm: Don't block input queue by waiting MSC
serial: qcom-geni: Fix off-by-one error in ida_alloc_range()
serdev: Drop dev_pm_domain_detach() call
serial: sc16is7xx: drop redundant conversion to bool
vt: add support for smput/rmput escape codes
serial: stm32: allow selecting console when the driver is module
serial: 8250_core: fix coding style issue
tty: serial: Modify the use of dev_err_probe()
s390/char/con3270: use tty_port_tty guard()
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/console.h | 2 | ||||
| -rw-r--r-- | include/linux/console_struct.h | 3 | ||||
| -rw-r--r-- | include/linux/serial_core.h | 13 | ||||
| -rw-r--r-- | include/linux/tty_port.h | 14 |
4 files changed, 32 insertions, 0 deletions
diff --git a/include/linux/console.h b/include/linux/console.h index 8f10d0a85bb4..031a58dc2b91 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -666,6 +666,8 @@ void vcs_remove_sysfs(int index); */ extern atomic_t ignore_console_lock_warning; +DEFINE_LOCK_GUARD_0(console_lock, console_lock(), console_unlock()); + extern void console_init(void); /* For deferred console takeover */ diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h index 59b4fec5f254..13b35637bd5a 100644 --- a/include/linux/console_struct.h +++ b/include/linux/console_struct.h @@ -159,6 +159,9 @@ struct vc_data { struct uni_pagedict *uni_pagedict; struct uni_pagedict **uni_pagedict_loc; /* [!] Location of uni_pagedict variable for this console */ u32 **vc_uni_lines; /* unicode screen content */ + u16 *vc_saved_screen; + unsigned int vc_saved_cols; + unsigned int vc_saved_rows; /* additional information is in vt_kern.h */ }; diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 84b4648ead7e..666430b47899 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -788,6 +788,19 @@ static inline void uart_port_unlock_irqrestore(struct uart_port *up, unsigned lo spin_unlock_irqrestore(&up->lock, flags); } +DEFINE_GUARD(uart_port_lock, struct uart_port *, uart_port_lock(_T), uart_port_unlock(_T)); +DEFINE_GUARD_COND(uart_port_lock, _try, uart_port_trylock(_T)); + +DEFINE_GUARD(uart_port_lock_irq, struct uart_port *, uart_port_lock_irq(_T), + uart_port_unlock_irq(_T)); + +DEFINE_LOCK_GUARD_1(uart_port_lock_irqsave, struct uart_port, + uart_port_lock_irqsave(_T->lock, &_T->flags), + uart_port_unlock_irqrestore(_T->lock, _T->flags), + unsigned long flags); +DEFINE_LOCK_GUARD_1_COND(uart_port_lock_irqsave, _try, + uart_port_trylock_irqsave(_T->lock, &_T->flags)); + static inline int serial_port_in(struct uart_port *up, int offset) { return up->serial_in(up, offset); diff --git a/include/linux/tty_port.h b/include/linux/tty_port.h index 332ddb93603e..660c254f1efe 100644 --- a/include/linux/tty_port.h +++ b/include/linux/tty_port.h @@ -270,4 +270,18 @@ static inline void tty_port_tty_vhangup(struct tty_port *port) __tty_port_tty_hangup(port, false, false); } +#ifdef CONFIG_TTY +void tty_kref_put(struct tty_struct *tty); +__DEFINE_CLASS_IS_CONDITIONAL(tty_port_tty, true); +__DEFINE_UNLOCK_GUARD(tty_port_tty, struct tty_struct, tty_kref_put(_T->lock)); +static inline class_tty_port_tty_t class_tty_port_tty_constructor(struct tty_port *tport) +{ + class_tty_port_tty_t _t = { + .lock = tty_port_tty_get(tport), + }; + return _t; +} +#define scoped_tty() ((struct tty_struct *)(__guard_ptr(tty_port_tty)(&scope))) +#endif + #endif |
