kernel_samsung_a53x/include
Yu-Ting Tseng 8e9a3808d7 BACKPORT: FROMGIT: binder: frozen notification
Frozen processes present a significant challenge in binder transactions.
When a process is frozen, it cannot, by design, accept and/or respond to
binder transactions. As a result, the sender needs to adjust its
behavior, such as postponing transactions until the peer process
unfreezes. However, there is currently no way to subscribe to these
state change events, making it impossible to implement frozen-aware
behaviors efficiently.

Introduce a binder API for subscribing to frozen state change events.
This allows programs to react to changes in peer process state,
mitigating issues related to binder transactions sent to frozen
processes.

Implementation details:
For a given binder_ref, the state of frozen notification can be one of
the followings:
1. Userspace doesn't want a notification. binder_ref->freeze is null.
2. Userspace wants a notification but none is in flight.
   list_empty(&binder_ref->freeze->work.entry) = true
3. A notification is in flight and waiting to be read by userspace.
   binder_ref_freeze.sent is false.
4. A notification was read by userspace and kernel is waiting for an ack.
   binder_ref_freeze.sent is true.

When a notification is in flight, new state change events are coalesced into
the existing binder_ref_freeze struct. If userspace hasn't picked up the
notification yet, the driver simply rewrites the state. Otherwise, the
notification is flagged as requiring a resend, which will be performed
once userspace acks the original notification that's inflight.

See https://r.android.com/3070045 for how userspace is going to use this
feature.

Signed-off-by: Yu-Ting Tseng <yutingtseng@google.com>
Acked-by: Carlos Llamas <cmllamas@google.com>
Link: https://lore.kernel.org/r/20240709070047.4055369-4-yutingtseng@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 363013421
(cherry picked from commit d579b04a52a183db47dfcb7a44304d7747d551e1
 git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
 char-misc-next)
Change-Id: I5dd32abba932ca7d03ae58660143e075ed778b81
[cmllamas: fix merge conflicts due to missing 0567461a7a6e]
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2025-01-19 14:57:12 +01:00
..
acpi
asm-generic
clocksource x86/hyperv: Fix hv tsc page based sched_clock for hibernation 2025-01-15 16:29:52 +01:00
crypto
drm Revert "drm/printer: Allow NULL data in devcoredump printer" 2024-11-24 00:23:06 +01:00
dt-bindings
keys
kunit
kvm
linux hwspinlock: Introduce hwspin_lock_bust() 2025-01-19 14:52:28 +01:00
math-emu
media media: v4l2-core: v4l2-dv-timings: check cvt/gtf result 2024-12-17 13:24:20 +01:00
memory
misc
net Revert "net: tcp: bbrplus for 5.10" 2025-01-17 22:17:46 +01:00
pcmcia
ras
rdma
scsc
scsi
sdp
soc
sound
target
test
trace ANDROID: GKI: add percpu_rwsem vendor hooks 2025-01-19 14:55:30 +01:00
uapi BACKPORT: FROMGIT: binder: frozen notification 2025-01-19 14:57:12 +01:00
variant1/linux
vdso
video
xen