From nobody Sat May 18 19:12:40 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1676550361; cv=none; d=zohomail.com; s=zohoarc; b=npTF41vETaxlRtWoJRHOyrdp4apTO/q5Nq/h5+bSgAMFZlqwf5xU6c5zRQ9nTY8EenPIGjxYyX4YjRLK/eNWbRjGsmPQGI58vGS5Gbnaf/ECSf7KC0POME6BDIknF6mUpKEyyZD0Lk81/8EXKLVO10jw9srWPblFkiSLPH6b20w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676550361; 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=AcG5UdzDyIGyRqR706CT/5ZNP7noXX1ZENMA65+7uwQ=; b=Q5Ez+STuapO0Phy77KN2Mv+OXBIJL3T25jZ8mSNPfhgjn9PdfnPdmm68DoQHHVIzsr8F09FBxvCFtrmutGjgtZ6EmViB9OuDc5koxKdVzjY9RPVfrbM06wSQKXZ5k/mqB+SVImMGOem/11fyzXHmems13Qo8gVx9zHgXAjVgz2s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1676550361834770.9323281499834; Thu, 16 Feb 2023 04:26:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pSdKi-0002k2-R3; Thu, 16 Feb 2023 07:25:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSdKW-0002eO-VB for qemu-devel@nongnu.org; Thu, 16 Feb 2023 07:25:41 -0500 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pSdKQ-00083Y-Rl for qemu-devel@nongnu.org; Thu, 16 Feb 2023 07:25:40 -0500 Received: by mail-wr1-x42e.google.com with SMTP id y1so1691763wru.2 for ; Thu, 16 Feb 2023 04:25:33 -0800 (PST) Received: from localhost.localdomain ([81.0.6.76]) by smtp.gmail.com with ESMTPSA id l9-20020a05600c4f0900b003dff870ce0esm5859047wmq.2.2023.02.16.04.25.30 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 16 Feb 2023 04:25:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AcG5UdzDyIGyRqR706CT/5ZNP7noXX1ZENMA65+7uwQ=; b=NUvOs9FVMECdGx0qUNazGoGwxFLBjyvFnCsfTwUlLQKTDU+KSxqYwUNbwvtLz/T25f CphCPPpH9n2hh9UBC5w28+UPviYzP8b6RldflAEu5neTdKt070gyv0s/CJDbZkEgnjLp CzBTKnh5CWrjjvReCs/aI/iB+rYDEWMb6544x1wQ6LWKpusoUv2U+sS84oWOqkhfRftV XZhed8JBcL3/QrgaCPgcqTgVOy6am1Tn4KOUrc6uj4/X3Lv6ZTSAuK0rCOKFiZGqhJvG vNIBLMb6z1fgEYTvCLwS1LMisGmFLu5vmltyGUWMSdKC+52kLdP7gKJrVnnrw8X2bqj1 tCKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AcG5UdzDyIGyRqR706CT/5ZNP7noXX1ZENMA65+7uwQ=; b=T7d7gruNxPXv1SywINxVDtGxrZ4cnYq3wG9PQHIJ0Fg9/TEjokF1r06NLtS/8Qya4F f5icFaxrr5YC88kuIL4j3XIayz3rm3DBBuzhBSPlio9FPe1d3vzEBAIXVBQ2BSY08l44 JbzWWpODITRY1pbWnrkkN6h1xFL/iGUi/v3NxVGJNaN+VG/C1E1E4UzglK9OSaXgMkUJ MWOLd/sVMrvuUAVLXG2PJQIX29fFkGzRhuWGak+dH83/QPjVu5mSXgfl8En0mdMOmQVe qJmkx3v8iM/u8txGaOPDzWlZOrxdF90tA59mo6sGjTXU9c3PiMKraGnU9nVugrssyQs8 uRCA== X-Gm-Message-State: AO0yUKWsyJ+Pi1+xOtRbYrzbLOTNA3H1OiaLGfT57hKVMlm5MGQ8MVrJ pAIlUKCszOgiCRmusufrB3Wsi6aYftZymcMa X-Google-Smtp-Source: AK7set8FCU3j+l3FoBI8dJjPzYxOUCBScxd/oWaDnxBueFQfMvwGV5/4i/a8gkVFFLrR7hegjIL4JA== X-Received: by 2002:a5d:6882:0:b0:2c3:fb3e:ae85 with SMTP id h2-20020a5d6882000000b002c3fb3eae85mr5542920wru.44.1676550332076; Thu, 16 Feb 2023 04:25:32 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , qemu-arm@nongnu.org, qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Helge Deller , Paolo Bonzini , Eduardo Habkost , "Michael S. Tsirkin" , Marcel Apfelbaum , Laurent Vivier , Mark Cave-Ayland , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Daniel Henrique Barboza , David Gibson , Greg Kurz , Thomas Huth , David Hildenbrand , Ilya Leoshkevich , Halil Pasic , Christian Borntraeger , Eric Farman Subject: [PATCH 1/5] hw/nmi: Have nmi_monitor_handler() return a boolean indicating error Date: Thu, 16 Feb 2023 13:25:20 +0100 Message-Id: <20230216122524.67212-2-philmd@linaro.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230216122524.67212-1-philmd@linaro.org> References: <20230216122524.67212-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: pass client-ip=2a00:1450:4864:20::42e; envelope-from=philmd@linaro.org; helo=mail-wr1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1676550363885100002 Following the example documented since commit e3fe3988d7 ("error: Document Error API usage rules"), have the nmi_monitor_handler return a boolean indicating whether an error is set or not and convert its implementations. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Markus Armbruster --- hw/core/nmi.c | 3 +-- hw/hppa/machine.c | 3 ++- hw/i386/x86.c | 3 ++- hw/intc/m68k_irqc.c | 4 +++- hw/m68k/q800.c | 4 +++- hw/misc/macio/gpio.c | 4 +++- hw/ppc/pnv.c | 3 ++- hw/ppc/spapr.c | 3 ++- hw/s390x/s390-virtio-ccw.c | 4 +++- include/hw/nmi.h | 3 ++- 10 files changed, 23 insertions(+), 11 deletions(-) diff --git a/hw/core/nmi.c b/hw/core/nmi.c index 481c4b3c7e..76cb3ba3b0 100644 --- a/hw/core/nmi.c +++ b/hw/core/nmi.c @@ -43,8 +43,7 @@ static int do_nmi(Object *o, void *opaque) NMIClass *nc =3D NMI_GET_CLASS(n); =20 ns->handled =3D true; - nc->nmi_monitor_handler(n, ns->cpu_index, &ns->err); - if (ns->err) { + if (!nc->nmi_monitor_handler(n, ns->cpu_index, &ns->err)) { return -1; } } diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index 7ac68c943f..da7c36c554 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -437,13 +437,14 @@ static void hppa_machine_reset(MachineState *ms, Shut= downCause reason) cpu[0]->env.gr[19] =3D FW_CFG_IO_BASE; } =20 -static void hppa_nmi(NMIState *n, int cpu_index, Error **errp) +static bool hppa_nmi(NMIState *n, int cpu_index, Error **errp) { CPUState *cs; =20 CPU_FOREACH(cs) { cpu_interrupt(cs, CPU_INTERRUPT_NMI); } + return true; } =20 static void hppa_machine_init_class_init(ObjectClass *oc, void *data) diff --git a/hw/i386/x86.c b/hw/i386/x86.c index eaff4227bd..8bd0691705 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -501,7 +501,7 @@ const CPUArchIdList *x86_possible_cpu_arch_ids(MachineS= tate *ms) return ms->possible_cpus; } =20 -static void x86_nmi(NMIState *n, int cpu_index, Error **errp) +static bool x86_nmi(NMIState *n, int cpu_index, Error **errp) { /* cpu index isn't used */ CPUState *cs; @@ -515,6 +515,7 @@ static void x86_nmi(NMIState *n, int cpu_index, Error *= *errp) apic_deliver_nmi(cpu->apic_state); } } + return true; } =20 static long get_file_size(FILE *f) diff --git a/hw/intc/m68k_irqc.c b/hw/intc/m68k_irqc.c index 0c515e4ecb..e05083e756 100644 --- a/hw/intc/m68k_irqc.c +++ b/hw/intc/m68k_irqc.c @@ -70,9 +70,11 @@ static void m68k_irqc_instance_init(Object *obj) qdev_init_gpio_in(DEVICE(obj), m68k_set_irq, M68K_IRQC_LEVEL_NUM); } =20 -static void m68k_nmi(NMIState *n, int cpu_index, Error **errp) +static bool m68k_nmi(NMIState *n, int cpu_index, Error **errp) { m68k_set_irq(n, M68K_IRQC_LEVEL_7, 1); + + return true; } =20 static const VMStateDescription vmstate_m68k_irqc =3D { diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 9d52ca6613..8631a226cd 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -227,13 +227,15 @@ static void glue_auxmode_set_irq(void *opaque, int ir= q, int level) s->auxmode =3D level; } =20 -static void glue_nmi(NMIState *n, int cpu_index, Error **errp) +static bool glue_nmi(NMIState *n, int cpu_index, Error **errp) { GLUEState *s =3D GLUE(n); =20 /* Hold NMI active for 100ms */ GLUE_set_irq(s, GLUE_IRQ_IN_NMI, 1); timer_mod(s->nmi_release, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + 100); + + return true; } =20 static void glue_nmi_release(void *opaque) diff --git a/hw/misc/macio/gpio.c b/hw/misc/macio/gpio.c index c8ac5633b2..0a7214421c 100644 --- a/hw/misc/macio/gpio.c +++ b/hw/misc/macio/gpio.c @@ -182,10 +182,12 @@ static void macio_gpio_reset(DeviceState *dev) macio_set_gpio(s, 1, true); } =20 -static void macio_gpio_nmi(NMIState *n, int cpu_index, Error **errp) +static bool macio_gpio_nmi(NMIState *n, int cpu_index, Error **errp) { macio_set_gpio(MACIO_GPIO(n), 9, true); macio_set_gpio(MACIO_GPIO(n), 9, false); + + return true; } =20 static void macio_gpio_class_init(ObjectClass *oc, void *data) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 44b1fbbc93..38e69f3b39 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -2309,13 +2309,14 @@ static void pnv_cpu_do_nmi_on_cpu(CPUState *cs, run= _on_cpu_data arg) } } =20 -static void pnv_nmi(NMIState *n, int cpu_index, Error **errp) +static bool pnv_nmi(NMIState *n, int cpu_index, Error **errp) { CPUState *cs; =20 CPU_FOREACH(cs) { async_run_on_cpu(cs, pnv_cpu_do_nmi_on_cpu, RUN_ON_CPU_NULL); } + return true; } =20 static void pnv_machine_class_init(ObjectClass *oc, void *data) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 4921198b9d..d298068169 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3464,13 +3464,14 @@ void spapr_do_system_reset_on_cpu(CPUState *cs, run= _on_cpu_data arg) } } =20 -static void spapr_nmi(NMIState *n, int cpu_index, Error **errp) +static bool spapr_nmi(NMIState *n, int cpu_index, Error **errp) { CPUState *cs; =20 CPU_FOREACH(cs) { async_run_on_cpu(cs, spapr_do_system_reset_on_cpu, RUN_ON_CPU_NULL= ); } + return true; } =20 int spapr_lmb_dt_populate(SpaprDrc *drc, SpaprMachineState *spapr, diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index f22f61b8b6..af7e6c632a 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -570,11 +570,13 @@ static HotplugHandler *s390_get_hotplug_handler(Machi= neState *machine, return NULL; } =20 -static void s390_nmi(NMIState *n, int cpu_index, Error **errp) +static bool s390_nmi(NMIState *n, int cpu_index, Error **errp) { CPUState *cs =3D qemu_get_cpu(cpu_index); =20 s390_cpu_restart(S390_CPU(cs)); + + return true; } =20 static ram_addr_t s390_fixup_ram_size(ram_addr_t sz) diff --git a/include/hw/nmi.h b/include/hw/nmi.h index fff41bebc6..3e827a254a 100644 --- a/include/hw/nmi.h +++ b/include/hw/nmi.h @@ -37,7 +37,8 @@ typedef struct NMIState NMIState; struct NMIClass { InterfaceClass parent_class; =20 - void (*nmi_monitor_handler)(NMIState *n, int cpu_index, Error **errp); + /** Returns: %true on success, %false on error. */ + bool (*nmi_monitor_handler)(NMIState *n, int cpu_index, Error **errp); }; =20 void nmi_monitor_handle(int cpu_index, Error **errp); --=20 2.38.1 From nobody Sat May 18 19:12:40 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1676550385; cv=none; d=zohomail.com; s=zohoarc; b=PgSwx2p4IzQD3OZuXtGLE9k/jfTUTc4wHZl3Rwk9hdgOurXQTz0k47wBtXiIegDEGrpqgN3e0uCZbHWtbeBzmeK7IeMBfdgoNCyM24p/FR+EWMIRHxoAO7ZU1GmrjARWpdQgs7AzOzOZh1CCzUc1JcpzqqUYNeaa+dy0L3PlEHk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676550385; 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=azFU279GWo7BPVVCK+2+IWX9+aBI1DPIFAzGgVCRi9Y=; b=b8JNTazKk8Dd/Rq8esPmUmpbRt3J/4v/Q/NUTDhidSlTtf7ygnvW2g8zao53AjC92oIooYUZssQGSk02KVzRViiPLlN5eGmAct/dilsDwkTBSRIv18w4JvG7swV50g/LVsXMmn6dPCV2A8KDPYgzizVW/Kpf1vJQBhu5QNongm8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1676550385694295.1429227878052; Thu, 16 Feb 2023 04:26:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pSdKk-0002mh-P0; Thu, 16 Feb 2023 07:25:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSdKY-0002eq-Rc for qemu-devel@nongnu.org; Thu, 16 Feb 2023 07:25:46 -0500 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pSdKV-00086W-P1 for qemu-devel@nongnu.org; Thu, 16 Feb 2023 07:25:41 -0500 Received: by mail-wr1-x434.google.com with SMTP id m14so1637035wrg.13 for ; Thu, 16 Feb 2023 04:25:38 -0800 (PST) Received: from localhost.localdomain ([81.0.6.76]) by smtp.gmail.com with ESMTPSA id a9-20020a5d5709000000b002c59e001631sm206448wrv.77.2023.02.16.04.25.36 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 16 Feb 2023 04:25:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=azFU279GWo7BPVVCK+2+IWX9+aBI1DPIFAzGgVCRi9Y=; b=Vd5N9rIFTUN4lL7afOng9/FS9+bWJw/PpNzRDG9GM5kG4frg9CMFwswubzn/qPQBWX /Jce+/tOVDUKMzyQKUEo/t5oEUWJJSOdORmIIAd4BGENn8cqeDQPQARLZIJfl/5kk0yA 9hr8HLxyeg1+ZnQUH1h5J3p67kE0alQjq9Ok++bwG8hZoI1+WSSwBgLRBMQfmfFXZQeI kEZYSrV4HvEZJmclq03wEb9SHccU/Dhaik0HkVs1iRoKCLE+dhhKcBFch9+785vG6TIA JOYNErdVF69kM3pypOZUAtW4wRNwokMjXKg6qm/KFyFisTt3a+MSMjr4HsdIEN34hHf5 W7jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=azFU279GWo7BPVVCK+2+IWX9+aBI1DPIFAzGgVCRi9Y=; b=7hEjq1qzhwklJ7YqS6cvwdFNBib8IxBnaQwZIGqFDFcQdVuqYJ2SjK60z6Ei+IVvTs 7bSBk+cmigVBB1qEdTP9a+4Zkq6VqvGeuya2AhQhEV7XpCDrFNffaZdOAB47bs1EscDa bPYQ05tsEKZWnof7uhUe+0jOeZKQqr3fRF5vxdA5j1YF7XNlt1Sxdl0ido7t/OWVvepT xQs6ZTRYJMAkUk9fuRYfnv257pfAW4rszARWKpuK/qT49SDoNzYZDA8oY9yXj+mst62q gtxzOS4Px6E3/ABhFJdVSUpk/xNmWw2MSYSiwDtQfovRSlmBL97xksRsXhr+zvvV6cfb DCNw== X-Gm-Message-State: AO0yUKWYy1IeWyJckIzCKuafr0e8J9XIG3B5d2s5mlpjDWEqujwJ9N4e uW3/5zAv2JqRnhISEooDlGSPkFidJ36SJVSD X-Google-Smtp-Source: AK7set+AAcWY+NmIevEMlK91nS7jQUFIzxu1bDTrFjHufDKwMMuw9GX12JihTNmcwAjmqJoQyfVbGw== X-Received: by 2002:adf:f54e:0:b0:2c5:8613:8b41 with SMTP id j14-20020adff54e000000b002c586138b41mr1316511wrp.42.1676550337510; Thu, 16 Feb 2023 04:25:37 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , qemu-arm@nongnu.org, qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Daniel Henrique Barboza , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson , Greg Kurz Subject: [PATCH 2/5] spapr/ddw: Remove confuse return value in spapr_phb_get_free_liobn() Date: Thu, 16 Feb 2023 13:25:21 +0100 Message-Id: <20230216122524.67212-3-philmd@linaro.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230216122524.67212-1-philmd@linaro.org> References: <20230216122524.67212-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: pass client-ip=2a00:1450:4864:20::434; envelope-from=philmd@linaro.org; helo=mail-wr1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1676550387584100002 The '1' returned value isn't used because spapr_phb_get_free_liobn_cb() isn't called recursively (it is only called once in spapr_phb_get_free_liobn()). The next commit will convert object_child_foreach() handlers to return a boolean indicating error. Remove this value to avoid confusion. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Daniel Henrique Barboza --- hw/ppc/spapr_rtas_ddw.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/ppc/spapr_rtas_ddw.c b/hw/ppc/spapr_rtas_ddw.c index 7ba11382bc..98f1310c6e 100644 --- a/hw/ppc/spapr_rtas_ddw.c +++ b/hw/ppc/spapr_rtas_ddw.c @@ -51,7 +51,6 @@ static int spapr_phb_get_free_liobn_cb(Object *child, voi= d *opaque) tcet =3D (SpaprTceTable *) object_dynamic_cast(child, TYPE_SPAPR_TCE_T= ABLE); if (tcet && !tcet->nb_table) { *(uint32_t *)opaque =3D tcet->liobn; - return 1; } return 0; } --=20 2.38.1 From nobody Sat May 18 19:12:40 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1676550377; cv=none; d=zohomail.com; s=zohoarc; b=OivCQiu4wOjI/soZSwUZl0PVvpiNJpfagfBmYe18Pz5kbKzCw05Jmr5u5hTIrm5lInDh11xVrFWG0ojH7AkFWOZxTxOcmHX83swkbkkzrxEYH7uNBbL1zvFfIiNRP/aJSPQb9nWtqWVRlI3w2sHKh3SCPgLHutS7MPb0Ti938XI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676550377; 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=qJ6eO40ywYvICw4d+C+uyEQTL7vzdaoeX3KvQgOXehY=; b=AhbKYX2LG5gSOfQTcY81VuoHQ2EOFE7qm4xuiLp4QnbeCuZpzlSEq4SzyEh15kM4JwdhwtXQC0sIIFmCLyTyw0pgLwlkXWMQtZ2Wd0Fy1EkcnjjghPYzPWpQfg/rJc2MpgvWmZRz+L/hgYXzp1O3890If6BtI1eFHl6/brsrwEU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 167655037768013.940446719803504; Thu, 16 Feb 2023 04:26:17 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pSdKl-0002np-HL; Thu, 16 Feb 2023 07:25:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSdKh-0002iM-IX for qemu-devel@nongnu.org; Thu, 16 Feb 2023 07:25:51 -0500 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pSdKc-000891-84 for qemu-devel@nongnu.org; Thu, 16 Feb 2023 07:25:51 -0500 Received: by mail-wm1-x334.google.com with SMTP id n36so708811wmr.1 for ; Thu, 16 Feb 2023 04:25:45 -0800 (PST) Received: from localhost.localdomain ([81.0.6.76]) by smtp.gmail.com with ESMTPSA id f17-20020a7bc8d1000000b003e2066a6339sm1651545wml.5.2023.02.16.04.25.41 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 16 Feb 2023 04:25:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qJ6eO40ywYvICw4d+C+uyEQTL7vzdaoeX3KvQgOXehY=; b=kBYbdVQGyso1jECKj/yi3VRG/rfP7QLmxxNtVSu7M2DybMgayU3efdlwctbQ7vCFJ0 V8Ha094zj2Cc5hH2/AIUV4ELIrYig+dNdqxb0hz6RrGAkek2q+vT4i1WyGTC6JHugC1j 252c1Jo1wTZVW9o4PBCdxZsqWsep34FSmUrhVmpEo+9t6+gXNeg1OdEzJPm1wQXWeF5Z TxxET0ZQ9vFuEdLEIrPBrPd+ESNZbfb3GqMP2K5rmLBqOXq0+rf35asBImxYDncR8AU3 FsIfa9f9EZgDwcwqxr1rq+jfvYSfkvsU4kPaShKjf5pguy7OGDoS9sfed6Hkwc3+Elgd 4NlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qJ6eO40ywYvICw4d+C+uyEQTL7vzdaoeX3KvQgOXehY=; b=FJ+cCQZEEtd2WAjxqa5f/8G9vSelNh7x2iR7q2oj0dHz21KjSbGnuxLOqhVUbTq0cu adKn3JoXqp6QTfOoSHZ4rVCMeW1nPqeiO2BJo+kIyeslnglqtKPP4bmM4QdF8ZYakm94 ofN9AyjLc8xKtA/AjEtBrwLpPsUXnCmJt1gFg6G7eqWNzH/B+LVumI1MmucwOtZmK8SC OMY4O5/A97NXuSlf3e/RrnPb8Jg7PEeP7NRbsMbv8HCtd5ewdwEyOJwvLelgpfHb9jvz 4HNaYKqalASH1K2BNQJ4EWNMY60wDpRgfenKa1fsfxpHylWjECte/4pS0Z5OUCsBD8Uz KjTQ== X-Gm-Message-State: AO0yUKUR1CTBWIvMGPA1la2sbOQYsSy0FGN6Pk3MJBe7ODUbqYuSbyxg NEdTlgokWX9M84WyPuJpR5lmO3BU5G6Hjffm X-Google-Smtp-Source: AK7set9tmR2qHZ29AAMkcWWiH8TJypbTLGgAT9jT/woUYOeZ/4bjhn0ZoYFwgIjJ48PrjT1dhvkISg== X-Received: by 2002:a05:600c:3198:b0:3da:acb1:2f09 with SMTP id s24-20020a05600c319800b003daacb12f09mr4735970wmp.19.1676550344223; Thu, 16 Feb 2023 04:25:44 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , qemu-arm@nongnu.org, qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini , =?UTF-8?q?Alex=20Benn=C3=A9e?= , "Michael S. Tsirkin" , Igor Mammedov , Ani Sinha , Jean-Philippe Brucker , Peter Maydell , Shannon Zhao , Eduardo Habkost , Marcel Apfelbaum , Yanan Wang , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Gerd Hoffmann , Richard Henderson , Peter Xu , Jason Wang , David Hildenbrand , Xiao Guangrong , Mark Cave-Ayland , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Daniel Henrique Barboza , David Gibson , Greg Kurz , Yuval Shaia , "Dr. David Alan Gilbert" , Fam Zheng , Alexander Bulekov , Bandan Das , Stefan Hajnoczi , Thomas Huth , Darren Kenny , Qiuhao Li , Laurent Vivier Subject: [PATCH 3/5] bulk: Have object_child_foreach() take Error* and return boolean Date: Thu, 16 Feb 2023 13:25:22 +0100 Message-Id: <20230216122524.67212-4-philmd@linaro.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230216122524.67212-1-philmd@linaro.org> References: <20230216122524.67212-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: pass client-ip=2a00:1450:4864:20::334; envelope-from=philmd@linaro.org; helo=mail-wm1-x334.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1676550379623100002 Following the Error API best practices documented in commit e3fe3988d7 ("error: Document Error API usage rules"), have the object_child_foreach[_recursive]() handler take a Error* argument and return a boolean indicating whether this error is set or not. Convert all handler implementations. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Michael S. Tsirkin --- chardev/char-mux.c | 6 ++-- chardev/char.c | 6 ++-- gdbstub/gdbstub.c | 8 +++--- hw/acpi/cxl.c | 7 +++-- hw/acpi/viot.c | 6 ++-- hw/arm/boot.c | 6 ++-- hw/arm/virt-acpi-build.c | 8 +++--- hw/core/machine-qmp-cmds.c | 18 ++++++------ hw/core/nmi.c | 8 +++--- hw/core/qdev.c | 8 ++++-- hw/core/sysbus.c | 10 +++---- hw/cpu/cluster.c | 7 +++-- hw/display/virtio-gpu-udmabuf.c | 7 +++-- hw/i386/acpi-build.c | 16 +++++------ hw/i386/intel_iommu.c | 7 +++-- hw/i386/pc.c | 13 ++++----- hw/i386/sgx.c | 7 ++--- hw/mem/memory-device.c | 25 ++++++++--------- hw/mem/pc-dimm.c | 8 +++--- hw/misc/mos6522.c | 6 ++-- hw/ppc/pnv.c | 15 +++++----- hw/ppc/pnv_bmc.c | 9 +++--- hw/ppc/pnv_xscom.c | 6 ++-- hw/ppc/spapr_pci.c | 50 ++++++++++++++++----------------- hw/ppc/spapr_rtas_ddw.c | 16 +++++++---- hw/rdma/vmw/pvrdma_main.c | 7 +++-- hw/virtio/virtio-balloon.c | 7 ++--- include/qom/object.h | 28 ++++++++++-------- iothread.c | 8 +++--- monitor/hmp-cmds.c | 6 ++-- qom/object.c | 36 ++++++++++++------------ qom/qom-hmp-cmds.c | 7 +++-- scsi/pr-manager.c | 8 +++--- softmmu/physmem.c | 13 +++++---- softmmu/qdev-monitor.c | 9 +++--- tests/qtest/fuzz/generic_fuzz.c | 6 ++-- ui/dbus-chardev.c | 14 ++++----- util/nvdimm-utils.c | 8 +++--- 38 files changed, 225 insertions(+), 215 deletions(-) diff --git a/chardev/char-mux.c b/chardev/char-mux.c index ee2d47b20d..17b5854e4c 100644 --- a/chardev/char-mux.c +++ b/chardev/char-mux.c @@ -384,7 +384,7 @@ void suspend_mux_open(void) muxes_opened =3D false; } =20 -static int chardev_options_parsed_cb(Object *child, void *opaque) +static bool chardev_options_parsed_cb(Object *child, void *opaque, Error *= *errp) { Chardev *chr =3D (Chardev *)child; =20 @@ -392,14 +392,14 @@ static int chardev_options_parsed_cb(Object *child, v= oid *opaque) open_muxes(chr); } =20 - return 0; + return true; } =20 void resume_mux_open(void) { muxes_opened =3D true; object_child_foreach(get_chardevs_root(), - chardev_options_parsed_cb, NULL); + chardev_options_parsed_cb, NULL, NULL); } =20 static void char_mux_class_init(ObjectClass *oc, void *data) diff --git a/chardev/char.c b/chardev/char.c index 11eab7764c..542b835477 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -742,7 +742,7 @@ Chardev *qemu_chr_new_mux_mon(const char *label, const = char *filename, return qemu_chr_new_permit_mux_mon(label, filename, true, context); } =20 -static int qmp_query_chardev_foreach(Object *obj, void *data) +static bool qmp_query_chardev_foreach(Object *obj, void *data, Error **err= p) { Chardev *chr =3D CHARDEV(obj); ChardevInfoList **list =3D data; @@ -754,7 +754,7 @@ static int qmp_query_chardev_foreach(Object *obj, void = *data) =20 QAPI_LIST_PREPEND(*list, value); =20 - return 0; + return true; } =20 ChardevInfoList *qmp_query_chardev(Error **errp) @@ -762,7 +762,7 @@ ChardevInfoList *qmp_query_chardev(Error **errp) ChardevInfoList *chr_list =3D NULL; =20 object_child_foreach(get_chardevs_root(), - qmp_query_chardev_foreach, &chr_list); + qmp_query_chardev_foreach, &chr_list, NULL); =20 return chr_list; } diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c index be88ca0d71..73d6352be5 100644 --- a/gdbstub/gdbstub.c +++ b/gdbstub/gdbstub.c @@ -3379,7 +3379,7 @@ static const TypeInfo char_gdb_type_info =3D { .class_init =3D char_gdb_class_init, }; =20 -static int find_cpu_clusters(Object *child, void *opaque) +static bool find_cpu_clusters(Object *child, void *opaque, Error **errp) { if (object_dynamic_cast(child, TYPE_CPU_CLUSTER)) { GDBState *s =3D (GDBState *) opaque; @@ -3400,10 +3400,10 @@ static int find_cpu_clusters(Object *child, void *o= paque) process->attached =3D false; process->target_xml[0] =3D '\0'; =20 - return 0; + return true; } =20 - return object_child_foreach(child, find_cpu_clusters, opaque); + return object_child_foreach(child, find_cpu_clusters, opaque, errp); } =20 static int pid_order(const void *a, const void *b) @@ -3422,7 +3422,7 @@ static int pid_order(const void *a, const void *b) =20 static void create_processes(GDBState *s) { - object_child_foreach(object_get_root(), find_cpu_clusters, s); + object_child_foreach(object_get_root(), find_cpu_clusters, s, NULL); =20 if (gdbserver_state.processes) { /* Sort by PID */ diff --git a/hw/acpi/cxl.c b/hw/acpi/cxl.c index 2bf8c07993..853be6f75a 100644 --- a/hw/acpi/cxl.c +++ b/hw/acpi/cxl.c @@ -117,7 +117,7 @@ static void cedt_build_cfmws(GArray *table_data, CXLSta= te *cxls) } } =20 -static int cxl_foreach_pxb_hb(Object *obj, void *opaque) +static bool cxl_foreach_pxb_hb(Object *obj, void *opaque, Error **errp) { Aml *cedt =3D opaque; =20 @@ -125,7 +125,7 @@ static int cxl_foreach_pxb_hb(Object *obj, void *opaque) cedt_build_chbs(cedt->buf, PXB_CXL_DEV(obj)); } =20 - return 0; + return true; } =20 void cxl_build_cedt(GArray *table_offsets, GArray *table_data, @@ -142,7 +142,8 @@ void cxl_build_cedt(GArray *table_offsets, GArray *tabl= e_data, =20 /* reserve space for CEDT header */ =20 - object_child_foreach_recursive(object_get_root(), cxl_foreach_pxb_hb, = cedt); + object_child_foreach_recursive(object_get_root(), cxl_foreach_pxb_hb, + cedt, NULL); cedt_build_cfmws(cedt->buf, cxl_state); =20 /* copy AML table into ACPI tables blob and patch header there */ diff --git a/hw/acpi/viot.c b/hw/acpi/viot.c index 4e0bf69067..9099cd9c15 100644 --- a/hw/acpi/viot.c +++ b/hw/acpi/viot.c @@ -41,7 +41,7 @@ static void build_pci_host_range(GArray *table_data, int = min_bus, int max_bus, } =20 /* Build PCI range for a given PCI host bridge */ -static int enumerate_pci_host_bridges(Object *obj, void *opaque) +static bool enumerate_pci_host_bridges(Object *obj, void *opaque, Error **= errp) { GArray *pci_host_ranges =3D opaque; =20 @@ -61,7 +61,7 @@ static int enumerate_pci_host_bridges(Object *obj, void *= opaque) } } =20 - return 0; + return true; } =20 static gint pci_host_range_compare(gconstpointer a, gconstpointer b) @@ -99,7 +99,7 @@ void build_viot(MachineState *ms, GArray *table_data, BIO= SLinker *linker, =20 /* Build the list of PCI ranges that this viommu manages */ object_child_foreach_recursive(OBJECT(ms), enumerate_pci_host_bridges, - pci_host_ranges); + pci_host_ranges, NULL); =20 /* Sort the pci host ranges by min_bus */ g_array_sort(pci_host_ranges, pci_host_range_compare); diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 3d7d11f782..64eda44f1d 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -831,7 +831,7 @@ static void do_cpu_reset(void *opaque) } } =20 -static int do_arm_linux_init(Object *obj, void *opaque) +static bool do_arm_linux_init(Object *obj, void *opaque, Error **errp) { if (object_dynamic_cast(obj, TYPE_ARM_LINUX_BOOT_IF)) { ARMLinuxBootIf *albif =3D ARM_LINUX_BOOT_IF(obj); @@ -842,7 +842,7 @@ static int do_arm_linux_init(Object *obj, void *opaque) albifc->arm_linux_init(albif, info->secure_boot); } } - return 0; + return true; } =20 static ssize_t arm_load_elf(struct arm_boot_info *info, uint64_t *pentry, @@ -1185,7 +1185,7 @@ static void arm_setup_direct_kernel_boot(ARMCPU *cpu, * that we're doing a direct kernel boot. */ object_child_foreach_recursive(object_get_root(), - do_arm_linux_init, info); + do_arm_linux_init, info, NULL); } info->is_linux =3D is_linux; =20 diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 4156111d49..17e25c7f0f 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -266,8 +266,8 @@ struct AcpiIortIdMapping { typedef struct AcpiIortIdMapping AcpiIortIdMapping; =20 /* Build the iort ID mapping to SMMUv3 for a given PCI host bridge */ -static int -iort_host_bridges(Object *obj, void *opaque) +static bool +iort_host_bridges(Object *obj, void *opaque, Error **errp) { GArray *idmap_blob =3D opaque; =20 @@ -287,7 +287,7 @@ iort_host_bridges(Object *obj, void *opaque) } } =20 - return 0; + return true; } =20 static int iort_idmap_compare(gconstpointer a, gconstpointer b) @@ -323,7 +323,7 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) AcpiIortIdMapping next_range =3D {0}; =20 object_child_foreach_recursive(object_get_root(), - iort_host_bridges, smmu_idmaps); + iort_host_bridges, smmu_idmaps, NUL= L); =20 /* Sort the smmu idmap by input_base */ g_array_sort(smmu_idmaps, iort_idmap_compare); diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c index 44b5da8880..06aa5830b5 100644 --- a/hw/core/machine-qmp-cmds.c +++ b/hw/core/machine-qmp-cmds.c @@ -157,7 +157,7 @@ void qmp_set_numa_node(NumaOptions *cmd, Error **errp) set_numa_options(MACHINE(qdev_get_machine()), cmd, errp); } =20 -static int query_memdev(Object *obj, void *opaque) +static bool query_memdev(Object *obj, void *opaque, Error **errp) { Error *err =3D NULL; MemdevList **list =3D opaque; @@ -194,7 +194,7 @@ static int query_memdev(Object *obj, void *opaque) QAPI_LIST_PREPEND(*list, m); } =20 - return 0; + return true; } =20 MemdevList *qmp_query_memdev(Error **errp) @@ -202,7 +202,7 @@ MemdevList *qmp_query_memdev(Error **errp) Object *obj =3D object_get_objects_root(); MemdevList *list =3D NULL; =20 - object_child_foreach(obj, query_memdev, &list); + object_child_foreach(obj, query_memdev, &list, errp); return list; } =20 @@ -303,7 +303,7 @@ MemoryInfo *qmp_query_memory_size_summary(Error **errp) return mem_info; } =20 -static int qmp_x_query_rdma_foreach(Object *obj, void *opaque) +static bool qmp_x_query_rdma_foreach(Object *obj, void *opaque, Error **er= rp) { RdmaProvider *rdma; RdmaProviderClass *k; @@ -321,7 +321,7 @@ static int qmp_x_query_rdma_foreach(Object *obj, void *= opaque) } } =20 - return 0; + return true; } =20 HumanReadableText *qmp_x_query_rdma(Error **errp) @@ -329,7 +329,7 @@ HumanReadableText *qmp_x_query_rdma(Error **errp) g_autoptr(GString) buf =3D g_string_new(""); =20 object_child_foreach_recursive(object_get_root(), - qmp_x_query_rdma_foreach, buf); + qmp_x_query_rdma_foreach, buf, NULL); =20 return human_readable_text_from_str(buf); } @@ -341,7 +341,7 @@ HumanReadableText *qmp_x_query_ramblock(Error **errp) return human_readable_text_from_str(buf); } =20 -static int qmp_x_query_irq_foreach(Object *obj, void *opaque) +static bool qmp_x_query_irq_foreach(Object *obj, void *opaque, Error **err= p) { InterruptStatsProvider *intc; InterruptStatsProviderClass *k; @@ -371,7 +371,7 @@ static int qmp_x_query_irq_foreach(Object *obj, void *o= paque) } } =20 - return 0; + return true; } =20 HumanReadableText *qmp_x_query_irq(Error **errp) @@ -379,7 +379,7 @@ HumanReadableText *qmp_x_query_irq(Error **errp) g_autoptr(GString) buf =3D g_string_new(""); =20 object_child_foreach_recursive(object_get_root(), - qmp_x_query_irq_foreach, buf); + qmp_x_query_irq_foreach, buf, NULL); =20 return human_readable_text_from_str(buf); } diff --git a/hw/core/nmi.c b/hw/core/nmi.c index 76cb3ba3b0..fa74c405f7 100644 --- a/hw/core/nmi.c +++ b/hw/core/nmi.c @@ -34,7 +34,7 @@ struct do_nmi_s { =20 static void nmi_children(Object *o, struct do_nmi_s *ns); =20 -static int do_nmi(Object *o, void *opaque) +static bool do_nmi(Object *o, void *opaque, Error **errp) { struct do_nmi_s *ns =3D opaque; NMIState *n =3D (NMIState *) object_dynamic_cast(o, TYPE_NMI); @@ -44,17 +44,17 @@ static int do_nmi(Object *o, void *opaque) =20 ns->handled =3D true; if (!nc->nmi_monitor_handler(n, ns->cpu_index, &ns->err)) { - return -1; + return false; } } nmi_children(o, ns); =20 - return 0; + return true; } =20 static void nmi_children(Object *o, struct do_nmi_s *ns) { - object_child_foreach(o, do_nmi, ns); + object_child_foreach(o, do_nmi, ns, NULL); } =20 void nmi_monitor_handle(int cpu_index, Error **errp) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index d759c4602c..949e89022e 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -306,7 +306,8 @@ void qdev_unrealize(DeviceState *dev) object_property_set_bool(OBJECT(dev), "realized", false, &error_abort); } =20 -static int qdev_assert_realized_properly_cb(Object *obj, void *opaque) +static bool qdev_assert_realized_properly_cb(Object *obj, void *opaque, + Error **errp) { DeviceState *dev =3D DEVICE(object_dynamic_cast(obj, TYPE_DEVICE)); DeviceClass *dc; @@ -316,13 +317,14 @@ static int qdev_assert_realized_properly_cb(Object *o= bj, void *opaque) assert(dev->realized); assert(dev->parent_bus || !dc->bus_type); } - return 0; + return true; } =20 void qdev_assert_realized_properly(void) { object_child_foreach_recursive(object_get_root(), - qdev_assert_realized_properly_cb, NULL); + qdev_assert_realized_properly_cb, + NULL, NULL); } =20 bool qdev_machine_modified(void) diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c index 35f902b582..41e70775b0 100644 --- a/hw/core/sysbus.c +++ b/hw/core/sysbus.c @@ -33,7 +33,7 @@ typedef struct SysBusFind { } SysBusFind; =20 /* Run func() for every sysbus device, traverse the tree for everything el= se */ -static int find_sysbus_device(Object *obj, void *opaque) +static bool find_sysbus_device(Object *obj, void *opaque, Error **errp) { SysBusFind *find =3D opaque; Object *dev; @@ -44,12 +44,12 @@ static int find_sysbus_device(Object *obj, void *opaque) =20 if (!sbdev) { /* Container, traverse it for children */ - return object_child_foreach(obj, find_sysbus_device, opaque); + return object_child_foreach(obj, find_sysbus_device, opaque, errp); } =20 find->func(sbdev, find->opaque); =20 - return 0; + return true; } =20 /* @@ -66,9 +66,9 @@ void foreach_dynamic_sysbus_device(FindSysbusDeviceFunc *= func, void *opaque) =20 /* Loop through all sysbus devices that were spawned outside the machi= ne */ container =3D container_get(qdev_get_machine(), "/peripheral"); - find_sysbus_device(container, &find); + find_sysbus_device(container, &find, NULL); container =3D container_get(qdev_get_machine(), "/peripheral-anon"); - find_sysbus_device(container, &find); + find_sysbus_device(container, &find, NULL); } =20 =20 diff --git a/hw/cpu/cluster.c b/hw/cpu/cluster.c index e444b7c29d..bf3e27e945 100644 --- a/hw/cpu/cluster.c +++ b/hw/cpu/cluster.c @@ -36,7 +36,7 @@ typedef struct CallbackData { int cpu_count; } CallbackData; =20 -static int add_cpu_to_cluster(Object *obj, void *opaque) +static bool add_cpu_to_cluster(Object *obj, void *opaque, Error **errp) { CallbackData *cbdata =3D opaque; CPUState *cpu =3D (CPUState *)object_dynamic_cast(obj, TYPE_CPU); @@ -45,7 +45,7 @@ static int add_cpu_to_cluster(Object *obj, void *opaque) cpu->cluster_index =3D cbdata->cluster->cluster_id; cbdata->cpu_count++; } - return 0; + return true; } =20 static void cpu_cluster_realize(DeviceState *dev, Error **errp) @@ -63,7 +63,8 @@ static void cpu_cluster_realize(DeviceState *dev, Error *= *errp) return; } =20 - object_child_foreach_recursive(cluster_obj, add_cpu_to_cluster, &cbdat= a); + object_child_foreach_recursive(cluster_obj, add_cpu_to_cluster, + &cbdata, NULL); =20 /* * A cluster with no CPUs is a bug in the board/SoC code that created = it; diff --git a/hw/display/virtio-gpu-udmabuf.c b/hw/display/virtio-gpu-udmabu= f.c index 69e2cf0bd6..c3d3ea4f27 100644 --- a/hw/display/virtio-gpu-udmabuf.c +++ b/hw/display/virtio-gpu-udmabuf.c @@ -90,7 +90,7 @@ static void virtio_gpu_destroy_udmabuf(struct virtio_gpu_= simple_resource *res) } } =20 -static int find_memory_backend_type(Object *obj, void *opaque) +static bool find_memory_backend_type(Object *obj, void *opaque, Error **er= rp) { bool *memfd_backend =3D opaque; int ret; @@ -107,7 +107,7 @@ static int find_memory_backend_type(Object *obj, void *= opaque) } } =20 - return 0; + return true; } =20 bool virtio_gpu_have_udmabuf(void) @@ -122,7 +122,8 @@ bool virtio_gpu_have_udmabuf(void) } =20 memdev_root =3D object_resolve_path("/objects", NULL); - object_child_foreach(memdev_root, find_memory_backend_type, &memfd_bac= kend); + object_child_foreach(memdev_root, find_memory_backend_type, + &memfd_backend, NULL); =20 return memfd_backend; } diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index b67dcbbb37..0079f98304 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2034,8 +2034,8 @@ insert_scope(PCIBus *bus, PCIDevice *dev, void *opaqu= e) } =20 /* For a given PCI host bridge, walk and insert DMAR scope */ -static int -dmar_host_bridges(Object *obj, void *opaque) +static bool +dmar_host_bridges(Object *obj, void *opaque, Error **errp) { GArray *scope_blob =3D opaque; =20 @@ -2047,7 +2047,7 @@ dmar_host_bridges(Object *obj, void *opaque) } } =20 - return 0; + return true; } =20 /* @@ -2077,7 +2077,7 @@ build_dmar_q35(GArray *table_data, BIOSLinker *linker= , const char *oem_id, * is attached to a bus with iommu enabled. */ object_child_foreach_recursive(object_get_root(), - dmar_host_bridges, scope_blob); + dmar_host_bridges, scope_blob, NULL); =20 assert(iommu); if (x86_iommu_ir_supported(iommu)) { @@ -2240,8 +2240,8 @@ insert_ivhd(PCIBus *bus, PCIDevice *dev, void *opaque) } =20 /* For all PCI host bridges, walk and insert IVHD entries */ -static int -ivrs_host_bridges(Object *obj, void *opaque) +static bool +ivrs_host_bridges(Object *obj, void *opaque, Error **errp) { GArray *ivhd_blob =3D opaque; =20 @@ -2253,7 +2253,7 @@ ivrs_host_bridges(Object *obj, void *opaque) } } =20 - return 0; + return true; } =20 static void @@ -2292,7 +2292,7 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linke= r, const char *oem_id, * is sufficient when no aliases are present. */ object_child_foreach_recursive(object_get_root(), - ivrs_host_bridges, ivhd_blob); + ivrs_host_bridges, ivhd_blob, NULL); =20 if (!ivhd_blob->len) { /* diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 98a5c304a7..3d7f643dc7 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4059,7 +4059,8 @@ static bool vtd_decide_config(IntelIOMMUState *s, Err= or **errp) return true; } =20 -static int vtd_machine_done_notify_one(Object *child, void *unused) +static bool vtd_machine_done_notify_one(Object *child, void *unused, + Error **errp) { IntelIOMMUState *iommu =3D INTEL_IOMMU_DEVICE(x86_iommu_get_default()); =20 @@ -4072,13 +4073,13 @@ static int vtd_machine_done_notify_one(Object *chil= d, void *unused) vtd_panic_require_caching_mode(); } =20 - return 0; + return true; } =20 static void vtd_machine_done_hook(Notifier *notifier, void *unused) { object_child_foreach_recursive(object_get_root(), - vtd_machine_done_notify_one, NULL); + vtd_machine_done_notify_one, NULL, NULL= ); } =20 static Notifier vtd_machine_done_notify =3D { diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 6e592bd969..310ca78560 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -546,22 +546,21 @@ typedef struct check_fdc_state { bool multiple; } CheckFdcState; =20 -static int check_fdc(Object *obj, void *opaque) +static bool check_fdc(Object *obj, void *opaque, Error **errp) { CheckFdcState *state =3D opaque; Object *fdc; uint32_t iobase; - Error *local_err =3D NULL; + g_autofree Error *local_err =3D NULL; =20 fdc =3D object_dynamic_cast(obj, TYPE_ISA_FDC); if (!fdc) { - return 0; + return true; } =20 iobase =3D object_property_get_uint(obj, "iobase", &local_err); if (local_err || iobase !=3D 0x3f0) { - error_free(local_err); - return 0; + return true; } =20 if (state->floppy) { @@ -569,7 +568,7 @@ static int check_fdc(Object *obj, void *opaque) } else { state->floppy =3D ISA_DEVICE(obj); } - return 0; + return true; } =20 static const char * const fdc_container_path[] =3D { @@ -588,7 +587,7 @@ static ISADevice *pc_find_fdc0(void) =20 for (i =3D 0; i < ARRAY_SIZE(fdc_container_path); i++) { container =3D container_get(qdev_get_machine(), fdc_container_path= [i]); - object_child_foreach(container, check_fdc, &state); + object_child_foreach(container, check_fdc, &state, NULL); } =20 if (state.multiple) { diff --git a/hw/i386/sgx.c b/hw/i386/sgx.c index db004d17a6..c09ae42a3b 100644 --- a/hw/i386/sgx.c +++ b/hw/i386/sgx.c @@ -37,7 +37,7 @@ =20 #define RETRY_NUM 2 =20 -static int sgx_epc_device_list(Object *obj, void *opaque) +static bool sgx_epc_device_list(Object *obj, void *opaque, Error **errp) { GSList **list =3D opaque; =20 @@ -45,15 +45,14 @@ static int sgx_epc_device_list(Object *obj, void *opaqu= e) *list =3D g_slist_append(*list, DEVICE(obj)); } =20 - object_child_foreach(obj, sgx_epc_device_list, opaque); - return 0; + return object_child_foreach(obj, sgx_epc_device_list, opaque); } =20 static GSList *sgx_epc_get_device_list(void) { GSList *list =3D NULL; =20 - object_child_foreach(qdev_get_machine(), sgx_epc_device_list, &list); + object_child_foreach(qdev_get_machine(), sgx_epc_device_list, &list, N= ULL); return list; } =20 diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c index d9f8301711..f0f47c0657 100644 --- a/hw/mem/memory-device.c +++ b/hw/mem/memory-device.c @@ -35,7 +35,7 @@ static gint memory_device_addr_sort(gconstpointer a, gcon= stpointer b) return 0; } =20 -static int memory_device_build_list(Object *obj, void *opaque) +static bool memory_device_build_list(Object *obj, void *opaque, Error **er= rp) { GSList **list =3D opaque; =20 @@ -46,11 +46,11 @@ static int memory_device_build_list(Object *obj, void *= opaque) } } =20 - object_child_foreach(obj, memory_device_build_list, opaque); - return 0; + return object_child_foreach(obj, memory_device_build_list, opaque, err= p); } =20 -static int memory_device_used_region_size(Object *obj, void *opaque) +static bool memory_device_used_region_size(Object *obj, void *opaque, + Error **errp) { uint64_t *size =3D opaque; =20 @@ -63,8 +63,8 @@ static int memory_device_used_region_size(Object *obj, vo= id *opaque) } } =20 - object_child_foreach(obj, memory_device_used_region_size, opaque); - return 0; + return object_child_foreach(obj, memory_device_used_region_size, + opaque, errp); } =20 static void memory_device_check_addable(MachineState *ms, uint64_t size, @@ -83,7 +83,7 @@ static void memory_device_check_addable(MachineState *ms,= uint64_t size, } =20 /* will we exceed the total amount of memory specified */ - memory_device_used_region_size(OBJECT(ms), &used_region_size); + memory_device_used_region_size(OBJECT(ms), &used_region_size, NULL); if (used_region_size + size < used_region_size || used_region_size + size > ms->maxram_size - ms->ram_size) { error_setg(errp, "not enough space, currently 0x%" PRIx64 @@ -159,7 +159,7 @@ static uint64_t memory_device_get_free_addr(MachineStat= e *ms, } =20 /* find address range that will fit new memory device */ - object_child_foreach(OBJECT(ms), memory_device_build_list, &list); + object_child_foreach(OBJECT(ms), memory_device_build_list, &list, NULL= ); for (item =3D list; item; item =3D g_slist_next(item)) { const MemoryDeviceState *md =3D item->data; const MemoryDeviceClass *mdc =3D MEMORY_DEVICE_GET_CLASS(OBJECT(md= )); @@ -202,7 +202,7 @@ MemoryDeviceInfoList *qmp_memory_device_list(void) MemoryDeviceInfoList *list =3D NULL, **tail =3D &list; =20 object_child_foreach(qdev_get_machine(), memory_device_build_list, - &devices); + &devices, NULL); =20 for (item =3D devices; item; item =3D g_slist_next(item)) { const MemoryDeviceState *md =3D MEMORY_DEVICE(item->data); @@ -219,7 +219,7 @@ MemoryDeviceInfoList *qmp_memory_device_list(void) return list; } =20 -static int memory_device_plugged_size(Object *obj, void *opaque) +static bool memory_device_plugged_size(Object *obj, void *opaque, Error **= errp) { uint64_t *size =3D opaque; =20 @@ -233,15 +233,14 @@ static int memory_device_plugged_size(Object *obj, vo= id *opaque) } } =20 - object_child_foreach(obj, memory_device_plugged_size, opaque); - return 0; + return object_child_foreach(obj, memory_device_plugged_size, opaque, e= rrp); } =20 uint64_t get_plugged_memory_size(void) { uint64_t size =3D 0; =20 - memory_device_plugged_size(qdev_get_machine(), &size); + memory_device_plugged_size(qdev_get_machine(), &size, NULL); =20 return size; } diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index 50ef83215c..4a722416ce 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -92,7 +92,7 @@ void pc_dimm_unplug(PCDIMMDevice *dimm, MachineState *mac= hine) vmstate_unregister_ram(vmstate_mr, DEVICE(dimm)); } =20 -static int pc_dimm_slot2bitmap(Object *obj, void *opaque) +static bool pc_dimm_slot2bitmap(Object *obj, void *opaque, Error **errp) { unsigned long *bitmap =3D opaque; =20 @@ -104,8 +104,8 @@ static int pc_dimm_slot2bitmap(Object *obj, void *opaqu= e) } } =20 - object_child_foreach(obj, pc_dimm_slot2bitmap, opaque); - return 0; + object_child_foreach(obj, pc_dimm_slot2bitmap, opaque, errp); + return true; } =20 static int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **e= rrp) @@ -120,7 +120,7 @@ static int pc_dimm_get_free_slot(const int *hint, int m= ax_slots, Error **errp) } =20 bitmap =3D bitmap_new(max_slots); - object_child_foreach(qdev_get_machine(), pc_dimm_slot2bitmap, bitmap); + object_child_foreach(qdev_get_machine(), pc_dimm_slot2bitmap, bitmap, = NULL); =20 /* check if requested slot is not occupied */ if (hint) { diff --git a/hw/misc/mos6522.c b/hw/misc/mos6522.c index d6ba47bde9..d7a660a4a3 100644 --- a/hw/misc/mos6522.c +++ b/hw/misc/mos6522.c @@ -497,7 +497,7 @@ void mos6522_write(void *opaque, hwaddr addr, uint64_t = val, unsigned size) } } =20 -static int qmp_x_query_via_foreach(Object *obj, void *opaque) +static bool qmp_x_query_via_foreach(Object *obj, void *opaque, Error **err= p) { GString *buf =3D opaque; =20 @@ -573,7 +573,7 @@ static int qmp_x_query_via_foreach(Object *obj, void *o= paque) get_next_irq_time(s, &s->timers[1], now)); } =20 - return 0; + return true; } =20 static HumanReadableText *qmp_x_query_via(Error **errp) @@ -581,7 +581,7 @@ static HumanReadableText *qmp_x_query_via(Error **errp) g_autoptr(GString) buf =3D g_string_new(""); =20 object_child_foreach_recursive(object_get_root(), - qmp_x_query_via_foreach, buf); + qmp_x_query_via_foreach, buf, NULL); =20 return human_readable_text_from_str(buf); } diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 38e69f3b39..36b372dd95 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -747,18 +747,17 @@ static void pnv_chip_power8_pic_print_info(PnvChip *c= hip, Monitor *mon) } } =20 -static int pnv_chip_power9_pic_print_info_child(Object *child, void *opaqu= e) +static bool pnv_chip_power9_pic_print_info_child(Object *child, void *opaq= ue, + Error **errp) { Monitor *mon =3D opaque; PnvPHB *phb =3D (PnvPHB *) object_dynamic_cast(child, TYPE_PNV_PHB); =20 - if (!phb) { - return 0; + if (phb) { + pnv_phb4_pic_print_info(PNV_PHB4(phb->backend), mon); } =20 - pnv_phb4_pic_print_info(PNV_PHB4(phb->backend), mon); - - return 0; + return true; } =20 static void pnv_chip_power9_pic_print_info(PnvChip *chip, Monitor *mon) @@ -769,7 +768,7 @@ static void pnv_chip_power9_pic_print_info(PnvChip *chi= p, Monitor *mon) pnv_psi_pic_print_info(&chip9->psi, mon); =20 object_child_foreach_recursive(OBJECT(chip), - pnv_chip_power9_pic_print_info_child, mon); + pnv_chip_power9_pic_print_info_child, mon, NULL); } =20 static uint64_t pnv_chip_power8_xscom_core_base(PnvChip *chip, @@ -817,7 +816,7 @@ static void pnv_chip_power10_pic_print_info(PnvChip *ch= ip, Monitor *mon) pnv_psi_pic_print_info(&chip10->psi, mon); =20 object_child_foreach_recursive(OBJECT(chip), - pnv_chip_power9_pic_print_info_child, mon); + pnv_chip_power9_pic_print_info_child, mon, NULL); } =20 /* Always give the first 1GB to chip 0 else we won't boot */ diff --git a/hw/ppc/pnv_bmc.c b/hw/ppc/pnv_bmc.c index 99f1e8d7f9..05acc88a55 100644 --- a/hw/ppc/pnv_bmc.c +++ b/hw/ppc/pnv_bmc.c @@ -283,17 +283,17 @@ typedef struct ForeachArgs { Object *obj; } ForeachArgs; =20 -static int bmc_find(Object *child, void *opaque) +static bool bmc_find(Object *child, void *opaque, Error **errp) { ForeachArgs *args =3D opaque; =20 if (object_dynamic_cast(child, args->name)) { if (args->obj) { - return 1; + return false; } args->obj =3D child; } - return 0; + return true; } =20 IPMIBmc *pnv_bmc_find(Error **errp) @@ -301,7 +301,8 @@ IPMIBmc *pnv_bmc_find(Error **errp) ForeachArgs args =3D { TYPE_IPMI_BMC, NULL }; int ret; =20 - ret =3D object_child_foreach_recursive(object_get_root(), bmc_find, &a= rgs); + ret =3D object_child_foreach_recursive(object_get_root(), bmc_find, + &args, NULL); if (ret) { error_setg(errp, "machine should have only one BMC device. " "Use '-nodefaults'"); diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c index d820e05e40..c7ca5a5b4c 100644 --- a/hw/ppc/pnv_xscom.c +++ b/hw/ppc/pnv_xscom.c @@ -254,7 +254,7 @@ typedef struct ForeachPopulateArgs { int xscom_offset; } ForeachPopulateArgs; =20 -static int xscom_dt_child(Object *child, void *opaque) +static bool xscom_dt_child(Object *child, void *opaque, Error **errp) { if (object_dynamic_cast(child, TYPE_PNV_XSCOM_INTERFACE)) { ForeachPopulateArgs *args =3D opaque; @@ -268,7 +268,7 @@ static int xscom_dt_child(Object *child, void *opaque) _FDT((xc->dt_xscom(xd, args->fdt, args->xscom_offset))); } } - return 0; + return true; } =20 int pnv_dt_xscom(PnvChip *chip, void *fdt, int root_offset, @@ -308,7 +308,7 @@ int pnv_dt_xscom(PnvChip *chip, void *fdt, int root_off= set, * PnvXScomInterface objects which can lie a bit deeper than the * first layer. */ - object_child_foreach_recursive(OBJECT(chip), xscom_dt_child, &args); + object_child_foreach_recursive(OBJECT(chip), xscom_dt_child, &args, NU= LL); return 0; } =20 diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 75aacda65a..2eed33ab3b 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1488,28 +1488,31 @@ static void spapr_pci_bridge_plug(SpaprPhbState *ph= b, } =20 /* Returns non-zero if the value of "chassis_nr" is already in use */ -static int check_chassis_nr(Object *obj, void *opaque) +static bool check_chassis_nr(Object *obj, void *opaque, Error **errp) { - int new_chassis_nr =3D - object_property_get_uint(opaque, "chassis_nr", &error_abort); - int chassis_nr =3D - object_property_get_uint(obj, "chassis_nr", NULL); - - if (!object_dynamic_cast(obj, TYPE_PCI_BRIDGE)) { - return 0; - } - - /* Skip unsupported bridge types */ - if (!chassis_nr) { - return 0; - } + int chassis_nr; =20 /* Skip self */ if (obj =3D=3D opaque) { - return 0; + return true; } =20 - return chassis_nr =3D=3D new_chassis_nr; + if (!object_dynamic_cast(obj, TYPE_PCI_BRIDGE)) { + return true; + } + + chassis_nr =3D object_property_get_uint(obj, "chassis_nr", NULL); + /* Skip unsupported bridge types */ + if (!chassis_nr) { + return true; + } + + if (chassis_nr =3D=3D object_property_get_uint(opaque, "chassis_nr", + &error_abort)) { + error_setg(errp, "Bridge chassis %d already in use", chassis_nr); + return false; + } + return true; } =20 static bool bridge_has_valid_chassis_nr(Object *bridge, Error **errp) @@ -1529,13 +1532,8 @@ static bool bridge_has_valid_chassis_nr(Object *brid= ge, Error **errp) } =20 /* We want unique values for "chassis_nr" */ - if (object_child_foreach_recursive(object_get_root(), check_chassis_nr, - bridge)) { - error_setg(errp, "Bridge chassis %d already in use", chassis_nr); - return false; - } - - return true; + return object_child_foreach_recursive(object_get_root(), check_chassis= _nr, + bridge, errp); } =20 static void spapr_pci_pre_plug(HotplugHandler *plug_handler, @@ -2035,7 +2033,7 @@ unrealize: spapr_phb_unrealize(dev); } =20 -static int spapr_phb_children_reset(Object *child, void *opaque) +static bool spapr_phb_children_reset(Object *child, void *opaque, Error **= errp) { DeviceState *dev =3D (DeviceState *) object_dynamic_cast(child, TYPE_D= EVICE); =20 @@ -2043,7 +2041,7 @@ static int spapr_phb_children_reset(Object *child, vo= id *opaque) device_cold_reset(dev); } =20 - return 0; + return true; } =20 void spapr_phb_dma_reset(SpaprPhbState *sphb) @@ -2079,7 +2077,7 @@ static void spapr_phb_reset(DeviceState *qdev) } =20 /* Reset the IOMMU state */ - object_child_foreach(OBJECT(qdev), spapr_phb_children_reset, NULL); + object_child_foreach(OBJECT(qdev), spapr_phb_children_reset, NULL, NUL= L); =20 if (spapr_phb_eeh_available(SPAPR_PCI_HOST_BRIDGE(qdev))) { spapr_phb_vfio_reset(qdev); diff --git a/hw/ppc/spapr_rtas_ddw.c b/hw/ppc/spapr_rtas_ddw.c index 98f1310c6e..48ba59e4b3 100644 --- a/hw/ppc/spapr_rtas_ddw.c +++ b/hw/ppc/spapr_rtas_ddw.c @@ -24,7 +24,8 @@ #include "hw/pci-host/spapr.h" #include "trace.h" =20 -static int spapr_phb_get_active_win_num_cb(Object *child, void *opaque) +static bool spapr_phb_get_active_win_num_cb(Object *child, void *opaque, + Error **errp) { SpaprTceTable *tcet; =20 @@ -32,19 +33,21 @@ static int spapr_phb_get_active_win_num_cb(Object *chil= d, void *opaque) if (tcet && tcet->nb_table) { ++*(unsigned *)opaque; } - return 0; + return true; } =20 static unsigned spapr_phb_get_active_win_num(SpaprPhbState *sphb) { unsigned ret =3D 0; =20 - object_child_foreach(OBJECT(sphb), spapr_phb_get_active_win_num_cb, &r= et); + object_child_foreach(OBJECT(sphb), spapr_phb_get_active_win_num_cb, + &ret, NULL); =20 return ret; } =20 -static int spapr_phb_get_free_liobn_cb(Object *child, void *opaque) +static bool spapr_phb_get_free_liobn_cb(Object *child, void *opaque, + Error **errp) { SpaprTceTable *tcet; =20 @@ -52,14 +55,15 @@ static int spapr_phb_get_free_liobn_cb(Object *child, v= oid *opaque) if (tcet && !tcet->nb_table) { *(uint32_t *)opaque =3D tcet->liobn; } - return 0; + return true; } =20 static unsigned spapr_phb_get_free_liobn(SpaprPhbState *sphb) { uint32_t liobn =3D 0; =20 - object_child_foreach(OBJECT(sphb), spapr_phb_get_free_liobn_cb, &liobn= ); + object_child_foreach(OBJECT(sphb), spapr_phb_get_free_liobn_cb, + &liobn, NULL); =20 return liobn; } diff --git a/hw/rdma/vmw/pvrdma_main.c b/hw/rdma/vmw/pvrdma_main.c index 4fc6712025..5b25118edc 100644 --- a/hw/rdma/vmw/pvrdma_main.c +++ b/hw/rdma/vmw/pvrdma_main.c @@ -574,7 +574,7 @@ static void init_dev_caps(PVRDMADev *dev) dev->dev_attr.max_sge) - TARGET_PAGE_SIZE; } =20 -static int pvrdma_check_ram_shared(Object *obj, void *opaque) +static bool pvrdma_check_ram_shared(Object *obj, void *opaque, Error **err= p) { bool *shared =3D opaque; =20 @@ -582,7 +582,7 @@ static int pvrdma_check_ram_shared(Object *obj, void *o= paque) *shared =3D object_property_get_bool(obj, "share", NULL); } =20 - return 0; + return true; } =20 static void pvrdma_shutdown_notifier(Notifier *n, void *opaque) @@ -623,7 +623,8 @@ static void pvrdma_realize(PCIDevice *pdev, Error **err= p) =20 memdev_root =3D object_resolve_path("/objects", NULL); if (memdev_root) { - object_child_foreach(memdev_root, pvrdma_check_ram_shared, &ram_sh= ared); + object_child_foreach(memdev_root, pvrdma_check_ram_shared, + &ram_shared, NULL); } if (!ram_shared) { error_setg(errp, "Only shared memory backed ram is supported"); diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c index 746f07c4d2..84cd2a1334 100644 --- a/hw/virtio/virtio-balloon.c +++ b/hw/virtio/virtio-balloon.c @@ -729,7 +729,7 @@ static void virtio_balloon_get_config(VirtIODevice *vde= v, uint8_t *config_data) memcpy(config_data, &config, virtio_balloon_config_size(dev)); } =20 -static int build_dimm_list(Object *obj, void *opaque) +static bool build_dimm_list(Object *obj, void *opaque, Error **errp) { GSList **list =3D opaque; =20 @@ -740,8 +740,7 @@ static int build_dimm_list(Object *obj, void *opaque) } } =20 - object_child_foreach(obj, build_dimm_list, opaque); - return 0; + return object_child_foreach(obj, build_dimm_list, opaque, errp); } =20 static ram_addr_t get_current_ram_size(void) @@ -749,7 +748,7 @@ static ram_addr_t get_current_ram_size(void) GSList *list =3D NULL, *item; ram_addr_t size =3D current_machine->ram_size; =20 - build_dimm_list(qdev_get_machine(), &list); + build_dimm_list(qdev_get_machine(), &list, NULL); for (item =3D list; item; item =3D g_slist_next(item)) { Object *obj =3D OBJECT(item->data); if (!strcmp(object_get_typename(obj), TYPE_PC_DIMM)) { diff --git a/include/qom/object.h b/include/qom/object.h index ef7258a5e1..7809cd3925 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -1907,36 +1907,40 @@ void object_class_property_set_description(ObjectCl= ass *klass, const char *name, * @obj: the object whose children will be navigated * @fn: the iterator function to be called * @opaque: an opaque value that will be passed to the iterator + * @errp: pointer to a NULL-initialized error object * - * Call @fn passing each child of @obj and @opaque to it, until @fn returns - * non-zero. + * Call @fn passing each child of @obj, @opaque and @errp to it, + * until @fn returns false. * * It is forbidden to add or remove children from @obj from the @fn * callback. * - * Returns: The last value returned by @fn, or 0 if there is no child. + * Returns: The last value returned by @fn, or %true if there is no child. */ -int object_child_foreach(Object *obj, int (*fn)(Object *child, void *opaqu= e), - void *opaque); +bool object_child_foreach(Object *obj, + bool (*fn)(Object *child, void *opaque, Error **= errp), + void *opaque, Error **errp); =20 /** * object_child_foreach_recursive: * @obj: the object whose children will be navigated * @fn: the iterator function to be called * @opaque: an opaque value that will be passed to the iterator + * @errp: pointer to a NULL-initialized error object * - * Call @fn passing each child of @obj and @opaque to it, until @fn returns - * non-zero. Calls recursively, all child nodes of @obj will also be passed - * all the way down to the leaf nodes of the tree. Depth first ordering. + * Call @fn passing each child of @obj, @opaque and @errp to it, until @fn + * returns false. Calls recursively, all child nodes of @obj will also be + * passed all the way down to the leaf nodes of the tree. Depth first orde= ring. * * It is forbidden to add or remove children from @obj (or its * child nodes) from the @fn callback. * - * Returns: The last value returned by @fn, or 0 if there is no child. + * Returns: The last value returned by @fn, or %true if there is no child. */ -int object_child_foreach_recursive(Object *obj, - int (*fn)(Object *child, void *opaque), - void *opaque); +bool object_child_foreach_recursive(Object *obj, + bool (*fn)(Object *child, void *opaque, + Error **errp), + void *opaque, Error **errp); /** * container_get: * @root: root of the #path, e.g., object_get_root() diff --git a/iothread.c b/iothread.c index 3862a64471..67ce6fe014 100644 --- a/iothread.c +++ b/iothread.c @@ -342,7 +342,7 @@ AioContext *iothread_get_aio_context(IOThread *iothread) return iothread->ctx; } =20 -static int query_one_iothread(Object *object, void *opaque) +static bool query_one_iothread(Object *object, void *opaque, Error **errp) { IOThreadInfoList ***tail =3D opaque; IOThreadInfo *info; @@ -350,7 +350,7 @@ static int query_one_iothread(Object *object, void *opa= que) =20 iothread =3D (IOThread *)object_dynamic_cast(object, TYPE_IOTHREAD); if (!iothread) { - return 0; + return true; } =20 info =3D g_new0(IOThreadInfo, 1); @@ -362,7 +362,7 @@ static int query_one_iothread(Object *object, void *opa= que) info->aio_max_batch =3D iothread->parent_obj.aio_max_batch; =20 QAPI_LIST_APPEND(*tail, info); - return 0; + return true; } =20 IOThreadInfoList *qmp_query_iothreads(Error **errp) @@ -371,7 +371,7 @@ IOThreadInfoList *qmp_query_iothreads(Error **errp) IOThreadInfoList **prev =3D &head; Object *container =3D object_get_objects_root(); =20 - object_child_foreach(container, query_one_iothread, &prev); + object_child_foreach(container, query_one_iothread, &prev, errp); return head; } =20 diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index 34bd8c67d7..1b8c406ed0 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -82,7 +82,7 @@ void hmp_info_version(Monitor *mon, const QDict *qdict) qapi_free_VersionInfo(info); } =20 -static int hmp_info_pic_foreach(Object *obj, void *opaque) +static bool hmp_info_pic_foreach(Object *obj, void *opaque, Error **errp) { InterruptStatsProvider *intc; InterruptStatsProviderClass *k; @@ -99,13 +99,13 @@ static int hmp_info_pic_foreach(Object *obj, void *opaq= ue) } } =20 - return 0; + return true; } =20 void hmp_info_pic(Monitor *mon, const QDict *qdict) { object_child_foreach_recursive(object_get_root(), - hmp_info_pic_foreach, mon); + hmp_info_pic_foreach, mon, NULL); } =20 void hmp_quit(Monitor *mon, const QDict *qdict) diff --git a/qom/object.c b/qom/object.c index e25f1e96db..665edd1693 100644 --- a/qom/object.c +++ b/qom/object.c @@ -1104,45 +1104,45 @@ void object_class_foreach(void (*fn)(ObjectClass *k= lass, void *opaque), enumerating_types =3D false; } =20 -static int do_object_child_foreach(Object *obj, - int (*fn)(Object *child, void *opaque), - void *opaque, bool recurse) +static bool do_object_child_foreach(Object *obj, + bool (*fn)(Object *child, void *opaque, + Error **errp), + void *opaque, bool recurse, Error **er= rp) { GHashTableIter iter; ObjectProperty *prop; - int ret =3D 0; =20 g_hash_table_iter_init(&iter, obj->properties); while (g_hash_table_iter_next(&iter, NULL, (gpointer *)&prop)) { if (object_property_is_child(prop)) { Object *child =3D prop->opaque; =20 - ret =3D fn(child, opaque); - if (ret !=3D 0) { - break; + if (!fn(child, opaque, errp)) { + return false; } if (recurse) { - ret =3D do_object_child_foreach(child, fn, opaque, true); - if (ret !=3D 0) { - break; + if (!do_object_child_foreach(child, fn, opaque, true, errp= )) { + return false; } } } } - return ret; + return true; } =20 -int object_child_foreach(Object *obj, int (*fn)(Object *child, void *opaqu= e), - void *opaque) +bool object_child_foreach(Object *obj, + bool (*fn)(Object *child, void *opaque, Error **= errp), + void *opaque, Error **errp) { - return do_object_child_foreach(obj, fn, opaque, false); + return do_object_child_foreach(obj, fn, opaque, false, errp); } =20 -int object_child_foreach_recursive(Object *obj, - int (*fn)(Object *child, void *opaque), - void *opaque) +bool object_child_foreach_recursive(Object *obj, + bool (*fn)(Object *child, void *opaque, + Error **errp), + void *opaque, Error **errp) { - return do_object_child_foreach(obj, fn, opaque, true); + return do_object_child_foreach(obj, fn, opaque, true, errp); } =20 static void object_class_get_list_tramp(ObjectClass *klass, void *opaque) diff --git a/qom/qom-hmp-cmds.c b/qom/qom-hmp-cmds.c index 6e3a2175a4..9a3267020e 100644 --- a/qom/qom-hmp-cmds.c +++ b/qom/qom-hmp-cmds.c @@ -101,10 +101,11 @@ static int qom_composition_compare(const void *a, con= st void *b) object_get_canonical_path_component(*(Object **)b)); } =20 -static int insert_qom_composition_child(Object *obj, void *opaque) +static bool insert_qom_composition_child(Object *obj, void *opaque, + Error **errp) { g_array_append_val(opaque, obj); - return 0; + return true; } =20 static void print_qom_composition(Monitor *mon, Object *obj, int indent) @@ -121,7 +122,7 @@ static void print_qom_composition(Monitor *mon, Object = *obj, int indent) monitor_printf(mon, "%*s/%s (%s)\n", indent, "", name, object_get_typename(obj)); =20 - object_child_foreach(obj, insert_qom_composition_child, children); + object_child_foreach(obj, insert_qom_composition_child, children, NULL= ); g_array_sort(children, qom_composition_compare); =20 for (i =3D 0; i < children->len; i++) { diff --git a/scsi/pr-manager.c b/scsi/pr-manager.c index 2098d7e759..48a32729ba 100644 --- a/scsi/pr-manager.c +++ b/scsi/pr-manager.c @@ -114,7 +114,7 @@ pr_manager_register_types(void) type_register_static(&pr_manager_info); } =20 -static int query_one_pr_manager(Object *object, void *opaque) +static bool query_one_pr_manager(Object *object, void *opaque, Error **err= p) { PRManagerInfoList ***tail =3D opaque; PRManagerInfo *info; @@ -122,14 +122,14 @@ static int query_one_pr_manager(Object *object, void = *opaque) =20 pr_mgr =3D (PRManager *)object_dynamic_cast(object, TYPE_PR_MANAGER); if (!pr_mgr) { - return 0; + return true; } =20 info =3D g_new0(PRManagerInfo, 1); info->id =3D g_strdup(object_get_canonical_path_component(object)); info->connected =3D pr_manager_is_connected(pr_mgr); QAPI_LIST_APPEND(*tail, info); - return 0; + return true; } =20 PRManagerInfoList *qmp_query_pr_managers(Error **errp) @@ -138,7 +138,7 @@ PRManagerInfoList *qmp_query_pr_managers(Error **errp) PRManagerInfoList **prev =3D &head; Object *container =3D container_get(object_get_root(), PR_MANAGER_PATH= ); =20 - object_child_foreach(container, query_one_pr_manager, &prev); + object_child_foreach(container, query_one_pr_manager, &prev, errp); return head; } =20 diff --git a/softmmu/physmem.c b/softmmu/physmem.c index cb998cdf23..033f021030 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -1332,7 +1332,7 @@ GString *ram_block_format(void) return buf; } =20 -static int find_min_backend_pagesize(Object *obj, void *opaque) +static bool find_min_backend_pagesize(Object *obj, void *opaque, Error **e= rrp) { long *hpsize_min =3D opaque; =20 @@ -1345,10 +1345,10 @@ static int find_min_backend_pagesize(Object *obj, v= oid *opaque) } } =20 - return 0; + return true; } =20 -static int find_max_backend_pagesize(Object *obj, void *opaque) +static bool find_max_backend_pagesize(Object *obj, void *opaque, Error **e= rrp) { long *hpsize_max =3D opaque; =20 @@ -1361,7 +1361,7 @@ static int find_max_backend_pagesize(Object *obj, voi= d *opaque) } } =20 - return 0; + return true; } =20 /* @@ -1373,7 +1373,7 @@ long qemu_minrampagesize(void) long hpsize =3D LONG_MAX; Object *memdev_root =3D object_resolve_path("/objects", NULL); =20 - object_child_foreach(memdev_root, find_min_backend_pagesize, &hpsize); + object_child_foreach(memdev_root, find_min_backend_pagesize, &hpsize, = NULL); return hpsize; } =20 @@ -1382,7 +1382,8 @@ long qemu_maxrampagesize(void) long pagesize =3D 0; Object *memdev_root =3D object_resolve_path("/objects", NULL); =20 - object_child_foreach(memdev_root, find_max_backend_pagesize, &pagesize= ); + object_child_foreach(memdev_root, find_max_backend_pagesize, &pagesize, + NULL); return pagesize; } =20 diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c index b8d2c4dadd..6d5747fce5 100644 --- a/softmmu/qdev-monitor.c +++ b/softmmu/qdev-monitor.c @@ -998,27 +998,28 @@ void device_add_completion(ReadLineState *rs, int nb_= args, const char *str) g_slist_free(list); } =20 -static int qdev_add_hotpluggable_device(Object *obj, void *opaque) +static bool qdev_add_hotpluggable_device(Object *obj, void *opaque, + Error **errp) { GSList **list =3D opaque; DeviceState *dev =3D (DeviceState *)object_dynamic_cast(obj, TYPE_DEVI= CE); =20 if (dev =3D=3D NULL) { - return 0; + return true; } =20 if (dev->realized && object_property_get_bool(obj, "hotpluggable", NUL= L)) { *list =3D g_slist_append(*list, dev); } =20 - return 0; + return true; } =20 static GSList *qdev_build_hotpluggable_device_list(Object *peripheral) { GSList *list =3D NULL; =20 - object_child_foreach(peripheral, qdev_add_hotpluggable_device, &list); + object_child_foreach(peripheral, qdev_add_hotpluggable_device, &list, = NULL); =20 return list; } diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuz= z.c index 7326f6840b..2bd5643372 100644 --- a/tests/qtest/fuzz/generic_fuzz.c +++ b/tests/qtest/fuzz/generic_fuzz.c @@ -761,7 +761,7 @@ static int locate_fuzz_memory_regions(Object *child, vo= id *opaque) return 0; } =20 -static int locate_fuzz_objects(Object *child, void *opaque) +static bool locate_fuzz_objects(Object *child, void *opaque, Error **errp) { GString *type_name; GString *path_name; @@ -800,7 +800,7 @@ static int locate_fuzz_objects(Object *child, void *opa= que) g_string_free(path_name, true); } g_string_free(type_name, true); - return 0; + return true; } =20 =20 @@ -866,7 +866,7 @@ static void generic_pre_fuzz(QTestState *s) printf("Matching objects by name %s\n", result[i]); object_child_foreach_recursive(qdev_get_machine(), locate_fuzz_objects, - name_pattern->str); + name_pattern->str, NULL); g_string_free(name_pattern, true); } g_strfreev(result); diff --git a/ui/dbus-chardev.c b/ui/dbus-chardev.c index 940ef937cd..21de92fc98 100644 --- a/ui/dbus-chardev.c +++ b/ui/dbus-chardev.c @@ -68,18 +68,16 @@ dbus_display_chardev_unexport(DBusDisplay *dpy, DBusCha= rdev *chr) chr->exported =3D false; } =20 -static int -dbus_display_chardev_foreach(Object *obj, void *data) +static bool +dbus_display_chardev_foreach(Object *obj, void *data, Error **errp) { DBusDisplay *dpy =3D DBUS_DISPLAY(data); =20 - if (!CHARDEV_IS_DBUS(obj)) { - return 0; + if (CHARDEV_IS_DBUS(obj)) { + dbus_display_chardev_export(dpy, DBUS_CHARDEV(obj)); } =20 - dbus_display_chardev_export(dpy, DBUS_CHARDEV(obj)); - - return 0; + return true; } =20 static void @@ -105,7 +103,7 @@ dbus_chardev_init(DBusDisplay *dpy) dbus_display_notifier_add(&dpy->notifier); =20 object_child_foreach(container_get(object_get_root(), "/chardevs"), - dbus_display_chardev_foreach, dpy); + dbus_display_chardev_foreach, dpy, NULL); } =20 static gboolean diff --git a/util/nvdimm-utils.c b/util/nvdimm-utils.c index aa3d199f2d..b356a3fbea 100644 --- a/util/nvdimm-utils.c +++ b/util/nvdimm-utils.c @@ -2,7 +2,7 @@ #include "qemu/nvdimm-utils.h" #include "hw/mem/nvdimm.h" =20 -static int nvdimm_device_list(Object *obj, void *opaque) +static bool nvdimm_device_list(Object *obj, void *opaque, Error **errp) { GSList **list =3D opaque; =20 @@ -10,8 +10,8 @@ static int nvdimm_device_list(Object *obj, void *opaque) *list =3D g_slist_append(*list, DEVICE(obj)); } =20 - object_child_foreach(obj, nvdimm_device_list, opaque); - return 0; + object_child_foreach(obj, nvdimm_device_list, opaque, errp); + return true; } =20 /* @@ -25,6 +25,6 @@ GSList *nvdimm_get_device_list(void) { GSList *list =3D NULL; =20 - object_child_foreach(qdev_get_machine(), nvdimm_device_list, &list); + object_child_foreach(qdev_get_machine(), nvdimm_device_list, &list, NU= LL); return list; } --=20 2.38.1 From nobody Sat May 18 19:12:40 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1676550450; cv=none; d=zohomail.com; s=zohoarc; b=ljgpjrLMrIqKP0jpG1FllfcsxVOLtdfYeG06Jst9kIiChg+5pbeX71vi00UVne+Su/xmCL9IV5Tla0bTGblynIhRNYMfWd7i5OFHK4F57hp2PeCzJrsld5s4fcsGWKOD7nT1SUuiZGQb4kdf8WZvdItMz2jsMwryd4rx1NZLKFw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676550450; 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=vXaKAK994idnw+4qe0vPaymYezvQPE1zxpNZ2GlwOtY=; b=ZSqqeXHMSOxGNyT0n5iVpn82rndAhMAebP2KyhKRh1brb/in8QwBHxU6GKqSbuiaM3WxD8gftiJQdG9zde0HMFY9T+fwqRNSd9gno98Og7OlWZlszlVzJNP/6URIBBYpraWxMvlJRXMLa88HwVf3C9KSQ7GWYRes+iflbeQx8lU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 167655045022938.23680949743459; Thu, 16 Feb 2023 04:27:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pSdKm-0002o8-6m; Thu, 16 Feb 2023 07:25:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSdKi-0002jz-MV for qemu-devel@nongnu.org; Thu, 16 Feb 2023 07:25:52 -0500 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pSdKg-0007yy-CG for qemu-devel@nongnu.org; Thu, 16 Feb 2023 07:25:52 -0500 Received: by mail-wr1-x42b.google.com with SMTP id y1so1692472wru.2 for ; Thu, 16 Feb 2023 04:25:49 -0800 (PST) Received: from localhost.localdomain ([81.0.6.76]) by smtp.gmail.com with ESMTPSA id g1-20020a5d46c1000000b002c57384dfe0sm1369835wrs.113.2023.02.16.04.25.48 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 16 Feb 2023 04:25:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vXaKAK994idnw+4qe0vPaymYezvQPE1zxpNZ2GlwOtY=; b=TYhiLdvIy3/9XqbcRntWNxRyLPiuO0xeG0JeiBg3qJFr4UXK/4jjCe5YpO1MCqhBAS xN2jBf77sOM5tplhAc4nm8JkJW/XDWCDDIkobOPk+YVb0A1pFPCHx9mDDAhyJHdbFYY0 zrS2PBh2TdDwCBSRqDKlJxA2hnL9EtGY3aGcC9Hk3w8sbiJQUPS1cSs/qZYwt6MWCUYi mkQaM6ALL74/ItMmwtrWiJA/s/a696+u4sSjKtmDFJz4oVt/X+gBLGRn2QULUv8iq9Yk +Lrgm/QJ3IdInzT3ZJoChp2qrBh4niSOcO21EKYL3LAoaUM8Xv5If9Y+3Gxuecwjp1Gb dtNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vXaKAK994idnw+4qe0vPaymYezvQPE1zxpNZ2GlwOtY=; b=BmHiJUUHeUoeFT+roIDhAZcDDGL3JILuFraVRbI7YXu5xvNf3qDGV1xyg4603HMjfo wvI+k2Z2QUodgB/2SBj5gR69x/CYcHS9mNyJgZ9S2U5v4vDVY2w0ruJEERG894UZ9XcS vXBxSlKnr6vOD9nMefHDQ0otPCX0Ec6WJqKw35B8pUIIgVQsH5p91P6JM8tNY9zsnY1F hVwij0W9ljL/GZQpFsl8WgGvMwETSODTeb3E8TTIKZFOO4+MNdyE3HNKtO2Mwme+ihC6 VOryx/cBJVnhfc7R32OdomVTNBWbka0X31Q53B8JayOvJhVIDv/L1sWvwasBApap//Pg aK1g== X-Gm-Message-State: AO0yUKU7SHZ/hE8LQ/olzzC58DCP0C0ogN6eZSXSZ7+qyRTSw64z1AqP OoHfliVJwP5RRBXlhcMLW/SbMgZ2xD3jcgWi X-Google-Smtp-Source: AK7set/9ADECGe6VJDzdersNGsqgFqo0fQTJvfuHdCmrLWZoKf6OXBbBxU7Uo7Hsm4uNlGX0VPzYHQ== X-Received: by 2002:a5d:6a8e:0:b0:2c5:561e:809b with SMTP id s14-20020a5d6a8e000000b002c5561e809bmr3715424wru.66.1676550349391; Thu, 16 Feb 2023 04:25:49 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , qemu-arm@nongnu.org, qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [RFC PATCH 4/5] hw/nmi: Simplify nmi_monitor_handle() and do_nmi() Date: Thu, 16 Feb 2023 13:25:23 +0100 Message-Id: <20230216122524.67212-5-philmd@linaro.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230216122524.67212-1-philmd@linaro.org> References: <20230216122524.67212-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: pass client-ip=2a00:1450:4864:20::42b; envelope-from=philmd@linaro.org; helo=mail-wr1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1676550451874100001 Since the previous commit, object_child_foreach_recursive()'s handler takes an Error* argument and return a boolean. We can remove these fields from the do_nmi_s structure, which then only contains the 'int cpu_index' field. Directly pass 'cpu_index' as context, removing 'struct do_nmi_s'. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- RFC: please double-check... hw/core/nmi.c | 41 ++++++----------------------------------- 1 file changed, 6 insertions(+), 35 deletions(-) diff --git a/hw/core/nmi.c b/hw/core/nmi.c index fa74c405f7..f5a6483e89 100644 --- a/hw/core/nmi.c +++ b/hw/core/nmi.c @@ -26,51 +26,22 @@ #include "qemu/module.h" #include "monitor/monitor.h" =20 -struct do_nmi_s { - int cpu_index; - Error *err; - bool handled; -}; - -static void nmi_children(Object *o, struct do_nmi_s *ns); - static bool do_nmi(Object *o, void *opaque, Error **errp) { - struct do_nmi_s *ns =3D opaque; + int *cpu_index =3D opaque; NMIState *n =3D (NMIState *) object_dynamic_cast(o, TYPE_NMI); =20 - if (n) { - NMIClass *nc =3D NMI_GET_CLASS(n); - - ns->handled =3D true; - if (!nc->nmi_monitor_handler(n, ns->cpu_index, &ns->err)) { - return false; - } + if (!n) { + error_setg(errp, QERR_UNSUPPORTED); + return false; } - nmi_children(o, ns); =20 - return true; -} - -static void nmi_children(Object *o, struct do_nmi_s *ns) -{ - object_child_foreach(o, do_nmi, ns, NULL); + return NMI_GET_CLASS(n)->nmi_monitor_handler(n, *cpu_index, errp); } =20 void nmi_monitor_handle(int cpu_index, Error **errp) { - struct do_nmi_s ns =3D { - .cpu_index =3D cpu_index, - .err =3D NULL, - .handled =3D false - }; - - nmi_children(object_get_root(), &ns); - if (ns.handled) { - error_propagate(errp, ns.err); - } else { - error_setg(errp, QERR_UNSUPPORTED); - } + object_child_foreach_recursive(object_get_root(), do_nmi, &cpu_index, = errp); } =20 static const TypeInfo nmi_info =3D { --=20 2.38.1 From nobody Sat May 18 19:12:40 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1676550474; cv=none; d=zohomail.com; s=zohoarc; b=QbzhtvVsliLCOQmtIfb6kb7/i9/S0pIePGF0JzvyjjUWWW0uADNbK74bXjVti7gykragUouTcyUJ72P0gcYDPYRlREGYhbJoFDXhkNZE7V/giXvcRg8Qt6Zq1ntBZHgNxa2A8W5FlIIm9FY4tBp+kzpsgol9ZdDQmrVsszGBKQQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676550474; 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=J9tFPN4rdCw1nxfX8ah3wia3JiRf2r85XcvwPt3k03s=; b=Ev2C7lVevic382OPcmk/cFz246lm0TwRcJl0Wxo02MSAmltfN+F9qR62/C18qBFNqtnsx4+mMo+ytXvsQjcnReWqZpnzr3ZmkpqrKJQDYT/uwgCb1SB0gEByyTXwaaTuduk6jyA/Wp8fc5141ImgQog/CMenmn8qTksOffDJhbQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1676550474948820.4564427065407; Thu, 16 Feb 2023 04:27:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pSdKq-0002qT-2p; Thu, 16 Feb 2023 07:26:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSdKn-0002p0-Vp for qemu-devel@nongnu.org; Thu, 16 Feb 2023 07:25:57 -0500 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pSdKl-0008Bx-U3 for qemu-devel@nongnu.org; Thu, 16 Feb 2023 07:25:57 -0500 Received: by mail-wm1-x32b.google.com with SMTP id s13-20020a05600c45cd00b003ddca7a2bcbso1489038wmo.3 for ; Thu, 16 Feb 2023 04:25:55 -0800 (PST) Received: from localhost.localdomain ([81.0.6.76]) by smtp.gmail.com with ESMTPSA id e1-20020a05600c4e4100b003e0015c8618sm5280146wmq.6.2023.02.16.04.25.53 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 16 Feb 2023 04:25:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J9tFPN4rdCw1nxfX8ah3wia3JiRf2r85XcvwPt3k03s=; b=VSStNVY4wyoxHRBnEZUdC/a8liXCq2B5GZbeXSvysmyHNULFGw+ueEaWQGs4PvMtTp BtAJFnhU8mgmmKZbCpdrD+K6Yz8chWrE/g5p/ixc9rV4356aizfYaru6I6a7YmUWc+Re tiAulQGM2prRHTZGoPyTyfbZR+Gu5fF+MmQYRGb0CGLeIK3DfTcOjOMHrQSjfNO20ogk NYx+QP3pg9ADZnZQ21CXeouaw3wNxOTV6LSrlpG9l5sN7cIpuxwj0KAPyz56cNXvLwvq 0UhX/88uibER7N484m2RI29YOi6GDy1kff1htF9xxDAKJuSZpq189dDcE6UlZCc2u8+E X5Rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J9tFPN4rdCw1nxfX8ah3wia3JiRf2r85XcvwPt3k03s=; b=nZAQYf229/DWMKDx4ZA3d6nINnW7Iy+x7v31iWiQpX9+e6pHnQlBYz2TjMOaKNeWAj a+zpRf9SWDxJBKQX49jVlBFBw0f9oBZYV+eIKwgq954HsyiEPCCoGd8Ictkah7Ml6cka 7UwJeUtEoSBrzyT29J5adg+hX0W2Sxs7mS3OGH87pQ+k0zAKuaWRhQZNlhVk5tp0tza/ xuq0eZZzEhlAsUaIAaKaN6+x01HM25m0d2YTshqaN4HeTPD5osd6MqKqehZhs8Y6DSRD 6ywDIKVQA/F4/pZL9qJtVfO7OeoAS50NxXmXQk8qKfyx5doiiRi28qswYHlMtlLH99C8 MeEg== X-Gm-Message-State: AO0yUKUDXfmeEQG5O4SDKVBmsZ10Z1Z+LWpnET9MUkzsbHzEqoAVWFQC m1CiATUOBlzS0ozgVgzAK9n/Idjur3rLo+F1 X-Google-Smtp-Source: AK7set8aALC2vCdiWlu02hWxTZn390yk1IXt/q8Krsu16xbkpd9lSqn5Wygdi62m7haqlwVQQ6zblA== X-Received: by 2002:a05:600c:4d12:b0:3e2:1636:766a with SMTP id u18-20020a05600c4d1200b003e21636766amr655997wmp.9.1676550354304; Thu, 16 Feb 2023 04:25:54 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , qemu-arm@nongnu.org, qemu-s390x@nongnu.org, qemu-ppc@nongnu.org, qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [RFC PATCH 5/5] hw/ppc/pnv_bmc: Simplify pnv_bmc_find() Date: Thu, 16 Feb 2023 13:25:24 +0100 Message-Id: <20230216122524.67212-6-philmd@linaro.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230216122524.67212-1-philmd@linaro.org> References: <20230216122524.67212-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: pass client-ip=2a00:1450:4864:20::32b; envelope-from=philmd@linaro.org; helo=mail-wm1-x32b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1676550475821100001 ForeachArgs::name is only used once as TYPE_IPMI_BMC. Since the penultimate commit, object_child_foreach_recursive()'s handler takes an Error* argument and return a boolean. We can directly pass ForeachArgs::obj as context, removing the ForeachArgs structure. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- RFC: please double-check... hw/ppc/pnv_bmc.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/hw/ppc/pnv_bmc.c b/hw/ppc/pnv_bmc.c index 05acc88a55..566284469f 100644 --- a/hw/ppc/pnv_bmc.c +++ b/hw/ppc/pnv_bmc.c @@ -278,36 +278,29 @@ IPMIBmc *pnv_bmc_create(PnvPnor *pnor) return IPMI_BMC(obj); } =20 -typedef struct ForeachArgs { - const char *name; - Object *obj; -} ForeachArgs; - static bool bmc_find(Object *child, void *opaque, Error **errp) { - ForeachArgs *args =3D opaque; + Object **obj =3D opaque; =20 - if (object_dynamic_cast(child, args->name)) { - if (args->obj) { - return false; + if (object_dynamic_cast(child, TYPE_IPMI_BMC)) { + if (*obj) { + return true; } - args->obj =3D child; + *obj =3D child; } return true; } =20 IPMIBmc *pnv_bmc_find(Error **errp) { - ForeachArgs args =3D { TYPE_IPMI_BMC, NULL }; - int ret; + Object *obj =3D NULL; =20 - ret =3D object_child_foreach_recursive(object_get_root(), bmc_find, - &args, NULL); - if (ret) { + if (!object_child_foreach_recursive(object_get_root(), bmc_find, &obj, + NULL)) { error_setg(errp, "machine should have only one BMC device. " "Use '-nodefaults'"); return NULL; } =20 - return args.obj ? IPMI_BMC(args.obj) : NULL; + return IPMI_BMC(obj); } --=20 2.38.1