On Mon, Sep 26, 2016 at 10:24:55PM +0300, Michael S. Tsirkin wrote: > On Mon, Sep 26, 2016 at 11:01:58AM -0700, Stephen Hemminger wrote: > > I assume that if using Version 1 that the bit will be ignored
Yes, but I will just quote what you just said: what if the guest virtio device is a legacy device? I also gave my reasons in another email why I consistently set this flag: - we have to return all features we support to the guest. We don't know the guest is a modern or legacy device. That means we should claim we support both: VERSION_1 and ANY_LAYOUT. Assume guest is a legacy device and we just set VERSION_1 (the current case), ANY_LAYOUT will never be negotiated. - I'm following the way Linux kernel takes: it also set both features. Maybe, we could unset ANY_LAYOUT when VERSION_1 is _negotiated_? The unset after negotiation I proposed turned out it won't work: the feature is already negotiated; unsetting it only in vhost side doesn't change anything. Besides, it may break the migration as Michael stated below. > Therein lies a problem. If dpdk tweaks flags, updating it > will break guest migration. > > One way is to require that users specify all flags fully when > creating the virtio net device. Like how? By a new command line option? And user has to type all those features? > QEMU could verify that all required > flags are set, and fail init if not. > > This has other advantages, e.g. it adds ability to > init device without waiting for dpdk to connect. > > However, enabling each new feature would now require > management work. How about dpdk ships the list > of supported features instead? > Management tools could read them on source and destination > and select features supported on both sides. That means the management tool would somehow has a dependency on DPDK project, which I have no objection at all. But, is that a good idea? BTW, I'm not quite sure I followed your idea. I mean, how it supposed to fix the ANY_LAYOUT issue here? How this flag will be set for legacy device? --yliu