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

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

 



"Michael S. Tsirkin" <mst@xxxxxxxxxx> 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 <mst@xxxxxxxxxx>

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
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux