Stefan Hajnoczi
Open source and virtualization blog
- Posts
- 133 from 21 Feb 2011 to 10 Jan 2026
- Posting
- monthly (7 in the last year)
- Kind
- personal blog
- Feed
- https://blog.vmsplice.net/feeds/posts/default
2026 6
- Building a virtio-serial FPGA device (Part 4): Virtqueue processing
- Building a virtio-serial FPGA device (Part 6): Writing the RISC-V firmware
- Building a virtio-serial FPGA device (Part 5): UART receiver and transmitter
- Building a virtio-serial FPGA device (Part 3): virtio-serial device design
- Building a virtio-serial FPGA device (Part 2): MMIO registers, DMA, and interrupts
- Building a virtio-serial FPGA device (Part 1): Overview
2025 3
2024 6
- Video and slides available for "IOThread Virtqueue Mapping" talk at KVM Forum 2024
- Where are the Supply Chain Safe Programming Languages?
- How to access libvirt domains in KubeVirt
- Key-Value Stores: The Foundation of File Systems and Databases
- QEMU AioContext removal and how it was done
- Storage literature notes on free space management and snapshots
2023 7
- Upcoming talk: "Trust, confidentiality, and hardening: the virtio lessons" at LPC 2023
- How nostr could enable peer-to-peer apps
- libblkio 1.3.0 is out
- How to debug stuck VIRTIO devices in QEMU
- Writing a C library in Rust
- Video and slides available for "vhost-user-blk: a fast userspace block I/O interface"
- Speaking at FOSDEM '23 about "vhost-user-blk: A fast userspace block I/O interface"
2022 6
2021 12
- How to add debuginfo to perf(1)
- Peer-to-peer applications with Urbit
- A new approach to usermode networking with passt
- KVM Forum 2021 Highlights
- Slides available for "Bring Your Own Virtual Devices: Frameworks for Software and Hardware Device Virtualization"
- My performance benchmarking workflow (2021)
- Learning programming languages
- Overcoming fear of public communication in open source
- Milestone Systems: Software that changes how things are done
- Video and slides available for "The Evolution of File Descriptor Monitoring in Linux"
- Keeping a clean git commit history
- Why learning the Vim text editor is worth it
2020 20
- Building a git forge using git apps
- Understanding Peer-to-Peer Git Forges with Radicle
- Software Freedom Conservancy announces donation matching
- Git Forge Apps: Why git forges are serverless computing providers
- Call for QEMU Advent Calendar 2020 disk images
- Requirements for out-of-process device emulation
- On unifying vhost-user and VIRTIO
- Initial applications for Outreachy December-March internships Sept 20
- Using kcov code coverage with meson
- QEMU Internals: Event loops
- Why QEMU should move from C to Rust
- Rethinking event loop integration for libraries
- Avoiding bitrot in C macros
- How to check VIRTIO feature bits inside Linux guests
- How the Linux VFS, block layer, and device drivers fit together
- virtio-fs has landed in QEMU 5.0!
- An introduction to GDB scripting in Python
- Video for "virtio-fs: a shared file system for virtual machines" at FOSDEM '20 now available
- Why CPU Utilization Metrics are Confusing
- Apply for QEMU Outreachy 2020 May-August internships now!
2019 8
- Visiting the Centre for Computing History
- Software Freedom Conservancy donation matching is back!
- Video and slides available for "virtio-fs: A Shared File System for Virtual Machines"
- Determining why a Linux syscall failed
- What's new in VIRTIO 1.1?
- QEMU accepted into Google Summer of Code and Outreachy 2019
- VIRTIO 1.1 is available for public review until Feb 21st 2019
- mute-thread: a script to mute email threads with notmuch
2018 4
2017 6
2016 6
- 13 years of using Linux
- Making I/O deterministic with blkdebug breakpoints
- Git: Internals of how objects are stored
- Slides available for "NFS over virtio-vsock: Host/guest file sharing for virtual machines"
- QEMU accepted into Google Summer of Code & Outreachy 2016!
- QEMU Internals: How guest physical RAM works
2015 8
- KVM Forum 2015 slides are available!
- virtio-vsock: Zero-configuration host/guest communication
- Asynchronous file I/O on Linux: Plus ça change
- Tracing Linux kernel function entries/returns
- QEMU participating in Outreachy
- QEMU accepted in Google Summer of Code 2015!
- Slides posted for "KVM Architecture Overview: 2015 Edition"
- Slides posted for "Observability in KVM: Troubleshooting virtual machines"
2014 5
2013 7
2012 3
2011 26
- QEMU 2011 Year in Review
- Pictures from the Computer History Museum
- Preparing and storing patch revisions as git tags using git-publish
- Enhanced VMDK support now in QEMU
- How to share files instantly between virtual machines and host
- QEMU Internals: vhost architecture
- KVM Forum 2011 Highlights
- My KVM Architecture guest post is up at Virtualization@IBM
- LinuxCon Japan 2011 KVM highlights
- KVM Slides from Red Hat Summit 2011
- How to capture VM network traffic using qemu -net dump
- KVM-Autotest Install Fest on April 14
- How to pass QEMU command-line options through libvirt
- How to use perf-probe
- Best practices and tuning tips for KVM
- How to access the QEMU monitor through libvirt
- QEMU.org accepted for Google Summer of Code 2011
- How to write trace analysis scripts for QEMU
- QEMU Internals: Big picture overview
- How to automatically run checkpatch.pl when developing QEMU
- QEMU Internals: Overall architecture and threading model
- Should I use QEMU or KVM?
- Advice for students applying to Google Summer of Code
- How to access virtual machine image files from the host
- Observability using QEMU tracing
- Near instant kernel development cycle with KVM