From nobody Thu Nov 6 18:24:58 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1542368153332439.9492233005708; Fri, 16 Nov 2018 03:35:53 -0800 (PST) Received: from localhost ([::1]:44270 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gNcPg-0005XY-C7 for importer@patchew.org; Fri, 16 Nov 2018 06:35:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34604) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gNbrr-0000bo-1v for qemu-devel@nongnu.org; Fri, 16 Nov 2018 06:01:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gNbrm-00019n-0f for qemu-devel@nongnu.org; Fri, 16 Nov 2018 06:00:54 -0500 Received: from 9.mo173.mail-out.ovh.net ([46.105.72.44]:55060) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gNbri-0000xW-Vh for qemu-devel@nongnu.org; Fri, 16 Nov 2018 06:00:49 -0500 Received: from player734.ha.ovh.net (unknown [10.109.160.46]) by mo173.mail-out.ovh.net (Postfix) with ESMTP id 5D1C6DC945 for ; Fri, 16 Nov 2018 12:00:29 +0100 (CET) Received: from kaod.org (lfbn-1-10605-110.w90-89.abo.wanadoo.fr [90.89.196.110]) (Authenticated sender: clg@kaod.org) by player734.ha.ovh.net (Postfix) with ESMTPSA id 694302800E1; Fri, 16 Nov 2018 12:00:23 +0100 (CET) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: David Gibson Date: Fri, 16 Nov 2018 11:57:23 +0100 Message-Id: <20181116105729.23240-31-clg@kaod.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20181116105729.23240-1-clg@kaod.org> References: <20181116105729.23240-1-clg@kaod.org> MIME-Version: 1.0 X-Ovh-Tracer-Id: 11767061404703034342 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedtkedrleejgddvudcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 46.105.72.44 Subject: [Qemu-devel] [PATCH v5 30/36] spapr: check for KVM IRQ device activation X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The KVM IRQ device activation will depend on the interrupt mode chosen at CAS time by the machine and some methods used at reset or by the migration need to be protected. Signed-off-by: C=C3=A9dric Le Goater --- hw/intc/spapr_xive_kvm.c | 5 +++++ hw/intc/xics_kvm.c | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c index 176083c37d61..b9fee4ea240f 100644 --- a/hw/intc/spapr_xive_kvm.c +++ b/hw/intc/spapr_xive_kvm.c @@ -656,6 +656,11 @@ static int spapr_xive_kvm_pre_save(sPAPRXive *xive) int i; int ret =3D 0; =20 + /* The KVM XIVE device is not in use */ + if (xive->fd =3D=3D -1) { + return 0; + } + /* Quiesce the sources, to stop the flow of event notifications */ for (i =3D 0; i < xsrc->nr_irqs; i++) { /* diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c index 9662e208fa81..eabc901a4556 100644 --- a/hw/intc/xics_kvm.c +++ b/hw/intc/xics_kvm.c @@ -58,6 +58,11 @@ static void icp_get_kvm_state(ICPState *icp) uint64_t state; int ret; =20 + /* The KVM XICS device is not in use */ + if (kernel_xics_fd =3D=3D -1) { + return; + } + /* ICP for this CPU thread is not in use, exiting */ if (!icp->cs) { return; @@ -94,6 +99,11 @@ static int icp_set_kvm_state(ICPState *icp, int version_= id) uint64_t state; int ret; =20 + /* The KVM XICS device is not in use */ + if (kernel_xics_fd =3D=3D -1) { + return 0; + } + /* ICP for this CPU thread is not in use, exiting */ if (!icp->cs) { return 0; @@ -209,6 +219,11 @@ static void ics_get_kvm_state(ICSState *ics) uint64_t state; int i; =20 + /* The KVM XICS device is not in use */ + if (kernel_xics_fd =3D=3D -1) { + return; + } + for (i =3D 0; i < ics->nr_irqs; i++) { ICSIRQState *irq =3D &ics->irqs[i]; =20 @@ -268,6 +283,11 @@ static int ics_set_kvm_state(ICSState *ics, int versio= n_id) int i; Error *local_err =3D NULL; =20 + /* The KVM XICS device is not in use */ + if (kernel_xics_fd =3D=3D -1) { + return 0; + } + for (i =3D 0; i < ics->nr_irqs; i++) { ICSIRQState *irq =3D &ics->irqs[i]; int ret; --=20 2.17.2