Here is my progress update since the last report. Over the past ~2 weeks, I have been completing and hardening the host-side eBPF infrastructure, and establishing the host-to-guest shared memory communication channel.
eBPF host infrastructure (continued from deliverable 1): Extended register_vm.c to dynamically allocate memory for QMP results and accept the number of vCPUs as an argument, enabling correct registration of VMs with varying vCPU counts. Added a VM cleanup utility (cleanup) that removes per-VM entries from the host bpf maps. Raised the CAS upper limit in create_maps.bpf.c from 8 to 24, as the original value was too small under high contention and caused dropped samples. Renamed BPF program entry points to be more intuitive across .bpf.c files and their corresponding loaders, fixing mismatches that caused loader failures. Fixed bpf-gcc compatibility in the timer BPF program by replacing unsupported #pragma directives with bpf-gcc compatible equivalents. Added an OpenMP thread registration BPF program and loader on the guest side (ebpf/guest), enabling tracking of OMP thread . Host-to-guest shared memory: Integrated pvsched-shmem (host ivshmem kernel module) into the VM creation flow, setting up the ivshmem backend device before QEMU launches. Consolidated all host eBPF programs under pvsched-ebpf/host/ and updated all scripts to reflect the new directory layout. My next target is to validate the full end-to-end pipeline: the guest reading host phantom-averages from ivshmem and using it to adjust the DoP. Best Regards, Nchang Roy
