The following has been changed: - introduce mutex to C serdev tty port controller - introduce a new C serdev API to fix race conditions and simplify rust code. Should also be useful on the C side. - fix race conditions - simplify rust code
Signed-off-by: Markus Probst markus.probst@posteo.de --- Changes in v4: - fix issues reported by Sashiko: - add receive_lock to prevent deadlocks - Link to v3: https://patch.msgid.link/20260930-rust_serdev_probe_refactor-v3-0-d1b6e77135...
Changes in v3: - add mutex - Link to v2: https://patch.msgid.link/20260920-rust_serdev_probe_refactor-v2-0-43b855162f...
Changes in v2: - fix missing memory barriers in serdev apis - use `tty_buffer_restart_work` instead of `tty_flip_buffer_push` - use `tty_buffer_flush_work` instead of exclusively locking the mutex - add `#[inline]` to `PrivateData::driver_data` - remove patches for mutable references - Link to v1: https://patch.msgid.link/20260906-rust_serdev_probe_refactor-v1-0-69cdae0074...
--- Markus Probst (4): tty: serdev: Add mutex lock tty: serdev: Export functions to pause receive_buf callback calls rust: serdev: Replace `active` mutex with receive pause rust: serdev: Simplify callbacks
drivers/tty/serdev/core.c | 54 +++++++++++- drivers/tty/serdev/serdev-ttyport.c | 84 ++++++++++++++++-- include/linux/serdev.h | 8 +- rust/kernel/serdev.rs | 167 ++++++++++++------------------------ 4 files changed, 188 insertions(+), 125 deletions(-) --- base-commit: ec8bf8280261294a9b9b4520414b42704c7f9f6b change-id: 20260905-rust_serdev_probe_refactor-0e2b044354a7