Blob Blame Raw
From 6c2f10596f53c29687a64aa78f339e3043850936 Mon Sep 17 00:00:00 2001
From: David Gibson <dgibson@redhat.com>
Date: Wed, 25 Jul 2018 08:36:42 +0100
Subject: [PATCH 03/14] RHEL-8.0: Add pseries-rhel7.6.0-sxxm machine type

RH-Author: David Gibson <dgibson@redhat.com>
Message-id: <20180725083642.11004-1-dgibson@redhat.com>
Patchwork-id: 81501
O-Subject: [RHEL-8.0 qemu-kvm PATCH] RHEL-8.0: Add pseries-rhel7.6.0-sxxm machine type
Bugzilla: 1595501
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
RH-Acked-by: Serhii Popovych <spopovyc@redhat.com>
RH-Acked-by: Thomas Huth <thuth@redhat.com>

For the pseries-rhel7.3.0 .. pseries-rhel7.5.0 machine types we have -sxxm
variants, the only difference being that the -sxxm variants have the
Spectre and Meltdown mitigations available to guests by default.

We'd delayed on adding a similar variant for RHEL 7.6, in the hope that we
might be able to enable the mitigations by default for the ordinary 7.6
machine type.  This requires that updated POWER8 firmware (FW860.51 or
newer) be installed on the host.

The updated firmware was only released late May, and it's not clear how
quickly and widely it will be deployed.  For that reason, plus for
consistency in how things need to be configured across rhel-7.y, we're now
adding a pseries-rhel7.6.0-sxxm machine type.

Upstream status: downstream only
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1595501

Signed-off-by: David Gibson <dgibson@redhat.com>
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
---
 hw/ppc/spapr.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 7de3f07..a61dafd 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -4355,6 +4355,28 @@ static void spapr_machine_rhel760_class_options(MachineClass *mc)
 DEFINE_SPAPR_MACHINE(rhel760, "rhel7.6.0", true);
 
 /*
+ * pseries-rhel7.6.0-sxxm
+ *
+ * pseries-rhel7.6.0 with speculative execution exploit mitigations enabled by default
+ */
+static void spapr_machine_rhel760sxxm_instance_options(MachineState *machine)
+{
+    spapr_machine_rhel760_instance_options(machine);
+}
+
+static void spapr_machine_rhel760sxxm_class_options(MachineClass *mc)
+{
+    sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
+
+    spapr_machine_rhel760_class_options(mc);
+    smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND;
+    smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND;
+    smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD;
+}
+
+DEFINE_SPAPR_MACHINE(rhel760sxxm, "rhel7.6.0-sxxm", false);
+
+/*
  * pseries-rhel7.5.0
  * like SPAPR_COMPAT_2_11 and SPAPR_COMPAT_2_10
  * SPAPR_CAP_HTM already enabled in 7.4
-- 
1.8.3.1