{"id":2231558,"url":"http://patchwork.ozlabs.org/api/patches/2231558/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260430203842.29156-2-pierrick.bouvier@oss.qualcomm.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260430203842.29156-2-pierrick.bouvier@oss.qualcomm.com>","list_archive_url":null,"date":"2026-04-30T20:38:35","name":"[v3,1/8] qemu/module: add a new QOM_EARLY init step","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"6b4dd623af57e5237d3f6ef453c29ce6693146d2","submitter":{"id":93152,"url":"http://patchwork.ozlabs.org/api/people/93152/?format=json","name":"Pierrick Bouvier","email":"pierrick.bouvier@oss.qualcomm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260430203842.29156-2-pierrick.bouvier@oss.qualcomm.com/mbox/","series":[{"id":502380,"url":"http://patchwork.ozlabs.org/api/series/502380/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=502380","date":"2026-04-30T20:38:36","name":"single-binary: deduplicate target_info()","version":3,"mbox":"http://patchwork.ozlabs.org/series/502380/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2231558/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2231558/checks/","tags":{},"related":[],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=W9BUoXXD;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=ORLntglV;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g65dJ5W6mz1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 06:39:48 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wIYA7-0002uJ-VR; Thu, 30 Apr 2026 16:39:08 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <pierrick.bouvier@oss.qualcomm.com>)\n id 1wIYA3-0002oW-E6\n for qemu-devel@nongnu.org; Thu, 30 Apr 2026 16:39:04 -0400","from mx0a-0031df01.pphosted.com ([205.220.168.131])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <pierrick.bouvier@oss.qualcomm.com>)\n id 1wIY9v-0000st-Ci\n for qemu-devel@nongnu.org; Thu, 30 Apr 2026 16:39:01 -0400","from pps.filterd (m0279864.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63UGIUTQ2121543\n for <qemu-devel@nongnu.org>; Thu, 30 Apr 2026 20:38:52 GMT","from mail-dy1-f198.google.com (mail-dy1-f198.google.com\n [74.125.82.198])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dvag4s6wb-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <qemu-devel@nongnu.org>; Thu, 30 Apr 2026 20:38:51 +0000 (GMT)","by mail-dy1-f198.google.com with SMTP id\n 5a478bee46e88-2ee34588671so599157eec.0\n for <qemu-devel@nongnu.org>; Thu, 30 Apr 2026 13:38:51 -0700 (PDT)","from hu-pbouvier-lv.qualcomm.com (Global_NAT1.qualcomm.com.\n [129.46.96.20]) by smtp.gmail.com with ESMTPSA id\n 5a478bee46e88-2ee3889d628sm2202341eec.6.2026.04.30.13.38.49\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 30 Apr 2026 13:38:49 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n cc:content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n ONXkN3ifjbZ/ePm7DoxSplyChWIv5V/mKaE+92h7psE=; b=W9BUoXXDCm/Kff3p\n xz+lY+DcdUXaDl7epE3vLkjVemFoob4g3NG7RSnAVjigkSE0AcyBa7eFHTnBmsUH\n sCRhMbafdgzBr3DLOcvg+UPDlUYRstrgXO8Shc6oXObobqfdJ9cyzINe0+1DOQs1\n ckjSG69M5ol3QTtWTbSiVoqa0y45CcaQwuvogiFL+gWHZbv6O0g/oopRwXjpvWlq\n wpqcBrCJwM1AeOHLjNlJWV78dXhDLB7jr1bguzXrjMJbKcq9kD0QGUhgHwPmnVTP\n +hVWBjxPG9tGIdeRisgYTNt2qr7cfNjNW0hJyRzLY1lmFh8sxboXddMafED0hThv\n IsRFLA==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1777581531; x=1778186331; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=ONXkN3ifjbZ/ePm7DoxSplyChWIv5V/mKaE+92h7psE=;\n b=ORLntglVrt2E59WGqAEw2gpwCXUW8xoHGgzHUvZmSiIfj2GhKH4S1SvFjKZX7h0rLr\n 5kJmZSV90rNdMqyaHzcLNfIutTsnHIWEz4HYbVE2PWb7jmv4cPaxT/O2sJp0N7KtzXmJ\n eQgMDpyy4UzTuv2ZuD/16KeKmVwM8Bs5LdKPFC9J8qQmy8I3xi7f3pRAsc6ie1R885/t\n dmRPyIQD2n1gxBTC7lgSZGtY9VN6AgS7GR3awp8QQBGOFd2x2dA2uvKlKPUu7yPrCA6N\n T+Io0nAVRW5acEK9vpcSF5BB5wBcorqnBLWroyulaRGdBUo7TI3UkYisTVvaswcs73ua\n Eqkg=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777581531; x=1778186331;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=ONXkN3ifjbZ/ePm7DoxSplyChWIv5V/mKaE+92h7psE=;\n b=D7HRc00pO//RQFQrLVlMRUR4Tv4rnNmLG5/p2CrrMnmj7sQI/CjS8yP/8PsLYsmep1\n gmHpb0tFkO6CllYNIjptDcfReoc8RScjPWqa3Q8OIv7QnQclH6BReU3YplZS/n2wVYJ1\n dE298C4QLRqBKVajvGiygVvbCkH2tbHqN7iqlCS0Ll12XK57GzgnZhxEFxBa5zSWZonV\n N8sGXhuzAXK3v6gn3DIoX7niU004YjEblH+wfPaDQmm8tFNToTTJ8AcNX3VKb+VyE5hu\n x8+AnqQysVBDmw5rmylhJ8AositnlvgTtG56Q+TvYW1Rdsbuj42EykYFAdQ/6CAfp78f\n kX6g==","X-Gm-Message-State":"AOJu0YzNLQ4dH6fDtlqdbMY4POTIXazzN7KIammZFLUgZishI5ZTkS7G\n Vd35f9i/0I62Qk5mMf8CRGQU1ARXPf8qmVHxMnVnvigULHPQ1IwsRal1Y8a4I3M6T6/ciy8x9yi\n Ky5FjBp6updwK33n4rKAE8NSSPsmO4PbXhxtCNbaipg5EbJV9FF1YzVpOU1VQVKx2maLn","X-Gm-Gg":"AeBDieuRXgjbt0bTxvOy6rJvTKJtlg6hplZkxxTDvGQP7wbtMd0/4O1zK1rbx7BopMr\n KRizqE1OZJ96GqhOjGc3Gph4s2iJAatS+9wC9EbCcX61J5wy6H5BhQlxnSgaQtHCW/i2i244A1D\n yctfCJtF6mT64NP2y+tgq2/j4Ltl2uwjD34t3T73XOcqLdyoSYpRo/waqFxDiKZN02jEzAaO59+\n 4Mnes0Eide2vL5pfq4PZNPEdCoguc21EFV0Fpby7puAqzMsrGc9BHKHcO4WKGdYDL8S8I9hgIm+\n bAU4j3edMgHx4Up7ZRii/aiBi6PjF7F3SUY8NBRxbt1eW4Ou4gq/ZqbNGsPRAqGRBp52Q66bgKx\n c19wfcWgHnYJLLgMVk9l+0K4FkW0bdvTjQqOtAotB9SxGcGbwqIlqXYfA9nvHcKBfUmelCkIVsO\n Xp5XMOStBJr7e6ujE8","X-Received":["by 2002:a05:7301:e0c6:b0:2ed:b131:240e with SMTP id\n 5a478bee46e88-2edb13124d5mr964212eec.23.1777581530856;\n Thu, 30 Apr 2026 13:38:50 -0700 (PDT)","by 2002:a05:7301:e0c6:b0:2ed:b131:240e with SMTP id\n 5a478bee46e88-2edb13124d5mr964196eec.23.1777581530191;\n Thu, 30 Apr 2026 13:38:50 -0700 (PDT)"],"From":"Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>","To":"qemu-devel@nongnu.org","Cc":"=?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>,\n marcandre.lureau@redhat.com, Markus Armbruster <armbru@redhat.com>,\n Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,\n Paolo Bonzini <pbonzini@redhat.com>, Anton Johansson <anjo@rev.ng>,\n\t=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,\n Max Filippov <jcmvbkbc@gmail.com>,\n Richard Henderson <richard.henderson@linaro.org>","Subject":"[PATCH v3 1/8] qemu/module: add a new QOM_EARLY init step","Date":"Thu, 30 Apr 2026 13:38:35 -0700","Message-ID":"<20260430203842.29156-2-pierrick.bouvier@oss.qualcomm.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20260430203842.29156-1-pierrick.bouvier@oss.qualcomm.com>","References":"<20260430203842.29156-1-pierrick.bouvier@oss.qualcomm.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","X-Proofpoint-GUID":"h7ckFA70UG8DUrsYaseGT2eaIhqKBjna","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDMwMDIxMyBTYWx0ZWRfX6a7m4OEoGrMr\n FkiocFyAXPMi6KODYiWxnEUi6kmyiO7weDVy4oAJRtDL0JPS2VbpUL3y76SpRbN5+cNOTjSDDJy\n lIZCl8pRomGVzYTYGiZJFvizL7qHsBVBX1OidYfkUSihZYcnt9aK9Z3ZhPnAdCqX63BknH9LRYQ\n lijN6EkRhEmB8P4wxFv3hHNbcmeRju6i//OFWosEWLYy3+Fr7FspN9C8ZLG9u1+BCRcCSMnpXYS\n dldXtK8NtrcIWU2ZVVP9raVH2XSEx+1kL/Evdqk36fsGZDFiIDFOGfzawktoTpqI7Q4nmTUxVlM\n DyoI90RItafUnhLsgtD8bPvUCMJu/yj/eaBLf/Wi1L313gOc7eeYYTHsRnvUlpXp58r0F2x+p50\n naOfXvw+We8J8/oXSBiJWzxXc2Z3YXLsQjELgpKeusM63wX9ENlEglE5W71pDJ29jSOIAGrOMog\n iv5Xi+O3dLB7A599V/Q==","X-Authority-Analysis":"v=2.4 cv=UcxhjqSN c=1 sm=1 tr=0 ts=69f3bddc cx=c_pps\n a=wEP8DlPgTf/vqF+yE6f9lg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22\n a=20KFwNOVAAAA:8 a=EUspDBNiAAAA:8 a=IYgryfmtWe4h1XmuO8sA:9 a=3ZKOabzyN94A:10\n a=QEXdDO2ut3YA:10 a=bBxd6f-gb0O0v-kibOvt:22","X-Proofpoint-ORIG-GUID":"h7ckFA70UG8DUrsYaseGT2eaIhqKBjna","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-30_06,2026-04-30_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n suspectscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0\n impostorscore=0 adultscore=0 spamscore=0 phishscore=0 priorityscore=1501\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604300213","Received-SPF":"pass client-ip=205.220.168.131;\n envelope-from=pierrick.bouvier@oss.qualcomm.com;\n helo=mx0a-0031df01.pphosted.com","X-Spam_score_int":"-27","X-Spam_score":"-2.8","X-Spam_bar":"--","X-Spam_report":"(-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"This step will be used to initialize fundamental QOM types, like OBJECT,\nINTERFACE or TARGET_INFO that will be introduced in this series. It may\nbe used in the future if needed.\n\nWe need to patch all call sites to module_init(MODULE_INIT_QOM) to call\nmodule_init(MODULE_INIT_QOM_EARLY) as well.\n\nSuggested-by: Daniel P. Berrangé <berrange@redhat.com>\nSigned-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>\n---\n bsd-user/main.c                         | 1 +\n include/qemu/module.h                   | 2 ++\n linux-user/main.c                       | 1 +\n qemu-img.c                              | 1 +\n qemu-io.c                               | 1 +\n qemu-nbd.c                              | 1 +\n rust/hw/core/tests/tests.rs             | 1 +\n scsi/qemu-pr-helper.c                   | 1 +\n storage-daemon/qemu-storage-daemon.c    | 1 +\n system/runstate.c                       | 1 +\n tests/audio/test-audio.c                | 1 +\n tests/qtest/bios-tables-test.c          | 1 +\n tests/qtest/fuzz/fuzz.c                 | 1 +\n tests/qtest/migration-test.c            | 1 +\n tests/qtest/qos-test.c                  | 1 +\n tests/qtest/tpm-crb-swtpm-test.c        | 1 +\n tests/qtest/tpm-crb-test.c              | 1 +\n tests/qtest/tpm-tis-device-swtpm-test.c | 1 +\n tests/qtest/tpm-tis-device-test.c       | 1 +\n tests/qtest/tpm-tis-i2c-test.c          | 1 +\n tests/qtest/tpm-tis-swtpm-test.c        | 1 +\n tests/qtest/tpm-tis-test.c              | 1 +\n tests/unit/check-qom-interface.c        | 1 +\n tests/unit/check-qom-proplist.c         | 1 +\n tests/unit/test-authz-list.c            | 1 +\n tests/unit/test-authz-listfile.c        | 1 +\n tests/unit/test-authz-pam.c             | 1 +\n tests/unit/test-authz-simple.c          | 1 +\n tests/unit/test-char.c                  | 1 +\n tests/unit/test-crypto-block.c          | 1 +\n tests/unit/test-crypto-secret.c         | 1 +\n tests/unit/test-crypto-tlscredsx509.c   | 1 +\n tests/unit/test-crypto-tlssession.c     | 1 +\n tests/unit/test-io-channel-buffer.c     | 1 +\n tests/unit/test-io-channel-command.c    | 1 +\n tests/unit/test-io-channel-file.c       | 1 +\n tests/unit/test-io-channel-null.c       | 1 +\n tests/unit/test-io-channel-socket.c     | 1 +\n tests/unit/test-io-channel-tls.c        | 1 +\n tests/unit/test-io-task.c               | 1 +\n tests/unit/test-qdev-global-props.c     | 1 +\n tests/unit/test-qdev.c                  | 1 +\n tests/unit/test-smp-parse.c             | 1 +\n tests/unit/test-throttle.c              | 1 +\n tests/unit/test-vmstate.c               | 1 +\n tests/unit/test-xs-node.c               | 1 +\n tests/unit/test-yank.c                  | 1 +\n tools/i386/qemu-vmsr-helper.c           | 1 +\n 48 files changed, 49 insertions(+)","diff":"diff --git a/bsd-user/main.c b/bsd-user/main.c\nindex 73aae8c3274..a6e7a285af7 100644\n--- a/bsd-user/main.c\n+++ b/bsd-user/main.c\n@@ -285,6 +285,7 @@ int main(int argc, char **argv)\n     error_init(argv[0]);\n     module_call_init(MODULE_INIT_TRACE);\n     qemu_init_cpu_list();\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     envlist = envlist_create();\ndiff --git a/include/qemu/module.h b/include/qemu/module.h\nindex 9885ac9afb3..37b63cd2b03 100644\n--- a/include/qemu/module.h\n+++ b/include/qemu/module.h\n@@ -43,6 +43,7 @@ typedef enum {\n     MODULE_INIT_MIGRATION,\n     MODULE_INIT_BLOCK,\n     MODULE_INIT_OPTS,\n+    MODULE_INIT_QOM_EARLY,\n     MODULE_INIT_QOM,\n     MODULE_INIT_TRACE,\n     MODULE_INIT_XEN_BACKEND,\n@@ -54,6 +55,7 @@ typedef enum {\n #define block_init(function) module_init(function, MODULE_INIT_BLOCK)\n #define opts_init(function) module_init(function, MODULE_INIT_OPTS)\n #define type_init(function) module_init(function, MODULE_INIT_QOM)\n+#define type_init_early(function) module_init(function, MODULE_INIT_QOM_EARLY)\n #define trace_init(function) module_init(function, MODULE_INIT_TRACE)\n #define xen_backend_init(function) module_init(function, \\\n                                                MODULE_INIT_XEN_BACKEND)\ndiff --git a/linux-user/main.c b/linux-user/main.c\nindex 86d04cca3c4..629a6b64cf1 100644\n--- a/linux-user/main.c\n+++ b/linux-user/main.c\n@@ -702,6 +702,7 @@ int main(int argc, char **argv, char **envp)\n     error_init(argv[0]);\n     module_call_init(MODULE_INIT_TRACE);\n     qemu_init_cpu_list();\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     envlist = envlist_create();\ndiff --git a/qemu-img.c b/qemu-img.c\nindex c42dd4e995e..096dd318963 100644\n--- a/qemu-img.c\n+++ b/qemu-img.c\n@@ -5931,6 +5931,7 @@ int main(int argc, char **argv)\n \n     qcrypto_init(&error_fatal);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     bdrv_init();\n \ndiff --git a/qemu-io.c b/qemu-io.c\nindex 8f2de83f3c8..d0db7df2ad7 100644\n--- a/qemu-io.c\n+++ b/qemu-io.c\n@@ -537,6 +537,7 @@ int main(int argc, char **argv)\n \n     qcrypto_init(&error_fatal);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     qemu_add_opts(&qemu_trace_opts);\n     bdrv_init();\ndiff --git a/qemu-nbd.c b/qemu-nbd.c\nindex ed5895861bb..f9fe220b176 100644\n--- a/qemu-nbd.c\n+++ b/qemu-nbd.c\n@@ -629,6 +629,7 @@ int main(int argc, char **argv)\n     module_call_init(MODULE_INIT_TRACE);\n     qcrypto_init(&error_fatal);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     qemu_add_opts(&qemu_trace_opts);\n     qemu_init_exec_dir(argv[0]);\ndiff --git a/rust/hw/core/tests/tests.rs b/rust/hw/core/tests/tests.rs\nindex 05aa5d4a377..08597ca46b7 100644\n--- a/rust/hw/core/tests/tests.rs\n+++ b/rust/hw/core/tests/tests.rs\n@@ -91,6 +91,7 @@ fn init_qom() {\n     bql::start_test();\n     if !ONCE.get() {\n         unsafe {\n+            module_call_init(module_init_type::MODULE_INIT_QOM_EARLY);\n             module_call_init(module_init_type::MODULE_INIT_QOM);\n         }\n         ONCE.set(true);\ndiff --git a/scsi/qemu-pr-helper.c b/scsi/qemu-pr-helper.c\nindex 9dcd3ec7111..089b95842c9 100644\n--- a/scsi/qemu-pr-helper.c\n+++ b/scsi/qemu-pr-helper.c\n@@ -907,6 +907,7 @@ int main(int argc, char **argv)\n \n     error_init(argv[0]);\n     module_call_init(MODULE_INIT_TRACE);\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     qemu_add_opts(&qemu_trace_opts);\n     qemu_init_exec_dir(argv[0]);\ndiff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-storage-daemon.c\nindex eb725613582..8ede324fd89 100644\n--- a/storage-daemon/qemu-storage-daemon.c\n+++ b/storage-daemon/qemu-storage-daemon.c\n@@ -406,6 +406,7 @@ int main(int argc, char *argv[])\n \n     os_daemonize();\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     module_call_init(MODULE_INIT_TRACE);\n     qemu_add_opts(&qemu_trace_opts);\ndiff --git a/system/runstate.c b/system/runstate.c\nindex 770253b467b..43d60bafedf 100644\n--- a/system/runstate.c\n+++ b/system/runstate.c\n@@ -981,6 +981,7 @@ void qemu_init_subsystems(void)\n \n     atexit(qemu_run_exit_notifiers);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     module_call_init(MODULE_INIT_MIGRATION);\n \ndiff --git a/tests/audio/test-audio.c b/tests/audio/test-audio.c\nindex af8cf03d10e..8962cc6be45 100644\n--- a/tests/audio/test-audio.c\n+++ b/tests/audio/test-audio.c\n@@ -584,6 +584,7 @@ int main(int argc, char **argv)\n     dir = g_test_build_filename(G_TEST_BUILT, \"..\", \"..\", NULL);\n     g_setenv(\"QEMU_MODULE_DIR\", dir, true);\n     qemu_init_exec_dir(argv[0]);\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     module_init_info(qemu_modinfo);\n \ndiff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c\nindex 510751799e4..460ddf18589 100644\n--- a/tests/qtest/bios-tables-test.c\n+++ b/tests/qtest/bios-tables-test.c\n@@ -1527,6 +1527,7 @@ static void test_acpi_tcg_tpm(const char *machine, const char *arch,\n \n     tpm_tis_base_addr = base;\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     test.addr = g_new0(SocketAddress, 1);\ndiff --git a/tests/qtest/fuzz/fuzz.c b/tests/qtest/fuzz/fuzz.c\nindex ca248a51a6c..031b3173a36 100644\n--- a/tests/qtest/fuzz/fuzz.c\n+++ b/tests/qtest/fuzz/fuzz.c\n@@ -172,6 +172,7 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)\n     /* Initialize qgraph and modules */\n     qos_graph_init();\n     module_call_init(MODULE_INIT_FUZZ_TARGET);\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     module_call_init(MODULE_INIT_LIBQOS);\n \ndiff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c\nindex e582f05c7dc..f69e679895a 100644\n--- a/tests/qtest/migration-test.c\n+++ b/tests/qtest/migration-test.c\n@@ -46,6 +46,7 @@ int main(int argc, char **argv)\n     g_test_init(&argc, &argv, NULL);\n     env = migration_get_env();\n     env->full_set = full_set;\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     migration_test_add_tls(env);\ndiff --git a/tests/qtest/qos-test.c b/tests/qtest/qos-test.c\nindex 50fa0ceef36..c4bc2408cb2 100644\n--- a/tests/qtest/qos-test.c\n+++ b/tests/qtest/qos-test.c\n@@ -343,6 +343,7 @@ int main(int argc, char **argv, char** envp)\n         qos_printf(\"}\\n\");\n     }\n     qos_graph_init();\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     module_call_init(MODULE_INIT_LIBQOS);\n     qos_set_machines_devices_available();\ndiff --git a/tests/qtest/tpm-crb-swtpm-test.c b/tests/qtest/tpm-crb-swtpm-test.c\nindex ffeb1c396b8..297182a73bb 100644\n--- a/tests/qtest/tpm-crb-swtpm-test.c\n+++ b/tests/qtest/tpm-crb-swtpm-test.c\n@@ -50,6 +50,7 @@ int main(int argc, char **argv)\n     ts.dst_tpm_path = g_dir_make_tmp(\"qemu-tpm-crb-swtpm-test.XXXXXX\", NULL);\n     ts.uri = g_strdup_printf(\"unix:%s/migsocket\", ts.src_tpm_path);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n \ndiff --git a/tests/qtest/tpm-crb-test.c b/tests/qtest/tpm-crb-test.c\nindex 396ae3f91c1..08d58b613eb 100644\n--- a/tests/qtest/tpm-crb-test.c\n+++ b/tests/qtest/tpm-crb-test.c\n@@ -144,6 +144,7 @@ int main(int argc, char **argv)\n     GThread *thread;\n     TPMTestState test;\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n \ndiff --git a/tests/qtest/tpm-tis-device-swtpm-test.c b/tests/qtest/tpm-tis-device-swtpm-test.c\nindex 517a0770055..ad2660210f9 100644\n--- a/tests/qtest/tpm-tis-device-swtpm-test.c\n+++ b/tests/qtest/tpm-tis-device-swtpm-test.c\n@@ -58,6 +58,7 @@ int main(int argc, char **argv)\n                                      NULL);\n     ts.uri = g_strdup_printf(\"unix:%s/migsocket\", ts.src_tpm_path);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n \ndiff --git a/tests/qtest/tpm-tis-device-test.c b/tests/qtest/tpm-tis-device-test.c\nindex 3ddefb51ecf..be0f2e3df03 100644\n--- a/tests/qtest/tpm-tis-device-test.c\n+++ b/tests/qtest/tpm-tis-device-test.c\n@@ -37,6 +37,7 @@ int main(int argc, char **argv)\n     char *args;\n     int ret;\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n \ndiff --git a/tests/qtest/tpm-tis-i2c-test.c b/tests/qtest/tpm-tis-i2c-test.c\nindex 3a1af026f2e..c23fdefd4a3 100644\n--- a/tests/qtest/tpm-tis-i2c-test.c\n+++ b/tests/qtest/tpm-tis-i2c-test.c\n@@ -605,6 +605,7 @@ int main(int argc, char **argv)\n     GThread *thread;\n     TPMTestState test;\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n \ndiff --git a/tests/qtest/tpm-tis-swtpm-test.c b/tests/qtest/tpm-tis-swtpm-test.c\nindex 105e42e21d6..30a07fa1adc 100644\n--- a/tests/qtest/tpm-tis-swtpm-test.c\n+++ b/tests/qtest/tpm-tis-swtpm-test.c\n@@ -53,6 +53,7 @@ int main(int argc, char **argv)\n     ts.dst_tpm_path = g_dir_make_tmp(\"qemu-tpm-tis-swtpm-test.XXXXXX\", NULL);\n     ts.uri = g_strdup_printf(\"unix:%s/migsocket\", ts.src_tpm_path);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n \ndiff --git a/tests/qtest/tpm-tis-test.c b/tests/qtest/tpm-tis-test.c\nindex a4a25ba7452..7ea2bafc045 100644\n--- a/tests/qtest/tpm-tis-test.c\n+++ b/tests/qtest/tpm-tis-test.c\n@@ -31,6 +31,7 @@ int main(int argc, char **argv)\n     GThread *thread;\n     TPMTestState test;\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n \ndiff --git a/tests/unit/check-qom-interface.c b/tests/unit/check-qom-interface.c\nindex 86ae5f6c3b1..c02acfc7b27 100644\n--- a/tests/unit/check-qom-interface.c\n+++ b/tests/unit/check-qom-interface.c\n@@ -90,6 +90,7 @@ int main(int argc, char **argv)\n {\n     g_test_init(&argc, &argv, NULL);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     type_register_static(&test_if_info);\n     type_register_static(&direct_impl_info);\ndiff --git a/tests/unit/check-qom-proplist.c b/tests/unit/check-qom-proplist.c\nindex ee3c6fb32b1..d8e5cd97091 100644\n--- a/tests/unit/check-qom-proplist.c\n+++ b/tests/unit/check-qom-proplist.c\n@@ -652,6 +652,7 @@ int main(int argc, char **argv)\n {\n     g_test_init(&argc, &argv, NULL);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     type_register_static(&dummy_info);\n     type_register_static(&dummy_dev_info);\ndiff --git a/tests/unit/test-authz-list.c b/tests/unit/test-authz-list.c\nindex 5351992a013..1f7754f1024 100644\n--- a/tests/unit/test-authz-list.c\n+++ b/tests/unit/test-authz-list.c\n@@ -147,6 +147,7 @@ int main(int argc, char **argv)\n {\n     g_test_init(&argc, &argv, NULL);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     g_test_add_func(\"/auth/list/default/deny\", test_authz_default_deny);\ndiff --git a/tests/unit/test-authz-listfile.c b/tests/unit/test-authz-listfile.c\nindex 64d0e1500f7..b8d39645362 100644\n--- a/tests/unit/test-authz-listfile.c\n+++ b/tests/unit/test-authz-listfile.c\n@@ -170,6 +170,7 @@ int main(int argc, char **argv)\n \n     g_test_init(&argc, &argv, NULL);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     workdir = g_dir_make_tmp(\"qemu-test-authz-listfile-XXXXXX\",\ndiff --git a/tests/unit/test-authz-pam.c b/tests/unit/test-authz-pam.c\nindex 4fe1ef2603e..d23f3fb0871 100644\n--- a/tests/unit/test-authz-pam.c\n+++ b/tests/unit/test-authz-pam.c\n@@ -123,6 +123,7 @@ int main(int argc, char **argv)\n {\n     g_test_init(&argc, &argv, NULL);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     g_test_add_func(\"/auth/pam/unknown-service\", test_authz_unknown_service);\ndiff --git a/tests/unit/test-authz-simple.c b/tests/unit/test-authz-simple.c\nindex 6f9034d8ff2..a6c038220ae 100644\n--- a/tests/unit/test-authz-simple.c\n+++ b/tests/unit/test-authz-simple.c\n@@ -43,6 +43,7 @@ static void test_authz_simple(void)\n int main(int argc, char **argv)\n {\n     g_test_init(&argc, &argv, NULL);\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     g_test_add_func(\"/authz/simple\", test_authz_simple);\ndiff --git a/tests/unit/test-char.c b/tests/unit/test-char.c\nindex b88b557133a..0686d917434 100644\n--- a/tests/unit/test-char.c\n+++ b/tests/unit/test-char.c\n@@ -1898,6 +1898,7 @@ int main(int argc, char **argv)\n         goto end;\n     }\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     qemu_add_opts(&qemu_chardev_opts);\n \ndiff --git a/tests/unit/test-crypto-block.c b/tests/unit/test-crypto-block.c\nindex 218e585f988..5197e6c122a 100644\n--- a/tests/unit/test-crypto-block.c\n+++ b/tests/unit/test-crypto-block.c\n@@ -565,6 +565,7 @@ int main(int argc, char **argv)\n {\n     gsize i;\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n \ndiff --git a/tests/unit/test-crypto-secret.c b/tests/unit/test-crypto-secret.c\nindex fc32a01747b..ee2b7bd3469 100644\n--- a/tests/unit/test-crypto-secret.c\n+++ b/tests/unit/test-crypto-secret.c\n@@ -558,6 +558,7 @@ static void test_secret_crypt_bad_iv(void)\n \n int main(int argc, char **argv)\n {\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n \ndiff --git a/tests/unit/test-crypto-tlscredsx509.c b/tests/unit/test-crypto-tlscredsx509.c\nindex b1ad7d5c0d8..c83e2ef82d2 100644\n--- a/tests/unit/test-crypto-tlscredsx509.c\n+++ b/tests/unit/test-crypto-tlscredsx509.c\n@@ -140,6 +140,7 @@ int main(int argc, char **argv)\n {\n     int ret;\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n     g_setenv(\"GNUTLS_FORCE_FIPS_MODE\", \"2\", 1);\ndiff --git a/tests/unit/test-crypto-tlssession.c b/tests/unit/test-crypto-tlssession.c\nindex 0d06a6892eb..f9e23ace76c 100644\n--- a/tests/unit/test-crypto-tlssession.c\n+++ b/tests/unit/test-crypto-tlssession.c\n@@ -412,6 +412,7 @@ int main(int argc, char **argv)\n {\n     int ret;\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n     g_setenv(\"GNUTLS_FORCE_FIPS_MODE\", \"2\", 1);\ndiff --git a/tests/unit/test-io-channel-buffer.c b/tests/unit/test-io-channel-buffer.c\nindex 9c6724dea41..45f9528d8d3 100644\n--- a/tests/unit/test-io-channel-buffer.c\n+++ b/tests/unit/test-io-channel-buffer.c\n@@ -43,6 +43,7 @@ static void test_io_channel_buf(void)\n \n int main(int argc, char **argv)\n {\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     g_test_init(&argc, &argv, NULL);\ndiff --git a/tests/unit/test-io-channel-command.c b/tests/unit/test-io-channel-command.c\nindex 964418b5cd9..a5d6becff73 100644\n--- a/tests/unit/test-io-channel-command.c\n+++ b/tests/unit/test-io-channel-command.c\n@@ -124,6 +124,7 @@ static void test_io_channel_command_echo_sync(void)\n \n int main(int argc, char **argv)\n {\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     g_test_init(&argc, &argv, NULL);\ndiff --git a/tests/unit/test-io-channel-file.c b/tests/unit/test-io-channel-file.c\nindex b597350dca3..41b45e23f9b 100644\n--- a/tests/unit/test-io-channel-file.c\n+++ b/tests/unit/test-io-channel-file.c\n@@ -337,6 +337,7 @@ static void test_io_channel_pipe_sync(void)\n \n int main(int argc, char **argv)\n {\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     g_test_init(&argc, &argv, NULL);\ndiff --git a/tests/unit/test-io-channel-null.c b/tests/unit/test-io-channel-null.c\nindex b3aab17ccce..d27a389a061 100644\n--- a/tests/unit/test-io-channel-null.c\n+++ b/tests/unit/test-io-channel-null.c\n@@ -85,6 +85,7 @@ static void test_io_channel_null_io(void)\n \n int main(int argc, char **argv)\n {\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     g_test_init(&argc, &argv, NULL);\ndiff --git a/tests/unit/test-io-channel-socket.c b/tests/unit/test-io-channel-socket.c\nindex dc7be96e9cd..fd9162aac41 100644\n--- a/tests/unit/test-io-channel-socket.c\n+++ b/tests/unit/test-io-channel-socket.c\n@@ -566,6 +566,7 @@ int main(int argc, char **argv)\n {\n     bool has_ipv4, has_ipv6, has_afunix;\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     qemu_init_main_loop(&error_abort);\n     socket_init();\ndiff --git a/tests/unit/test-io-channel-tls.c b/tests/unit/test-io-channel-tls.c\nindex 4e4034af67b..661fdbf7434 100644\n--- a/tests/unit/test-io-channel-tls.c\n+++ b/tests/unit/test-io-channel-tls.c\n@@ -269,6 +269,7 @@ int main(int argc, char **argv)\n \n     g_assert(qcrypto_init(NULL) == 0);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     g_test_init(&argc, &argv, NULL);\n     g_setenv(\"GNUTLS_FORCE_FIPS_MODE\", \"2\", 1);\ndiff --git a/tests/unit/test-io-task.c b/tests/unit/test-io-task.c\nindex b1c8ecb7abb..60e09ef14b0 100644\n--- a/tests/unit/test-io-task.c\n+++ b/tests/unit/test-io-task.c\n@@ -282,6 +282,7 @@ static void test_task_thread_failure(void)\n int main(int argc, char **argv)\n {\n     g_test_init(&argc, &argv, NULL);\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     type_register_static(&dummy_info);\n     g_test_add_func(\"/crypto/task/complete\", test_task_complete);\ndiff --git a/tests/unit/test-qdev-global-props.c b/tests/unit/test-qdev-global-props.c\nindex 8ea362cbb90..79d13f0139c 100644\n--- a/tests/unit/test-qdev-global-props.c\n+++ b/tests/unit/test-qdev-global-props.c\n@@ -306,6 +306,7 @@ int main(int argc, char **argv)\n {\n     g_test_init(&argc, &argv, NULL);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     type_register_static(&static_prop_type);\n     type_register_static(&subclass_type);\ndiff --git a/tests/unit/test-qdev.c b/tests/unit/test-qdev.c\nindex 20eae38e03f..61c6a9ba08a 100644\n--- a/tests/unit/test-qdev.c\n+++ b/tests/unit/test-qdev.c\n@@ -83,6 +83,7 @@ int main(int argc, char **argv)\n {\n     g_test_init(&argc, &argv, NULL);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     type_register_static(&my_dev_type_info);\n     test_init_machine();\ndiff --git a/tests/unit/test-smp-parse.c b/tests/unit/test-smp-parse.c\nindex 1b6450e7d8f..412b151865a 100644\n--- a/tests/unit/test-smp-parse.c\n+++ b/tests/unit/test-smp-parse.c\n@@ -1566,6 +1566,7 @@ DEFINE_TYPES(smp_machine_types)\n \n int main(int argc, char *argv[])\n {\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     g_test_init(&argc, &argv, NULL);\ndiff --git a/tests/unit/test-throttle.c b/tests/unit/test-throttle.c\nindex 52eb8966b3f..a6931fed19a 100644\n--- a/tests/unit/test-throttle.c\n+++ b/tests/unit/test-throttle.c\n@@ -806,6 +806,7 @@ int main(int argc, char **argv)\n     qemu_init_main_loop(&error_fatal);\n     ctx = qemu_get_aio_context();\n     bdrv_init();\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     do {} while (g_main_context_iteration(NULL, false));\ndiff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c\nindex df1fb4c7780..e32417c759d 100644\n--- a/tests/unit/test-vmstate.c\n+++ b/tests/unit/test-vmstate.c\n@@ -1626,6 +1626,7 @@ int main(int argc, char **argv)\n     temp_fd = mkstemp(temp_file);\n     g_assert(temp_fd >= 0);\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     g_setenv(\"QTEST_SILENT_ERRORS\", \"1\", 1);\ndiff --git a/tests/unit/test-xs-node.c b/tests/unit/test-xs-node.c\nindex 2f447a73fb8..2eb56549c86 100644\n--- a/tests/unit/test-xs-node.c\n+++ b/tests/unit/test-xs-node.c\n@@ -857,6 +857,7 @@ static void test_xs_node_tx_resurrect2(void)\n int main(int argc, char **argv)\n {\n     g_test_init(&argc, &argv, NULL);\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n \n     g_test_add_func(\"/xs_node/simple\", test_xs_node_simple);\ndiff --git a/tests/unit/test-yank.c b/tests/unit/test-yank.c\nindex 9fc86a21282..23c3acf6eba 100644\n--- a/tests/unit/test-yank.c\n+++ b/tests/unit/test-yank.c\n@@ -202,6 +202,7 @@ int main(int argc, char **argv)\n         goto end;\n     }\n \n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     qemu_add_opts(&qemu_chardev_opts);\n \ndiff --git a/tools/i386/qemu-vmsr-helper.c b/tools/i386/qemu-vmsr-helper.c\nindex f12fd3c3e81..25f054edcf0 100644\n--- a/tools/i386/qemu-vmsr-helper.c\n+++ b/tools/i386/qemu-vmsr-helper.c\n@@ -359,6 +359,7 @@ int main(int argc, char **argv)\n \n     error_init(argv[0]);\n     module_call_init(MODULE_INIT_TRACE);\n+    module_call_init(MODULE_INIT_QOM_EARLY);\n     module_call_init(MODULE_INIT_QOM);\n     qemu_add_opts(&qemu_trace_opts);\n     qemu_init_exec_dir(argv[0]);\n","prefixes":["v3","1/8"]}