On Mon, 10 Oct 2022 11:20:05 -0400 Gregory Price <gregory.pr...@memverge.com> wrote:
> > > > > > Maybe we should consider 2 new options: > > > --persistent-memdevs=pm1 pm2 pm3 > > > --volatile-memdevs=vm1 vm2 vm3 > > > > > > etc, and deprecate --memdev, and go with your array of memdevs idea. > > > > > > I think I could probably whip that up in a day or two. Thoughts? > > > > I wonder if we care to emulate beyond 1 volatile and 1 persistent. > > Sure devices might exist, but if we can exercise all the code paths > > with a simpler configuration, perhaps we don't need to handle the > > more complex ones? > > > > The sticky corner here is Set Partition Info > > CXL r3.0 8.2.9.8.2.1 > > > > Separation between volatile and non volatile is configurable at runtime. > > > > Set Partition Info (Opcode 4101h) > ... snip ... Paritionable capacity is equal to > (total capacity - (volatile-only) - (persistent-only)) > > By definition, volatile backed memory can only contain volatile regions. > That's simple. I guess that's a reasonable model for the QEMU command line. > > For persistent-backed memory, capacity can be chopped up (iif Identify > Memory Device reports Paritition Alignment to be non-zero). > > --persistent-memdev=pmem-backing > --volatile-memdev=vmem-backing > > By default, maybe we should make the entire size of persistent regions > to be persistent-only for the initial prototype. Agreed. Partitioning wasn't high on my todo list though maybe it is for others... > This would let us > merge without support for Set Partition Info. Then add an additional > argument to enable additional argument to set the partition alignment. > > --partitionable-pmem= > : Defaults to 0. If non-zero, up to N XBytes of PMem may be > used as vmem by the operating system at runtime. > > On the CXL tool side we should then see the following output for these > settings: > > --persistent-memdev=pmem0 1GB > --volatile-memdev=vmem0 1GB > --partitionable-pmem=512M > > Capacities: > ---------------- > Total Capacity: 2GB > Volatile Capacity: 1GB > Persistent Capacity: 1GB > Partitionable Capacity: 512MB > Partitioned Memory: 0MB > > Available Memory: > ----------------- > Volatile Memory: 1GB > Persistent Memory: 1GB > > > Then Run something along the lines of: > `cxl partition-pmem 512MB` (or whatever args are needed) > > > Capacities: > ---------------- > Total Capacity: 2GB > Volatile Capacity: 1GB > Persistent Capacity: 1GB > Partitionable Capacity: 512MB > Partitioned Memory: 512MB > > Available Memory: > ----------------- > Volatile Memory: 1.5GB > Persistent Memory: 512MB > > > Thoughts? Looks good to me. Alison, I think you were looking at the partitioning stuff... What do you think of this? Jonathan