Posts by stjepan

@stjepan

Stjepan Poljak

Senior Linux Systems and Platform Security Engineer with 7+ years of experience ...
Croatia poljak-engineering.com Joined June 2026
457 Points • 31 Badges • 10 Connections • 10 Followers • 15 Following

Posts by stjepan

stjepan • • in Articles • 11 min read
Motivation I am not a data scientist/engineer, but I wanted to do a little experiment on NVIDIA Cubin binary code. I recalled my colleague's thesis on Data Clustering and wondered what would actually happen if we tried something like that on an NVI...
post-cover-30488
stjepan • • in Articles • 2 min read
Motivation My Rust KVM project now being able to boot Linux on ARM64, I decided to try and boot Linux on x86. I have been trying in the past to set up the boot procedure via bootparams struct. At the time it was a lot more complex and now I wanted ...
post-cover-28620
stjepan • • in Articles • 4 min read
Motivation In the previous article../nvidia-reverse-engineer-gpu-code I have started reverse-engineering a simple CUDA binary by modifying the value of a pointer variable. After identifying where the value was stored and successfully running the m...
post-cover-28618
stjepan • • in Articles • 9 min read
Recap In the previous article../kvm-rust-arm-linux-part1 I got ARM64 Linux as far as executing inside my Rust KVM hypervisor. I still couldn't actually interact with the guest, though: I had no working console. This article is about getting from "...
stjepan • • in Articles • 4 min read
Motivation For quite a while I wanted to find out how NVIDIA really works under the hood. One of the greatest unknowns for me was how GPU code is compiled, packaged and loaded. So I accepted my own challenge: let's try and decode machine code runni...
post-cover-26347
stjepan • • in Articles • 5 min read
Motivation The time has come: the big test. I got some simple binaries running on my Rust KVM hypervisor at this point I am thinking about giving it a proper name. The next thing has to be Linux. For this series I will show how to actually boot Lin...
post-cover-26346
stjepan • • in Articles • 3 min read
Recap In the previous article../kvm-rust-arm-part1 we ported the register handling of my Rust KVM hypervisor from x86 to ARM64. By tracing QEMU with strace and inspecting the Linux headers, we discovered that ARM64 accesses CPU state through the KV...
post-cover-23276
stjepan • • in Articles • 4 min read
Introduction This is a follow-up to my KVM in Rust series where I showed how to use strace and GDB to reverse-engineer QEMU/KVM and reimplement pieces of it in my own hypervisor in Rust. So far this was done on a modern x86 CPU. This time we'll see...
post-cover-22243
stjepan • • in Articles • 9 min read
Recap This is a continuation of Part 2../kvm-rust-part2 of KVM in Rust series, where we successfully set up a memory region for our guest VM. Now we will see how to proceed further and run a very simple binary in our hypervisor. Loading the binary...
post-cover-21481
stjepan • • in Articles • 5 min read
Recap This is a continuation of my previous article../kvm-rust-part1 which dealt with reverse-engineering QEMU with strace to learn how KVM works. Now it's time to try and follow the steps we got from the strace logs to build our own KVM-based virt...
post-cover-20611
stjepan • • in Articles • 5 min read
Motivation I work with virtual machines in QEMU/KVM environment a lot. In order to debug, optimize and customize the VMs requires an in-depth knowledge of both QEMU and KVM, the Linux kernel virtualization subsystem that exposes hardware virtualiza...
post-cover-20315
stjepan • • in Articles • 4 min read
A bug in my operating system During a recent visit to my wife's family in Sarajevo, I decided to revisit my hobby operating system in QEMU. I discovered that the boot process consistently froze while printing the BIOS memory map. What initially loo...
post-cover-20314
chevron_left