In [0] I introduced explicit locking for resources which are otherwise locked implicit locked by local_bh_disable() and this protections goes away if the lock in local_bh_disable() is removed on PREEMPT_RT. There was a big complained once it came to the locking of XDP related resources during XDP-redirect because it was mostly per-packet and the locking, even not contended, was seen as a problem [1]. Another XDP related problem was that I also touched every NIC-driver using XDP. This complicated the "how to write a NIC driver" further. To solve both problems I was thinking about an alternative and ended up with moving the data structure from per-CPU to per-task on PREEMPT_RT. Instead of adding it to task_struct, I added a pointer there and setup the struct on stack. In my debug build on x86-64 the struct bpf_xdp_storage has 112 bytes and collected the per-CPU ressources. I'm posting here only two patches which replace the XDP redirect part (patches 14 to 24) from the original series. [0] https://lore.kernel.org/all/20231215171020.687342-1-bigeasy@xxxxxxxxxxxxx/ [1] https://lore.kernel.org/all/CAADnVQKJBpvfyvmgM29FLv+KpLwBBRggXWzwKzaCT9U-4bgxjA@xxxxxxxxxxxxxx/ [2] https://lore.kernel.org/all/20231215145059.3b42ee35@xxxxxxxxxx Sebastian