qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCHv4 2/4] pc: refactor compat code


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCHv4 2/4] pc: refactor compat code
Date: Wed, 29 Aug 2012 09:49:39 -0500
User-agent: Notmuch/0.13.2+93~ged93d79 (http://notmuchmail.org) Emacs/23.3.1 (x86_64-pc-linux-gnu)

"Michael S. Tsirkin" <address@hidden> writes:

> In preparation to adding PV EOI migration for 1.2,
> trivially refactor some some compat code
> to make it easier to add version specific
> cpuid tweaks.
>
> Signed-off-by: Michael S. Tsirkin <address@hidden>

How I'd like to do this for 1.3 is to have CPU's have properties and to
use global properties to enable/disable the feature.

We really want machine compatibility to be described entirely by global
properties because in the long term, this allows downstreams to define
their own machine types without hacking QEMU directly.

Most of the patches necessary to do this are already on the list.  We
should be able to merge it all very shortly after 1.3 opens up.

Regards,

Anthony Liguori

> ---
>  hw/pc_piix.c | 44 ++++++++++++++++++++++++++++++++++++--------
>  1 file changed, 36 insertions(+), 8 deletions(-)
>
> diff --git a/hw/pc_piix.c b/hw/pc_piix.c
> index a771d79..008d42f 100644
> --- a/hw/pc_piix.c
> +++ b/hw/pc_piix.c
> @@ -369,6 +369,22 @@ static QEMUMachine pc_machine_v1_2 = {
>      .default_machine_opts = KVM_MACHINE_OPTIONS,
>  };
>  
> +static void pc_machine_v1_1_compat(void)
> +{
> +}
> +
> +static void pc_init_pci_v1_1(ram_addr_t ram_size,
> +                             const char *boot_device,
> +                             const char *kernel_filename,
> +                             const char *kernel_cmdline,
> +                             const char *initrd_filename,
> +                             const char *cpu_model)
> +{
> +    pc_machine_v1_1_compat();
> +    pc_init_pci(ram_size, boot_device, kernel_filename,
> +                kernel_cmdline, initrd_filename, cpu_model);
> +}
> +
>  #define PC_COMPAT_1_1 \
>          {\
>              .driver   = "virtio-scsi-pci",\
> @@ -403,7 +419,7 @@ static QEMUMachine pc_machine_v1_2 = {
>  static QEMUMachine pc_machine_v1_1 = {
>      .name = "pc-1.1",
>      .desc = "Standard PC",
> -    .init = pc_init_pci,
> +    .init = pc_init_pci_v1_1,
>      .max_cpus = 255,
>      .default_machine_opts = KVM_MACHINE_OPTIONS,
>      .compat_props = (GlobalProperty[]) {
> @@ -439,7 +455,7 @@ static QEMUMachine pc_machine_v1_1 = {
>  static QEMUMachine pc_machine_v1_0 = {
>      .name = "pc-1.0",
>      .desc = "Standard PC",
> -    .init = pc_init_pci,
> +    .init = pc_init_pci_v1_1,
>      .max_cpus = 255,
>      .default_machine_opts = KVM_MACHINE_OPTIONS,
>      .compat_props = (GlobalProperty[]) {
> @@ -455,7 +471,7 @@ static QEMUMachine pc_machine_v1_0 = {
>  static QEMUMachine pc_machine_v0_15 = {
>      .name = "pc-0.15",
>      .desc = "Standard PC",
> -    .init = pc_init_pci,
> +    .init = pc_init_pci_v1_1,
>      .max_cpus = 255,
>      .default_machine_opts = KVM_MACHINE_OPTIONS,
>      .compat_props = (GlobalProperty[]) {
> @@ -488,7 +504,7 @@ static QEMUMachine pc_machine_v0_15 = {
>  static QEMUMachine pc_machine_v0_14 = {
>      .name = "pc-0.14",
>      .desc = "Standard PC",
> -    .init = pc_init_pci,
> +    .init = pc_init_pci_v1_1,
>      .max_cpus = 255,
>      .default_machine_opts = KVM_MACHINE_OPTIONS,
>      .compat_props = (GlobalProperty[]) {
> @@ -519,10 +535,22 @@ static QEMUMachine pc_machine_v0_14 = {
>              .value    = stringify(1),\
>          }
>  
> +static void pc_init_pci_v0_13(ram_addr_t ram_size,
> +                             const char *boot_device,
> +                             const char *kernel_filename,
> +                             const char *kernel_cmdline,
> +                             const char *initrd_filename,
> +                             const char *cpu_model)
> +{
> +    pc_machine_v1_1_compat();
> +    pc_init_pci_no_kvmclock(ram_size, boot_device, kernel_filename,
> +                            kernel_cmdline, initrd_filename, cpu_model);
> +}
> +
>  static QEMUMachine pc_machine_v0_13 = {
>      .name = "pc-0.13",
>      .desc = "Standard PC",
> -    .init = pc_init_pci_no_kvmclock,
> +    .init = pc_init_pci_v0_13,
>      .max_cpus = 255,
>      .default_machine_opts = KVM_MACHINE_OPTIONS,
>      .compat_props = (GlobalProperty[]) {
> @@ -560,7 +588,7 @@ static QEMUMachine pc_machine_v0_13 = {
>  static QEMUMachine pc_machine_v0_12 = {
>      .name = "pc-0.12",
>      .desc = "Standard PC",
> -    .init = pc_init_pci_no_kvmclock,
> +    .init = pc_init_pci_v0_13,
>      .max_cpus = 255,
>      .default_machine_opts = KVM_MACHINE_OPTIONS,
>      .compat_props = (GlobalProperty[]) {
> @@ -594,7 +622,7 @@ static QEMUMachine pc_machine_v0_12 = {
>  static QEMUMachine pc_machine_v0_11 = {
>      .name = "pc-0.11",
>      .desc = "Standard PC, qemu 0.11",
> -    .init = pc_init_pci_no_kvmclock,
> +    .init = pc_init_pci_v0_13,
>      .max_cpus = 255,
>      .default_machine_opts = KVM_MACHINE_OPTIONS,
>      .compat_props = (GlobalProperty[]) {
> @@ -616,7 +644,7 @@ static QEMUMachine pc_machine_v0_11 = {
>  static QEMUMachine pc_machine_v0_10 = {
>      .name = "pc-0.10",
>      .desc = "Standard PC, qemu 0.10",
> -    .init = pc_init_pci_no_kvmclock,
> +    .init = pc_init_pci_v0_13,
>      .max_cpus = 255,
>      .default_machine_opts = KVM_MACHINE_OPTIONS,
>      .compat_props = (GlobalProperty[]) {
> -- 
> MST



reply via email to

[Prev in Thread] Current Thread [Next in Thread]