On 9/17/21 2:54 PM, David Hildenbrand wrote: > On 15.09.21 13:07, Michal Prívozník wrote: >> On 9/14/21 3:05 PM, David Hildenbrand wrote: >>> On 13.09.21 16:52, Michal Privoznik wrote: >>>> Nothing special is happening here. All important changes were >>>> done when for 'virtio-pmem' (adjusting the code to put virtio >>>> memory on PCI bus, generating alias using >>>> qemuDomainDeviceAliasIndex(). The only bit that might look >>>> suspicious is no prealloc for virtio-mem. But if you think about >>>> it, the whole purpose of this device is to change amount of >>>> memory exposed to guest on the fly. There is no point in locking >>>> the whole backend in memory. >>> >>> Do I understand correctly that we'll always try setting "reserve=off", >>> and "prealloc=off"? That would be awesome :) >> >> prealloc=off would be set (almost) unconditionally for all >> memory-backend-* objects that are associated with virtio-mem device. And >> if QEMU is new enough to have .reserve attribute then reserve=off is set >> too. >> > > Ah, perfect. > >>> >>> I do wonder if we want to warn or bail out if "priv->memPrealloc" is set >>> but we are temporarily not able to support it -- as discussed, because >>> virtio-mem in QEMU yet has to be taught about it. >> >> priv->memPrealloc might not be what you think it is. The fact whether >> immediate allocation was requested is stored in def->mem.allocation; and >> priv->memPrealloc is just there to track whether -mem-prealloc what >> already put onto (paritally) generated cmd line and thus the rest of >> generators must refrain from setting prealloc=on. >> >> Codewise speaking, if you'd look at qemuBuildCommandLine() (this is >> where cmd line generation happens) then you'd see >> qemuBuildMemCommandLine() being called first and only after that >> qemuBuildMemoryDeviceCommandLine() being called second. >> >> The former is responsible for generating generic memory for guest (e.g. >> -m XX -mem-prealloc -mem-path ... which is the old style, nowadays a >> combination of -machine memory-backend= + -object memory-backend-* is >> generated). >> >> Long story short, if priv->memPrealloc isn't true at this point, then >> libvirt doesn't have to set prealloc=off explicitly, because off is the >> default. > > That makes sense. Yet I wonder if we should warn that preallocation is > currently not supported for virtio-mem and will be ignored. Your > decision :) We could do that, yes. Let me respin the series with that change - these patches don't apply cleanly anymore anyway. Should a similar warning be produced when hugepages are configured? Michal