On Wed, 24 Sep 2025 18:33:23 +0800 fanhuang <[email protected]> wrote:
> Hi David, > > I hope this email finds you well. It's been several months since Zhigang last > discussion about the Special Purpose Memory (SPM) implementation in QEMU with > you, and I wanted to provide some background context before presenting the > new patch based on your valuable suggestions. > > Previous Discussion Summary > =========================== > Back in December 2024, we had an extensive discussion regarding my original > patch that added the `hmem` option to `memory-backend-file`. During that > conversation, you raised several important concerns about the design approach: > > Original Approach (December 2024) > ---------------------------------- > - Zhigang's patch: Added `hmem=on` option to `memory-backend-file` > - QEMU cmdline example: > -object > memory-backend-file,size=16G,id=m1,mem-path=/dev/dax0.0,prealloc=on,align=1G,hmem=on > -numa node,nodeid=1,memdev=m1 > > Your Concerns and Suggestions > ----------------------------- > You correctly identified some issues with the original approach: > - Configuration Safety: Users could create problematic configurations like: > -object memory-backend-file,size=16G,id=unused,mem-path=whatever,hmem=on > > - Your Recommendation: You proposed a cleaner approach using NUMA node > configuration: > -numa node,nodeid=1,memdev=m1,spm=on that seems to me a bit backwards, aka it's just a particular case where node would have SPM memory only, which (spm) is not a property of numa node, but rather of memory device attached to it. > Project Context > =============== > To refresh your memory on the use case: > - Objective: Pass `EFI_MEMORY_SP` (Special Purpose Memory) type memory from > host to QEMU virtual machine > - Application: Memory reserved for specific PCI devices (e.g., VFIO-PCI > devices) could you elaborate on this some more /maybe with examples (assume I know nothing about it)? > - Guest Behavior: The SPM memory should be recognized by the guest OS and > claimed by hmem-dax driver > > Complete QEMU Configuration Example: > -object memory-backend-ram,size=8G,id=m0 > -object > memory-backend-file,size=16G,id=m1,mem-path=/dev/dax0.0,prealloc=on,align=1G > -numa node,nodeid=0,memdev=m0 > -numa node,nodeid=1,memdev=m1,spm=on # <-- New approach based on your > suggestion > > New Patch Implementation > ======================== > Following your recommendations, I have completely redesigned the > implementation: > > Key Changes: > 1. Removed `hmem` option from `memory-backend-file` > 2. Added `spm` (special-purpose) option to NUMA node configuration > > I would appreciate your review of the new patch implementation. The design > now follows your suggested approach of using NUMA node configuration rather > than memory backend options, which should resolve the safety and scope issues > we discussed. > Thank you for your time and valuable guidance on this implementation. > > Please note that I'm located in UTC+8 timezone, so there might be some delay > in my responses to your emails due to the time difference. I appreciate your > patience and understanding. > > Best regards, > FangSheng Huang > >
