From nobody Tue Feb 10 11:23:31 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1574666204; cv=none; d=zohomail.com; s=zohoarc; b=k7AWS/Nf3n3Sxt8YCRq0zTF+pKn4OCsuM5IJkWRcWeXZiBw+ePQvsvBnMBZmotNeoFaKJ7+5qxhRtFVmqtttkfiZ8QEFNRt1l2lRRmQnGWBRNT+jPt6ZDTFKLaqp6uX3LZzovWOePop6bqi1LZxBULDJQ/ntyiaKndJ2C/jf+Aw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1574666204; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XC/ftTfeJeXBnW4BWRTuGXXsaO/MbelJcTBomo6KXEc=; b=nVzGl99Be4ZRusn9a2EYdppEOZq1NBp44TloDXbL40ijP/JFLd0XgnO7pWeI/PeNPCxujjd9JyXjz84ZbGTfdj1En5ZW2uUVqc+sajARm4MgMs0eYeWjj8hGeNUYaPmdbkeAzdP80lWim0gofvCR+5X4xnFPJtt4RNuXSlRkST0= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15746662047671016.7537129323971; Sun, 24 Nov 2019 23:16:44 -0800 (PST) Received: from localhost ([::1]:40910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iZ8bz-0003JI-Bn for importer@patchew.org; Mon, 25 Nov 2019 02:16:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41688) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iZ8LN-0002p1-Tf for qemu-devel@nongnu.org; Mon, 25 Nov 2019 01:59:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iZ8LM-0001i2-NR for qemu-devel@nongnu.org; Mon, 25 Nov 2019 01:59:33 -0500 Received: from 4.mo5.mail-out.ovh.net ([178.33.111.247]:38379) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iZ8LM-0001h9-Hh for qemu-devel@nongnu.org; Mon, 25 Nov 2019 01:59:32 -0500 Received: from player697.ha.ovh.net (unknown [10.109.160.244]) by mo5.mail-out.ovh.net (Postfix) with ESMTP id 2980E25BE33 for ; Mon, 25 Nov 2019 07:59:31 +0100 (CET) Received: from kaod.org (lfbn-1-2229-223.w90-76.abo.wanadoo.fr [90.76.50.223]) (Authenticated sender: clg@kaod.org) by player697.ha.ovh.net (Postfix) with ESMTPSA id 96283C809587; Mon, 25 Nov 2019 06:59:25 +0000 (UTC) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: David Gibson Subject: [PATCH v6 10/20] ppc/spapr: Implement the XiveFabric interface Date: Mon, 25 Nov 2019 07:58:10 +0100 Message-Id: <20191125065820.927-11-clg@kaod.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191125065820.927-1-clg@kaod.org> References: <20191125065820.927-1-clg@kaod.org> MIME-Version: 1.0 X-Ovh-Tracer-Id: 8922475289809095654 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrudeitddggedtucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdqfffguegfifdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepveorughrihgtucfnvgcuifhorghtvghruceotghlgheskhgrohgurdhorhhgqeenucfkpheptddrtddrtddrtddpledtrdejiedrhedtrddvvdefnecurfgrrhgrmhepmhhouggvpehsmhhtphdqohhuthdphhgvlhhopehplhgrhigvrheileejrdhhrgdrohhvhhdrnhgvthdpihhnvghtpedtrddtrddtrddtpdhmrghilhhfrhhomheptghlgheskhgrohgurdhorhhgpdhrtghpthhtohepqhgvmhhuqdguvghvvghlsehnohhnghhnuhdrohhrghenucevlhhushhtvghrufhiiigvpedv Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 178.33.111.247 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , qemu-ppc@nongnu.org, Greg Kurz , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The CAM line matching sequence in the pseries machine does not change much apart from the use of the new QOM interfaces. There is an extra indirection because of the sPAPR IRQ backend of the machine. Only the XIVE backend implements the new 'match_nvt' handler. Reviewed-by: Greg Kurz Signed-off-by: C=C3=A9dric Le Goater --- hw/ppc/spapr.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index e076f6023c73..2687bbac37eb 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -4275,6 +4275,42 @@ static void spapr_pic_print_info(InterruptStatsProvi= der *obj, kvm_irqchip_in_kernel() ? "in-kernel" : "emulated"); } =20 +static int spapr_match_nvt(XiveFabric *xfb, uint8_t format, + uint8_t nvt_blk, uint32_t nvt_idx, + bool cam_ignore, uint8_t priority, + uint32_t logic_serv, XiveTCTXMatch *match) +{ + SpaprMachineState *spapr =3D SPAPR_MACHINE(xfb); + XivePresenter *xptr =3D XIVE_PRESENTER(spapr->xive); + XivePresenterClass *xpc =3D XIVE_PRESENTER_GET_CLASS(xptr); + int count; + + /* This is a XIVE only operation */ + assert(spapr->active_intc =3D=3D SPAPR_INTC(spapr->xive)); + + count =3D xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, cam_ignore, + priority, logic_serv, match); + if (count < 0) { + return count; + } + + /* + * When we implement the save and restore of the thread interrupt + * contexts in the enter/exit CPU handlers of the machine and the + * escalations in QEMU, we should be able to handle non dispatched + * vCPUs. + * + * Until this is done, the sPAPR machine should find at least one + * matching context always. + */ + if (count =3D=3D 0) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: NVT %x/%x is not dispatched\= n", + nvt_blk, nvt_idx); + } + + return count; +} + int spapr_get_vcpu_id(PowerPCCPU *cpu) { return cpu->vcpu_id; @@ -4371,6 +4407,7 @@ static void spapr_machine_class_init(ObjectClass *oc,= void *data) PPCVirtualHypervisorClass *vhc =3D PPC_VIRTUAL_HYPERVISOR_CLASS(oc); XICSFabricClass *xic =3D XICS_FABRIC_CLASS(oc); InterruptStatsProviderClass *ispc =3D INTERRUPT_STATS_PROVIDER_CLASS(o= c); + XiveFabricClass *xfc =3D XIVE_FABRIC_CLASS(oc); =20 mc->desc =3D "pSeries Logical Partition (PAPR compliant)"; mc->ignore_boot_device_suffixes =3D true; @@ -4447,6 +4484,7 @@ static void spapr_machine_class_init(ObjectClass *oc,= void *data) smc->linux_pci_probe =3D true; smc->smp_threads_vsmt =3D true; smc->nr_xirqs =3D SPAPR_NR_XIRQS; + xfc->match_nvt =3D spapr_match_nvt; } =20 static const TypeInfo spapr_machine_info =3D { @@ -4465,6 +4503,7 @@ static const TypeInfo spapr_machine_info =3D { { TYPE_PPC_VIRTUAL_HYPERVISOR }, { TYPE_XICS_FABRIC }, { TYPE_INTERRUPT_STATS_PROVIDER }, + { TYPE_XIVE_FABRIC }, { } }, }; --=20 2.21.0