{"id":2230797,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2230797/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260430035626.3511676-6-pierrick.bouvier@oss.qualcomm.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.1/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":""},"msgid":"<20260430035626.3511676-6-pierrick.bouvier@oss.qualcomm.com>","date":"2026-04-30T03:56:24","name":"[v2,5/7] system/vl: register target info types first in qom","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"1c65bff67a07c2bede6a1f4d9e8d6bfecfed3305","submitter":{"id":93152,"url":"http://patchwork.ozlabs.org/api/1.1/people/93152/?format=json","name":"Pierrick Bouvier","email":"pierrick.bouvier@oss.qualcomm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260430035626.3511676-6-pierrick.bouvier@oss.qualcomm.com/mbox/","series":[{"id":502185,"url":"http://patchwork.ozlabs.org/api/1.1/series/502185/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=502185","date":"2026-04-30T03:56:26","name":"single-binary: deduplicate target_info()","version":2,"mbox":"http://patchwork.ozlabs.org/series/502185/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2230797/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2230797/checks/","tags":{},"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=CSYBgWJc;\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=XldI9drC;\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 4g5gzN24llz1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 14:24:00 +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 1wIIwH-0007QN-GE; Thu, 30 Apr 2026 00:23:49 -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 1wIIwF-0007Nv-6E\n for qemu-devel@nongnu.org; Thu, 30 Apr 2026 00:23:47 -0400","from mx0b-0031df01.pphosted.com ([205.220.180.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 1wIIwD-0002GJ-Fp\n for qemu-devel@nongnu.org; Thu, 30 Apr 2026 00:23:46 -0400","from pps.filterd (m0279871.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63TNvMaZ3733700\n for <qemu-devel@nongnu.org>; Thu, 30 Apr 2026 03:56:38 GMT","from mail-dl1-f70.google.com (mail-dl1-f70.google.com\n [74.125.82.70])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4duv3x8p5k-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 03:56:38 +0000 (GMT)","by mail-dl1-f70.google.com with SMTP id\n a92af1059eb24-12dece274b1so269650c88.1\n for <qemu-devel@nongnu.org>; Wed, 29 Apr 2026 20:56:38 -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 a92af1059eb24-12de32173acsm7159443c88.5.2026.04.29.20.56.35\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 29 Apr 2026 20:56:35 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n cc:content-transfer-encoding:date:from:in-reply-to:message-id\n :mime-version:references:subject:to; s=qcppdkim1; bh=IFcxnBKVAgB\n 1MK7c4GA0GzJHutJaaZT1qBsCJEhah18=; b=CSYBgWJcVRJRjODKgKxYUicDkfw\n QYZyVRMA+M00Rszlk7t5BPVx2DKjLbqIFWkz13A6yz6XFgkGlQCvMgYwTnokBp0f\n 2ErsCF/o2VJGmb72KDKoxAEucj0z5aytJk9ocXSOk0UxL2qse6NNte1y3OQq8wF4\n sqbgdfmg+e4+Yn+tjC/91kT+FfxRw2UVVqJ9mTJZejfUYNkhUb/eyP248Qw2ByOa\n l3nwFy0dh+WnQLko6Cv+lua1cQR5RSqjQAm7yrseW5Gh+9YFSGvGu3htYmmQ9wER\n 6seNTVyy66WwkAVjiu4eBk12WwVH6ZlK10LwOE5c2jZ+CqrKixNM9D98uSQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1777521397; x=1778126197; 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=IFcxnBKVAgB1MK7c4GA0GzJHutJaaZT1qBsCJEhah18=;\n b=XldI9drCiLw/xG9dGwynnmxPEJazYEUNV9yjzpxorVV3v3qqK9CTvb7pEPoBS0FbIQ\n NmfYrj6EoYIj3gGc3TAq/nyAnfAl7iCcVATLNu0ZkNpto4902rWmUBy6Y9+WkRW53vpT\n e1jVQRASYndNcRu1bp0TgDuesIIugctRmq0dd2r5EFwmubu7yW/jAjZMkGZ3BuV1WAo1\n Sin9gWuUXTdGonFR+a545/cLem1xYDOBBYsFwtGlXE7KTFabmgDA/guWM8Uah/P2WfK/\n B5ZMdBU5HbW9SQBT+sJt+pF/i5mAtpSISuo6E1MVtIAqyufoCrVZ/YoLYMYeyBhhRqpL\n Doow=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777521397; x=1778126197;\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=IFcxnBKVAgB1MK7c4GA0GzJHutJaaZT1qBsCJEhah18=;\n b=GeARzPHbP0S6GZ9Twx1TSaLNMRjmdTxuF2J2Hk9F8Id/SWDo9qFnBodlKWH+8clKmN\n 8RVRt41FzK6MkECWuxVAO3n5hLjZ0hGmBzm/L1WoZq1hEZIiT0vyftXHnNt/oyIhUoVA\n Lkp7nP6amiTvFS9CqeL9AX+fUnThLACJ6G1/LYRu6rlp1+G72KGOoniNrudj/Pkatmg1\n CvvWxeXNwWg1yNj07ZQcgMW0oYkK7DGnxFOPKt0LI0VlXGciD2iUaNz/2VC3FbWJ+ust\n 2aySpsRqfFmnDS7a+itzzf30qLiP5Rc/mRdRxCH8J5EsaFGkO5x2z/xvVI1Amec6+3/q\n UwSA==","X-Gm-Message-State":"AOJu0Ywpoc449wVTQ51BIcghAOpuyLoWWpe828LXHObOA0hNVAOH6aJf\n Q26pRCgi0ecYkhj3eMiVEUMAKuHMpLOpypRsfWaBOjgXojj9Uk39/yxOcJOXRsQx7gAvxMOKx3g\n rRVlxM6NnbYMn9N9tCQB1bC0xtxp93aMP1S6Uf35F+h4862oC69ex1JObUc0NU+IdmYB+","X-Gm-Gg":"AeBDievBmemQyF48xrQmDbWCD5RukDjq+PUwtrI9xUiHebRy16gsb4mDcs++OaV8NT/\n S60oud3+1EazHtWfhDRPUHrepuq5KUIX94Fm5ooEfwcRKn5iQVHuG9l4d8IpQSMzm9iHRgcnFpM\n FBkfh5Q8EGIItMXq01BI/AV2qaWVpXznNfqU77HwiS3nrfrFsCjCLODD3wE/i6cRKCg2YjJH17O\n yCyoHQgHoOaA8xBzoZZU0AUJffe/rbT6RGnvp2pwQH125K0DFAfI4ilCbhT1oaCQGtOwy1A2FaK\n UNn+LpsVP93DJ1u/lCSzeCELau/zasIqkkbgCYRRKouXIraTq3ujqAXjW389cdyxtMaXGxC4z/W\n QwiQIKHcPArhpjQuVQlifBrpxNSs189Jxs1AECAWEA1vaf0nLmLKwr6PbEG7x1rQFFxKffG9IlW\n nbImQ/iO9o050x2uQL","X-Received":["by 2002:a05:7022:ea32:b0:128:d23d:81aa with SMTP id\n a92af1059eb24-12deace029bmr507811c88.27.1777521396942;\n Wed, 29 Apr 2026 20:56:36 -0700 (PDT)","by 2002:a05:7022:ea32:b0:128:d23d:81aa with SMTP id\n a92af1059eb24-12deace029bmr507793c88.27.1777521396444;\n Wed, 29 Apr 2026 20:56:36 -0700 (PDT)"],"From":"Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>","To":"qemu-devel@nongnu.org","Cc":"Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, =?utf-8?q?Philippe?=\n\t=?utf-8?q?_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,\n Richard Henderson <richard.henderson@linaro.org>,\n Markus Armbruster <armbru@redhat.com>, Anton Johansson <anjo@rev.ng>,\n marcandre.lureau@redhat.com, Paolo Bonzini <pbonzini@redhat.com>,\n Max Filippov <jcmvbkbc@gmail.com>,\n =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>","Subject":"[PATCH v2 5/7] system/vl: register target info types first in qom","Date":"Wed, 29 Apr 2026 20:56:24 -0700","Message-ID":"<20260430035626.3511676-6-pierrick.bouvier@oss.qualcomm.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20260430035626.3511676-1-pierrick.bouvier@oss.qualcomm.com>","References":"<20260430035626.3511676-1-pierrick.bouvier@oss.qualcomm.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDMwMDAzNiBTYWx0ZWRfXzOhNw39crr/k\n IvOBZGdIucLc6we7eYLCEDK9hDCXf7Y8w28r/NPKBvD16hsT/nMZYKAv5zM3F2ZKWfsedLGconb\n /NOpb6hBbtyjxA/HQ+ovFk39SeLrsj1Isk01Al6p99XcGypd9b26QJapGTJOzbJT6tlKfGUnR8i\n nrOftN6btd7Ty5ZjJ08IuxWZHm3hcwwjMxu8zdydyE8Jbg+wSz+A7+qjQm7tK+WDcOc3tN+qSIP\n xMGrJuz5od41HGUuTbTkQxH9G+5i1ro++CcLMrFT5icoCYBgPXcIV+tk/2ArogUCn9e+K+DJHvx\n nNOw6kqwuCs3GPYZd20Ki7Yd/9bwJxgTXZ0EMnltLzvkJ20Nb2hA6obYB6Ks08SM5RWL2aiz402\n YGEnu4wxbH8B4mzywhXrqlaU27Tg9KK1bIL58bwgXSwCjvs8E2etZQDaqwmnP7ipAOnQkd8Krwn\n IF0GdmzmtKfJrAlSOjQ==","X-Authority-Analysis":"v=2.4 cv=Oc2oyBTY c=1 sm=1 tr=0 ts=69f2d2f6 cx=c_pps\n a=SvEPeNj+VMjHSW//kvnxuw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17\n a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8\n a=2T1URBfsDFyyNY1JCakA:9 a=Kq8ClHjjuc5pcCNDwlU0:22","X-Proofpoint-GUID":"EivZTAzCmZpbRVdjdPPd6k7X748LWSCu","X-Proofpoint-ORIG-GUID":"EivZTAzCmZpbRVdjdPPd6k7X748LWSCu","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_01,2026-04-28_01,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n clxscore=1015 spamscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0\n impostorscore=0 bulkscore=0 malwarescore=0 priorityscore=1501 adultscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604300036","Received-SPF":"pass client-ip=205.220.180.131;\n envelope-from=pierrick.bouvier@oss.qualcomm.com;\n helo=mx0b-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":"We will introduce detection of target from QOM, so we need to make sure\nthose types are registered. As well, it ensure no other types are\nregistered yet, so we can safely call object_class_get_list.\n\nSigned-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>\n---\n include/qemu/module.h           |  1 +\n include/qemu/target-info-init.h | 17 +++++++++++++----\n system/vl.c                     |  3 +++\n target-info-qom.c               | 18 +++++++++++-------\n 4 files changed, 28 insertions(+), 11 deletions(-)","diff":"diff --git a/include/qemu/module.h b/include/qemu/module.h\nindex 9885ac9afb3..fccf017bf9e 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_TARGET_INFO,\n     MODULE_INIT_QOM,\n     MODULE_INIT_TRACE,\n     MODULE_INIT_XEN_BACKEND,\ndiff --git a/include/qemu/target-info-init.h b/include/qemu/target-info-init.h\nindex 1e52ad62820..859451c672e 100644\n--- a/include/qemu/target-info-init.h\n+++ b/include/qemu/target-info-init.h\n@@ -12,6 +12,14 @@\n #ifndef TARGET_INFO_DEF_H\n #define TARGET_INFO_DEF_H\n \n+#define DEFINE_TARGET_INFO_TYPE(info)                                       \\\n+static void do_qemu_init_target_info(void)                                  \\\n+{                                                                           \\\n+    type_register_static(&info);                                            \\\n+}                                                                           \\\n+module_init(do_qemu_init_target_info, MODULE_INIT_TARGET_INFO)\n+\n+#ifdef COMPILING_PER_TARGET\n #ifdef CONFIG_USER_ONLY\n \n /*\n@@ -53,17 +61,18 @@ static void target_info_qom_class_init(ObjectClass *oc, const void * data)  \\\n     klass->parent_class.target_info = &ti_var;                              \\\n }                                                                           \\\n                                                                             \\\n-static const TypeInfo target_info_qom_target_type_info[] = {                \\\n-{                                                                           \\\n+static const TypeInfo target_info_qom_target_type_info = {                  \\\n     .name = TYPE_TARGET_INFO_TARGET,                                        \\\n     .parent = TYPE_TARGET_INFO,                                             \\\n     .instance_size = sizeof(TargetInfoQomTarget),                           \\\n     .class_size = sizeof(TargetInfoQomTargetClass),                         \\\n     .class_init = target_info_qom_class_init,                               \\\n     .abstract = false,                                                      \\\n-} };                                                                        \\\n-DEFINE_TYPES(target_info_qom_target_type_info)\n+};                                                                          \\\n+                                                                            \\\n+DEFINE_TARGET_INFO_TYPE(target_info_qom_target_type_info)\n \n #endif /* CONFIG_USER_ONLY */\n+#endif /* COMPILING_PER_TARGET */\n \n #endif /* TARGET_INFO_DEF_H */\ndiff --git a/system/vl.c b/system/vl.c\nindex 0e1fc217b4f..dce1170203f 100644\n--- a/system/vl.c\n+++ b/system/vl.c\n@@ -2888,6 +2888,9 @@ void qemu_init(int argc, char **argv)\n \n     os_setup_limits();\n \n+    /* ensure target-info types are registered before selecting target */\n+    module_call_init(MODULE_INIT_TARGET_INFO);\n+\n     module_init_info(qemu_modinfo);\n     module_allow_arch(target_name());\n \ndiff --git a/target-info-qom.c b/target-info-qom.c\nindex 5ce29f80301..ba2c7923760 100644\n--- a/target-info-qom.c\n+++ b/target-info-qom.c\n@@ -10,17 +10,11 @@\n #include \"qapi/error.h\"\n #include \"qom/object.h\"\n #include \"qemu/target-info-impl.h\"\n+#include \"qemu/target-info-init.h\"\n #include \"qemu/target-info-qom.h\"\n #include \"hw/arm/machines-qom.h\"\n \n static const TypeInfo target_info_types[] = {\n-    {\n-        .name = TYPE_TARGET_INFO,\n-        .parent = TYPE_OBJECT,\n-        .instance_size = sizeof(TargetInfoQom),\n-        .class_size = sizeof(TargetInfoQomClass),\n-        .abstract = true,\n-    },\n     {\n         .name           = TYPE_TARGET_ARM_MACHINE,\n         .parent         = TYPE_INTERFACE,\n@@ -32,3 +26,13 @@ static const TypeInfo target_info_types[] = {\n };\n \n DEFINE_TYPES(target_info_types)\n+\n+static const TypeInfo target_info_parent_type = {\n+    .name = TYPE_TARGET_INFO,\n+    .parent = TYPE_OBJECT,\n+    .instance_size = sizeof(TargetInfoQom),\n+    .class_size = sizeof(TargetInfoQomClass),\n+    .abstract = true,\n+};\n+\n+DEFINE_TARGET_INFO_TYPE(target_info_parent_type)\n","prefixes":["v2","5/7"]}