Exploring CXL Memory: Configuration and Emulation
summary
Hands-on guide to running CXL memory under QEMU shows reproducible steps: use QEMU CXL 2.0 emulation, create type‑3 memory backends (RAM or file for persistent memory), and run with a reserved CFM window; must run a custom kernel with CONFIG_REG_INVALIDATED_TEST and memory hotplug support and cxl create-region required after boot to expose memory to Linux. Emulation cannot measure real bandwidth, needs correct switch/device order for memory interleave, and newer QEMU plus cxl-tool v80 fixes many bugs.
AI-written summary · about
chapters (24)
- 0:00CXL memory and emulation
- 1:06What is CXL
- 4:02Hardware for CXL memory
- 5:07QEMU for CXL emulation
- 7:34CXL emulation use cases
- 10:48CXL emulation prerequisites
- 11:50QEMU CXL hardware components
- 13:14Region and HDM in CXL
- 14:20Guest image for QEMU
- 15:26Linux kernel for CXL
- 16:51CXL command tool
- 17:52Latest QEMU for CXL
- 18:56Simple CXL memory setup
- 20:20Memory backend and CXL device
- 21:46Host bridge and root port
- 22:51Guest address space for CXL
- 23:56Disable hardware acceleration
- 24:40Persistent memory backend
- 25:45Complex CXL switch configs
- 26:29CXL devices in guest
- 27:14Regions for CXL memory
- 29:02Persistent memory regions
- 30:04Interleaved regions in CXL
- 31:09Conclusion
related talks
10mExtMem: Enabling Application-Aware Virtual Memory Management for Data-Intensive...
21mLessons Learned Building a Production Memory-Overcommit Solution
30mLarge-Scale Practice of Persistent Memory in Alibaba Cloud
17mBreak On Through to the Other Side: Pooling Memory Elastically with RamRyder
15mMAC: Metadata Acceleration for Sustainable Performance in Big-Data Systems with CXL DRAM
29mVirtio-(balloon|pmem|mem): Managing Guest Memory
31mDistributing and Running Containers for Wasm-Enabled Environments
43mPromise and Pitfalls of Persistent Memory
