Re: [Qemu-devel] [PATCH v3 0/6] target-i386: Make most CPU models work with enforce out of the box

2014-11-04 Thread Andreas Färber
Am 04.10.2014 um 00:16 schrieb Paolo Bonzini:
 Il 03/10/2014 21:39, Eduardo Habkost ha scritto:
 Changes v2 - v3:
  * None. This is just a rebase against latest qemu.git master (commit 
 b00a0dd)

 Changes v1 - v2:
  * Commit message and comment changes.
  * Update compat code to change pc-*-2.1, not pc-*-2.0.
  * Added patch to disable SVM by default in KVM mode.

 Most of the bits that make enforce breaks were introduced in 2010 by commit
 8560efed6a72a816c0115f41ddb9d79f7ce63f28. The intention behind that commit 
 made
 sense, the only problem is that we can't guarantee guest ABI stability across
 hosts if we simply rely on trimming of CPU features based on host 
 capabilities.

 So, this series remove CPUID bits from the CPU model definitions so they 
 become
 defaults that: 1) won't unexpectly stop working when we start using the
 enforce flag; 2) won't silently break the guest ABI when TCG or KVM start
 supporting new features.

 There's only one non-trivial case left: the qemu32/qemu64 models. The problem
 with them is that we have conflicting expectations about it, from different
 users:

 TCG users expect the default CPU model to contain most TCG-supported features
 (and it makes sense). See, for example, commit
 f1e00a9cf326acc1f2386a72525af8859852e1df.

 KVM users expect the default CPU model to be a conservative choice which will
 work on most host CPUs (and will only contain features that are supported by
 KVM).

 We could solve the qemu32/qemu64 issue by having different defaults for TCG 
 and
 KVM. But we have existing management code (libvirt) that already expects 
 qemu32
 or qemu64 to be the default, and changing the default would break that code. 
 I
 will send an RFC to address that later.

 Cc: Aurelien Jarno aurel...@aurel32.net
 Cc: Paolo Bonzini pbonz...@redhat.com
 Cc: kvm@vger.kernel.org

 Eduardo Habkost (6):
   pc: Create pc_compat_2_1() functions
   target-i386: Rename KVM auto-feature-enable compat function
   target-i386: Disable CPUID_ACPI by default on KVM mode
   target-i386: Remove unsupported bits from all CPU models
   target-i386: Don't enable nested VMX by default
   target-i386: Disable SVM by default in KVM mode

  hw/i386/pc_piix.c | 22 ++
  hw/i386/pc_q35.c  | 18 --
  target-i386/cpu.c | 42 --
  target-i386/cpu.h |  3 ++-
  4 files changed, 64 insertions(+), 21 deletions(-)

 
 Andreas, are you picking up this?

Thanks, applied to qom-cpu:
https://github.com/afaerber/qemu-cpu/commits/qom-cpu

I do still have some comments, but let's get this in first.

Regards,
Andreas

-- 
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 21284 AG Nürnberg
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3 0/6] target-i386: Make most CPU models work with enforce out of the box

2014-10-03 Thread Eduardo Habkost
Changes v2 - v3:
 * None. This is just a rebase against latest qemu.git master (commit b00a0dd)

Changes v1 - v2:
 * Commit message and comment changes.
 * Update compat code to change pc-*-2.1, not pc-*-2.0.
 * Added patch to disable SVM by default in KVM mode.

Most of the bits that make enforce breaks were introduced in 2010 by commit
8560efed6a72a816c0115f41ddb9d79f7ce63f28. The intention behind that commit made
sense, the only problem is that we can't guarantee guest ABI stability across
hosts if we simply rely on trimming of CPU features based on host capabilities.

So, this series remove CPUID bits from the CPU model definitions so they become
defaults that: 1) won't unexpectly stop working when we start using the
enforce flag; 2) won't silently break the guest ABI when TCG or KVM start
supporting new features.

There's only one non-trivial case left: the qemu32/qemu64 models. The problem
with them is that we have conflicting expectations about it, from different
users:

