qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] hw/i386/pc: enable PVH only for machine type >=


From: Liam Merwick
Subject: Re: [Qemu-devel] [PATCH] hw/i386/pc: enable PVH only for machine type >= 4.0
Date: Tue, 22 Jan 2019 12:19:57 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0

On 22/01/2019 12:10, Stefano Garzarella wrote:
In order to avoid migration issues, we enable PVH only for
machine type >= 4.0

Suggested-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Stefano Garzarella <address@hidden>

Reviewed-by: Liam Merwick <address@hidden>



---
Based-on: <address@hidden>

  hw/i386/pc.c         | 4 +++-
  hw/i386/pc_piix.c    | 3 +++
  hw/i386/pc_q35.c     | 3 +++
  include/hw/i386/pc.h | 3 +++
  4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 2833b130ba..3be4a06c4f 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1211,7 +1211,8 @@ static void load_linux(PCMachineState *pcms,
           * saving the PVH entry point used by the x86/HVM direct boot ABI.
           * If load_elfboot() is successful, populate the fw_cfg info.
           */
-        if (load_elfboot(kernel_filename, kernel_size,
+        if (pcmc->pvh_enabled &&
+            load_elfboot(kernel_filename, kernel_size,
                           header, pvh_start_addr, fw_cfg)) {
              fclose(f);
@@ -2774,6 +2775,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
      pcmc->acpi_data_size = 0x20000 + 0x8000;
      pcmc->save_tsc_khz = true;
      pcmc->linuxboot_dma_enabled = true;
+    pcmc->pvh_enabled = true;
      assert(!mc->get_hotplug_handler);
      mc->get_hotplug_handler = pc_get_hotpug_handler;
      mc->cpu_index_to_instance_props = pc_cpu_index_to_props;
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 5088e2f492..a51b83e50e 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -440,9 +440,12 @@ DEFINE_I440FX_MACHINE(v4_0, "pc-i440fx-4.0", NULL,
static void pc_i440fx_3_1_machine_options(MachineClass *m)
  {
+    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
+
      pc_i440fx_4_0_machine_options(m);
      m->is_default = 0;
      m->alias = NULL;
+    pcmc->pvh_enabled = false;
      compat_props_add(m->compat_props, hw_compat_3_1, hw_compat_3_1_len);
      compat_props_add(m->compat_props, pc_compat_3_1, pc_compat_3_1_len);
  }
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index b7b7959934..4a175ea50e 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -376,9 +376,12 @@ DEFINE_Q35_MACHINE(v4_0, "pc-q35-4.0", NULL,
static void pc_q35_3_1_machine_options(MachineClass *m)
  {
+    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
+
      pc_q35_4_0_machine_options(m);
      m->default_kernel_irqchip_split = false;
      m->alias = NULL;
+    pcmc->pvh_enabled = false;
      compat_props_add(m->compat_props, hw_compat_3_1, hw_compat_3_1_len);
      compat_props_add(m->compat_props, pc_compat_3_1, pc_compat_3_1_len);
  }
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 0abbe45637..e4e2c1352d 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -133,6 +133,9 @@ struct PCMachineClass {
/* use DMA capable linuxboot option rom */
      bool linuxboot_dma_enabled;
+
+    /* use PVH to load kernels that support this feature */
+    bool pvh_enabled;
  };
#define TYPE_PC_MACHINE "generic-pc-machine"





reply via email to

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