On Wed, Mar 10, 2021 at 18:30:44 +0100, Kevin Wolf wrote: > Am 10.03.2021 um 15:31 hat Paolo Bonzini geschrieben: > > On 10/03/21 15:22, Peter Krempa wrote:
[...] > The keyval parser would create a list if multiple values are given for > the same key. Some care needs to be taken to avoid mixing the magic > list feature with the normal indexed list options. > > The QAPI schema would then use an alternate between 'int' and ['int'], > with the the memory-backend-ram implementation changed accordingly. > > We could consider immediately deprecating the syntax and printing a > warning in the keyval parser when it automatically creates a list from > two values for a key, so that users don't start using this syntax By 'creating a list from two values for a key' you mean: host-nodes=0,host-nodes=1 to be converted into [0, 1] ? > instead of the normal list syntax in other places. We'd probably still > leave the implementation around for -device and other users of the same > magic. There's three options actually that libvirt uses, visible in one our test files [1] For a single value we format: -object memory-backend-ram,id=ram-node0,size=20971520,host-nodes=3,policy=preferred For a contiguous list: -object memory-backend-ram,id=ram-node1,size=676331520,host-nodes=0-7,policy=bind And for an interleaved list: -object memory-backend-ram,id=ram-node2,size=24578621440,host-nodes=1-2,host-nodes=5,host-nodes=7,policy=bind If any of the above is to be deprecated we'll need to adjust our JSON->commandline generator accordignly. Luckily the 'host-nodes' is storeable as a bitmap and the generator is actually modular to allow plugging an array interpretor which actually does the above conversion from a JSON array. So, what is the preferred syntax here? Additionally we might need a witness property to detect when to use the new syntax if basing it on the object-add qapification will not be enough. [1] https://gitlab.com/libvirt/libvirt/-/blob/master/tests/qemuxml2argvdata/numatune-memnode.args