On 06/15/20 17:02, Philippe Mathieu-Daudé wrote: > On 6/15/20 4:45 PM, Gerd Hoffmann wrote: >> Hi, >> >>>> I can explain the rationale for that change, but I'm not sure of the >>>> answer to your question. That changes makes sure that the fw_cfg data >>>> remains exactly the same even on newer versions of qemu if the machine >>>> is set the same. This way you can do migrations to newer qemu versions >>>> and anything using fw_cfg won't get confused because the data changes. >>>> >>>> The reason that change was so complex was preserving the order for >>>> migrating from older versions. >>>> >>>> This is only about migration. I'm not sure what gen_id is, but if it's >>>> migrated, it better be future proof. >>> >>> Whenever introducing a new fw_cfg file (*any* new named file), how do we >>> decide whether we need fw_cfg_set_order_override()? >> >> The whole point of the sorting is to make sure the fw_cfg directory >> listing entry (FW_CFG_FILE_DIR) is stable and doesn't change underneath >> the guest when it gets live-migrated. >> >> That sorting was added in qemu 2.6, to make sure things don't chance by >> accident in case the initialization order changes. Now you've got a >> problem when you migrate from qemu 2.5 (+older) to qemu 2.6 (+newer), >> because 2.5 has the entries in initialization order and 2.6 has the >> entries in alphabetical order. To deal with that machine types for 2.5 >> & older keep the old sort order. This is the reason why >> legacy_fw_cfg_order exists. >> >> For new features and files you can completely ignore the whole legacy >> sorting mess. cross-version live migration works only for features >> supported by both qemu versions, therefore the legacy sorting is only >> relevant for features & files already supported by qemu 2.5. > > Thanks you Gerd for the whole explanation. I added an entry to > my TODO list to document this, based on your comment (and Corey's).
Yes, please! Apparently, I've been confused by commit bab47d9a75a3 ("Sort the fw_cfg file list", 2016-04-07) before (in January 2018): http://mid.mail-archive.com/5367c8a4-91bd-7712-525d-0a1ed6e6acab@redhat.com (See in particular my question which I believe remains relevant: "is the idea that the same machine type on a new QEMU release may only reorder the additions of the preexistent fw_cfg files across the source code, but must not expose *new* fw_cfg files?" And I think Gerd just answered that above (in the positive), namely, "cross-version live migration works only for features supported by both qemu versions". So indeed we must not have a new fw_cfg file appear in an old machine type on a new QEMU release, without the user explicitly asking for it on the command line.) > I'll address it later, as you confirmed it doesn't impact this > series. That's my understanding too. Thanks for explaining, Gerd! Laszlo