From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 2002:a17:906:33ce:b0:9d0:bf65:29fa with SMTP id w14csp321222eja; Thu, 2 Nov 2023 04:43:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH6k5evnPx7txzvnxn2hwEoJMRPB6bR+rujsDWTQ+3LO80vX0P1kGbah/vOJGfclNKjrZF/ X-Received: by 2002:a05:6214:27e4:b0:66f:b89e:71de with SMTP id jt4-20020a05621427e400b0066fb89e71demr18654729qvb.36.1698925410263; Thu, 02 Nov 2023 04:43:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698925410; cv=none; d=google.com; s=arc-20160816; b=ojZ/IJY5vttBIaB4LJ2styy7V6QErTpNJkEZ/F927hKQeRrkzETJbgIdAbgyEb+DTu LNGpHNa7MnH5mLtaysessofcfV4D3wRzQNR/nNtBbpZAEkTf+XXXP0cwZTEkgGiRFt6z stqkPQjkh5eitfmF1FyKIjxgTSiYU+g0OaPBuVLSLxKj+nA1IUzD1mufAlHtKQx52z+e zn85F1wKAhEMLdunkuqQZT+eMkJ+w966xQ1B1/zvmv8NI5dabaMvIhNVCnFeZ35hhHUx 8OB933G+2Eryk13Wu0FSdu7U1NXwOGcMe1MM8YAz2QC/Z/mQ4VyO1uaA7HaScW9XTNgG c19w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=cR9NGM3PlyY7M2GJpNtNbL6SszTHYnxwNpsAkBY3afQ=; fh=nG4g8lIxMSn2HBVif096pZ9RcxcQsX5gWBaluY7RtYQ=; b=uOzjdumsSvDCnqwAzqzrBRUsG96fRO9kn/7m/RkaRtReoShR0NJ0mB8GYICELir0Rf ozrqzjxOxPgeaAa355z0Xg/uWJKpiWU1l0wbkoznug7WhuOUDaDHdxOImGx5VfiCqOgu rne1vjyQMq7GTF4BVSIyauL2ZLSne2i+C0jjpUl7ghlAPDQl7XvoGJG5kqRVS6vb1ObV QYVDTgebvE3T26Uk+rWE3yf2gEcoCKoLMYCsjLfkM+NL2+A+j0M4dlIUt8ubY9sV+p/g JTeI63M/cVj4arssR27rlh24My/kQrEsnfvi1K/TOmuzgqfsHI/IMJ8txQg/LN/zIcww qMdQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=hvIPnfNG; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id v1-20020a0cf901000000b0066cf679a506si4190577qvn.94.2023.11.02.04.43.30 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 Nov 2023 04:43:30 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=hvIPnfNG; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qyW6O-0004Cm-Nm; Thu, 02 Nov 2023 07:43:10 -0400 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 1qyW5k-0003Eg-TQ for qemu-arm@nongnu.org; Thu, 02 Nov 2023 07:42:30 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qyW5h-0004w8-Dq for qemu-arm@nongnu.org; Thu, 02 Nov 2023 07:42:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698925344; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cR9NGM3PlyY7M2GJpNtNbL6SszTHYnxwNpsAkBY3afQ=; b=hvIPnfNGPzF0+jbqnGHVD5l1YofElD/Npbo2L6OovWfqld+C9pAi/EsQcCvdazPpUlJCm3 I5hikcepG5P5gH1uFOdAf4xpg8dwdW9jQxbrXtCt7wR/86l6mJjnu8j0LBNb80Z5wtwp21 ZeTRigqtJIBlNv6GaBf9eLXMZXBafss= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-252-KTRVlIU7MmOm6QfqWZEoww-1; Thu, 02 Nov 2023 07:42:21 -0400 X-MC-Unique: KTRVlIU7MmOm6QfqWZEoww-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 46236831522; Thu, 2 Nov 2023 11:42:20 +0000 (UTC) Received: from secure.mitica (unknown [10.39.195.26]) by smtp.corp.redhat.com (Postfix) with ESMTP id DC9552026D4C; Thu, 2 Nov 2023 11:42:12 +0000 (UTC) From: Juan Quintela To: qemu-devel@nongnu.org Cc: Eric Farman , Laurent Vivier , David Gibson , qemu-block@nongnu.org, Stefan Hajnoczi , Marcel Apfelbaum , Kevin Wolf , David Hildenbrand , Samuel Thibault , qemu-s390x@nongnu.org, Richard Henderson , Leonardo Bras , Corey Minyard , Ilya Leoshkevich , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Markus Armbruster , Christian Borntraeger , Eduardo Habkost , Paolo Bonzini , qemu-ppc@nongnu.org, "Michael S. Tsirkin" , Peter Maydell , Halil Pasic , Gerd Hoffmann , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Li Zhijian , Eric Blake , "Denis V. Lunev" , Hanna Reitz , Fabiano Rosas , Stefan Berger , qemu-arm@nongnu.org, Daniel Henrique Barboza , Thomas Huth , Corey Minyard , John Snow , Jeff Cody , Peter Xu , Nicholas Piggin , Juan Quintela , Harsh Prateek Bora , Jason Wang , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Stefan Weil , Mark Cave-Ayland , Fam Zheng , "Dr . David Alan Gilbert" Subject: [PULL 10/40] migration: Check in savevm_state_handler_insert for dups Date: Thu, 2 Nov 2023 12:40:24 +0100 Message-ID: <20231102114054.44360-11-quintela@redhat.com> In-Reply-To: <20231102114054.44360-1-quintela@redhat.com> References: <20231102114054.44360-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.4 Received-SPF: pass client-ip=170.10.133.124; envelope-from=quintela@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.393, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-arm@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-arm-bounces+alex.bennee=linaro.org@nongnu.org Sender: qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org X-TUID: 3R8uauuT+Jpc From: Peter Xu Before finally register one SaveStateEntry, we detect for duplicated entries. This could be helpful to notify us asap instead of get silent migration failures which could be hard to diagnose. For example, this patch will generate a message like this (if without previous fixes on x2apic) as long as we wants to boot a VM instance with "-smp 200,maxcpus=288,sockets=2,cores=72,threads=2" and QEMU will bail out even before VM starts: savevm_state_handler_insert: Detected duplicate SaveStateEntry: id=apic, instance_id=0x0 Suggested-by: Dr. David Alan Gilbert Signed-off-by: Peter Xu Reviewed-by: Juan Quintela Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Juan Quintela Message-ID: <20231020090731.28701-10-quintela@redhat.com> --- migration/savevm.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/migration/savevm.c b/migration/savevm.c index c7596c3e9b..2095ddd6f8 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -237,6 +237,8 @@ static SaveState savevm_state = { .global_section_id = 0, }; +static SaveStateEntry *find_se(const char *idstr, uint32_t instance_id); + static bool should_validate_capability(int capability) { assert(capability >= 0 && capability < MIGRATION_CAPABILITY__MAX); @@ -716,6 +718,18 @@ static void savevm_state_handler_insert(SaveStateEntry *nse) assert(priority <= MIG_PRI_MAX); + /* + * This should never happen otherwise migration will probably fail + * silently somewhere because we can be wrongly applying one + * object properties upon another one. Bail out ASAP. + */ + if (find_se(nse->idstr, nse->instance_id)) { + error_report("%s: Detected duplicate SaveStateEntry: " + "id=%s, instance_id=0x%"PRIx32, __func__, + nse->idstr, nse->instance_id); + exit(EXIT_FAILURE); + } + for (i = priority - 1; i >= 0; i--) { se = savevm_state.handler_pri_head[i]; if (se != NULL) { -- 2.41.0