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...
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
...
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...
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 "...
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...
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...
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...
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...
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...
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...
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...
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...