qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@kaod.org>
To: qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
	David Gibson <david@gibson.dropbear.id.au>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Greg Kurz <groug@kaod.org>
Cc: "Cédric Le Goater" <clg@kaod.org>
Subject: [Qemu-devel] [PATCH v2 10/19] spapr: introduce a 'xive_exploitation' boolean to enable XIVE
Date: Sat,  9 Dec 2017 09:43:29 +0100	[thread overview]
Message-ID: <20171209084338.29395-11-clg@kaod.org> (raw)
In-Reply-To: <20171209084338.29395-1-clg@kaod.org>

The XIVE exploitation interrupt mode will be enabled for newer
machines and disabled for older ones. Also provide a command line
machine option to switch XIVE off on newer machines if needed.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 hw/intc/spapr_xive.c   | 10 ++++++----
 hw/ppc/spapr.c         | 35 +++++++++++++++++++++++++++++++++++
 include/hw/ppc/spapr.h |  1 +
 3 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c
index 38e1f569ea82..bf30edc87bee 100644
--- a/hw/intc/spapr_xive.c
+++ b/hw/intc/spapr_xive.c
@@ -756,8 +756,9 @@ static const VMStateDescription vmstate_spapr_xive_ive = {
 
 static bool vmstate_spapr_xive_needed(void *opaque)
 {
-    /* TODO check machine XIVE support */
-    return true;
+    sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
+
+    return spapr->xive_exploitation;
 }
 
 static const VMStateDescription vmstate_spapr_xive = {
@@ -885,8 +886,9 @@ static const VMStateDescription vmstate_spapr_xive_nvt_eq = {
 
 static bool vmstate_spapr_xive_nvt_needed(void *opaque)
 {
-    /* TODO check machine XIVE support */
-    return true;
+    sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
+
+    return spapr->xive_exploitation;
 }
 
 static const VMStateDescription vmstate_spapr_xive_nvt = {
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 306875e12320..b5b9e7f1b3b6 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -2820,6 +2820,29 @@ static void spapr_set_vsmt(Object *obj, Visitor *v, const char *name,
     visit_type_uint32(v, name, (uint32_t *)opaque, errp);
 }
 
+static bool spapr_get_xive_exploitation(Object *obj, Error **errp)
+{
+    sPAPRMachineState *spapr = SPAPR_MACHINE(obj);
+
+    return spapr->xive_exploitation;
+}
+
+static void spapr_set_xive_exploitation(Object *obj, bool value,
+                                            Error **errp)
+{
+    sPAPRMachineState *spapr = SPAPR_MACHINE(obj);
+
+    if (value) {
+        /* Don't let older machines activate XIVE */
+        if (!spapr->xive_exploitation) {
+            error_setg(errp, "\"xive-exploitation\" option can not be "
+                       "switched on");
+        }
+    } else {
+        spapr->xive_exploitation = false;
+    }
+}
+
 static void spapr_machine_initfn(Object *obj)
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(obj);
@@ -2855,6 +2878,15 @@ static void spapr_machine_initfn(Object *obj)
     object_property_set_description(obj, "vsmt",
                                     "Virtual SMT: KVM behaves as if this were"
                                     " the host's SMT mode", &error_abort);
+
+    spapr->xive_exploitation = true;
+    object_property_add_bool(obj, "xive-exploitation",
+                            spapr_get_xive_exploitation,
+                            spapr_set_xive_exploitation,
+                            NULL);
+    object_property_set_description(obj, "xive-exploitation",
+                                    "XIVE exploitation mode POWER9",
+                                    NULL);
 }
 
 static void spapr_machine_finalizefn(Object *obj)
@@ -3890,7 +3922,10 @@ DEFINE_SPAPR_MACHINE(2_12, "2.12", true);
 
 static void spapr_machine_2_11_instance_options(MachineState *machine)
 {
+    sPAPRMachineState *spapr = SPAPR_MACHINE(machine);
+
     spapr_machine_2_12_instance_options(machine);
+    spapr->xive_exploitation = false;
 }
 
 static void spapr_machine_2_11_class_options(MachineClass *mc)
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 14757b805e84..1d6d2c690d7f 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -127,6 +127,7 @@ struct sPAPRMachineState {
     MemoryHotplugState hotplug_memory;
 
     const char *icp_type;
+    bool xive_exploitation;
 };
 
 #define H_SUCCESS         0
-- 
2.13.6

  parent reply	other threads:[~2017-12-09  8:45 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-09  8:43 [Qemu-devel] [PATCH v2 00/19] spapr: Guest exploitation of the XIVE interrupt controller (POWER9) Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 01/19] dma-helpers: add a return value to store helpers Cédric Le Goater
2017-12-19  4:46   ` David Gibson
2017-12-19  6:43     ` Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 02/19] spapr: introduce a skeleton for the XIVE interrupt controller Cédric Le Goater
2017-12-09 14:06   ` Cédric Le Goater
2017-12-20  5:09   ` David Gibson
2017-12-20  7:38     ` Cédric Le Goater
2018-04-12  5:07       ` David Gibson
2018-04-12  8:18         ` Cédric Le Goater
2018-04-16  4:26           ` David Gibson
2018-04-19 17:40             ` Cédric Le Goater
2018-04-26  5:36               ` David Gibson
2018-04-26  8:17                 ` Cédric Le Goater
2018-05-03  2:29                   ` David Gibson
2018-05-03  8:43                     ` Cédric Le Goater
2018-05-04  6:35                       ` David Gibson
2018-05-04 15:35                         ` Cédric Le Goater
2017-12-21  0:12     ` Benjamin Herrenschmidt
2017-12-21  9:16       ` Cédric Le Goater
2017-12-21 10:09         ` Cédric Le Goater
2017-12-21 22:53         ` Benjamin Herrenschmidt
2018-01-17  9:18           ` Cédric Le Goater
2018-01-17 11:10             ` Benjamin Herrenschmidt
2018-01-17 14:39               ` Cédric Le Goater
2018-01-17 17:57                 ` Cédric Le Goater
2018-01-17 21:27                 ` Benjamin Herrenschmidt
2018-01-18 13:27                   ` Cédric Le Goater
2018-01-18 21:08                     ` Benjamin Herrenschmidt
2018-02-11  8:08                   ` David Gibson
2018-02-11 22:55                     ` Benjamin Herrenschmidt
2018-02-12  2:02                       ` Alexey Kardashevskiy
2018-02-12 12:20                         ` [Qemu-devel] [Qemu-ppc] " Andrea Bolognani
2018-02-12 14:40                           ` Benjamin Herrenschmidt
2018-02-13  1:11                             ` Alexey Kardashevskiy
2018-02-13  7:40                             ` Cédric Le Goater
2018-02-12  7:10                       ` [Qemu-devel] " Cédric Le Goater
2018-04-12  5:16                       ` David Gibson
2018-04-12  8:36                         ` Cédric Le Goater
2018-04-16  4:29                           ` David Gibson
2018-04-19 13:01                             ` Cédric Le Goater
2018-04-12  5:15                 ` David Gibson
2018-04-12  8:51                   ` Cédric Le Goater
2018-04-12  5:10             ` David Gibson
2018-04-12  8:41               ` Cédric Le Goater
2018-04-12  5:08       ` David Gibson
2018-04-12  8:28         ` Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 03/19] spapr: introduce the XIVE interrupt sources Cédric Le Goater
2017-12-14 15:24   ` Cédric Le Goater
2017-12-18  0:59     ` Benjamin Herrenschmidt
2017-12-19  6:37       ` Cédric Le Goater
2017-12-20  5:13         ` David Gibson
2017-12-20  5:22   ` David Gibson
2017-12-20  7:54     ` Cédric Le Goater
2017-12-20 18:08       ` Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 04/19] spapr: add support for the LSI " Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 05/19] spapr: introduce a XIVE interrupt presenter model Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 06/19] spapr: introduce the XIVE Event Queues Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 07/19] spapr: push the XIVE EQ data in OS event queue Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 08/19] spapr: notify the CPU when the XIVE interrupt priority is more privileged Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 09/19] spapr: add support for the SET_OS_PENDING command (XIVE) Cédric Le Goater
2017-12-09  8:43 ` Cédric Le Goater [this message]
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 11/19] spapr: add a sPAPRXive object to the machine Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 12/19] spapr: add hcalls support for the XIVE exploitation interrupt mode Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 13/19] spapr: add device tree support for the XIVE " Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 14/19] spapr: introduce a helper to map the XIVE memory regions Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 15/19] spapr: add XIVE support to spapr_qirq() Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 16/19] spapr: introduce a spapr_icp_create() helper Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 17/19] spapr: toggle the ICP depending on the selected interrupt mode Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 18/19] spapr: add support to dump XIVE information Cédric Le Goater
2017-12-09  8:43 ` [Qemu-devel] [PATCH v2 19/19] spapr: advertise XIVE exploitation mode in CAS Cédric Le Goater

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171209084338.29395-11-clg@kaod.org \
    --to=clg@kaod.org \
    --cc=benh@kernel.crashing.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=groug@kaod.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).