Final-year systems Ph.D. at UCSC and founder at Zettai, building faster data paths for CXL, UCIe, eBPF, heterogeneous accelerators, and occasionally delightfully weird hardware-software combinations.
fn research_no_failure() -> Result<Paper, Error> {
if !cfg!(target_os = "linux") {
return Err(Error::UnsupportedHost);
}
// Boot a playful CXL topology and wait for the paper to become real.
let qemu_args = [
"-smp", "6",
"-m", "16G,slots=4,maxmem=32G",
"-machine", "q35,cxl=on",
"-M", "cxl-fmw.0.targets.0=cxl.1,cxl-fmw.0.size=4G",
"-object", "memory-backend-ram,id=mem0,size=8G",
"-numa", "node,cpus=0-7,memdev=mem0,nodeid=0",
"-object", "memory-backend-ram,id=mem1,size=8G",
"-numa", "node,cpus=8-15,memdev=mem1,nodeid=1",
"-device", "pxb-cxl,bus_nr=12,bus=pcie.0,id=cxl3.1",
"-device", "cxl-rp,port=0,bus=cxl.1,id=root_port13,chassis=0,slot=2",
"-device", "cxl-type3,bus=root_port13,memdev=cxl-mem1,lsa=cxl-lsa1,id=cxl-mem0",
"-device", "cxl-type2,bus=root_port14,virtio-gpu-cxl,id=gpu0,gpudev=gpudev0",
"-device", "cxl-type1,bus=root_port15,virtio-crypto-cxl,id=crypto0,cryptodev=cryptodev0",
];
let output = Command::new("qemu-system-x86_64")
.args(qemu_args)
.output()?;
let paper = Paper::new(output);
while !paper.is_valid() {
unsafe {
asm!(
"clflush [{ptr}]",
ptr = in(reg) paper.iter(),
options(nostack, preserves_flags)
);
}
core::sync::atomic::fence(core::sync::atomic::Ordering::SeqCst);
}
Ok(paper)
}