Hello! I'm Joel and this is my personal website built with Jekyll! I currently work at NVIDIA. My interests are Core Linux Kernel subsystems like scheduler, mm, RCU, tracing, synchronization, memory models and other kernel internals. I also work on the Nova rust GPU driver at NVIDIA full-time. Connect with me on Twitter and LinkedIn. Or, drop me an email at: joel at joelfernandes dot org
Look for my name in the kernel git log to find my upstream kernel patches. Check out my resume for full details of my work experience. I also actively present at conferences, see a list below:
Conference Presentations
- DRM and Nova GPU Driver Update (Kangrejos 2025, Copenhagen)
- Rust for Linux Pain Points (Kangrejos 2025, Copenhagen)
- Make RCU do less to save power (Lazy RCU) (Linux Plumbers Conference 2023)
- Core Scheduling: Taming Hyper-Threads to be secure (Linux Plumbers Conference 2020)
- RCU in 2019 (Kernel Recipes 2019, Paris) - video
- Debugging Real-Time issues in Linux (ELCE 2016, Berlin) - video
- adeb: The better adb shell (Linaro Connect 2018, Vancouver)
- BPFd: Powerful Linux Tracing for Remote targets using eBPF (SCALE16x 2018) - video
- Flattened Image Tree (FIT) (ELC 2013) - video
Publications
- RCU Usage In the Linux Kernel: Eighteen Years Later (ACM SIGOPS Operating Systems Review, August 2020)
- Full and efficient protection of kernel mode from hyper-threading attacks (Defensive publication, August 2020)
- Improving ChromeOS performance with core scheduling (ChromeOS Blog)
- Energy-Efficient Low-latency Audio on Android (Elsevier Journal of Systems and Software, 2019)
- BPFd: Running BCC tools remotely across systems and architectures (LWN.net)
Technical Blog Posts
- CList: Iterating C Linked Lists from Rust in the Kernel (2026-02-08)
- SVM and vectors for the curious (2023-06-25)
- SELinux Debugging on ChromeOS (2023-06-10)
- Understanding Hazard Pointers (2023-04-28)
- PowerPC stack guard false positives in Linux kernel (2023-04-25)
- Getting YouCompleteMe working for kernel development (2023-02-24)
- Figuring out herd7 memory models (2023-01-29)
- Modeling Condition Variables using Formal Methods (2022-12-15)
- On workings of hrtimer's slack time functionality (2022-11-13)
- C++ rvalue references (2020-10-25)
- GUS (Global Unbounded Sequences) (2020-04-24)
- SRCU state double scan (2020-03-06)
- Modeling (lack of) store ordering using PlusCal - and a wishlist (2019-10-18)
- Making sense of scheduler deadlocks in RCU (2019-09-02)
- Dumping User and Kernel stacks on Kernel events (2018-12-22)
- RCU and dynticks-idle mode (2018-06-15)
- Single-stepping the kernel's C code (2018-06-10)
- RCU-preempt: What happens on a context switch (2018-05-10)
- USDT for reliable Userspace event tracing (2018-02-11)
- BPFd- Running BCC tools remotely across systems (2018-01-08)
- ARMv8: flamegraph and NMI support (2017-01-01)
- Ftrace events mechanism (2016-06-19)
- TIF_NEED_RESCHED: why is it needed (2016-03-20)
- Tying 2 voltage sources/signals together (2015-12-25)
- MicroSD card remote switch (2014-06-04)
- Linux Spinlock Internals (2014-05-07)
- Studying cache-line sharing effects on SMP systems (2014-04-24)
- Design of fork followed by exec in Linux (2014-04-23)
Personal Blog Posts
- Test Post (2026-02-08)