From nobody Wed Nov 12 10:19:50 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; dkim=fail; spf=pass (zoho.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=1569565162; cv=none; d=zoho.com; s=zohoarc; b=jiLK7kuDQEF82HXcvVym33L34sLZtVYKM8Ttbm7Fx2CSvaCdNYvxGuVxtnH3xdZ+fAOISVCiR8uiX5DgCaMJO2sQF4QxKgZTSsc/1BYhUE804ht6p5bKCH2QxCo5QilyvyeDd9W31K1x56Y+QuCQEa09pOd4wbo9lOtgC//laMo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569565162; 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:ARC-Authentication-Results; bh=viTpHvksM6DLG7xm/OfbTY0YJiNrgght+cf5e1zppf8=; b=QC50asFa0eObLC6uiI3gvgNBecDK7qOEr5M8V83oRJjL3nmBRxHPVoH5R9/mbEDYL/zyD3AAjWZZuzC7e1yM+dbM5LFsEMSpD18LJfUZ8IYLooOW7feFI3sY3uHcemm4OpB1OIVnP5AAny3OcIJpDoTxbrZOLyyoMqywQ06LYSQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.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 1569565161636358.54532894165925; Thu, 26 Sep 2019 23:19:21 -0700 (PDT) Received: from localhost ([::1]:46636 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDjIt-0000L3-5e for importer@patchew.org; Fri, 27 Sep 2019 02:00:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47584) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDj9V-0006px-6N for qemu-devel@nongnu.org; Fri, 27 Sep 2019 01:50:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDj9T-00053i-4B for qemu-devel@nongnu.org; Fri, 27 Sep 2019 01:50:48 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:32783) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iDj9S-00050o-JJ; Fri, 27 Sep 2019 01:50:46 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 46fgrF2DRcz9sR8; Fri, 27 Sep 2019 15:50:37 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1569563437; bh=bhSwqceFFZud22ocBvY1ARrAtt9EQB3ydAXlu/7z83g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aPvCqwum/uYyCJB1bahe1rG0d/zUSDbq0F14iMcT1bI5+A1WT/1Qn5SRTQhiEgCNX NQHm+p4KtPxmcIK6+OpO5SxTE99NtPrQwZrVxav/oIbTx/gPQ2AFSpemWzMHvtLOIt yTTJMt7UYjA5OdZF71AjXgQD6aSZB5rK+ZbRT3jY= From: David Gibson To: qemu-devel@nongnu.org, clg@kaod.org, qemu-ppc@nongnu.org Subject: [PATCH v2 15/33] spapr: Handle freeing of multiple irqs in frontend only Date: Fri, 27 Sep 2019 15:50:10 +1000 Message-Id: <20190927055028.11493-16-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190927055028.11493-1-david@gibson.dropbear.id.au> References: <20190927055028.11493-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 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: Jason Wang , Riku Voipio , groug@kaod.org, Laurent Vivier , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , philmd@redhat.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" spapr_irq_free() can be used to free multiple irqs at once. That's useful for its callers, but there's no need to make the individual backend hooks handle this. We can loop across the irqs in spapr_irq_free() itself and have the hooks just do one at time. Signed-off-by: David Gibson Reviewed-by: C=C3=A9dric Le Goater Reviewed-by: Greg Kurz --- hw/ppc/spapr_irq.c | 27 ++++++++++++--------------- include/hw/ppc/spapr_irq.h | 2 +- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index 9919910a86..37c51c96ae 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -133,16 +133,13 @@ static int spapr_irq_claim_xics(SpaprMachineState *sp= apr, int irq, bool lsi, return 0; } =20 -static void spapr_irq_free_xics(SpaprMachineState *spapr, int irq, int num) +static void spapr_irq_free_xics(SpaprMachineState *spapr, int irq) { ICSState *ics =3D spapr->ics; uint32_t srcno =3D irq - ics->offset; - int i; =20 if (ics_valid_irq(ics, irq)) { - for (i =3D srcno; i < srcno + num; ++i) { - memset(&ics->irqs[i], 0, sizeof(ICSIRQState)); - } + memset(&ics->irqs[srcno], 0, sizeof(ICSIRQState)); } } =20 @@ -269,13 +266,9 @@ static int spapr_irq_claim_xive(SpaprMachineState *spa= pr, int irq, bool lsi, return 0; } =20 -static void spapr_irq_free_xive(SpaprMachineState *spapr, int irq, int num) +static void spapr_irq_free_xive(SpaprMachineState *spapr, int irq) { - int i; - - for (i =3D irq; i < irq + num; ++i) { - spapr_xive_irq_free(spapr->xive, i); - } + spapr_xive_irq_free(spapr->xive, irq); } =20 static void spapr_irq_print_info_xive(SpaprMachineState *spapr, @@ -433,10 +426,10 @@ static int spapr_irq_claim_dual(SpaprMachineState *sp= apr, int irq, bool lsi, return ret; } =20 -static void spapr_irq_free_dual(SpaprMachineState *spapr, int irq, int num) +static void spapr_irq_free_dual(SpaprMachineState *spapr, int irq) { - spapr_irq_xics.free(spapr, irq, num); - spapr_irq_xive.free(spapr, irq, num); + spapr_irq_xics.free(spapr, irq); + spapr_irq_xive.free(spapr, irq); } =20 static void spapr_irq_print_info_dual(SpaprMachineState *spapr, Monitor *m= on) @@ -635,7 +628,11 @@ int spapr_irq_claim(SpaprMachineState *spapr, int irq,= bool lsi, Error **errp) =20 void spapr_irq_free(SpaprMachineState *spapr, int irq, int num) { - spapr->irq->free(spapr, irq, num); + int i; + + for (i =3D irq; i < (irq + num); i++) { + spapr->irq->free(spapr, irq); + } } =20 qemu_irq spapr_qirq(SpaprMachineState *spapr, int irq) diff --git a/include/hw/ppc/spapr_irq.h b/include/hw/ppc/spapr_irq.h index 9b60378e28..ed88b4599a 100644 --- a/include/hw/ppc/spapr_irq.h +++ b/include/hw/ppc/spapr_irq.h @@ -43,7 +43,7 @@ typedef struct SpaprIrq { =20 void (*init)(SpaprMachineState *spapr, Error **errp); int (*claim)(SpaprMachineState *spapr, int irq, bool lsi, Error **errp= ); - void (*free)(SpaprMachineState *spapr, int irq, int num); + void (*free)(SpaprMachineState *spapr, int irq); void (*print_info)(SpaprMachineState *spapr, Monitor *mon); void (*dt_populate)(SpaprMachineState *spapr, uint32_t nr_servers, void *fdt, uint32_t phandle); --=20 2.21.0