From nobody Sat May 11 12:29:39 2024 Delivered-To: importer@patchew.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=1602516369; cv=none; d=zohomail.com; s=zohoarc; b=MSj4tHGNz7qD0cTbzmZz2yhCzT+Y+ctk3LlHIg1D33pjGoMXsiBneNNste9AldOSeXaDlEYhfg+oAD2lKv5uJsJDVtTFflI6mS7AkckmlQsDNEbQk7EwH2WkFpS8C75Rmr7FFOKUL8yZozO1H7IILD3r72B+tsQ4M6EtRsANENg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602516369; 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=DRBR4IYZDD/CF7FQPIDQe300CaEs8KzhDFPZqETTeTA=; b=JM1Yw7YLnS/Uj4+RKFPzV7FeiRtUCVAYXuzRK8nWBQp7RbJJTg4rKOLK5AYlD/NJUpJSqi4gkXvzq8Phc5dURtyYSwZqIJuN2AQywZ2+CWRwpZaRIzRtq7CoqOY/yaFhr7pl3Kek0hPG3OI/zDKO0Pmky0ejpDSO5+1arfzcd+s= 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 1602516369682995.4963912057967; Mon, 12 Oct 2020 08:26:09 -0700 (PDT) Received: from localhost ([::1]:45644 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kRziC-0001Lb-As for importer@patchew.org; Mon, 12 Oct 2020 11:26:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53086) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kRzcA-0003Bm-C0 for qemu-devel@nongnu.org; Mon, 12 Oct 2020 11:19:54 -0400 Received: from us-smtp-delivery-44.mimecast.com ([205.139.111.44]:54060) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kRzc8-0005QR-Ps for qemu-devel@nongnu.org; Mon, 12 Oct 2020 11:19:54 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-332-64UiFSNoMuO9LqjqmpVQkg-1; Mon, 12 Oct 2020 11:19:49 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CFC4880F05B; Mon, 12 Oct 2020 15:19:48 +0000 (UTC) Received: from bahia.lan (ovpn-112-78.ams2.redhat.com [10.36.112.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id 26C2F10027AA; Mon, 12 Oct 2020 15:19:47 +0000 (UTC) X-MC-Unique: 64UiFSNoMuO9LqjqmpVQkg-1 Subject: [PATCH 1/4] spapr: Fix leak of CPU machine specific data From: Greg Kurz To: David Gibson Date: Mon, 12 Oct 2020 17:19:47 +0200 Message-ID: <160251598735.796881.4119879780830238145.stgit@bahia.lan> In-Reply-To: <160251562222.796881.8197386060416409319.stgit@bahia.lan> References: <160251562222.796881.8197386060416409319.stgit@bahia.lan> User-Agent: StGit/0.21 MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kaod.org Content-Transfer-Encoding: quoted-printable 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; Received-SPF: softfail client-ip=205.139.111.44; envelope-from=groug@kaod.org; helo=us-smtp-delivery-44.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/12 11:19:51 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no autolearn_force=no X-Spam_action: no action 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: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" When a CPU core is being removed, the machine specific data of each CPU thread object is leaked. Fix this by calling the dedicated helper we have for that instead of simply unparenting the CPU object. Signed-off-by: Greg Kurz --- hw/ppc/spapr_cpu_core.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index b03620823adb..b6b217876750 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -181,6 +181,15 @@ static const VMStateDescription vmstate_spapr_cpu_stat= e =3D { } }; =20 +static void spapr_delete_vcpu(PowerPCCPU *cpu, SpaprCpuCore *sc) +{ + SpaprCpuState *spapr_cpu =3D spapr_cpu_state(cpu); + + cpu->machine_data =3D NULL; + g_free(spapr_cpu); + object_unparent(OBJECT(cpu)); +} + static void spapr_unrealize_vcpu(PowerPCCPU *cpu, SpaprCpuCore *sc) { if (!sc->pre_3_0_migration) { @@ -188,7 +197,7 @@ static void spapr_unrealize_vcpu(PowerPCCPU *cpu, Spapr= CpuCore *sc) } spapr_irq_cpu_intc_destroy(SPAPR_MACHINE(qdev_get_machine()), cpu); cpu_remove_sync(CPU(cpu)); - object_unparent(OBJECT(cpu)); + spapr_delete_vcpu(cpu, sc); } =20 /* @@ -294,15 +303,6 @@ err: return NULL; } =20 -static void spapr_delete_vcpu(PowerPCCPU *cpu, SpaprCpuCore *sc) -{ - SpaprCpuState *spapr_cpu =3D spapr_cpu_state(cpu); - - cpu->machine_data =3D NULL; - g_free(spapr_cpu); - object_unparent(OBJECT(cpu)); -} - static void spapr_cpu_core_realize(DeviceState *dev, Error **errp) { /* We don't use SPAPR_MACHINE() in order to exit gracefully if the user From nobody Sat May 11 12:29:39 2024 Delivered-To: importer@patchew.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=1602516082; cv=none; d=zohomail.com; s=zohoarc; b=Q76EK4IsPBE+aMGmDbwLigSKzHduQUf73bAn5sbvAADC9U25FXvK2jiPdP0BQMQqAO2eZhXIOjeoL3Ait5Wc1w9juoATxAPGeh01D1FWvg5GZwqz7F935fc0g5CnfGOTtozQkileMSjAXI0PSTwYH0btyDavR5Nku/YWCT0K3VY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602516082; 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=eBdCUgFDmdYT+ZiyPndWM82YoMNMMQtFAMa6sF2RN3o=; b=cjaYcYShG3o386xby4KNSvYrpLEGfUtyL38etZLj5gwj1QnDsx9hD/x/tTizeynEmnSgbo1H4C6kPIfDOGfTf5/Is2DIMB5cmhV/w0ccc63ps+0/M6k0d4ZbqMMfOjefR6QhRL1Vmnxjx+aZEkXXimngzr7mBy6EkEnO0GeBy4Y= 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 1602516082641898.2473343361181; Mon, 12 Oct 2020 08:21:22 -0700 (PDT) Received: from localhost ([::1]:33354 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kRzdZ-0004TG-Id for importer@patchew.org; Mon, 12 Oct 2020 11:21:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53114) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kRzcH-0003Ld-EU for qemu-devel@nongnu.org; Mon, 12 Oct 2020 11:20:01 -0400 Received: from us-smtp-delivery-44.mimecast.com ([205.139.111.44]:30248) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kRzcF-0005R8-V2 for qemu-devel@nongnu.org; Mon, 12 Oct 2020 11:20:01 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-372-X88IYgWhOt-HTajmQKOJPg-1; Mon, 12 Oct 2020 11:19:56 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 988A057055; Mon, 12 Oct 2020 15:19:55 +0000 (UTC) Received: from bahia.lan (ovpn-112-78.ams2.redhat.com [10.36.112.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id EB0F775131; Mon, 12 Oct 2020 15:19:54 +0000 (UTC) X-MC-Unique: X88IYgWhOt-HTajmQKOJPg-1 Subject: [PATCH 2/4] spapr: Drop spapr_delete_vcpu() unused argument From: Greg Kurz To: David Gibson Date: Mon, 12 Oct 2020 17:19:54 +0200 Message-ID: <160251599407.796881.18258675391064563368.stgit@bahia.lan> In-Reply-To: <160251562222.796881.8197386060416409319.stgit@bahia.lan> References: <160251562222.796881.8197386060416409319.stgit@bahia.lan> User-Agent: StGit/0.21 MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kaod.org Content-Transfer-Encoding: quoted-printable 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; Received-SPF: softfail client-ip=205.139.111.44; envelope-from=groug@kaod.org; helo=us-smtp-delivery-44.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/12 11:19:51 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no autolearn_force=no X-Spam_action: no action 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: qemu-ppc@nongnu.org, 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 'sc' argument is unused. Drop it. Signed-off-by: Greg Kurz --- hw/ppc/spapr_cpu_core.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index b6b217876750..64ce6a0cb781 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -181,7 +181,7 @@ static const VMStateDescription vmstate_spapr_cpu_state= =3D { } }; =20 -static void spapr_delete_vcpu(PowerPCCPU *cpu, SpaprCpuCore *sc) +static void spapr_delete_vcpu(PowerPCCPU *cpu) { SpaprCpuState *spapr_cpu =3D spapr_cpu_state(cpu); =20 @@ -197,7 +197,7 @@ static void spapr_unrealize_vcpu(PowerPCCPU *cpu, Spapr= CpuCore *sc) } spapr_irq_cpu_intc_destroy(SPAPR_MACHINE(qdev_get_machine()), cpu); cpu_remove_sync(CPU(cpu)); - spapr_delete_vcpu(cpu, sc); + spapr_delete_vcpu(cpu); } =20 /* @@ -343,7 +343,7 @@ err_unrealize: } err: while (--i >=3D 0) { - spapr_delete_vcpu(sc->threads[i], sc); + spapr_delete_vcpu(sc->threads[i]); } g_free(sc->threads); } From nobody Sat May 11 12:29:39 2024 Delivered-To: importer@patchew.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=1602516190; cv=none; d=zohomail.com; s=zohoarc; b=nFTjT8cTW1QYm2L+PE8m4MsD1Ii1uZr6GQxWXGRL1T9HnLwLRZl7K53vIus6zlCtaqgKKssh2+SOYFk84EDzD/bsXGkQUw3ihP8QRE++tbaqKfIVWlOVbUAGdHvHS47fNq/SyztjfKllVcChPmTdbgm0yo9d3VZY3FALnykuvhc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602516190; 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=1byou2zxgG9T858/L2nng6Dj5H+Tf4xfJy6pJo1LOUc=; b=bhi6GOTQEcZCuVF3MxFy66/OQOZsP7G9bW+GPY9kNxYaAGxjIM6iwfU5z5bfEhGwhytug7f8eXHY/uZuY+NH1CO2Plge3Dqfn8oMg6zjLd+J7Ddg2xUMtrVzrwEoQTRszHfqk/2jLXt5q0isr10ohw4gEsUNu77pt7f4bq5eZS0= 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 1602516190775212.32906143137222; Mon, 12 Oct 2020 08:23:10 -0700 (PDT) Received: from localhost ([::1]:37956 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kRzfJ-0006Xe-Nz for importer@patchew.org; Mon, 12 Oct 2020 11:23:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53148) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kRzcP-0003TE-KR for qemu-devel@nongnu.org; Mon, 12 Oct 2020 11:20:10 -0400 Received: from us-smtp-delivery-44.mimecast.com ([207.211.30.44]:27523) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kRzcO-0005RY-5S for qemu-devel@nongnu.org; Mon, 12 Oct 2020 11:20:09 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-275-DCzTBWaDMiqRoqgyrY5Gpg-1; Mon, 12 Oct 2020 11:20:03 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4B5451074658; Mon, 12 Oct 2020 15:20:02 +0000 (UTC) Received: from bahia.lan (ovpn-112-78.ams2.redhat.com [10.36.112.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9C2FE55760; Mon, 12 Oct 2020 15:20:01 +0000 (UTC) X-MC-Unique: DCzTBWaDMiqRoqgyrY5Gpg-1 Subject: [PATCH 3/4] spapr: Introduce an .instance_finalize hook for TYPE_SPAPR_CPU_CORE From: Greg Kurz To: David Gibson Date: Mon, 12 Oct 2020 17:20:00 +0200 Message-ID: <160251600084.796881.16652598027548391459.stgit@bahia.lan> In-Reply-To: <160251562222.796881.8197386060416409319.stgit@bahia.lan> References: <160251562222.796881.8197386060416409319.stgit@bahia.lan> User-Agent: StGit/0.21 MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kaod.org Content-Transfer-Encoding: quoted-printable 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; Received-SPF: softfail client-ip=207.211.30.44; envelope-from=groug@kaod.org; helo=us-smtp-delivery-44.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/12 11:19:47 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no autolearn_force=no X-Spam_action: no action 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: qemu-ppc@nongnu.org, 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 array of vCPUs and each individual vCPU under the core can be freed in several locations. This is suboptimal and increases the odds of memory leaks in future changes. Actually they can be freed altogether when the core itself is ultimately freed in a finalize hook. Initialize the array with zeroes so that the finalize hook can be made idempotent. Signed-off-by: Greg Kurz --- hw/ppc/spapr_cpu_core.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index 64ce6a0cb781..cffd74f542ba 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -197,7 +197,6 @@ static void spapr_unrealize_vcpu(PowerPCCPU *cpu, Spapr= CpuCore *sc) } spapr_irq_cpu_intc_destroy(SPAPR_MACHINE(qdev_get_machine()), cpu); cpu_remove_sync(CPU(cpu)); - spapr_delete_vcpu(cpu); } =20 /* @@ -233,7 +232,6 @@ static void spapr_cpu_core_unrealize(DeviceState *dev) for (i =3D 0; i < cc->nr_threads; i++) { spapr_unrealize_vcpu(sc->threads[i], sc); } - g_free(sc->threads); } =20 static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr, @@ -320,11 +318,11 @@ static void spapr_cpu_core_realize(DeviceState *dev, = Error **errp) return; } =20 - sc->threads =3D g_new(PowerPCCPU *, cc->nr_threads); + sc->threads =3D g_new0(PowerPCCPU *, cc->nr_threads); for (i =3D 0; i < cc->nr_threads; i++) { sc->threads[i] =3D spapr_create_vcpu(sc, i, errp); if (!sc->threads[i]) { - goto err; + return; } } =20 @@ -341,11 +339,6 @@ err_unrealize: while (--j >=3D 0) { spapr_unrealize_vcpu(sc->threads[j], sc); } -err: - while (--i >=3D 0) { - spapr_delete_vcpu(sc->threads[i]); - } - g_free(sc->threads); } =20 static Property spapr_cpu_core_properties[] =3D { @@ -367,6 +360,20 @@ static void spapr_cpu_core_class_init(ObjectClass *oc,= void *data) scc->cpu_type =3D data; } =20 +static void spapr_cpu_core_instance_finalize(Object *obj) +{ + SpaprCpuCore *sc =3D SPAPR_CPU_CORE(obj); + CPUCore *cc =3D CPU_CORE(sc); + int i; + + for (i =3D 0; i < cc->nr_threads; i++) { + if (sc->threads[i]) { + spapr_delete_vcpu(sc->threads[i]); + } + } + g_free(sc->threads); +} + #define DEFINE_SPAPR_CPU_CORE_TYPE(cpu_model) \ { \ .parent =3D TYPE_SPAPR_CPU_CORE, \ @@ -382,6 +389,7 @@ static const TypeInfo spapr_cpu_core_type_infos[] =3D { .abstract =3D true, .instance_size =3D sizeof(SpaprCpuCore), .class_size =3D sizeof(SpaprCpuCoreClass), + .instance_finalize =3D spapr_cpu_core_instance_finalize, }, DEFINE_SPAPR_CPU_CORE_TYPE("970_v2.2"), DEFINE_SPAPR_CPU_CORE_TYPE("970mp_v1.0"), From nobody Sat May 11 12:29:39 2024 Delivered-To: importer@patchew.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=1602516182; cv=none; d=zohomail.com; s=zohoarc; b=XPc1ua3SWQ/RtVFi3s2XJapt2U57SgGOA2ivO8ctNIGbpDP+zLOMAQyw2ozCqGMjDSltC0Nl3G+xYDbgC13z099++3RI6GvKoN+NRZitKLBh8FT/cnUxfZ6R+wGFnPEzuxMHCzMoyB/kxK5JgkCIXpBMRmaPHX41MVn5BOuz8W8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602516182; 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=R+kR85OKjlYLrlIdMLPJxqbumEW3n4q2Bm7yHkxa57A=; b=gN9DiWeoqNF5YSKPFRZko+Q2FTwrtgtypwFCqrEApN65EtamMw1qeyKq7jjupib2LC9j71CWko7ccTm3pfTdlG85rybsV84fcqTGqePkefMlSx7NntAJwAY3TwbUc87W4XYgOlIVlMUAwKWZuoZnYc/EylAEeZLgdPPvx/STxow= 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 1602516182851600.5376302459989; Mon, 12 Oct 2020 08:23:02 -0700 (PDT) Received: from localhost ([::1]:37420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kRzfB-0006KV-Bo for importer@patchew.org; Mon, 12 Oct 2020 11:23:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53188) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kRzcZ-0003aX-Cm for qemu-devel@nongnu.org; Mon, 12 Oct 2020 11:20:21 -0400 Received: from us-smtp-delivery-44.mimecast.com ([207.211.30.44]:39315) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kRzcX-0005S1-QC for qemu-devel@nongnu.org; Mon, 12 Oct 2020 11:20:19 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-231-joa5kJdZOUOvq-lKaQhXpg-1; Mon, 12 Oct 2020 11:20:10 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2752D1921FA0; Mon, 12 Oct 2020 15:20:09 +0000 (UTC) Received: from bahia.lan (ovpn-112-78.ams2.redhat.com [10.36.112.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6E76573661; Mon, 12 Oct 2020 15:20:08 +0000 (UTC) X-MC-Unique: joa5kJdZOUOvq-lKaQhXpg-1 Subject: [PATCH 4/4] spapr: Make spapr_cpu_core_unrealize() idempotent From: Greg Kurz To: David Gibson Date: Mon, 12 Oct 2020 17:20:07 +0200 Message-ID: <160251600753.796881.11787439223917154767.stgit@bahia.lan> In-Reply-To: <160251562222.796881.8197386060416409319.stgit@bahia.lan> References: <160251562222.796881.8197386060416409319.stgit@bahia.lan> User-Agent: StGit/0.21 MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kaod.org Content-Transfer-Encoding: quoted-printable 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; Received-SPF: softfail client-ip=207.211.30.44; envelope-from=groug@kaod.org; helo=us-smtp-delivery-44.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/12 11:19:47 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no autolearn_force=no X-Spam_action: no action 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: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" spapr_cpu_core_realize() has an err_unrealize label which partially duplicates the code of spapr_cpu_core_realize(). Let's make spapr_cpu_core_unrealize() idempotent and call it instead. The registration and unregistration of the reset handler are moved around to simplify the code even more. Signed-off-by: Greg Kurz --- hw/ppc/spapr_cpu_core.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index cffd74f542ba..e3fd81eb9741 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -227,11 +227,13 @@ static void spapr_cpu_core_unrealize(DeviceState *dev) CPUCore *cc =3D CPU_CORE(dev); int i; =20 - qemu_unregister_reset(spapr_cpu_core_reset_handler, sc); - for (i =3D 0; i < cc->nr_threads; i++) { - spapr_unrealize_vcpu(sc->threads[i], sc); + if (sc->threads[i]) { + spapr_unrealize_vcpu(sc->threads[i], sc); + } } + + qemu_unregister_reset(spapr_cpu_core_reset_handler, sc); } =20 static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr, @@ -326,19 +328,14 @@ static void spapr_cpu_core_realize(DeviceState *dev, = Error **errp) } } =20 + qemu_register_reset(spapr_cpu_core_reset_handler, sc); + for (j =3D 0; j < cc->nr_threads; j++) { if (!spapr_realize_vcpu(sc->threads[j], spapr, sc, errp)) { - goto err_unrealize; + spapr_cpu_core_unrealize(dev); + return; } } - - qemu_register_reset(spapr_cpu_core_reset_handler, sc); - return; - -err_unrealize: - while (--j >=3D 0) { - spapr_unrealize_vcpu(sc->threads[j], sc); - } } =20 static Property spapr_cpu_core_properties[] =3D {