On Mon, Mar 12, 2012 at 06:41:06PM +0100, Andreas Färber wrote: > Am 12.03.2012 17:50, schrieb Eduardo Habkost: > > On Mon, Mar 12, 2012 at 04:49:47PM +0100, Andreas Färber wrote: [...] > >> IMO interpreting an explicit -cpu parameter depending on -M would be > >> wrong. Changing the default CPU based on -M is fine with me. For an > >> explicit argument we would need Westmere-1.0 analog to pc-1.0. Then the > >> user gets what the user asks for, without unexpected magic. > > > > It is not unexpected magic. It would be a documented mechanism: > > "-cpu Nehalem-1.0" and "-cpu Nehalem-1.1" would have the same meaning > > every time, with any machine-type, but "-cpu Nehalem" would be an alias, > > whose meaning depends on the machine-type. > > > > Otherwise we would be stuck with a broken "Nehalem" model forever, and > > we don't want that. > > Not quite what I meant: In light of QOM we should be able to instantiate > a CPU based on its name and optional parameters IMO. No dependency on > the machine, please. An alias sure, but if the user explicitly says -cpu > Nehalem then on 1.1 it should always be an alias to Nehalem-1.1 whether > the machine is -M pc-0.15 or pc. If no -cpu was specified by the user, > then choosing a default of Nehalem-1.0 for pc-1.0 is fine. Just trying > to keep separate things separate here. As Gleb explained, things aren't really separated: "qemu-1.1 -M pc-1.0 -cpu Nehalem" should result in the same machine as "qemu-1.0 -cpu Nehalem", no difference should be visible to the guest. simply make incompatible changes. > > Also keep in mind linux-user. There's no concept of a machine there, but > there's a cpu_copy() function used for forking that tries to re-create > the CPU based on its model. So currently cpu_*_init(env->cpu_model_str) > needs to be able to recreate an identical CPU through the central code > path, without access to a QEMUMachine. So just translate the CPU alias given to "-cpu" to the true CPU model name as soon as possible, at the command-line-handling code, so the rest of the code always see the true CPU model name. After all, the need to make the aliases is a command-line interface compatibility problem, so it makes sense to handle this at the command-line-handling code. -- Eduardo -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list