From baa08ba335b8dafaae4fb96952835a048ca21d93 Mon Sep 17 00:00:00 2001
Message-Id: <baa08ba335b8dafaae4fb96952835a048ca21d93.1369899578.git.minovotn@redhat.com>
In-Reply-To: <1d7d27453d05521b09c5b709aa6f00c682ab81dc.1369899578.git.minovotn@redhat.com>
References: <1d7d27453d05521b09c5b709aa6f00c682ab81dc.1369899578.git.minovotn@redhat.com>
From: Laszlo Ersek <lersek@redhat.com>
Date: Wed, 22 May 2013 11:31:12 +0200
Subject: [PATCH 13/15] pvpanic: create pvpanic by default for machine 1.5

RH-Author: Laszlo Ersek <lersek@redhat.com>
Message-id: <1369222273-3298-9-git-send-email-lersek@redhat.com>
Patchwork-id: 51529
O-Subject: [RHEL-6.5 qemu-kvm PATCH v2 8/9] pvpanic: create pvpanic by default for machine 1.5
Bugzilla: 833530
RH-Acked-by: Andrew Jones <drjones@redhat.com>
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-id: f840042f0e1205041f8feaf0d39ca639884f3a00.1366945969.git.hutao@cn.fujitsu.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

RHEL-6 notes:
- manual port of upstream commit 3ab135f3462af4c523a4b5969f9d6c67b2ac427a,
- dropped q35 hunks,
- first machine enabling it is RHEL-6.5,
- our isa_create_simple() doesn't take a bus.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---
 v2:
 - CONFIG_PVPANIC is always defined, no need for the placeholder macro
   [Paolo Bonzini]

 hw/pc.h      |    3 +++
 hw/pc.c      |    7 +++++++
 hw/pvpanic.c |    7 +++++++
 3 files changed, 17 insertions(+), 0 deletions(-)

Signed-off-by: Michal Novotny <minovotn@redhat.com>
---
 hw/pc.c      | 7 +++++++
 hw/pc.h      | 3 +++
 hw/pvpanic.c | 7 +++++++
 3 files changed, 17 insertions(+)

diff --git a/hw/pc.c b/hw/pc.c
index 04c1b70..fefaee0 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -1114,6 +1114,8 @@ static const char *setdef_cpu_model(const char *model_str,
     }
 }
 
+static bool has_pvpanic = true;
+
 /* PC hardware initialisation */
 static void pc_init1(ram_addr_t ram_size,
                      const char *boot_device,
@@ -1442,6 +1444,10 @@ static void pc_init1(ram_addr_t ram_size,
 	extboot_init(info->bdrv, 1);
     }
 
+    if (has_pvpanic) {
+        pvpanic_init();
+    }
+
 #ifdef CONFIG_KVM_DEVICE_ASSIGNMENT
     if (kvm_enabled()) {
         add_assigned_devices(pci_bus, assigned_devices, assigned_devices_index);
@@ -1737,6 +1743,7 @@ static void rhel_common_init(const char *type1_version,
 static void pc_rhel640_compat(void)
 {
     disable_kvm_sep();
+    has_pvpanic = false;
 }
 
 static void pc_rhel630_compat(void)
diff --git a/hw/pc.h b/hw/pc.h
index 8392c5b..f8e6651 100644
--- a/hw/pc.h
+++ b/hw/pc.h
@@ -87,6 +87,9 @@ void *vmmouse_init(void *m);
 #define vmmouse_init(m) do { } while (0)
 #endif
 
+/* pvpanic.c */
+int pvpanic_init(void);
+
 /* pckbd.c */
 
 void i8042_init(qemu_irq kbd_irq, qemu_irq mouse_irq, uint32_t io_base);
diff --git a/hw/pvpanic.c b/hw/pvpanic.c
index bfad31c..821aa23 100644
--- a/hw/pvpanic.c
+++ b/hw/pvpanic.c
@@ -21,6 +21,7 @@
 #include "qemu-log.h"
 
 #include "hw/fw_cfg.h"
+#include "hw/pc.h"
 
 /* The bit of supported pv event */
 #define PVPANIC_F_PANICKED      0
@@ -90,6 +91,12 @@ static int pvpanic_isa_init(ISADevice *dev)
     return 0;
 }
 
+int pvpanic_init(void)
+{
+    isa_create_simple("pvpanic");
+    return 0;
+}
+
 static ISADeviceInfo pvpanic_isa_info = {
     .qdev.name     = "pvpanic",
     .qdev.size     = sizeof(PVPanicState),
-- 
1.7.11.7