TCG users expect the default CPU model to contain most TCG-supported features
(and it makes sense). See, for example, commit
f1e00a9cf326acc1f2386a72525af8859852e1df.

KVM users expect the default CPU model to be a conservative choice which will
work on most host CPUs (and will only contain features that are supported by
KVM).

We could solve the qemu32/qemu64 issue by having different defaults for TCG and
KVM. But we have existing management code (libvirt) that already expects qemu32
or qemu64 to be the default, and changing the default would break that code. I
will send an RFC to address that later.

Cc: Aurelien Jarno aurel...@aurel32.net
Cc: Paolo Bonzini pbonz...@redhat.com
Cc: kvm@vger.kernel.org

Eduardo Habkost (6):
  pc: Create pc_compat_2_1() functions
  target-i386: Rename KVM auto-feature-enable compat function
  target-i386: Disable CPUID_ACPI by default on KVM mode
  target-i386: Remove unsupported bits from all CPU models
  target-i386: Don't enable nested VMX by default
  target-i386: Disable SVM by default in KVM mode

 hw/i386/pc_piix.c | 22 ++
 hw/i386/pc_q35.c  | 18 --
 target-i386/cpu.c | 42 --
 target-i386/cpu.h |  3 ++-
 4 files changed, 64 insertions(+), 21 deletions(-)

-- 
1.9.3

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 0/6] target-i386: Make most CPU models work with enforce out of the box

2014-10-03 Thread Paolo Bonzini
Il 03/10/2014 21:39, Eduardo Habkost ha scritto:
 Changes v2 - v3:
  * None. This is just a rebase against latest qemu.git master (commit b00a0dd)
 
 Changes v1 - v2:
  * Commit message and comment changes.
  * Update compat code to change pc-*-2.1, not pc-*-2.0.
  * Added patch to disable SVM by default in KVM mode.
 
 Most of the bits that make enforce breaks were introduced in 2010 by commit
 8560efed6a72a816c0115f41ddb9d79f7ce63f28. The intention behind that commit 
 made
 sense, the only problem is that we can't guarantee guest ABI stability across
 hosts if we simply rely on trimming of CPU features based on host 
 capabilities.
 
 So, this series remove CPUID bits from the CPU model definitions so they 
 become
 defaults that: 1) won't unexpectly stop working when we start using the
 enforce flag; 2) won't silently break the guest ABI when TCG or KVM start
 supporting new features.
 
 There's only one non-trivial case left: the qemu32/qemu64 models. The problem
 with them is that we have conflicting expectations about it, from different
 users:
 
 TCG users expect the default CPU model to contain most TCG-supported features
 (and it makes sense). See, for example, commit
 f1e00a9cf326acc1f2386a72525af8859852e1df.
 
 KVM users expect the default CPU model to be a conservative choice which will
 work on most host CPUs (and will only contain features that are supported by
 KVM).
 
 We could solve the qemu32/qemu64 issue by having different defaults for TCG 
 and
 KVM. But we have existing management code (libvirt) that already expects 
 qemu32
 or qemu64 to be the default, and changing the default would break that code. I
 will send an RFC to address that later.
 
 Cc: Aurelien Jarno aurel...@aurel32.net
 Cc: Paolo Bonzini pbonz...@redhat.com
 Cc: kvm@vger.kernel.org
 
 Eduardo Habkost (6):
   pc: Create pc_compat_2_1() functions
   target-i386: Rename KVM auto-feature-enable compat function
   target-i386: Disable CPUID_ACPI by default on KVM mode
   target-i386: Remove unsupported bits from all CPU models
   target-i386: Don't enable nested VMX by default
   target-i386: Disable SVM by default in KVM mode
 
  hw/i386/pc_piix.c | 22 ++
  hw/i386/pc_q35.c  | 18 --
  target-i386/cpu.c | 42 --
  target-i386/cpu.h |  3 ++-
  4 files changed, 64 insertions(+), 21 deletions(-)
 

Andreas, are you picking up this?

Paolo
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html