qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: Markus Armbruster <armbru@redhat.com>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
	"Paul Mackerras" <paulus@samba.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"Alexander Graf" <agraf@suse.com>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] machines and versions - why so many?
Date: Tue, 24 Jun 2014 11:06:54 +1000	[thread overview]
Message-ID: <53A8CF2E.5090403@ozlabs.ru> (raw)
In-Reply-To: <87y4wnejwv.fsf@blackfin.pond.sub.org>

On 06/24/2014 01:16 AM, Markus Armbruster wrote:
> Alexey Kardashevskiy <aik@ozlabs.ru> writes:
> 
>> Hi!
>>
>> I have been hearing recently that we (server PPC) should have more that
>> just one pseries machine in QEMU because this is what everybody else does :)
>>
>> My current understanding is that multiple machines (like
>> pc-i440fx-1.4..2.1, and many others) are needed:
>>
>> 1) for the -nodefaults case when a lot of devices are still created and
>> there is no other way to configure them;
>>
>> in "pseries", only CPU + empty VIO + empty PCI buses are created,
>> everything else can be created explicitly; nothing to tweak;
>>
>> 2) to enable/disable CPUID_EXT_xxx bits (saw in x86);
>>
>> in "pseries", there is a "compat" property on CPU and that seems to be enough;
>>
>> 3) for devices which are created explicitly and for which we want some
>> capabilities be disabled and we do not want to bother about this every time
>> we run QEMU;
>>
>> ok, this one makes some sense for "pseries" to have (and upcoming
>> endianness register on VGA seems to be the case) but it seems that adding a
>> "compat" or "feature" property to the VGA device (and other devices which
>> deal with this kind of compatibility) is still more architecturally correct
>> thing to do, and let libvirt deal with the rest.
>>
>> Since I (almost) always miss the bigger picture, what do I miss now? :) Thanks!
> 
> Actually, the true reasons for versioned machine types are stable guest
> ABI and migration compatibility.
> 
> All the stuff you mentioned above (presence of devices, CPUID bits,
> optional device capabilities) is guest ABI.
> 
> For some machines such as PCs, we want to keep the guest ABI stable.  A
> release freezes the guest ABI.  When we do something that affects it, we
> take care to change only the current, unfrozen ABI, and not the
> previously frozen ABIs.
> 
> Versioned machine types let you pick a guest ABI.  Typical usage is to
> create a guest with the latest machine type, then stick to that machine
> type forever.
> 
> Migration turns "want to keep guest ABI stable" into "must keep guest
> ABI stable", and adds "must keep migration format compatible".  Ensured
> by using the same versioned machine type on source and destination.


As I mentioned in another mail, I am aware of migration :)

It just does not seem right that when we choose some PC version, some
device properties get tweaked, and these are not even devices which are
always present on PC machine (like NEC USB) and this tweak would make
perfect sense for other architectures but it is limited to PC anyway.



> If you don't care for migration, you probably don't need to bother with
> versioned machine types.
> 
> If all you want is configure the board, check out machine options (the
> prop=value,... you can specify in addition to the machine type).
> 


-- 
Alexey

      reply	other threads:[~2014-06-24  1:07 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-23 14:15 [Qemu-devel] machines and versions - why so many? Alexey Kardashevskiy
2014-06-23 14:59 ` Paolo Bonzini
2014-06-23 21:35   ` Alexey Kardashevskiy
2014-06-23 21:41     ` Andreas Färber
2014-06-23 22:33       ` Alexey Kardashevskiy
2014-06-24  5:21         ` Paolo Bonzini
2014-06-24 11:15           ` Andreas Färber
2014-06-24 13:05             ` Alexey Kardashevskiy
2014-06-24 12:38       ` Marcel Apfelbaum
2014-06-23 21:41     ` Peter Maydell
2014-06-24  5:15     ` Paolo Bonzini
2014-06-24  5:37       ` Alexey Kardashevskiy
2014-06-24  8:17         ` Markus Armbruster
2014-06-24  9:10           ` Alexey Kardashevskiy
2014-06-24 11:22           ` Andreas Färber
2014-06-24 12:56             ` Alexey Kardashevskiy
2014-06-23 15:16 ` Markus Armbruster
2014-06-24  1:06   ` Alexey Kardashevskiy [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53A8CF2E.5090403@ozlabs.ru \
    --to=aik@ozlabs.ru \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.com \
    --cc=armbru@redhat.com \
    --cc=paulus@samba.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).