From nobody Fri Aug 21 21:26:30 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1787256234; cv=none; d=zohomail.com; s=zohoarc; b=Zg841AREFncQL8wOhLMyPyTuz1A9o2wdoButoa5L6NyZPhv1jBkj/8P43MP9Y0g6chu33c38mY256KISuKqNtEQzFGU2W4bpMvdU4Q7/nV9AV1r5EyBvZtDfMjiggabryBoOpPgUVUA84E+zXB4sJo5svTnYc+EWlKvtUI5NbcY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787256234; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dymtOTbbA2Q2LA0z+aMrYW4c1NOuhuLZRNS72cNN/0g=; b=BzwMP8mctZTxbmvGV4m08MbKG8VUCBOhw+qV5XSp9clRjh36giCR20vEVDlVXZMC5Np6p2rnYK+XxWMyE6mnPBZkVp+JtTyJ7WBI5p70QSnIBP/ZuDP++rFFH4FeCredyZUIlA5RdOsw/NL4QRhsgGGjXGa650CgQXNCPz20PJQ= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787256234278522.1350881583091; Thu, 20 Aug 2026 13:03:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx8z6-0008Gk-VS; Thu, 20 Aug 2026 16:03:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8z6-0008GE-9B for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:03:32 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8z4-00052L-So for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:03:32 -0400 Received: from mail-oo1-f72.google.com (mail-oo1-f72.google.com [209.85.161.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-323-6Pr21yr9NXOx5JyWWiVOsA-1; Thu, 20 Aug 2026 16:03:28 -0400 Received: by mail-oo1-f72.google.com with SMTP id 006d021491bc7-6b12e3edc28so183232eaf.3 for ; Thu, 20 Aug 2026 13:03:28 -0700 (PDT) Received: from x1.local (bras-vprn-aurron9134w-lp130-03-174-91-117-74.dsl.bell.ca. [174.91.117.74]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6b13cebeb2esm6181314eaf.10.2026.08.20.13.03.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 13:03:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787256210; 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=dymtOTbbA2Q2LA0z+aMrYW4c1NOuhuLZRNS72cNN/0g=; b=QyPCaOYTIGJdGAO0No3xi+m0wzvwqZuGs2wSymI7FB4gzyd15SKMBiEzAILXGrNnM9mu2S IJg6kKsyVJLFwLan+7+4p09n7+ja8z0dMFbkYb5YJjcJ5DQ14519AFCZb9ZVVVmByaC3vo bFMIO2mqDhU/W7wP8ThjiTsAPpJbM8A= X-MC-Unique: 6Pr21yr9NXOx5JyWWiVOsA-1 X-Mimecast-MFC-AGG-ID: 6Pr21yr9NXOx5JyWWiVOsA_1787256208 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787256208; x=1787861008; darn=nongnu.org; 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:content-type; bh=dymtOTbbA2Q2LA0z+aMrYW4c1NOuhuLZRNS72cNN/0g=; b=L//H9AuWfNdPPY/C4piPMwi4C3OiCY0W007rNlaQhs32xBsHMpCSdM43enGJcUMLI9 2Fe7x8O6oXpCUpXm0VUZqMuRaV03M3R8P4jNe08ppglo4rSMesBbXJtetnHcTPT9xdH2 IZDHlOmgMpH/IrfZNKQQshgokAJQreU0N3gI1AsEKEuNB5suVXYXy7pr4yARic54+nS6 I2d5Xe+v5e49iRr8+xXJoXHkeXS87/2Jtk8Bq8gnoUNnWhDbXP0thxnm1Y99o8i+uBjg rEcN/eHU2Nwe8tSYGx34o+LAg6jj58BIYYbnNYqFo7S5AYC/jy+pnBAqe8KiC+iukx4c MXTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787256208; x=1787861008; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=dymtOTbbA2Q2LA0z+aMrYW4c1NOuhuLZRNS72cNN/0g=; b=j469Xqf5QuZwAjXqSiOw7ikDUJFIqZBBTTyPodbYXTACLrjCxAx2geE/s1yDfx4BSk 1FAxszwew9K8L0lPmT4bKNlSHXBchM00qgJTsOotxF1Lz0UfDq1HPzjsTAEPP/y3IGRm /jXILfVbkr1WYCASfQWnmqi1Mkqlxaiu3oLO0JaGYZgFWnCaKNDCqgYoo0HJG6wlB3w+ 2KB/FH22sgQMwGR8/2/98uIC/mKCuthQ+dwexZCaHGSTi87+xRlbGQ/TTYEShl+wRzn7 vCxVnW5OD5OhzYkEKcGdadrFTfPdwVtrE+ZJOkbfidAsvxmpwMKZOCXubD7u8D01yk4x vjIw== X-Gm-Message-State: AOJu0Yy+Hsfh7HjDkyZXvOeKoxhe5e3UBss8ZtIHuDMFGlup4RQuy085 SB8U73+DGI9e7WW0r+Ra8FkMxX4qupqztQm8j/umtrGecva00daUlVz3iZNg+CwYDKr0y4J2pYy i7QhAPYX+98Smsc6RbgoflnkvPV84CxlHJlFlmpzO/58AhWYUPEubk/bnzzMC0Cz0Br66JQyH5n l9TlmIA73LF9Swa9MMYG1UbST4eU+dGm/XPEWWnA== X-Gm-Gg: AR+sD10LNzwGQ76x2iHREltWHx5pc9x0l1zYzpxI+n6M6PwCfWrf55qO4DRGkB1dWWz BVC3ybxoiLeyHNjAvsfpZ1FhchB4VyMiMngDs0x22t4t0k231rTN9uLGTRIXRh9OU+Ez5tdPB5r fTqQ3D8Akbc5pc0R6N0gwBip5UAtGT+PerLMZJe/3iAY90ASt9Ji+tbFnd42nyA4Y+stFoMUeS1 XQ8o7f62TGbO6U6Dd1C6/W7Xf3xC7mliH4I4QeSii0ZWWJCfwCKoX98WF92ho+rEwkUHCmElmzw B87RDuY79Byj7ccR2uTTZMYOp9q8Z4FBW6ebrvx49urdZqCaL6UcNm+rss7g9Jlg437EK0gpAO7 tqmiY/E+P70v1m1oLGQIfXOCuwdZaftUIx0objxZRFgASkqNor2RI4PNBRqI= X-Received: by 2002:a4a:edc3:0:b0:6ae:4131:98c6 with SMTP id 006d021491bc7-6b15926eac3mr1327823eaf.2.1787256207752; Thu, 20 Aug 2026 13:03:27 -0700 (PDT) X-Received: by 2002:a4a:edc3:0:b0:6ae:4131:98c6 with SMTP id 006d021491bc7-6b15926eac3mr1327714eaf.2.1787256207110; Thu, 20 Aug 2026 13:03:27 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Jack Wang , Peter Xu , Li Zhijian , Juraj Marcin , Fabiano Rosas , Samuel Zhang , Yanfei Xu , Jinpu Wang Subject: [PATCH v2 01/10] migration/rdma: Introduce RDMA_CONTROL_NUM Date: Thu, 20 Aug 2026 16:03:13 -0400 Message-ID: <20260820200322.3321036-2-peterx@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260820200322.3321036-1-peterx@redhat.com> References: <20260820200322.3321036-1-peterx@redhat.com> MIME-Version: 1.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H2=0.001, SPF_HELO_PASS=-0.001, 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 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 @redhat.com) X-ZM-MESSAGEID: 1787256235358158501 Content-Type: text/plain; charset="utf-8" Introduce this to say how many control messages we have. We did it because we're going to remove the last one (RDMA_CONTROL_UNREGISTER_FINISHED) soon. Reviewed-by: Jinpu Wang Signed-off-by: Peter Xu Reviewed-by: Fabiano Rosas --- migration/rdma.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/migration/rdma.c b/migration/rdma.c index 438419d189..62a509b236 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -144,6 +144,7 @@ enum { RDMA_CONTROL_REGISTER_FINISHED, /* current iteration finished */ RDMA_CONTROL_UNREGISTER_REQUEST, /* dynamic UN-registration */ RDMA_CONTROL_UNREGISTER_FINISHED, /* unpinning finished */ + RDMA_CONTROL_NUM, }; =20 =20 @@ -235,7 +236,7 @@ static const char *control_desc(unsigned int rdma_contr= ol) [RDMA_CONTROL_UNREGISTER_FINISHED] =3D "UNREGISTER FINISHED", }; =20 - if (rdma_control > RDMA_CONTROL_UNREGISTER_FINISHED) { + if (rdma_control >=3D RDMA_CONTROL_NUM) { return "??BAD CONTROL VALUE??"; } =20 --=20 2.54.0 From nobody Fri Aug 21 21:26:30 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1787256270; cv=none; d=zohomail.com; s=zohoarc; b=k2CbCyJPZPE+iVm0vfpXOPbRNYGn88y1/mDduMdJ5ZoNvMdjm5GGN6HuZOuAJkUOHoOnBkr/ut6TbgMiDwDrdlHgIS9wjiq2YGhJQ+L3mfQbf5j+W28EL1gPW1JZ/E7PVF3MoiOrgxVj2Vy0zZp4BxVVoQ9BCVlgWZoofLE/xFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787256270; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EXssvW0f/nZKgfGpqNRv4nCLIOwfmxQJyYdBljGzBvI=; b=a/uxsB1lKtgFT5TTsNKYYJ8c2jLWyelYUR75Yx4iBsk43QkfTR0PIpNbKVjw5ryaR6nRGJkyrqUVjshT+VHiRQCfRAH+H+iHF7gHqFEl+2SMbPjceOdYAvywnxL1k7QfHL7eB1M0yxnEVyOTNyyEkC2q+vLnxDLGFVad6md7v9U= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787256270860805.2213315383317; Thu, 20 Aug 2026 13:04:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx8zA-0008Jg-Gd; Thu, 20 Aug 2026 16:03:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8z8-0008IX-Ps for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:03:34 -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 1wx8z6-00053L-K2 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:03:34 -0400 Received: from mail-oa1-f69.google.com (mail-oa1-f69.google.com [209.85.160.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-690-GIIrz19wPDGPaCzoFV5iJg-1; Thu, 20 Aug 2026 16:03:30 -0400 Received: by mail-oa1-f69.google.com with SMTP id 586e51a60fabf-4574f1cac98so302486fac.3 for ; Thu, 20 Aug 2026 13:03:30 -0700 (PDT) Received: from x1.local (bras-vprn-aurron9134w-lp130-03-174-91-117-74.dsl.bell.ca. [174.91.117.74]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6b13cebeb2esm6181314eaf.10.2026.08.20.13.03.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 13:03:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787256212; 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=EXssvW0f/nZKgfGpqNRv4nCLIOwfmxQJyYdBljGzBvI=; b=hpiZkE/mi2j8MDJ6e6xKM4XElDMXLWD88xMv+nxSUFTv+kwssgwTm0+RNTVF8UeTGTHAih l8K7fqxOs4aItdCLIOB/BvcFx6PO800UsbMmcr0LpJXQBeutrW57tGp2HupusKIshOhwbC MHYxqX4aO+M3n6CUeI0C2wKtAG4epQ4= X-MC-Unique: GIIrz19wPDGPaCzoFV5iJg-1 X-Mimecast-MFC-AGG-ID: GIIrz19wPDGPaCzoFV5iJg_1787256210 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787256210; x=1787861010; darn=nongnu.org; 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:content-type; bh=EXssvW0f/nZKgfGpqNRv4nCLIOwfmxQJyYdBljGzBvI=; b=IzpE4azhhnoqhBVKWDIXS9yTqABGJpoj8pJ6vvKAxN2DdPp7udR4HW7vBxMoNsiEgd OJ6EZa3qdjVVU1rPUHOJkbZAIH34C0zQrC/ozxM0Lt4eNI0dFddqaEymRZjdzk3SWU/o 0TTPnuwxYIQOWsJ0zBdtxNbLmpryWfzzR2ZVSS2Wr/NJzBX5ebG0hnbXmhuZ0Zt4u1M6 MkUD0VIRy6HTzg0wxISA3rNJW5E3qNTCUWgInrkxtfoZ+WqjDjdFMXaZxZxsxT3hifAZ 0T2gJNaQAnRYz7XwrSYQ1zd2fkDcEOsgE6F9/roU1qzevS9/kh9K3UmPgGoVcHxSN8we uMGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787256210; x=1787861010; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=EXssvW0f/nZKgfGpqNRv4nCLIOwfmxQJyYdBljGzBvI=; b=FE4084gsPIeq4EFx3NGD86rZ9Nk1BnwcE1I7oUoBYeIwdE2G1D4RNnNzUivPHcdgWo mNgOVu5gTvTor1wzASlq/tbbIpqRXl53fryYb3aBVWEEWaevTBrxfzGkRSI9X8JnYFgd XPd8dY3rtwNPUMiARj/acjDp1zJt1WCGpOxvA459Q4tlvTJbMm2I/pDEwD1qV7TuSou+ viyRkhNbrkTTxAyTRseV9ji9tj/qU/Cl+NHebccXQuvyW32bxW8kQcfB40TLVmMPfWmr 1F+Qt9iMemE5hsgBZyQwgb5FpBwqlJ3Da1LD0DDab2WadmwAnKE3Ohtuuc2UxiswwSs7 P7vQ== X-Gm-Message-State: AOJu0YwNer0Ui9lT+xCCe6OOsTvog3tmkZbQrhDTJ6gEqzJqgYX3lftz PosUB2Xpvwab6MvnukN6KbNYRhytOQgWAdmWTC3Md+BP1GQjgJXSDNKDS5u371Sb/Sv5bH3Ydiv YdteHk2ttvyeZdvjfG81PbRLeFjemfYubnQL1kIG5AeSosxvMkvhYXL41QsGYYxjBJjrwfGctPG zYqKJxiUztUfLP4QRvtgFPenkEm1qRCP42SSQAxg== X-Gm-Gg: AR+sD11+D7jpBOWaVJ+IrCPVxp3WH1HPCzOEAAteN70hLFf5cXyzymdkHNu9msy0TAx TmVVD3Qz4drKxYKFnBpYJtqpLeG8oRMNQLtDU5fucPTn9gee2DOBFofYN0D3xLP4FuAj5RioK/6 jNl6tX0jCPecGZ07+T/+kzITepGKT3PxOf5Bu0dXcY7m3tmS6DiVNMwWwuFFxXjDkl3zvYjaq+R PVLkq8abFvp1rEg2pIJ5WzhlqRy0BtmSbbS/Qfvym3z3NEiJpwiTQ2Bo9A2CBYsfEuEEVAsiSnj 5a8XJKa0ENmb8JZEVV6dy87Rm50Pv2X+s0MOAzwnozviW1VUC+sJttl1Pnk69DHUWd6bO3IMmok C1dCoU2ZNVdY4Y94D4Dig7BsVQyxe5XhyzJUIhjoR2QyLOiWvXoxIlIHNdn4= X-Received: by 2002:a05:6820:1990:b0:6aa:e854:d05d with SMTP id 006d021491bc7-6b15918ff0dmr1326719eaf.3.1787256209744; Thu, 20 Aug 2026 13:03:29 -0700 (PDT) X-Received: by 2002:a05:6820:1990:b0:6aa:e854:d05d with SMTP id 006d021491bc7-6b15918ff0dmr1326605eaf.3.1787256209140; Thu, 20 Aug 2026 13:03:29 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Jack Wang , Peter Xu , Li Zhijian , Juraj Marcin , Fabiano Rosas , Samuel Zhang , Yanfei Xu , Jinpu Wang Subject: [PATCH v2 02/10] migration/rdma: Remove unregister code Date: Thu, 20 Aug 2026 16:03:14 -0400 Message-ID: <20260820200322.3321036-3-peterx@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260820200322.3321036-1-peterx@redhat.com> References: <20260820200322.3321036-1-peterx@redhat.com> MIME-Version: 1.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_PASS=-0.001, 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 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 @redhat.com) X-ZM-MESSAGEID: 1787256271788158500 Content-Type: text/plain; charset="utf-8" The unregister code was there since the first commit RDMA migration was merged, but it was never functioning. Remove the dead code. Since the two control messages are the last ones, we don't even need to worry about compatibility of legacy RDMA control commands, we can directly remove the messages too. As a side effect, this patch closes a report by removing the code completely. Reported-by: Tristan (@TristanInSec) Closes: https://gitlab.com/qemu-project/qemu/-/work_items/4003 Reviewed-by: Jinpu Wang Signed-off-by: Peter Xu --- migration/rdma.c | 133 ----------------------------------------- migration/trace-events | 9 --- 2 files changed, 142 deletions(-) diff --git a/migration/rdma.c b/migration/rdma.c index 62a509b236..eae4afd6df 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -142,8 +142,6 @@ enum { RDMA_CONTROL_REGISTER_REQUEST, /* dynamic page registration */ RDMA_CONTROL_REGISTER_RESULT, /* key to use after registration */ RDMA_CONTROL_REGISTER_FINISHED, /* current iteration finished */ - RDMA_CONTROL_UNREGISTER_REQUEST, /* dynamic UN-registration */ - RDMA_CONTROL_UNREGISTER_FINISHED, /* unpinning finished */ RDMA_CONTROL_NUM, }; =20 @@ -232,8 +230,6 @@ static const char *control_desc(unsigned int rdma_contr= ol) [RDMA_CONTROL_REGISTER_REQUEST] =3D "REGISTER REQUEST", [RDMA_CONTROL_REGISTER_RESULT] =3D "REGISTER RESULT", [RDMA_CONTROL_REGISTER_FINISHED] =3D "REGISTER FINISHED", - [RDMA_CONTROL_UNREGISTER_REQUEST] =3D "UNREGISTER REQUEST", - [RDMA_CONTROL_UNREGISTER_FINISHED] =3D "UNREGISTER FINISHED", }; =20 if (rdma_control >=3D RDMA_CONTROL_NUM) { @@ -370,9 +366,6 @@ typedef struct RDMAContext { int total_registrations; int total_writes; =20 - int unregister_current, unregister_next; - uint64_t unregistrations[RDMA_SIGNALED_SEND_MAX]; - GHashTable *blockmap; =20 /* the RDMAContext for return path */ @@ -1186,91 +1179,6 @@ static int qemu_rdma_reg_control(RDMAContext *rdma, = int idx) return -1; } =20 -/* - * Perform a non-optimized memory unregistration after every transfer - * for demonstration purposes, only if pin-all is not requested. - * - * Potential optimizations: - * 1. Start a new thread to run this function continuously - - for bit clearing - - and for receipt of unregister messages - * 2. Use an LRU. - * 3. Use workload hints. - */ -static int qemu_rdma_unregister_waiting(RDMAContext *rdma) -{ - Error *err =3D NULL; - - while (rdma->unregistrations[rdma->unregister_current]) { - int ret; - uint64_t wr_id =3D rdma->unregistrations[rdma->unregister_current]; - uint64_t chunk =3D - (wr_id & RDMA_WRID_CHUNK_MASK) >> RDMA_WRID_CHUNK_SHIFT; - uint64_t index =3D - (wr_id & RDMA_WRID_BLOCK_MASK) >> RDMA_WRID_BLOCK_SHIFT; - RDMALocalBlock *block =3D - &(rdma->local_ram_blocks.block[index]); - RDMARegister reg =3D { .current_index =3D index }; - RDMAControlHeader resp =3D { .type =3D RDMA_CONTROL_UNREGISTER_FIN= ISHED, - }; - RDMAControlHeader head =3D { .len =3D sizeof(RDMARegister), - .type =3D RDMA_CONTROL_UNREGISTER_REQUE= ST, - .repeat =3D 1, - }; - - trace_qemu_rdma_unregister_waiting_proc(chunk, - rdma->unregister_current); - - rdma->unregistrations[rdma->unregister_current] =3D 0; - rdma->unregister_current++; - - if (rdma->unregister_current =3D=3D RDMA_SIGNALED_SEND_MAX) { - rdma->unregister_current =3D 0; - } - - - /* - * Unregistration is speculative (because migration is single-thre= aded - * and we cannot break the protocol's inifinband message ordering). - * Thus, if the memory is currently being used for transmission, - * then abort the attempt to unregister and try again - * later the next time a completion is received for this memory. - */ - clear_bit(chunk, block->unregister_bitmap); - - if (test_bit(chunk, block->transit_bitmap)) { - trace_qemu_rdma_unregister_waiting_inflight(chunk); - continue; - } - - trace_qemu_rdma_unregister_waiting_send(chunk); - - ret =3D ibv_dereg_mr(block->pmr[chunk]); - block->pmr[chunk] =3D NULL; - block->remote_keys[chunk] =3D 0; - - if (ret !=3D 0) { - error_report("unregistration chunk failed: %s", - strerror(ret)); - return -1; - } - rdma->total_registrations--; - - reg.key.chunk =3D chunk; - register_to_network(rdma, ®); - ret =3D qemu_rdma_exchange_send(rdma, &head, (uint8_t *) ®, - &resp, NULL, NULL, &err); - if (ret < 0) { - error_report_err(err); - return -1; - } - - trace_qemu_rdma_unregister_waiting_complete(chunk); - } - - return 0; -} - static uint64_t qemu_rdma_make_wrid(uint64_t wr_id, uint64_t index, uint64_t chunk) { @@ -2757,8 +2665,6 @@ static int qemu_rdma_drain_cq(RDMAContext *rdma) } } =20 - qemu_rdma_unregister_waiting(rdma); - return 0; } =20 @@ -3336,10 +3242,6 @@ int rdma_registration_handle(QEMUFile *f) .type =3D RDMA_CONTROL_REGISTER_RESULT, .repeat =3D 0, }; - RDMAControlHeader unreg_resp =3D { .len =3D 0, - .type =3D RDMA_CONTROL_UNREGISTER_FINISHED, - .repeat =3D 0, - }; RDMAControlHeader blocks =3D { .type =3D RDMA_CONTROL_RAM_BLOCKS_RESUL= T, .repeat =3D 1 }; QIOChannelRDMA *rioc; @@ -3552,41 +3454,6 @@ int rdma_registration_handle(QEMUFile *f) ret =3D qemu_rdma_post_send_control(rdma, (uint8_t *) results, ®_resp, &err); =20 - if (ret < 0) { - error_report_err(err); - goto err; - } - break; - case RDMA_CONTROL_UNREGISTER_REQUEST: - trace_rdma_registration_handle_unregister(head.repeat); - unreg_resp.repeat =3D head.repeat; - registers =3D (RDMARegister *) rdma->wr_data[idx].control_curr; - - for (int count =3D 0; count < head.repeat; count++) { - reg =3D ®isters[count]; - network_to_register(reg); - - trace_rdma_registration_handle_unregister_loop(count, - reg->current_index, reg->key.chunk); - - block =3D &(rdma->local_ram_blocks.block[reg->current_inde= x]); - - ret =3D ibv_dereg_mr(block->pmr[reg->key.chunk]); - block->pmr[reg->key.chunk] =3D NULL; - - if (ret !=3D 0) { - error_report("rdma unregistration chunk failed: %s", - strerror(errno)); - goto err; - } - - rdma->total_registrations--; - - trace_rdma_registration_handle_unregister_success(reg->key= .chunk); - } - - ret =3D qemu_rdma_post_send_control(rdma, NULL, &unreg_resp, &= err); - if (ret < 0) { error_report_err(err); goto err; diff --git a/migration/trace-events b/migration/trace-events index 4ae1c226f9..6d70f8e8ca 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -242,12 +242,6 @@ qemu_rdma_register_and_get_keys(uint64_t len, void *st= art) "Registering %" PRIu6 qemu_rdma_register_odp_mr(const char *name) "Try to register On-Demand Pag= ing memory region: %s" qemu_rdma_advise_mr(const char *name, uint32_t len, uint64_t addr, const c= har *res) "Try to advise block %s prefetch at %" PRIu32 "@0x%" PRIx64 ": %s" qemu_rdma_resolve_host_trying(const char *host, const char *ip) "Trying %s= =3D> %s" -qemu_rdma_signal_unregister_append(uint64_t chunk, int pos) "Appending unr= egister chunk %" PRIu64 " at position %d" -qemu_rdma_signal_unregister_already(uint64_t chunk) "Unregister chunk %" P= RIu64 " already in queue" -qemu_rdma_unregister_waiting_inflight(uint64_t chunk) "Cannot unregister i= nflight chunk: %" PRIu64 -qemu_rdma_unregister_waiting_proc(uint64_t chunk, int pos) "Processing unr= egister for chunk: %" PRIu64 " at position %d" -qemu_rdma_unregister_waiting_send(uint64_t chunk) "Sending unregister for = chunk: %" PRIu64 -qemu_rdma_unregister_waiting_complete(uint64_t chunk) "Unregister for chun= k: %" PRIu64 " complete." qemu_rdma_write_flush(int sent) "sent total: %d" qemu_rdma_write_one_block(int count, int block, uint64_t chunk, uint64_t c= urrent, uint64_t len, int nb_sent, int nb_chunks) "(%d) Not clobbering: blo= ck: %d chunk %" PRIu64 " current %" PRIu64 " len %" PRIu64 " %d %d" qemu_rdma_write_one_post(uint64_t chunk, long addr, long remote, uint32_t = len) "Posting chunk: %" PRIu64 ", addr: 0x%lx remote: 0x%lx, bytes %" PRIu32 @@ -266,9 +260,6 @@ rdma_registration_handle_ram_blocks_loop(const char *na= me, uint64_t offset, uint rdma_registration_handle_register(int requests) "%d requests" rdma_registration_handle_register_loop(int req, int index, uint64_t addr, = uint64_t chunks) "Registration request (%d): index %d, current_addr %" PRIu= 64 " chunks: %" PRIu64 rdma_registration_handle_register_rkey(int rkey) "0x%x" -rdma_registration_handle_unregister(int requests) "%d requests" -rdma_registration_handle_unregister_loop(int count, int index, uint64_t ch= unk) "Unregistration request (%d): index %d, chunk %" PRIu64 -rdma_registration_handle_unregister_success(uint64_t chunk) "%" PRIu64 rdma_registration_handle_wait(void) "" rdma_registration_start(uint64_t flags) "%" PRIu64 rdma_registration_stop(uint64_t flags) "%" PRIu64 --=20 2.54.0 From nobody Fri Aug 21 21:26:30 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1787256306; cv=none; d=zohomail.com; s=zohoarc; b=FTylUz2qkvETXAF0Ma6daMMo9/tJnIWfbm+6UaVtFha0upjOoy07FUiMMld499Y/jRY4bM8E7oUjgqOTfC+t8Un4HQzXFKU5rourLi+drdpQXkAPsyK5AYT9nEEIHiGYYy4nXHem4DyRl7ceJBfGCTn1MWnoxVTMfKPOOj7m/8g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787256306; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=c+GoZVJK+RLKZfmCTqXxO13itI4wjzWmqFZdpSPIpUA=; b=lPHI5wARSF5o+yVJCqA/LLwV0Ku0ir1kvakGhPwhnFjSGUrXBkxlJBBxYNDCDbowGPPc/QqMgJs5rTCodMIZxK/lQtQbjlPUwldDBjvV6LgfUJwKj2ue7FShPIUFKjvpHW2RgMLkrczF8jmKt1pYWWb1qJUMW41X2FViFUktiAI= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787256306970697.4800298043059; Thu, 20 Aug 2026 13:05:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx8zH-0008QB-VB; Thu, 20 Aug 2026 16:03:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zG-0008Pu-8k for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:03:42 -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 1wx8zC-00056O-F7 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:03:41 -0400 Received: from mail-oo1-f72.google.com (mail-oo1-f72.google.com [209.85.161.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-148-N94-ImO4M1GfEaAbF3KMEQ-1; Thu, 20 Aug 2026 16:03:36 -0400 Received: by mail-oo1-f72.google.com with SMTP id 006d021491bc7-6a17baa4d18so460051eaf.1 for ; Thu, 20 Aug 2026 13:03:36 -0700 (PDT) Received: from x1.local (bras-vprn-aurron9134w-lp130-03-174-91-117-74.dsl.bell.ca. [174.91.117.74]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6b13cebeb2esm6181314eaf.10.2026.08.20.13.03.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 13:03:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787256217; 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=c+GoZVJK+RLKZfmCTqXxO13itI4wjzWmqFZdpSPIpUA=; b=dnhcbXFQIgq9KKRR2yEGzBMFxRgV0k935bupN+tlHo3Tui0pUkjjcSaYnve39y5jw6yqY3 TTo2vcjwX5w/irlPDz3LOMyBvnBK1ZdnSjHWbn7ltT5z+ItD1pc7SW9kviTPsg8qLBUnGX Bs0RVNgZbS0PXCdqiMmJ0SpG0lOPuG4= X-MC-Unique: N94-ImO4M1GfEaAbF3KMEQ-1 X-Mimecast-MFC-AGG-ID: N94-ImO4M1GfEaAbF3KMEQ_1787256216 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787256216; x=1787861016; darn=nongnu.org; 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:content-type; bh=c+GoZVJK+RLKZfmCTqXxO13itI4wjzWmqFZdpSPIpUA=; b=dRtPpEjaP6jti48cbXd2WYVukbpcILPsJiFL2BaM5fa+2LkbWpgjTeFFm6FXVS15b7 c6VjPI7dcdK/NPm2VUNLMeoAAM2pdVW4gMmcSmeALhkoDW1uAZy39zPefEMf5oyBuvDV 60mV5iZKD78VpzHg3B4oIqhcZBbkQV7LjMyXb9y4grQsmgOh0o8T5m4X4H39+SfN34QS oylXCgNOg2Sgp23Twxg6Az3OeyCiOHp6g+uK2ZOYoa7699sWEtA0LR+/0SzUS8rjPQ0+ G4eOPT6SRg5QXDMY6rBSgidVQU67ze62sgYy+6oovDrjH+y242iBDmbtSvcORnZSbW6k sLmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787256216; x=1787861016; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=c+GoZVJK+RLKZfmCTqXxO13itI4wjzWmqFZdpSPIpUA=; b=R/Oa54F/9vGnIoUpRL5leTZIsmfMgnpM4+S7koFtyxWCop6ppjHAytAfnjG56HRkfZ mvGzMZWeEfxXA6/HMZmfg2FCoBIU4UqQVqB2LlMWp7RYkHWj3vkMHuDRBK9GwI7aG7BA vx8nO8MO4ZIztDTJjlGxEGACjPgcpoDHnfQypzdnDQbn2evBfQcr4Nm5qGbelQvgLdBi ETF+NCq4uQlkbAWKmIugBPkHDdFKNoDT8Xgctfb2uX/Lu+ZcKWgkDQVojsj8S6PO2ZS2 S1xktft6wPspepa4ktEBA/3bqHca7sx1Ii0D6fp+adT3DA1v4kWfZtQqs1+oFxb7MmuV a+Bg== X-Gm-Message-State: AOJu0Yx3tyXTwC0Jtcp3K0vnUwb/6/X0y3OyPb1buUK/CAgqI4pGF1/J +4Ax6ozDW6GeHdaVOLUtSUNhBGFx43GKTmaXOQmZ3cb2N4KeI0RAAIpoMblBH/lyKT6L3uSJSgm i5SoJfy3oVCxgRVRLov9ujh+7QEl/8N8mhdSJvLlwl8cZtqEpPVc2ho0pMvRqxfNwGHF/td3t96 ulJ5y292Q2LpDG8jZKITq8h3fPsfYxiqnrBPCCDQ== X-Gm-Gg: AR+sD101E4jOf3iCrZG4gfnDDL5CAvRyjfuvWotwYb9AQhFfX8QAylDW07DW8jGS7Am KnsVDYuALu+VdVzPEIFBSaScsGNbmeuyKRONE3ZES5YUn2eJpOIqNuOseDtRWgQvoNM5tRTVacw KN4q/GQFTxAz03iU/ifvKecS9re66lO/44zHIK29k1TAtpOh4RJWdDq5EHRC6JUlTU10Xlz4rQb KNmDaGhLGH+vJ3SgiVF63o8AjE7F+HProWMa6D6+PP7EKnycQFdFc89crTnIecckOYciC6wnSJD ySvWAtbOMqCRe0avkf0JnUoLpiGbiO36sGNIbN66ytvhu2La1nf+hM2h99VsaDf6cwVotLyUqtE kxiBMUGmA8yxhn3d2YS+ySMePvCiljiRyQfr4O8mJJgG0yx7ufJS/xGHvV84= X-Received: by 2002:a05:6820:450b:b0:6b1:5637:e115 with SMTP id 006d021491bc7-6b15945d0e3mr1178058eaf.36.1787256215338; Thu, 20 Aug 2026 13:03:35 -0700 (PDT) X-Received: by 2002:a05:6820:450b:b0:6b1:5637:e115 with SMTP id 006d021491bc7-6b15945d0e3mr1177960eaf.36.1787256214679; Thu, 20 Aug 2026 13:03:34 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Jack Wang , Peter Xu , Li Zhijian , Juraj Marcin , Fabiano Rosas , Samuel Zhang , Yanfei Xu , Jinpu Wang Subject: [PATCH v2 03/10] migration/rdma: Stick with rdma_ prefix for all tracepoints Date: Thu, 20 Aug 2026 16:03:15 -0400 Message-ID: <20260820200322.3321036-4-peterx@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260820200322.3321036-1-peterx@redhat.com> References: <20260820200322.3321036-1-peterx@redhat.com> MIME-Version: 1.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_PASS=-0.001, 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 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 @redhat.com) X-ZM-MESSAGEID: 1787256307835158500 Content-Type: text/plain; charset="utf-8" There're a bunch of RDMA tracepoints that are prefixed with "rdma_*", most of the rest with "qemu_rdma_*". Align them up. The "qemu_" prefix isn't helping. Reviewed-by: Jinpu Wang Signed-off-by: Peter Xu --- migration/rdma.c | 76 +++++++++++++++++++++--------------------- migration/trace-events | 72 +++++++++++++++++++-------------------- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/migration/rdma.c b/migration/rdma.c index eae4afd6df..ffae0a887f 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -631,7 +631,7 @@ static void qemu_rdma_init_ram_blocks(RDMAContext *rdma) memset(local, 0, sizeof *local); ret =3D foreach_not_ignored_block(qemu_rdma_init_one_block, rdma); assert(!ret); - trace_qemu_rdma_init_ram_blocks(local->nb_blocks); + trace_rdma_init_ram_blocks(local->nb_blocks); rdma->dest_blocks =3D g_new0(RDMADestBlock, rdma->local_ram_blocks.nb_blocks); local->init =3D true; @@ -734,11 +734,11 @@ static void qemu_rdma_dump_id(const char *who, struct= ibv_context *verbs) struct ibv_port_attr port; =20 if (ibv_query_port(verbs, 1, &port)) { - trace_qemu_rdma_dump_id_failed(who); + trace_rdma_dump_id_failed(who); return; } =20 - trace_qemu_rdma_dump_id(who, + trace_rdma_dump_id(who, verbs->device->name, verbs->device->dev_name, verbs->device->dev_path, @@ -759,7 +759,7 @@ static void qemu_rdma_dump_gid(const char *who, struct = rdma_cm_id *id) char dgid[33]; inet_ntop(AF_INET6, &id->route.addr.addr.ibaddr.sgid, sgid, sizeof sgi= d); inet_ntop(AF_INET6, &id->route.addr.addr.ibaddr.dgid, dgid, sizeof dgi= d); - trace_qemu_rdma_dump_gid(who, sgid, dgid); + trace_rdma_dump_gid(who, sgid, dgid); } =20 /* @@ -809,7 +809,7 @@ static int qemu_rdma_resolve_host(RDMAContext *rdma, Er= ror **errp) =20 inet_ntop(e->ai_family, &((struct sockaddr_in *) e->ai_dst_addr)->sin_addr, ip, sizeof= ip); - trace_qemu_rdma_resolve_host_trying(rdma->host, ip); + trace_rdma_resolve_host_trying(rdma->host, ip); =20 ret =3D rdma_resolve_addr(rdma->cm_id, NULL, e->ai_dst_addr, RDMA_RESOLVE_TIMEOUT_MS); @@ -998,7 +998,7 @@ static void qemu_rdma_advise_prefetch_mr(struct ibv_pd = *pd, uint64_t addr, ret =3D ibv_advise_mr(pd, advice, IBV_ADVISE_MR_FLAG_FLUSH, &sg_list, 1); /* ignore the error */ - trace_qemu_rdma_advise_mr(name, len, addr, strerror(ret)); + trace_rdma_advise_mr(name, len, addr, strerror(ret)); #endif } =20 @@ -1029,7 +1029,7 @@ static int qemu_rdma_reg_whole_ram_blocks(RDMAContext= *rdma, Error **errp) ibv_reg_mr(rdma->pd, local->block[i].local_host_addr, local->block[i].length, access); - trace_qemu_rdma_register_odp_mr(local->block[i].block_name= ); + trace_rdma_register_odp_mr(local->block[i].block_name); =20 if (local->block[i].mr) { qemu_rdma_advise_prefetch_mr(rdma->pd, @@ -1125,7 +1125,7 @@ static int qemu_rdma_register_and_get_keys(RDMAContex= t *rdma, int access =3D rkey ? IBV_ACCESS_LOCAL_WRITE | IBV_ACCESS_REMOTE_W= RITE : 0; =20 - trace_qemu_rdma_register_and_get_keys(len, chunk_start); + trace_rdma_register_and_get_keys(len, chunk_start); =20 block->pmr[chunk] =3D ibv_reg_mr(rdma->pd, chunk_start, len, acces= s); /* @@ -1139,7 +1139,7 @@ static int qemu_rdma_register_and_get_keys(RDMAContex= t *rdma, access |=3D IBV_ACCESS_ON_DEMAND; /* register ODP mr */ block->pmr[chunk] =3D ibv_reg_mr(rdma->pd, chunk_start, len, a= ccess); - trace_qemu_rdma_register_odp_mr(block->block_name); + trace_rdma_register_odp_mr(block->block_name); =20 if (block->pmr[chunk]) { qemu_rdma_advise_prefetch_mr(rdma->pd, (uintptr_t)chunk_st= art, @@ -1221,7 +1221,7 @@ static int qemu_rdma_poll(RDMAContext *rdma, struct i= bv_cq *cq, =20 if (rdma->control_ready_expected && (wr_id >=3D RDMA_WRID_RECV_CONTROL)) { - trace_qemu_rdma_poll_recv(wr_id - RDMA_WRID_RECV_CONTROL, wr_id, + trace_rdma_poll_recv(wr_id - RDMA_WRID_RECV_CONTROL, wr_id, rdma->nb_sent); rdma->control_ready_expected =3D 0; } @@ -1233,7 +1233,7 @@ static int qemu_rdma_poll(RDMAContext *rdma, struct i= bv_cq *cq, (wc.wr_id & RDMA_WRID_BLOCK_MASK) >> RDMA_WRID_BLOCK_SHIFT; RDMALocalBlock *block =3D &(rdma->local_ram_blocks.block[index]); =20 - trace_qemu_rdma_poll_write(wr_id, rdma->nb_sent, + trace_rdma_poll_write(wr_id, rdma->nb_sent, index, chunk, block->local_host_addr, (void *)(uintptr_t)block->remote_host_a= ddr); =20 @@ -1243,7 +1243,7 @@ static int qemu_rdma_poll(RDMAContext *rdma, struct i= bv_cq *cq, rdma->nb_sent--; } } else { - trace_qemu_rdma_poll_other(wr_id, rdma->nb_sent); + trace_rdma_poll_other(wr_id, rdma->nb_sent); } =20 *wr_id_out =3D wc.wr_id; @@ -1378,7 +1378,7 @@ static int qemu_rdma_block_for_wrid(RDMAContext *rdma, break; } if (wr_id !=3D wrid_requested) { - trace_qemu_rdma_block_for_wrid_miss(wrid_requested, wr_id); + trace_rdma_block_for_wrid_miss(wrid_requested, wr_id); } } =20 @@ -1415,7 +1415,7 @@ static int qemu_rdma_block_for_wrid(RDMAContext *rdma, break; } if (wr_id !=3D wrid_requested) { - trace_qemu_rdma_block_for_wrid_miss(wrid_requested, wr_id); + trace_rdma_block_for_wrid_miss(wrid_requested, wr_id); } } =20 @@ -1463,7 +1463,7 @@ static int qemu_rdma_post_send_control(RDMAContext *r= dma, uint8_t *buf, .num_sge =3D 1, }; =20 - trace_qemu_rdma_post_send_control(control_desc(head->type)); + trace_rdma_post_send_control(control_desc(head->type)); =20 /* * We don't actually need to do a memcpy() in here if we used @@ -1546,10 +1546,10 @@ static int qemu_rdma_exchange_get_response(RDMACont= ext *rdma, network_to_control((void *) rdma->wr_data[idx].control); memcpy(head, rdma->wr_data[idx].control, sizeof(RDMAControlHeader)); =20 - trace_qemu_rdma_exchange_get_response_start(control_desc(expecting)); + trace_rdma_exchange_get_response_start(control_desc(expecting)); =20 if (expecting =3D=3D RDMA_CONTROL_NONE) { - trace_qemu_rdma_exchange_get_response_none(control_desc(head->type= ), + trace_rdma_exchange_get_response_none(control_desc(head->type), head->type); } else if (head->type !=3D expecting || head->type =3D=3D RDMA_CONTROL= _ERROR) { error_setg(errp, "Was expecting a %s (%d) control message" @@ -1659,14 +1659,14 @@ static int qemu_rdma_exchange_send(RDMAContext *rdm= a, RDMAControlHeader *head, */ if (resp) { if (callback) { - trace_qemu_rdma_exchange_send_issue_callback(); + trace_rdma_exchange_send_issue_callback(); ret =3D callback(rdma, errp); if (ret < 0) { return -1; } } =20 - trace_qemu_rdma_exchange_send_waiting(control_desc(resp->type)); + trace_rdma_exchange_send_waiting(control_desc(resp->type)); ret =3D qemu_rdma_exchange_get_response(rdma, resp, resp->type, RDMA_WRID_DATA, errp); @@ -1679,7 +1679,7 @@ static int qemu_rdma_exchange_send(RDMAContext *rdma,= RDMAControlHeader *head, if (resp_idx) { *resp_idx =3D RDMA_WRID_DATA; } - trace_qemu_rdma_exchange_send_received(control_desc(resp->type)); + trace_rdma_exchange_send_received(control_desc(resp->type)); } =20 rdma->control_ready_expected =3D 1; @@ -1782,7 +1782,7 @@ retry: } } =20 - trace_qemu_rdma_write_one_top(chunks + 1, + trace_rdma_write_one_top(chunks + 1, (chunks + 1) * chunk_size / 1024 / 1024); =20 chunk_end =3D ram_chunk_end(block, chunk + chunks); @@ -1790,7 +1790,7 @@ retry: =20 while (test_bit(chunk, block->transit_bitmap)) { (void)count; - trace_qemu_rdma_write_one_block(count++, current_index, chunk, + trace_rdma_write_one_block(count++, current_index, chunk, sge.addr, length, rdma->nb_sent, block->nb_chunks); =20 ret =3D qemu_rdma_block_for_wrid(rdma, RDMA_WRID_RDMA_WRITE, NULL); @@ -1823,7 +1823,7 @@ retry: head.len =3D sizeof(comp); head.type =3D RDMA_CONTROL_COMPRESS; =20 - trace_qemu_rdma_write_one_zero(chunk, sge.length, + trace_rdma_write_one_zero(chunk, sge.length, current_index, current_addr= ); =20 compress_to_network(rdma, &comp); @@ -1860,7 +1860,7 @@ retry: } reg.chunks =3D chunks; =20 - trace_qemu_rdma_write_one_sendreg(chunk, sge.length, current_i= ndex, + trace_rdma_write_one_sendreg(chunk, sge.length, current_index, current_addr); =20 register_to_network(rdma, ®); @@ -1883,7 +1883,7 @@ retry: =20 network_to_result(reg_result); =20 - trace_qemu_rdma_write_one_recvregres(block->remote_keys[chunk], + trace_rdma_write_one_recvregres(block->remote_keys[chunk], reg_result->rkey, chunk); =20 block->remote_keys[chunk] =3D reg_result->rkey; @@ -1926,7 +1926,7 @@ retry: send_wr.wr.rdma.remote_addr =3D block->remote_host_addr + (current_addr - block->offset); =20 - trace_qemu_rdma_write_one_post(chunk, sge.addr, send_wr.wr.rdma.remote= _addr, + trace_rdma_write_one_post(chunk, sge.addr, send_wr.wr.rdma.remote_addr, sge.length); =20 /* @@ -1936,7 +1936,7 @@ retry: ret =3D ibv_post_send(rdma->qp, &send_wr, &bad_wr); =20 if (ret =3D=3D ENOMEM) { - trace_qemu_rdma_write_one_queue_full(); + trace_rdma_write_one_queue_full(); ret =3D qemu_rdma_block_for_wrid(rdma, RDMA_WRID_RDMA_WRITE, NULL); if (ret < 0) { error_setg(errp, "rdma migration: failed to make " @@ -1993,7 +1993,7 @@ static int qemu_rdma_write_flush(RDMAContext *rdma, E= rror **errp) =20 if (ret =3D=3D 0) { rdma->nb_sent++; - trace_qemu_rdma_write_flush(rdma->nb_sent); + trace_rdma_write_flush(rdma->nb_sent); } =20 rdma->current_length =3D 0; @@ -2109,7 +2109,7 @@ static void qemu_rdma_cleanup(RDMAContext *rdma) } =20 rdma_disconnect(rdma->cm_id); - trace_qemu_rdma_cleanup_disconnect(); + trace_rdma_cleanup_disconnect(); rdma->connected =3D false; } =20 @@ -2292,7 +2292,7 @@ static int qemu_rdma_connect(RDMAContext *rdma, bool = return_path, * on the source first requested the capability. */ if (rdma->pin_all) { - trace_qemu_rdma_connect_pin_all_requested(); + trace_rdma_connect_pin_all_requested(); cap.flags |=3D RDMA_CAPABILITY_PIN_ALL; } =20 @@ -2343,7 +2343,7 @@ static int qemu_rdma_connect(RDMAContext *rdma, bool = return_path, rdma->pin_all =3D false; } =20 - trace_qemu_rdma_connect_pin_all_outcome(rdma->pin_all); + trace_rdma_connect_pin_all_outcome(rdma->pin_all); =20 rdma_ack_cm_event(cm_event); =20 @@ -2412,7 +2412,7 @@ static int qemu_rdma_dest_init(RDMAContext *rdma, Err= or **errp) =20 inet_ntop(e->ai_family, &((struct sockaddr_in *) e->ai_dst_addr)->sin_addr, ip, sizeof= ip); - trace_qemu_rdma_dest_init_trying(rdma->host, ip); + trace_rdma_dest_init_trying(rdma->host, ip); ret =3D rdma_bind_addr(listen_id, e->ai_dst_addr); if (ret < 0) { continue; @@ -2547,7 +2547,7 @@ static size_t qemu_rdma_fill(RDMAContext *rdma, uint8= _t *buf, size_t len =3D 0; =20 if (rdma->wr_data[idx].control_len) { - trace_qemu_rdma_fill(rdma->wr_data[idx].control_len, size); + trace_rdma_fill(rdma->wr_data[idx].control_len, size); =20 len =3D MIN(size, rdma->wr_data[idx].control_len); memcpy(buf, rdma->wr_data[idx].control_curr, len); @@ -2859,7 +2859,7 @@ static int qio_channel_rdma_close(QIOChannel *ioc, RDMAContext *rdmain, *rdmaout; struct rdma_close_rcu *rcu =3D g_new(struct rdma_close_rcu, 1); =20 - trace_qemu_rdma_close(); + trace_rdma_close(); =20 rdmain =3D rioc->rdmain; if (rdmain) { @@ -3132,11 +3132,11 @@ static int qemu_rdma_accept(RDMAContext *rdma) =20 rdma_ack_cm_event(cm_event); =20 - trace_qemu_rdma_accept_pin_state(rdma->pin_all); + trace_rdma_accept_pin_state(rdma->pin_all); =20 caps_to_network(&cap); =20 - trace_qemu_rdma_accept_pin_verbsc(verbs); + trace_rdma_accept_pin_verbsc(verbs); =20 if (!rdma->verbs) { rdma->verbs =3D verbs; @@ -3727,13 +3727,13 @@ static void rdma_accept_incoming_migration(void *op= aque) RDMAContext *rdma =3D opaque; QIOChannel *ioc; =20 - trace_qemu_rdma_accept_incoming_migration(); + trace_rdma_accept_incoming_migration(); if (qemu_rdma_accept(rdma) < 0) { error_report("RDMA ERROR: Migration initialization failed"); return; } =20 - trace_qemu_rdma_accept_incoming_migration_accepted(); + trace_rdma_accept_incoming_migration_accepted(); =20 if (rdma->is_return_path) { return; diff --git a/migration/trace-events b/migration/trace-events index 6d70f8e8ca..e87d4abd91 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -214,42 +214,42 @@ migrate_global_state_post_load(const char *state) "lo= aded state: %s" migrate_global_state_pre_save(const char *state) "saved state: %s" =20 # rdma.c -qemu_rdma_accept_incoming_migration(void) "" -qemu_rdma_accept_incoming_migration_accepted(void) "" -qemu_rdma_accept_pin_state(bool pin) "%d" -qemu_rdma_accept_pin_verbsc(void *verbs) "Verbs context after listen: %p" -qemu_rdma_block_for_wrid_miss(uint64_t wcomp, uint64_t req) "A Wanted wrid= %" PRIu64 " but got %" PRIu64 -qemu_rdma_cleanup_disconnect(void) "" -qemu_rdma_close(void) "" -qemu_rdma_connect_pin_all_requested(void) "" -qemu_rdma_connect_pin_all_outcome(bool pin) "%d" -qemu_rdma_dest_init_trying(const char *host, const char *ip) "%s =3D> %s" -qemu_rdma_dump_id_failed(const char *who) "%s RDMA Device opened, but can'= t query port information" -qemu_rdma_dump_id(const char *who, const char *name, const char *dev_name,= const char *dev_path, const char *ibdev_path, int transport, const char *t= ransport_name) "%s RDMA Device opened: kernel name %s uverbs device name %s= , infiniband_verbs class device path %s, infiniband class device path %s, t= ransport: (%d) %s" -qemu_rdma_dump_gid(const char *who, const char *src, const char *dst) "%s = Source GID: %s, Dest GID: %s" -qemu_rdma_exchange_get_response_start(const char *desc) "CONTROL: %s recei= ving..." -qemu_rdma_exchange_get_response_none(const char *desc, int type) "Surprise= : got %s (%d)" -qemu_rdma_exchange_send_issue_callback(void) "" -qemu_rdma_exchange_send_waiting(const char *desc) "Waiting for response %s" -qemu_rdma_exchange_send_received(const char *desc) "Response %s received." -qemu_rdma_fill(size_t control_len, size_t size) "RDMA %zd of %zd bytes alr= eady in buffer" -qemu_rdma_init_ram_blocks(int blocks) "Allocated %d local ram block struct= ures" -qemu_rdma_poll_recv(uint64_t comp, int64_t id, int sent) "completion %" PR= Iu64 " received (%" PRId64 ") left %d" -qemu_rdma_poll_write(uint64_t comp, int left, uint64_t block, uint64_t chu= nk, void *local, void *remote) "completions %" PRIu64 " left %d, block %" P= RIu64 ", chunk: %" PRIu64 " %p %p" -qemu_rdma_poll_other(uint64_t comp, int left) "other completion %" PRIu64 = " received left %d" -qemu_rdma_post_send_control(const char *desc) "CONTROL: sending %s.." -qemu_rdma_register_and_get_keys(uint64_t len, void *start) "Registering %"= PRIu64 " bytes @ %p" -qemu_rdma_register_odp_mr(const char *name) "Try to register On-Demand Pag= ing memory region: %s" -qemu_rdma_advise_mr(const char *name, uint32_t len, uint64_t addr, const c= har *res) "Try to advise block %s prefetch at %" PRIu32 "@0x%" PRIx64 ": %s" -qemu_rdma_resolve_host_trying(const char *host, const char *ip) "Trying %s= =3D> %s" -qemu_rdma_write_flush(int sent) "sent total: %d" -qemu_rdma_write_one_block(int count, int block, uint64_t chunk, uint64_t c= urrent, uint64_t len, int nb_sent, int nb_chunks) "(%d) Not clobbering: blo= ck: %d chunk %" PRIu64 " current %" PRIu64 " len %" PRIu64 " %d %d" -qemu_rdma_write_one_post(uint64_t chunk, long addr, long remote, uint32_t = len) "Posting chunk: %" PRIu64 ", addr: 0x%lx remote: 0x%lx, bytes %" PRIu32 -qemu_rdma_write_one_queue_full(void) "" -qemu_rdma_write_one_recvregres(int mykey, int theirkey, uint64_t chunk) "R= eceived registration result: my key: 0x%x their key 0x%x, chunk %" PRIu64 -qemu_rdma_write_one_sendreg(uint64_t chunk, int len, int index, int64_t of= fset) "Sending registration request chunk %" PRIu64 " for %d bytes, index: = %d, offset: %" PRId64 -qemu_rdma_write_one_top(uint64_t chunks, uint64_t size) "Writing %" PRIu64= " chunks, (%" PRIu64 " MB)" -qemu_rdma_write_one_zero(uint64_t chunk, int len, int index, int64_t offse= t) "Entire chunk is zero, sending compress: %" PRIu64 " for %d bytes, index= : %d, offset: %" PRId64 +rdma_accept_incoming_migration(void) "" +rdma_accept_incoming_migration_accepted(void) "" +rdma_accept_pin_state(bool pin) "%d" +rdma_accept_pin_verbsc(void *verbs) "Verbs context after listen: %p" +rdma_block_for_wrid_miss(uint64_t wcomp, uint64_t req) "A Wanted wrid %" P= RIu64 " but got %" PRIu64 +rdma_cleanup_disconnect(void) "" +rdma_close(void) "" +rdma_connect_pin_all_requested(void) "" +rdma_connect_pin_all_outcome(bool pin) "%d" +rdma_dest_init_trying(const char *host, const char *ip) "%s =3D> %s" +rdma_dump_id_failed(const char *who) "%s RDMA Device opened, but can't que= ry port information" +rdma_dump_id(const char *who, const char *name, const char *dev_name, cons= t char *dev_path, const char *ibdev_path, int transport, const char *transp= ort_name) "%s RDMA Device opened: kernel name %s uverbs device name %s, inf= iniband_verbs class device path %s, infiniband class device path %s, transp= ort: (%d) %s" +rdma_dump_gid(const char *who, const char *src, const char *dst) "%s Sourc= e GID: %s, Dest GID: %s" +rdma_exchange_get_response_start(const char *desc) "CONTROL: %s receiving.= .." +rdma_exchange_get_response_none(const char *desc, int type) "Surprise: got= %s (%d)" +rdma_exchange_send_issue_callback(void) "" +rdma_exchange_send_waiting(const char *desc) "Waiting for response %s" +rdma_exchange_send_received(const char *desc) "Response %s received." +rdma_fill(size_t control_len, size_t size) "RDMA %zd of %zd bytes already = in buffer" +rdma_init_ram_blocks(int blocks) "Allocated %d local ram block structures" +rdma_poll_recv(uint64_t comp, int64_t id, int sent) "completion %" PRIu64 = " received (%" PRId64 ") left %d" +rdma_poll_write(uint64_t comp, int left, uint64_t block, uint64_t chunk, v= oid *local, void *remote) "completions %" PRIu64 " left %d, block %" PRIu64= ", chunk: %" PRIu64 " %p %p" +rdma_poll_other(uint64_t comp, int left) "other completion %" PRIu64 " rec= eived left %d" +rdma_post_send_control(const char *desc) "CONTROL: sending %s.." +rdma_register_and_get_keys(uint64_t len, void *start) "Registering %" PRIu= 64 " bytes @ %p" +rdma_register_odp_mr(const char *name) "Try to register On-Demand Paging m= emory region: %s" +rdma_advise_mr(const char *name, uint32_t len, uint64_t addr, const char *= res) "Try to advise block %s prefetch at %" PRIu32 "@0x%" PRIx64 ": %s" +rdma_resolve_host_trying(const char *host, const char *ip) "Trying %s =3D>= %s" +rdma_write_flush(int sent) "sent total: %d" +rdma_write_one_block(int count, int block, uint64_t chunk, uint64_t curren= t, uint64_t len, int nb_sent, int nb_chunks) "(%d) Not clobbering: block: %= d chunk %" PRIu64 " current %" PRIu64 " len %" PRIu64 " %d %d" +rdma_write_one_post(uint64_t chunk, long addr, long remote, uint32_t len) = "Posting chunk: %" PRIu64 ", addr: 0x%lx remote: 0x%lx, bytes %" PRIu32 +rdma_write_one_queue_full(void) "" +rdma_write_one_recvregres(int mykey, int theirkey, uint64_t chunk) "Receiv= ed registration result: my key: 0x%x their key 0x%x, chunk %" PRIu64 +rdma_write_one_sendreg(uint64_t chunk, int len, int index, int64_t offset)= "Sending registration request chunk %" PRIu64 " for %d bytes, index: %d, o= ffset: %" PRId64 +rdma_write_one_top(uint64_t chunks, uint64_t size) "Writing %" PRIu64 " ch= unks, (%" PRIu64 " MB)" +rdma_write_one_zero(uint64_t chunk, int len, int index, int64_t offset) "E= ntire chunk is zero, sending compress: %" PRIu64 " for %d bytes, index: %d,= offset: %" PRId64 rdma_add_block(const char *block_name, int block, uint64_t addr, uint64_t = offset, uint64_t len, uint64_t end, uint64_t bits, int chunks) "Added Block= : '%s':%d, addr: %" PRIu64 ", offset: %" PRIu64 " length: %" PRIu64 " end: = %" PRIu64 " bits %" PRIu64 " chunks %d" rdma_block_notification_handle(const char *name, int index) "%s at %d" rdma_delete_block(void *block, uint64_t addr, uint64_t offset, uint64_t le= n, uint64_t end, uint64_t bits, int chunks) "Deleted Block: %p, addr: %" PR= Iu64 ", offset: %" PRIu64 " length: %" PRIu64 " end: %" PRIu64 " bits %" PR= Iu64 " chunks %d" --=20 2.54.0 From nobody Fri Aug 21 21:26:30 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1787256270; cv=none; d=zohomail.com; s=zohoarc; b=c2D+p+xUxg2KP7Wvgl3lF6N+ixKoKXcztFEHoJhlDfdN7Z65YPTstwYXF/TfmWnrpAeK0n6jluwR6b/NGb65GlLZ6PkOK+pNzAuCTzm2o65TGI+8+CW9aWV3iGOAbl46nWjNw4tQN1hKteurCieLpLp75yZwraKK2XwvDSfxF34= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787256270; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=AeXHJa6e2Krc0rxpv0YEuzHdoFnWYceRPQkLOOt2s5U=; b=YfjS9KiVEldehkYKYZ/45LNLuT52ShoiOhORLCpAamW0GHeyV0OXZGd5zWPdcuGodPMXuX8PJwIrC4DAwbkZM/v2bVcAJm6dr7E+GAJWh26Ft1mgnLIlqf1BOkaD0Iy+uDdCcfuSlS3woYOa7tevL0B2L/ZRB/oCH/zLYqHWrjI= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787256270773870.2539621634901; Thu, 20 Aug 2026 13:04:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx8zP-0008Ur-Ci; Thu, 20 Aug 2026 16:03:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zO-0008Ui-2j for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:03:50 -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 1wx8zM-0005DB-4S for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:03:49 -0400 Received: from mail-oo1-f69.google.com (mail-oo1-f69.google.com [209.85.161.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-212-sAJ3raxoPAWP3ClWrw3Rdw-1; Thu, 20 Aug 2026 16:03:46 -0400 Received: by mail-oo1-f69.google.com with SMTP id 006d021491bc7-6b14d9c02b7so259281eaf.2 for ; Thu, 20 Aug 2026 13:03:46 -0700 (PDT) Received: from x1.local (bras-vprn-aurron9134w-lp130-03-174-91-117-74.dsl.bell.ca. [174.91.117.74]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6b13cebeb2esm6181314eaf.10.2026.08.20.13.03.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 13:03:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787256227; 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=AeXHJa6e2Krc0rxpv0YEuzHdoFnWYceRPQkLOOt2s5U=; b=NChoha0kfy12s4VJ1cQQ9cOesnuWlrMZapj6vFCETWZf2lFLwY8v70MeCiZ4MfKS2ltJv6 iLuXmZ4AiNqYId/UtS0wPZ7dDjfcKkrDB1q9rb2Bd9JCR95Pgd1Sh+dCaqbCvNrBz4RYzP KpXbqyPSjimf9BSpyrl8WWwpL07MzB0= X-MC-Unique: sAJ3raxoPAWP3ClWrw3Rdw-1 X-Mimecast-MFC-AGG-ID: sAJ3raxoPAWP3ClWrw3Rdw_1787256225 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787256225; x=1787861025; darn=nongnu.org; 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:content-type; bh=AeXHJa6e2Krc0rxpv0YEuzHdoFnWYceRPQkLOOt2s5U=; b=BflD6CokNh85JqKsEQE4jWglcjJhe8oomVu89eW/YptocUP5RsPPRxjz+21AvsN3Kc xfvvpwwy97bcnGCb97OGwkWBr4b2Iyl5fdPJ4rskuLgMhkki7HmfKfexEr9JzrKMv5I+ opkkPctPIFwVOpcjoX3hnA1D+1rilt/gyDNVIqdr52Ow1vvl90+64M0XWC5taDvzhfFW kL23nqn7MRpPK0P3lxHSST14JL87fOixzQS1NcYcOxRj6FjvB4EVXEvxbtaNG4+ID4P0 s5hXyST6+SFElULmgTPg7yjD1zBNbqhl3IvPbRiT8bSFMB1OtMB2sAUZe4MHdsjeXf2F GMPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787256225; x=1787861025; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=AeXHJa6e2Krc0rxpv0YEuzHdoFnWYceRPQkLOOt2s5U=; b=WnkHVmkGXogT4l1ThOubMKREVQvdyKFsKn6z41GRrRaqsK1hKtCHw+9yo+g1osd69U rdj4PFboV3Y1/OcapWezU+Dg64KaNHa4XrI0RN6Kn7kkfkh6n11wON0n/vYE/JXecUW6 C9DutcFqZzlIQxhccxzaR4Co+pNfiMLU+UpoYFz+uiOIR9Loh7ilekBu5UGHyWRjZ7KD XFsKXV+Q7UNCIM7I8cNcGJ7zvOtqK4tpY2md5jqdg4IF+jnBgA9Kd50WWxr6Vx+QJPPk j8VnrFUQa8ww/opTlQhB7FdH2xbm+IxXJ6Ct0o5Zls7fZrQ+lXsMshZq5Gs07qPlhbko Zwww== X-Gm-Message-State: AOJu0YyeQ2korDU/hwytctjeAfarxiEJvX/yEIrs4MNYAklg9mg4daJD 2y9lePlwR9JhEdYTyVz+UG3PW5/FqSI5+LE+uYlUB7Gb5s8Vvu3vXG3NYdl8acRqGAZdN/yXBHa Fe8ZvP2P4MBVzoxtvqp47lwosm387oZzT0KX0hrqD+cl4PXbImcsuNWcXrR/mUl2JiJnkxsLlkL yY2PJ9W3ksQOP0zW2RdFktW23hOGVtFFh3e10YkQ== X-Gm-Gg: AR+sD124+axn5jbwpcG1EH707gC7Tr1ksF2llBWdcq/N6LpipLfHkEztc4rqRBzDHNt 1wYijX3/KHvkg2ntpXz0ki3rXKKjhcxumAFEwXgbnGjCLxsdeGEWo2aPUKwJ90VlFhAsHhlVvm/ YkBlvo8UL7doPiFaWwtGa3YeZDfnOo+T8oIhPiDuyxJTKih1kcHnUs8UMMfQKt8WeNRjrrqG7Fa uo2mBrL+cGsAxsfA15CTb/ePbO3etPxyoVMGRj799cVFbrpQGZ+ZVj8iXNZ5kOEkMST9ChEQ/Ic WK9bVckryAuIFxvckxfx1Ox+Wu2s3G9h10i7MFpfpI5KdtNA8m6Vt0qm5lNbqgvMhb/aXieMRY7 D0N8+94GAqlAUwVWoJfabJqylgbb7GVOuLTHBqPDJswu8rnQC0LfJcpP0COk= X-Received: by 2002:a05:6820:5712:10b0:6ab:1d3:bbf2 with SMTP id 006d021491bc7-6b1594630bbmr989238eaf.25.1787256225211; Thu, 20 Aug 2026 13:03:45 -0700 (PDT) X-Received: by 2002:a05:6820:5712:10b0:6ab:1d3:bbf2 with SMTP id 006d021491bc7-6b1594630bbmr989167eaf.25.1787256224610; Thu, 20 Aug 2026 13:03:44 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Jack Wang , Peter Xu , Li Zhijian , Juraj Marcin , Fabiano Rosas , Samuel Zhang , Yanfei Xu , Jinpu Wang Subject: [PATCH v2 04/10] migration/rdma: Drop RDMALocalBlock.is_ram_block Date: Thu, 20 Aug 2026 16:03:16 -0400 Message-ID: <20260820200322.3321036-5-peterx@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260820200322.3321036-1-peterx@redhat.com> References: <20260820200322.3321036-1-peterx@redhat.com> MIME-Version: 1.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_PASS=-0.001, 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 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 @redhat.com) X-ZM-MESSAGEID: 1787256271733158500 Content-Type: text/plain; charset="utf-8" This is guaranteed to be true. There seems to have support for some dynamically allocated buffers but it was never really supported. Remove dead code. As a side effect, this patch closes a report by removing the buggy code completely. Reported-by: Tristan (@TristanInSec) Closes: https://gitlab.com/qemu-project/qemu/-/work_items/4006 Reviewed-by: Jinpu Wang Signed-off-by: Peter Xu Reviewed-by: Fabiano Rosas --- migration/rdma.c | 75 ++++++++++++++---------------------------------- 1 file changed, 21 insertions(+), 54 deletions(-) diff --git a/migration/rdma.c b/migration/rdma.c index ffae0a887f..63a8370be2 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -196,7 +196,6 @@ typedef struct RDMALocalBlock { uint32_t remote_rkey; /* rkeys for non-chunk-level registrat= ion */ int index; /* which block are we */ unsigned int src_index; /* (Only used on dest) */ - bool is_ram_block; int nb_chunks; unsigned long *transit_bitmap; unsigned long *unregister_bitmap; @@ -279,7 +278,6 @@ static void network_to_dest_block(RDMADestBlock *db) */ typedef struct RDMALocalBlocks { int nb_blocks; - bool init; /* main memory init complete */ RDMALocalBlock *block; } RDMALocalBlocks; =20 @@ -441,14 +439,12 @@ static void register_to_network(RDMAContext *rdma, RD= MARegister *reg) RDMALocalBlock *local_block; local_block =3D &rdma->local_ram_blocks.block[reg->current_index]; =20 - if (local_block->is_ram_block) { - /* - * current_addr as passed in is an address in the local ram_addr_t - * space, we need to translate this for the destination - */ - reg->key.current_addr -=3D local_block->offset; - reg->key.current_addr +=3D rdma->dest_blocks[reg->current_index].o= ffset; - } + /* + * current_addr as passed in is an address in the local ram_addr_t + * space, we need to translate this for the destination + */ + reg->key.current_addr -=3D local_block->offset; + reg->key.current_addr +=3D rdma->dest_blocks[reg->current_index].offse= t; reg->key.current_addr =3D htonll(reg->key.current_addr); reg->current_index =3D htonl(reg->current_index); reg->chunks =3D htonll(reg->chunks); @@ -585,8 +581,6 @@ static void rdma_add_block(RDMAContext *rdma, const cha= r *block_name, bitmap_clear(block->unregister_bitmap, 0, block->nb_chunks); block->remote_keys =3D g_new0(uint32_t, block->nb_chunks); =20 - block->is_ram_block =3D local->init ? false : true; - if (rdma->blockmap) { g_hash_table_insert(rdma->blockmap, (void *)(uintptr_t)block_offse= t, block); } @@ -634,7 +628,6 @@ static void qemu_rdma_init_ram_blocks(RDMAContext *rdma) trace_rdma_init_ram_blocks(local->nb_blocks); rdma->dest_blocks =3D g_new0(RDMADestBlock, rdma->local_ram_blocks.nb_blocks); - local->init =3D true; } =20 /* @@ -1767,19 +1760,10 @@ retry: chunk =3D ram_chunk_index(block->local_host_addr, (uint8_t *)(uintptr_t)sge.addr); chunk_start =3D ram_chunk_start(block, chunk); + chunks =3D length / chunk_size; =20 - if (block->is_ram_block) { - chunks =3D length / chunk_size; - - if (chunks && ((length % chunk_size) =3D=3D 0)) { - chunks--; - } - } else { - chunks =3D block->length / chunk_size; - - if (chunks && ((block->length % chunk_size) =3D=3D 0)) { - chunks--; - } + if (chunks && ((length % chunk_size) =3D=3D 0)) { + chunks--; } =20 trace_rdma_write_one_top(chunks + 1, @@ -1804,7 +1788,7 @@ retry: } } =20 - if (!rdma->pin_all || !block->is_ram_block) { + if (!rdma->pin_all) { if (!block->remote_keys[chunk]) { /* * This chunk has not yet been registered, so first check to s= ee @@ -1853,11 +1837,7 @@ retry: * Otherwise, tell other side to register. */ reg.current_index =3D current_index; - if (block->is_ram_block) { - reg.key.current_addr =3D current_addr; - } else { - reg.key.chunk =3D chunk; - } + reg.key.current_addr =3D current_addr; reg.chunks =3D chunks; =20 trace_rdma_write_one_sendreg(chunk, sge.length, current_index, @@ -3408,30 +3388,17 @@ int rdma_registration_handle(QEMUFile *f) goto err; } block =3D &(rdma->local_ram_blocks.block[reg->current_inde= x]); - if (block->is_ram_block) { - if (block->offset > reg->key.current_addr) { - error_report("rdma: bad register address for block= %s" - " offset: %" PRIx64 " current_addr: %" PRIx64, - block->block_name, block->offset, - reg->key.current_addr); - goto err; - } - host_addr =3D (block->local_host_addr + - (reg->key.current_addr - block->offset)); - chunk =3D ram_chunk_index(block->local_host_addr, - (uint8_t *) host_addr); - } else { - chunk =3D reg->key.chunk; - host_addr =3D block->local_host_addr + - (reg->key.chunk * migrate_rdma_chunk_size()); - /* Check for particularly bad chunk value */ - if (host_addr < (void *)block->local_host_addr) { - error_report("rdma: bad chunk for block %s" - " chunk: %" PRIx64, - block->block_name, reg->key.chunk); - goto err; - } + if (block->offset > reg->key.current_addr) { + error_report("rdma: bad register address for block %s" + " offset: %" PRIx64 " current_addr: %" PRIx64, + block->block_name, block->offset, + reg->key.current_addr); + goto err; } + host_addr =3D (block->local_host_addr + + (reg->key.current_addr - block->offset)); + chunk =3D ram_chunk_index(block->local_host_addr, + (uint8_t *) host_addr); chunk_start =3D ram_chunk_start(block, chunk); chunk_end =3D ram_chunk_end(block, chunk + reg->chunks); /* avoid "-Waddress-of-packed-member" warning */ --=20 2.54.0 From nobody Fri Aug 21 21:26:30 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1787256247; cv=none; d=zohomail.com; s=zohoarc; b=nUFYt/Q8QJHzROX9kam1ZqqMdgnyTq7oOgQ6AR4gC3bKtEbwB0EUekKWyfuzPlxZqGO4SvDDloHsUpLL9JVEyR6Jkig2B/MPMNjOeQ0TvweL6mFDUlC4iEeeVeZLvmuhbRc2MHKiV1XhVZ2aNb2jKIh2VSJkAiPWjAwZFwG/lec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787256247; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NobUKJlgERSbbOMWLyOgwAcR7VK/imHBSmo75lvip8s=; b=E1KctCvUzQcZXl0lPtS96abUMSGUE/5w85lq+hrmpiIcazD+sxPuI/uCClQv152y3sAA8Sq/uy16CWCYGsAGHcaNW96PvTMyOHxX12q/BRIf2xSd3G3g051224emcv5AZqL1m1exAOv+5kKeualji6TK3nY8asNoShPbcRcfXOg= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787256247175570.4582748127916; Thu, 20 Aug 2026 13:04:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx8zS-00009k-R4; Thu, 20 Aug 2026 16:03:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zR-00007W-FJ for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:03:53 -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 1wx8zQ-0005Fo-2Q for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:03:53 -0400 Received: from mail-oo1-f71.google.com (mail-oo1-f71.google.com [209.85.161.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-340-awsIEHd5PSaXtod2jS49ng-1; Thu, 20 Aug 2026 16:03:50 -0400 Received: by mail-oo1-f71.google.com with SMTP id 006d021491bc7-6b0e7370be1so223182eaf.0 for ; Thu, 20 Aug 2026 13:03:50 -0700 (PDT) Received: from x1.local (bras-vprn-aurron9134w-lp130-03-174-91-117-74.dsl.bell.ca. [174.91.117.74]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6b13cebeb2esm6181314eaf.10.2026.08.20.13.03.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 13:03:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787256231; 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=NobUKJlgERSbbOMWLyOgwAcR7VK/imHBSmo75lvip8s=; b=UlxrjWOezoPy4taMZw8fZtTUAXm7zBydQr64XhljnWRcvJApEk+mabNPF3TY/k8wwwKF2R iAu7qUWon0zK+WsInyD7DL48vUGRbrfHrX3lj8C/ff4YPoqIH68ZtVVLWuksPVsWR/Gd8I A/Jv8r0b9NCfgf7VYJfxXfSKNuWWC9g= X-MC-Unique: awsIEHd5PSaXtod2jS49ng-1 X-Mimecast-MFC-AGG-ID: awsIEHd5PSaXtod2jS49ng_1787256229 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787256229; x=1787861029; darn=nongnu.org; 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:content-type; bh=NobUKJlgERSbbOMWLyOgwAcR7VK/imHBSmo75lvip8s=; b=YsAqX1unqHXwuc5iA3soBBGEcz8pLznL8IsM1oZh+MGo8HiQM4CLZbY2Nppv1fpZfk Kkm6iCb7jCTSMk5A0CJcMds9kiH2yIz4n6zEIN1767KwB58GH1rxGAMEhoHa70pswSUX PbXKldjI/hudc16XS0+E/GQLeA0ZuxjQqaULOoETtywiPa7dez7i4DSqLq3lloSIb3DW rIU3UJ2BbS77dVmRqxNDZYhuqlGanfKl91jPQIDrMX31wxTqLdMvblN9oW4O87vCVQg2 4OULpKYTv/vIPRhcbHfotuFkQTQcMeGR/pW/mpjF8dP5RrPY0VibZvgtYrTKeavfyIjD CrGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787256229; x=1787861029; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=NobUKJlgERSbbOMWLyOgwAcR7VK/imHBSmo75lvip8s=; b=HvVBROxnDsBKgSiNm/9mvBxweTGtXUc5TPUWa0WpiWbwOOJ65IryI9IcEGWz+4HvFH gTQK1xh0FpxXFjLOheT65V9ygNeVuQulIRr4PUHYLV7AOkWAfYv+YzO4YqIf77QaYPHJ 3F/jUKsNaxlQ9zCsNub81enBkPbmQVKfRJE80/dy2A3cCz838g057bdNz1cJOhfH8Hmr xCBSg4PxFiEq2mnOi/Ic0CgruE6opWd4H45OK8fdDq+WB9NXEtmqL3EDgDIqZUZkI4Vy z3NhHN6tL/NkP9/3kpXxW+jN1x/wdEefqE14OBZYAEmtxHSS7ppJ+PXuC4ALRcuXfkMi qgaQ== X-Gm-Message-State: AOJu0YyNvzzFtBWEpkV47UlaERXpyDlVrFAQDL1okGAayuLVkdvyy/f9 NHFP7W5VtzMuy2m2+OEfVy8boEIe7EYzYu56QgYA+ypUCt+kW74eFxwC24S/OxQXx7kuyKKmCT0 Iq8ojKGj+FIVXHJaBVYh0h1vtEgMToqxJJMrPmj1969p6iI6g+el7D8Xc0nDjlapm3pwTxHL2cc mOIyqLKTdEiE9A0ooDzM+URDZkghssfd/LhiI52A== X-Gm-Gg: AR+sD13FTy73scfllZMwesl8WeIJ0dgJnhQIYW493VnnVEszlI3PNoso0RuO8D6qL0E 7/v4Tla1/ak5BvucF/pm786NpPMRxfuZkGVJE24GzyE6xDZQcu7N76BfGb/jxmJCnkTuJR4bl7I DbjAh0nMsL16/360A7c86JCDQYYF/+abwdqXY1tIS9sfxYkWQ8/AMlI1VDK9QOl2/A11BTZBStc zETD5LsiDX1BCxKUxMSkO3pkzZDVnsgOlCQxIayqBigCHJ9uf5oswEWkYqsoI0Q92VXN/sXOpdy +smaBQczTmxnc1iim99m5+QTn6rjLlmconZ8erVSluld3OQua4m0yW6HX6j31noyLNmbNOjsAfV E4ACVGRV/76/aJE4g+yeOyDbnbO8/rkgIDSAXcGrweqNylMYANQrqeM5AywE= X-Received: by 2002:a05:6820:6aca:b0:6a1:64df:7324 with SMTP id 006d021491bc7-6b15ac82525mr498131eaf.7.1787256229408; Thu, 20 Aug 2026 13:03:49 -0700 (PDT) X-Received: by 2002:a05:6820:6aca:b0:6a1:64df:7324 with SMTP id 006d021491bc7-6b15ac82525mr498041eaf.7.1787256228788; Thu, 20 Aug 2026 13:03:48 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Jack Wang , Peter Xu , Li Zhijian , Juraj Marcin , Fabiano Rosas , Samuel Zhang , Yanfei Xu , Jinpu Wang Subject: [PATCH v2 05/10] migration/rdma: Drop RDMALocalBlock.unregister_bitmap Date: Thu, 20 Aug 2026 16:03:17 -0400 Message-ID: <20260820200322.3321036-6-peterx@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260820200322.3321036-1-peterx@redhat.com> References: <20260820200322.3321036-1-peterx@redhat.com> MIME-Version: 1.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_PASS=-0.001, 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 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 @redhat.com) X-ZM-MESSAGEID: 1787256249491158501 Content-Type: text/plain; charset="utf-8" Not used anymore. Reviewed-by: Jinpu Wang Signed-off-by: Peter Xu --- migration/rdma.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/migration/rdma.c b/migration/rdma.c index 63a8370be2..f9f3940256 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -198,7 +198,6 @@ typedef struct RDMALocalBlock { unsigned int src_index; /* (Only used on dest) */ int nb_chunks; unsigned long *transit_bitmap; - unsigned long *unregister_bitmap; } RDMALocalBlock; =20 /* @@ -577,8 +576,6 @@ static void rdma_add_block(RDMAContext *rdma, const cha= r *block_name, block->nb_chunks =3D ram_chunk_index(host_addr, host_addr + length) + = 1UL; block->transit_bitmap =3D bitmap_new(block->nb_chunks); bitmap_clear(block->transit_bitmap, 0, block->nb_chunks); - block->unregister_bitmap =3D bitmap_new(block->nb_chunks); - bitmap_clear(block->unregister_bitmap, 0, block->nb_chunks); block->remote_keys =3D g_new0(uint32_t, block->nb_chunks); =20 if (rdma->blockmap) { @@ -663,9 +660,6 @@ static void rdma_delete_block(RDMAContext *rdma, RDMALo= calBlock *block) g_free(block->transit_bitmap); block->transit_bitmap =3D NULL; =20 - g_free(block->unregister_bitmap); - block->unregister_bitmap =3D NULL; - g_free(block->remote_keys); block->remote_keys =3D NULL; =20 --=20 2.54.0 From nobody Fri Aug 21 21:26:30 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1787256306; cv=none; d=zohomail.com; s=zohoarc; b=duj1OseEzN/EGZYbwzSGkIH0YdzIU2Onvq2enMEhqu/LsT+xwFfn6Hu0oYuKI5aAC3lF/8tbH7ZTK2ZZFXHP0XMxZk9Z3uoNZ140ZOZAXLTuRpsLrDAuzqBpv21OgvQ+VyTfb2VrHnVJ40pVLexiGktRKwjWsdD9+UIQg/X8O74= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787256306; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PSVoCxz+TV8QgWwOuZmmqsA5tQRksceNAyieKAVfFUk=; b=h9q/Trc1IaF67EV+EaBsb5ZzPiCLsbxsTlAW4Nm0vm64/tOXu62imEwS5AX8003y8HVkSrnTnAcg0C5XXtDUB+MdaYZ1HE2YzwDotJed1vDR8uVMoW2p48tpJ7KVHGNM6x0rFBcjlx32Qax8SrAnZyDJPKJEn8TqYxvFEnbw7G0= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178725630684972.56547138632914; Thu, 20 Aug 2026 13:05:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx8zi-0000Qt-FZ; Thu, 20 Aug 2026 16:04:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zh-0000Ps-CV for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:04:09 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zf-0005Rl-Oq for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:04:09 -0400 Received: from mail-oa1-f71.google.com (mail-oa1-f71.google.com [209.85.160.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-259-KZ_2vdJLPh2zZnvJxu7Bxw-1; Thu, 20 Aug 2026 16:03:55 -0400 Received: by mail-oa1-f71.google.com with SMTP id 586e51a60fabf-455ad408573so330848fac.3 for ; Thu, 20 Aug 2026 13:03:55 -0700 (PDT) Received: from x1.local (bras-vprn-aurron9134w-lp130-03-174-91-117-74.dsl.bell.ca. [174.91.117.74]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6b13cebeb2esm6181314eaf.10.2026.08.20.13.03.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 13:03:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787256247; 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=PSVoCxz+TV8QgWwOuZmmqsA5tQRksceNAyieKAVfFUk=; b=B5QRTfEcA3WTz8O50d/JrTHhdeF/aGMgJ7WPnPLqgGZrAql4WX6IlDkmqhTFbBdsVUL2Km PXOsBbTRYOIkvTXNM1e9yFuWrad0ToZ7z4MtMDAWxrBb3Mq074QNVUPDDuJ5IAEGlNNF46 cRz5bJpA2H9Ii1zHQRddpd0DhCiJeZQ= X-MC-Unique: KZ_2vdJLPh2zZnvJxu7Bxw-1 X-Mimecast-MFC-AGG-ID: KZ_2vdJLPh2zZnvJxu7Bxw_1787256235 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787256235; x=1787861035; darn=nongnu.org; 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:content-type; bh=PSVoCxz+TV8QgWwOuZmmqsA5tQRksceNAyieKAVfFUk=; b=ZYZycg2wQuVt+eo4+KZeOBWZbuVl0qlp7n8uR9AYJjrq8mmOJ4Q0rmb+1iA6MuihVk gj3VcIxImMDGAZ0Htvgc/A3dzP15vWwuHL2J2x6DfzzY2o6wlj3H0GTCdwV1PomA+P6c lv4UDMkEGpW4Td3R21S0yqmqTyL6CJS0EGjNrpbA6IzE1PkL7Ccdbha+yMEjrDyRtH3J t/1N0IohgpFP1EoGsqsJ1fsjCRi8H2CMS6JbzkPNc0RaCp2Q4pQhAuN6RxB6afuUb8U2 2i1I+xVi74kxH1Ba66fC9abXJ4VuNyx4oTdAqmiBZjD9GWtcKgyWI6v4wepF/COiHBNp 2UDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787256235; x=1787861035; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=PSVoCxz+TV8QgWwOuZmmqsA5tQRksceNAyieKAVfFUk=; b=ng+AzaF+L6FlsHf0NSGwqynEXOyt8E/1cju+qbbk63m9in5kiqj/Mx9AgJlFN5JG7g rX5kXcBGJl2BdEEqZ83ens893W9oXiIp5X8u9NTbPpk+lB4yikqe3HoBZSXR0gx1Wa07 WxSuKKgYKnawL00/47df1mS6NqIz4/V4qcT0Zb+0AMWWf8GcRc8TBn8pItycnqUi25sp 5cqmwoAlZq1xlzkrLNdxLtabqpM77jYx8ur9p+BFjV0iCMbngxtTYIIFRCvdngvTliNs zsPTffcY8oOiDRrg4K8ieLU6xcChr/jIVV4ayDBMxP9hEFW8SaP4c/zpvP6D/64jWQMM p/Xw== X-Gm-Message-State: AOJu0YzUZh46wITstiDYdBaOy8U6tHorObGWT0prV+Cgi+TG82HlaEgw TE2YtufopNS+SehBB1gsb6R5KK+Gjs+ZLzpCfuCfnXI0294izJ7ysdGWPpH0T2gJTPuXGgxZJU/ QGzhL31bl+LVO6MCSE2B7Sh/e6unMftxCZQGct3RPx6caeXjVEe5Aam8RBiur2WO7ZGmzqi63xO PI5hWMvTB/hLhXkTmX3y8huVqlaLYmcNFnrnhXdA== X-Gm-Gg: AR+sD13+GcBvFtKo4uw7JxPDAiW8pJjKYYtLY03NS/vV8OfE6eT8+jhdFN0dhto+bAI ZXNHLH89Wc3xfgCgzB69Kne654RGBgv0U4bWOF4PW2oqLLkty62AB8ZrN26dKBe2MwoK8WtbHK7 gBtXLLC10NV3GTNADTMPrYEfvJ8gGPU528sn+vvzjnnzB7PvynleXTS397GCPIF5UBLR+uWr/PI uVKeA2wb6lPoIduX71XM7MEXdaFxht/TTllfsXkmpTXhwxfJKbSED1rr+LiZMFbZG1kB/NvDBXk oO1CR5LYYsFpcaVrdDLd4luDcJXx5AsLCMVcpWvO2rOuqpsyUX1g3X15jUMCT+BDlp77pLjOldb f+IW9S6lfNST2Mt6ZE0+zhnJgKE6CwnJl4DpqO0wk8PRwzLvVXcvp5dmgJdo= X-Received: by 2002:a05:6820:1793:b0:6b1:59e8:6e63 with SMTP id 006d021491bc7-6b159e87650mr1060008eaf.22.1787256234704; Thu, 20 Aug 2026 13:03:54 -0700 (PDT) X-Received: by 2002:a05:6820:1793:b0:6b1:59e8:6e63 with SMTP id 006d021491bc7-6b159e87650mr1059433eaf.22.1787256231209; Thu, 20 Aug 2026 13:03:51 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Jack Wang , Peter Xu , Li Zhijian , Juraj Marcin , Fabiano Rosas , Samuel Zhang , Yanfei Xu , Jinpu Wang Subject: [PATCH v2 06/10] migration/rdma: Drop RDMARegister.key.chunk Date: Thu, 20 Aug 2026 16:03:18 -0400 Message-ID: <20260820200322.3321036-7-peterx@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260820200322.3321036-1-peterx@redhat.com> References: <20260820200322.3321036-1-peterx@redhat.com> MIME-Version: 1.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H2=0.001, SPF_HELO_PASS=-0.001, 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 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 @redhat.com) X-ZM-MESSAGEID: 1787256307728158500 Content-Type: text/plain; charset="utf-8" Not used anymore. Reviewed-by: Jinpu Wang Signed-off-by: Peter Xu --- migration/rdma.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/migration/rdma.c b/migration/rdma.c index f9f3940256..683c24ba4d 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -414,10 +414,7 @@ static void network_to_control(RDMAControlHeader *cont= rol) * the actual RDMA operation. */ typedef struct QEMU_PACKED { - union QEMU_PACKED { - uint64_t current_addr; /* offset into the ram_addr_t space */ - uint64_t chunk; /* chunk to lookup if unregistering */ - } key; + uint64_t current_addr; /* offset into the ram_addr_t space */ uint32_t current_index; /* which ramblock the chunk belongs to */ uint32_t padding; uint64_t chunks; /* how many sequential chunks to register = */ @@ -442,16 +439,16 @@ static void register_to_network(RDMAContext *rdma, RD= MARegister *reg) * current_addr as passed in is an address in the local ram_addr_t * space, we need to translate this for the destination */ - reg->key.current_addr -=3D local_block->offset; - reg->key.current_addr +=3D rdma->dest_blocks[reg->current_index].offse= t; - reg->key.current_addr =3D htonll(reg->key.current_addr); + reg->current_addr -=3D local_block->offset; + reg->current_addr +=3D rdma->dest_blocks[reg->current_index].offset; + reg->current_addr =3D htonll(reg->current_addr); reg->current_index =3D htonl(reg->current_index); reg->chunks =3D htonll(reg->chunks); } =20 static void network_to_register(RDMARegister *reg) { - reg->key.current_addr =3D ntohll(reg->key.current_addr); + reg->current_addr =3D ntohll(reg->current_addr); reg->current_index =3D ntohl(reg->current_index); reg->chunks =3D ntohll(reg->chunks); } @@ -1831,7 +1828,7 @@ retry: * Otherwise, tell other side to register. */ reg.current_index =3D current_index; - reg.key.current_addr =3D current_addr; + reg.current_addr =3D current_addr; reg.chunks =3D chunks; =20 trace_rdma_write_one_sendreg(chunk, sge.length, current_index, @@ -3373,7 +3370,7 @@ int rdma_registration_handle(QEMUFile *f) reg_result =3D &results[count]; =20 trace_rdma_registration_handle_register_loop(count, - reg->current_index, reg->key.current_addr, reg->c= hunks); + reg->current_index, reg->current_addr, reg->chunk= s); =20 if (reg->current_index >=3D rdma->local_ram_blocks.nb_bloc= ks) { error_report("rdma: 'register' bad block index %u (vs = %d)", @@ -3382,15 +3379,15 @@ int rdma_registration_handle(QEMUFile *f) goto err; } block =3D &(rdma->local_ram_blocks.block[reg->current_inde= x]); - if (block->offset > reg->key.current_addr) { + if (block->offset > reg->current_addr) { error_report("rdma: bad register address for block %s" " offset: %" PRIx64 " current_addr: %" PRIx64, block->block_name, block->offset, - reg->key.current_addr); + reg->current_addr); goto err; } host_addr =3D (block->local_host_addr + - (reg->key.current_addr - block->offset)); + (reg->current_addr - block->offset)); chunk =3D ram_chunk_index(block->local_host_addr, (uint8_t *) host_addr); chunk_start =3D ram_chunk_start(block, chunk); --=20 2.54.0 From nobody Fri Aug 21 21:26:30 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1787256290; cv=none; d=zohomail.com; s=zohoarc; b=Bz2tevfEzfynsBMOsnNUU9MnnAlOCDWKJloB8s4NwDUrgBs81rGQWxN2sjAs+7VbLaT6iYRUAdX9b2go68sY+d+/fF6Pc3Fm63EWXe8ogj7mPU5az+MEvoz/jlbACrXGfWLxvJxEyUrWIsBLN1ftlNTPH4d+YWX+Ubi42OepqWI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787256290; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+XNk5dkobl6PxGlqJ+6K5lMIdMtBGjNOVaSzcufEeas=; b=LbR6mwGxzNmc5g3kjfPJ/BqSyKs8llQHYbvFGjwKZfnIT8rEiZg0WgYfxe0EzCdTrEnbBvB7RYlt3qpeideD8p9RRBGK00Ty3FrsNXPy0K5UgIqkva2+h4Kby00A1v3hT00gXhKHhpnmoa6z1+ETJL/1M+5D8Q4JFNFpQMhuT3g= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787256290282647.6477836832499; Thu, 20 Aug 2026 13:04:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx8zZ-0000GB-I6; Thu, 20 Aug 2026 16:04:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zY-0000BI-Hm for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:04:00 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zW-0005KO-VL for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:04:00 -0400 Received: from mail-oo1-f69.google.com (mail-oo1-f69.google.com [209.85.161.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-665-qHzI7NWQPjq1GJyRix1yjg-1; Thu, 20 Aug 2026 16:03:56 -0400 Received: by mail-oo1-f69.google.com with SMTP id 006d021491bc7-6b1000e2b5eso143946eaf.1 for ; Thu, 20 Aug 2026 13:03:56 -0700 (PDT) Received: from x1.local (bras-vprn-aurron9134w-lp130-03-174-91-117-74.dsl.bell.ca. [174.91.117.74]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6b13cebeb2esm6181314eaf.10.2026.08.20.13.03.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 13:03:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787256238; 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=+XNk5dkobl6PxGlqJ+6K5lMIdMtBGjNOVaSzcufEeas=; b=Qc1SWzOM8Ix0E6wDhx5oRsaDA95BuDZ56u5uOdHVBSACMt9a+Xiey+VRdUIKEwJI4ohXCF P6/yl5OVt2dn37MYziqI+YAzrU8nvksQLTHb9pW5D4NaUbiAKGVhZZbiR1IaV3nJZWdnvw Z8emYGdDsZOWybA62jOJYDB2PYgvou4= X-MC-Unique: qHzI7NWQPjq1GJyRix1yjg-1 X-Mimecast-MFC-AGG-ID: qHzI7NWQPjq1GJyRix1yjg_1787256236 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787256236; x=1787861036; darn=nongnu.org; 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:content-type; bh=+XNk5dkobl6PxGlqJ+6K5lMIdMtBGjNOVaSzcufEeas=; b=JzHWTDJLjmXQ+yg0qifK2/J0Yusz+yAlbONQE85BhZLDdv5HJcOY2Eakn79KjtJZ5N DbgQ20z//jOX75Z8xztMK9YQq0/T/C2q9u6+aF54buA8wDQucHB38fNxYY4aej1NLUyK fI7k3jfsY6JcmYnDBkR2tCNMl0cVOrVL+WN8v/ssFrW0LkLPNCzMO42vhd6daiMeqi95 yUQtbMwWLW8NIP/yPIyNYBwwZUMJd5ckF6yHABBA6l6qsBd+0XrhVibOlzIo6Q7EKv9y CyRTMXyPGtlUbU+Tr+Z1EX1FJJVtidAS2WsTkVdzFjf/GzXxUiqGQkds1Gb1e61ELeLo 12GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787256236; x=1787861036; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=+XNk5dkobl6PxGlqJ+6K5lMIdMtBGjNOVaSzcufEeas=; b=QM1hbAEcMcDrlAV+92du0HSt7U704YxmHIkL4OfjMSH901hbgBfrs5vKGJ7tQg2blL n/mMnpjvZ5OJh8d+kZsVT+EzbtSAGMkaZM7u7bk0S/bAq2ILJl3goceCUEEvqpAAonqo 00I8+irXvdF/JtjoyPqj/oPMcwuKpWYK56SdryLs7gUE905DafefA7fF2WCY9HnW0GQW 28Y7fco0sKKLZskovL2MaoHutoObawI6SsvOOBkCUDajVoKXCuIZc72Z7xYOAYwx0uUy TNMYAhEp+2mdX+KLnulAtFkxX7WXDwvN8X4i35CAc7/b4CgMQYjGfQQCkJq6J7Rntpv6 ZDjg== X-Gm-Message-State: AOJu0Yxu9ry1YUznJuXzWnYRr1PT03PuEafvZU8CDjfLEJhET+USRL+G AtL9OEIsk6jgoK+L595fAFXqxq2fGQBYnTpMtrpki34+SONqmXCTRrdaJiTPFGC/TyMVeT4QM1W yKlbG7A9agxld4e+HnlmrAl3BlyNlyeTmg8mRFZiM+1uYoyZVxx5myWFpcDayZJZuwnpUnQY0UL UEqkdH+Q3bRcbs5Zn/pWJ1kWr9a9BCo10gLTNdRQ== X-Gm-Gg: AR+sD13yEFD949AvTxYuqjBrA6UrB46WeCMQ+vHPpfu7jlZGyW5FhcaiG6clJ+ZVsYT j7bg5yEPBdqnPnV9rt26Xsbq9Dqba7Z1bgWPi16COUWu+HXY07r2VkH+ZIMipCVqe/Ux/+Z8EWv 4FM3cpxPfD5sAVzvSEichzg0NQEoI6SW23x1rloZ2B34uqZS6CXVT8YNGbRjfkIxm1FxGBiX4QX 6Q7vFjw/tcnGmx0FVJ3niOM96TGXV6rKDp0+1g+4+UZQT/UJvXqFX3CkNiXUZeOO7/RsYF4zQbn DHgYGyaaHQ9enoog4R7TiNfNy8wnN1pM2VYnzHJXklVaFhbn//6un0s1DIE8brNsVLuuzF46eWz XigZ3JyoBtimauF0rFf0d7U/+Mkr0oPXet39y/vZnzhk4SHe/KRLYKyzLrKk= X-Received: by 2002:a05:6820:151a:b0:6b1:2a4a:ca8f with SMTP id 006d021491bc7-6b15ada2b41mr380496eaf.10.1787256235647; Thu, 20 Aug 2026 13:03:55 -0700 (PDT) X-Received: by 2002:a05:6820:151a:b0:6b1:2a4a:ca8f with SMTP id 006d021491bc7-6b15ada2b41mr380426eaf.10.1787256235089; Thu, 20 Aug 2026 13:03:55 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Jack Wang , Peter Xu , Li Zhijian , Juraj Marcin , Fabiano Rosas , Samuel Zhang , Yanfei Xu , Jinpu Wang Subject: [PATCH v2 07/10] migration/rdma: Sanity check RDMA_CONTROL_REGISTER_REQUEST on buflen Date: Thu, 20 Aug 2026 16:03:19 -0400 Message-ID: <20260820200322.3321036-8-peterx@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260820200322.3321036-1-peterx@redhat.com> References: <20260820200322.3321036-1-peterx@redhat.com> MIME-Version: 1.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H2=0.001, SPF_HELO_PASS=-0.001, 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 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 @redhat.com) X-ZM-MESSAGEID: 1787256291502158500 Content-Type: text/plain; charset="utf-8" RDMA header supports head.repeat on RDMA_CONTROL_REGISTER_REQUEST, which can include >1 memory registrations. The current code did check over head.repeat to guard against RDMA_CONTROL_MAX_COMMANDS_PER_MESSAGE, however it didn't further check the buffer size (head.len) to make sure the received data is large enough to include the repeated entries. Check it. This is almost only to harden this piece of code, in reality on source side QEMU never uses repeat>1.. However since it's a protocol, still keep it. Check the buffer size instead. In case it's not obvious to new RDMA readers: head.len should be the size RDMA has last received, as qemu_rdma_exchange_get_response() checked on it against byte_len (which was further fetched from ibv_wc.byte_len in qemu_rdma_poll()). Reported-by: Tristan (@TristanInSec) Closes: https://gitlab.com/qemu-project/qemu/-/work_items/4028 Reviewed-by: Jinpu Wang Signed-off-by: Peter Xu Reviewed-by: Fabiano Rosas --- migration/rdma.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/migration/rdma.c b/migration/rdma.c index 683c24ba4d..f7356e759f 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -3360,6 +3360,14 @@ int rdma_registration_handle(QEMUFile *f) reg_resp.repeat =3D head.repeat; registers =3D (RDMARegister *) rdma->wr_data[idx].control_curr; =20 + /* Making sure the register buffers to read are valid */ + if (head.len !=3D head.repeat * sizeof(RDMARegister)) { + error_report("%s: Invalid RDMA_CONTROL_REGISTER_REQUEST " + "(head.repeat=3D%"PRIu32", head.len=3D%"PRIu3= 2")", + __func__, head.repeat, head.len); + goto err; + } + for (int count =3D 0; count < head.repeat; count++) { uint64_t chunk; uint8_t *chunk_start, *chunk_end; --=20 2.54.0 From nobody Fri Aug 21 21:26:30 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1787256314; cv=none; d=zohomail.com; s=zohoarc; b=daiy0ruPrORwsEIPE5C1W+t1VjwlOHciveasi5d6YmPLSqasQlwlClqASHgZhPxBSHGiKK1GnT2E9AesQ6YrA+bTA5EYo8Ku6sfax4/OAdnv3dRzEfuS9SYqakuW7oPPBgtxosfY3RnsrEUsacBYKCSKkGWLk1koH8WeKE6Vv1Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787256314; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7e4UzT6JNFf1gbVzRxqbC6slkWmF8FAlkw0HoK6/8KI=; b=VRcM3pgxVCsKjsw+L3mQECbwnKRZwpkbD3Ljt3phn59e9QGxd/SwA5W09DlFfqk4aRxf3xt6pMZTykeNlEuyl97TQIZFu+t/z0ov26zpJnCJah8xsEEpRQRoEyCEk4aV2wm7JzDBNaXSdUve3UCG1MZrPovhzBnRx/BN+47mi/g= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178725631438559.01238093425036; Thu, 20 Aug 2026 13:05:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx8ze-0000Kz-0c; Thu, 20 Aug 2026 16:04:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zc-0000Kk-BQ for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:04:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8za-0005OD-Mm for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:04:04 -0400 Received: from mail-oo1-f69.google.com (mail-oo1-f69.google.com [209.85.161.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-557-x0dBJUN9O96ly7h2zNqChA-1; Thu, 20 Aug 2026 16:04:00 -0400 Received: by mail-oo1-f69.google.com with SMTP id 006d021491bc7-6a17baa4d18so460567eaf.1 for ; Thu, 20 Aug 2026 13:04:00 -0700 (PDT) Received: from x1.local (bras-vprn-aurron9134w-lp130-03-174-91-117-74.dsl.bell.ca. [174.91.117.74]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6b13cebeb2esm6181314eaf.10.2026.08.20.13.03.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 13:03:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787256242; 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=7e4UzT6JNFf1gbVzRxqbC6slkWmF8FAlkw0HoK6/8KI=; b=JX/0vE40YBclYkcPX1K+YCfiHarybLRTqo1dtfPB00OTtE/zED4QqrSpUn8HylM4aTFSII 6aqT6Y+t6AMxvTQjf7+mhHOB1qqlxSWGzB1RQ65CWZLsXpZpJ4gBB3AKHIB4w6MTAnK6IP QwCXkL0qq2CZcvC5+HY5HgfJhnfiraU= X-MC-Unique: x0dBJUN9O96ly7h2zNqChA-1 X-Mimecast-MFC-AGG-ID: x0dBJUN9O96ly7h2zNqChA_1787256240 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787256240; x=1787861040; darn=nongnu.org; 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:content-type; bh=7e4UzT6JNFf1gbVzRxqbC6slkWmF8FAlkw0HoK6/8KI=; b=DabS85nEe0ETAmt2WCT8702twtmMgFvA/T6v7Wt5nxGm8L76ZY9JdTbcNPKTyyAINA JerHLfTpOJt3hhKae/3wsS3t3+ENjz34aMs1GmXfpzk6cIOoRZTyPmKFWFtB7O1fL4J/ 283DztBu63N8nkXo585Lao13WtTU4bRhIAkrm49qS0vGghbxaDH7IIX9ZdF7OHzvvdKa GW/hEMRy8SVckekeowHYA5LlL1ama81XGnUOB9NCP52EACh7tRajhEdjxZmJ2GIxHqsS COUR8Z9mVGUlEm4mrlkM9b/GIMbNeMoc6Rhx9iN2ob34D4fpODMtpRVnpjF6aFZJHPBU rKzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787256240; x=1787861040; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=7e4UzT6JNFf1gbVzRxqbC6slkWmF8FAlkw0HoK6/8KI=; b=e/blM0W76jZvblHRZHehj4HXmCYAPNPiwOYOL4qGW8gRKBZkkD8/J3ErvKApBBOezx U6kb6RvIcTsR6KbeoczZKkkbhJbn+z1irOrqU3xxO5W6GZGCSwaiYj4kdYhj3ufh46Hn m1wB4SiNeDHqJ5Aty2JzdlEiniZl60bc2U256mbKjBDjlihV5cAXv6bR7N9oLBfH4VJ2 yhheT3ZL2AHHVUvLU47AU+pNKs4DCfsHcaiEMqlGCfiZWa0OoRtwUbxKWRX5yjm1qflS lEUzRvp9hWgZclImbfdtjj5TMkCREFLpH7Gt342/mlvi4svbx6ZtM2Gd3gUziKLXXH/q egrQ== X-Gm-Message-State: AOJu0YwPJOLb6AtJkTUP+Lh/U87Mjgxqn4z4Mgfm3li3FBVh2IKzOfiO lJ23NEY1GhpFJBYzykecuoW0Re+m4y68SNDuGLkbbz7+GJU9DlFdZ1HrWSYKnEe/2mFjmZWG2Ad ANQHXuvO8sUosK3cFBaGwGvUDfRM0WaiLvlztkO1p5boZE97lXr5lPeqir9Z5L7H0BLGh9cEiM5 MDxp0C6n40f6wNdjgvtsitubP1arDAQroA0r2UjQ== X-Gm-Gg: AR+sD12NSn2JMVvSiME5dvgKbgm6vCmKmQHhf8ce11dIg+bjuPuoIErcYf8LyPmwvHR O41toZri2zcDNLubMyTQAtHyE7CGte12Q8/gp3raRxJc9awc0ndvcmIMv2eQOEhRmJWa61bvyi0 dZHLjQTaaooRCrYQd0RIJ6e2yT+S9t3anEHDXOOD9zg1tK2Pq5GnWSdyavXZXWQCvUAocnKCrYB 3QNq8kbPTxBqNVz5hO8cGhm73RhoyQUyXiPMdZVLFB/jFcC5vZ+zXCs8Zr87tHvlzDxMpbw1bOW cV0ewhUK7379DxsJQdRufIoTg2pHwhpIFfwkjDumNJRSy8sJl2ln+llPeNX0GcRDMJA2x5uuwdX r7YDuRLsVHIlRu5qfrp/Y3EDn2sEHJ0i2UKXxRJsHsidfe3Vx1anhRN4RGNc= X-Received: by 2002:a05:6820:2d05:b0:6ae:42c7:ef83 with SMTP id 006d021491bc7-6b158fc84demr1665709eaf.0.1787256239720; Thu, 20 Aug 2026 13:03:59 -0700 (PDT) X-Received: by 2002:a05:6820:2d05:b0:6ae:42c7:ef83 with SMTP id 006d021491bc7-6b158fc84demr1665632eaf.0.1787256239156; Thu, 20 Aug 2026 13:03:59 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Jack Wang , Peter Xu , Li Zhijian , Juraj Marcin , Fabiano Rosas , Samuel Zhang , Yanfei Xu , Jinpu Wang Subject: [PATCH v2 08/10] migration/rdma: Sanity check RDMA_CONTROL_REGISTER_REQUEST chunks Date: Thu, 20 Aug 2026 16:03:20 -0400 Message-ID: <20260820200322.3321036-9-peterx@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260820200322.3321036-1-peterx@redhat.com> References: <20260820200322.3321036-1-peterx@redhat.com> MIME-Version: 1.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H2=0.001, SPF_HELO_PASS=-0.001, 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 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 @redhat.com) X-ZM-MESSAGEID: 1787256315684158501 Content-Type: text/plain; charset="utf-8" The value received on wire for head.chunks when registering new RDMA regions is not correctly checked. Logically the value can still make ram_chunk_start() (of ram_chunk_end()) to overflow, having a result pointer very small, smaller than RDMALocalBlock.local_host_addr. Add the sanity check. Reported-by: Tristan (@TristanInSec) Closes: https://gitlab.com/qemu-project/qemu/-/work_items/4011 Reviewed-by: Jinpu Wang Signed-off-by: Peter Xu Reviewed-by: Fabiano Rosas --- migration/rdma.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/migration/rdma.c b/migration/rdma.c index f7356e759f..cf6688a4bc 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -3369,7 +3369,7 @@ int rdma_registration_handle(QEMUFile *f) } =20 for (int count =3D 0; count < head.repeat; count++) { - uint64_t chunk; + uint64_t chunk, chunk_sum; uint8_t *chunk_start, *chunk_end; =20 reg =3D ®isters[count]; @@ -3399,6 +3399,14 @@ int rdma_registration_handle(QEMUFile *f) chunk =3D ram_chunk_index(block->local_host_addr, (uint8_t *) host_addr); chunk_start =3D ram_chunk_start(block, chunk); + if (uadd64_overflow(chunk, reg->chunks, &chunk_sum) || + chunk_sum >=3D block->nb_chunks) { + error_report("%s: head.chunks contains illegal value" + " (chunk=3D%"PRIu64", chunks=3D%"PRIu64",= " + "nb_chunks=3D%d)", __func__, chunk, + reg->chunks, block->nb_chunks); + goto err; + } chunk_end =3D ram_chunk_end(block, chunk + reg->chunks); /* avoid "-Waddress-of-packed-member" warning */ uint32_t tmp_rkey =3D 0; --=20 2.54.0 From nobody Fri Aug 21 21:26:30 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1787256305; cv=none; d=zohomail.com; s=zohoarc; b=aKqJafrofy/AXkN/l48QBl6eWCOaE2n5yfUXeBqdLYzNqyqJnGxDhi20TDjHWFigTCBsijY545SZU0yQPLuiz8pXhnaC7eFcdraKjildvHvHP5VS9cLFKWbX/Kn2uh8i9NIw+nZbmxirUKTdvqiPt9WUSBcZXTK8QXFY8hpse3E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787256305; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SEo2eVbCTpmPKnzPC7tEz19MQRMXHP5CDmZv/G66jaY=; b=CX8MWhW7D2LOVeUShRysDlnSXySSxTb9ymmZKqWGH4rLZHe/BTOdqHC2Bb6FWmJQX41K6pyhNYYkO8p813vWjVOdp9L5gKmTDKWHBjhILQmJLa/0oAIHUoDWAhyA+3zojps/K2s4LhW8L4LlSDoyYRuj0MKxctguJBtsLetNVns= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787256305358179.09086434845665; Thu, 20 Aug 2026 13:05:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx8zg-0000PK-IH; Thu, 20 Aug 2026 16:04:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zf-0000OG-EH for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:04:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zc-0005Pj-UD for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:04:06 -0400 Received: from mail-oo1-f70.google.com (mail-oo1-f70.google.com [209.85.161.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-131-RhX88dfhO1aVrbniXVKWiw-1; Thu, 20 Aug 2026 16:04:02 -0400 Received: by mail-oo1-f70.google.com with SMTP id 006d021491bc7-6a17baa4d18so460617eaf.1 for ; Thu, 20 Aug 2026 13:04:02 -0700 (PDT) Received: from x1.local (bras-vprn-aurron9134w-lp130-03-174-91-117-74.dsl.bell.ca. [174.91.117.74]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6b13cebeb2esm6181314eaf.10.2026.08.20.13.03.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 13:04:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787256244; 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=SEo2eVbCTpmPKnzPC7tEz19MQRMXHP5CDmZv/G66jaY=; b=aICI2fEqxoBi7q37s+oDd60GC9UIA2WdmHML+dXhwimXKLzg5ZkUyWIdTFO6TEa3gh/7og BGQ3+uTb+zGivd3dtErTXAB8TMQlVbdEOSISCE7zELyPM0xOr6FtaWHDaa8dZUwxq17e+m 459Nf2WgduW7YecpotO5nEXTaLsTIbg= X-MC-Unique: RhX88dfhO1aVrbniXVKWiw-1 X-Mimecast-MFC-AGG-ID: RhX88dfhO1aVrbniXVKWiw_1787256242 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787256242; x=1787861042; darn=nongnu.org; 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:content-type; bh=SEo2eVbCTpmPKnzPC7tEz19MQRMXHP5CDmZv/G66jaY=; b=qVPywGriuaqaTY5Ex0tgfBRgwEjjR+ck121gJEGHZGwQgPe9l8EiBbVcBME8aglCuu YEcrYe6fSKxWc0D4QoBafiQzialc4ddz9zb/kFyivnW7AN3TQ5+15lsPRqOR7m8RiQ8f Ije0fyKiq45qyDF/wbxMTJFbKKuVIdDbe7TlMG1YnVuj/+GIivabovYAi2XmNMUKIoRu vX+U2yg9u1RWqgFm5oHDcrUbzzAMhFEk5nvNb2n9wTem6nDTTVGWwqLZjHkklo2gyVwl fmkouU7fBZWjkhX3qX2hlHXEwBMseNv7LjjT2FxMrsBnxOzCgMCmuPie55rBJAKopXkr fC+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787256242; x=1787861042; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=SEo2eVbCTpmPKnzPC7tEz19MQRMXHP5CDmZv/G66jaY=; b=A5aRdMfL7Hv5bnen4PgUoCKrB50CI4OevSdOUl0DyXt1T6VGcTCqLCyzyWgRkC20cI OTCGGIg4GZqa4e7z9pLEHBnKJQvWDJ+DyrgkkQC5KuhIKKwl1dXaAkfr4dAWyPKzR/mj /vtJgfI74O2EzYhvS714NgKmgSeYr2+eQARKwAIP9jAkkjwXtIb1iIOd+3lba3nMSaqQ YdE0OzwarC/hhDZNlZy/PAEybf7LhgLZweAvXQoYKpReF1I8oe5SMILRZOIXG5WwRHU3 X7DWWE/sVbcv1ohQ8c7hEz+wtsGZFfNflzJwrPxg6GW4/Prdp0edofLr+fBy3bEDs0Nm 5x0A== X-Gm-Message-State: AOJu0YzgkBjqYWuPYLrkYBTI6fp+cMG0cnJ/qVgVMWdx4TlI+ylaxwsr L31tiAUBAHN0mbKfnF1dedPPMCssAP0u24yUewnnNiHmF2aHxhcEY6P8FRq3PqagtzgXJL7ZYCM WDrmcapA9MRbIuz18xeos8/4FUf9O6w/gmkVVVaMHuRSo48F6o0qLkXqmCuiYjKMMGYhncnQObg v4MIEl5zYcW23JwTW0NPudP2OSDECyb5uSzk9s/Q== X-Gm-Gg: AR+sD11Pqi9XD45uxelX1MrI8OVpRCePwtDvhvwOa6cbzfm8uZtyVSINj+t3WNeEQjB 92PEFPLhlTB1IA/9iyZd6Z2IugAvv3HGxRX0MhIFmKFAIv0klXUBHv/3KWLps4IuV55devtfP/Q t2AITELvRLbd7FG8UFxvIszyZElqO+xQ1zO10dXXyEdFKPXl8JiRO4sJqEePT9nEfN69ZxnyeJG Odd7oprJ/tUXNafiTWLyK/UmcnzELXnRK3BvwKAbG+1+DiGp22onkKu3F/3EKQFyJdIMd6nYdhd RMWNYWFo81Q/Y7VSJMeic3804ll4z7v0PjZqn6gYCCbzqoRyuUC3hRjnohBb8EqhJuvI5wLYmzn XakOQPZgEuHLAKmxwdpslEug9Gqz7J60BdjJsnAtJZmzwu99YQn0Bl7VyOHk= X-Received: by 2002:a05:6820:709b:10b0:6aa:d97f:453b with SMTP id 006d021491bc7-6b1593f3ecdmr1104822eaf.28.1787256241990; Thu, 20 Aug 2026 13:04:01 -0700 (PDT) X-Received: by 2002:a05:6820:709b:10b0:6aa:d97f:453b with SMTP id 006d021491bc7-6b1593f3ecdmr1104751eaf.28.1787256241555; Thu, 20 Aug 2026 13:04:01 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Jack Wang , Peter Xu , Li Zhijian , Juraj Marcin , Fabiano Rosas , Samuel Zhang , Yanfei Xu , Jinpu Wang Subject: [PATCH v2 09/10] migration/rdma: Sanity check upper bound of register MR address Date: Thu, 20 Aug 2026 16:03:21 -0400 Message-ID: <20260820200322.3321036-10-peterx@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260820200322.3321036-1-peterx@redhat.com> References: <20260820200322.3321036-1-peterx@redhat.com> MIME-Version: 1.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H2=0.001, SPF_HELO_PASS=-0.001, 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 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 @redhat.com) X-ZM-MESSAGEID: 1787256307708158500 Content-Type: text/plain; charset="utf-8" Before registration of RDMA ranges, QEMU destination checks for validity of current_addr no less than the target ramblock's start address. But it didn't check for the upper bound to make sure the address is within the size of the ramblock. Add it. Reported-by: Tristan (@TristanInSec) Closes: https://gitlab.com/qemu-project/qemu/-/work_items/4007 Reviewed-by: Jinpu Wang Signed-off-by: Peter Xu Reviewed-by: Fabiano Rosas --- migration/rdma.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/migration/rdma.c b/migration/rdma.c index cf6688a4bc..d8953363fe 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -3387,7 +3387,8 @@ int rdma_registration_handle(QEMUFile *f) goto err; } block =3D &(rdma->local_ram_blocks.block[reg->current_inde= x]); - if (block->offset > reg->current_addr) { + if (block->offset > reg->current_addr || + block->offset + block->length <=3D reg->current_addr) { error_report("rdma: bad register address for block %s" " offset: %" PRIx64 " current_addr: %" PRIx64, block->block_name, block->offset, --=20 2.54.0 From nobody Fri Aug 21 21:26:30 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1787256290; cv=none; d=zohomail.com; s=zohoarc; b=M6pEKqtsLqUJbv3Qax1CV+l/uCPlvhOvSXbRLaqbYVP7lqu6HzoJWutNer8ZCBK20pN93cVmUd9rr+KdX1vqNJ6Jt0E6SgOnbNyfwlYfA10w2W4VePmXQeOhMV9By1Ar6VFrbF+U7+ggqxWDJw7qmdKFXuSaAV3lJNhQa0gZgPo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787256290; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=o/Xkfq+lq3xPoFL/oLLlWrg02F7OVnZ8OwdaPMaK6PU=; b=msRAVId3SPyjjE9hU1VGRiLdjGw49XjrMIQNyBwTVjeO4kj99oeY54pIQlvvlmqqRySMDIs6USXl4JtMf0NrR3lmI31uK0gL9lATHQJ9TeRaCXv6GtP7vhaJFZITLCGQM/pv0gnnDkJs2rvNXfXuLwSIzNoQIX0dijKq+n5V9xY= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787256290949693.1481820503477; Thu, 20 Aug 2026 13:04:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx8zl-0000U6-TM; Thu, 20 Aug 2026 16:04:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zj-0000Sz-GC for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:04:11 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx8zh-0005TG-QO for qemu-devel@nongnu.org; Thu, 20 Aug 2026 16:04:11 -0400 Received: from mail-ot1-f71.google.com (mail-ot1-f71.google.com [209.85.210.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-609-x77qCbzzP_mic0SRf_u26A-1; Thu, 20 Aug 2026 16:04:06 -0400 Received: by mail-ot1-f71.google.com with SMTP id 46e09a7af769-7f1da5e5b06so435302a34.2 for ; Thu, 20 Aug 2026 13:04:06 -0700 (PDT) Received: from x1.local (bras-vprn-aurron9134w-lp130-03-174-91-117-74.dsl.bell.ca. [174.91.117.74]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6b13cebeb2esm6181314eaf.10.2026.08.20.13.04.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 13:04:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787256249; 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=o/Xkfq+lq3xPoFL/oLLlWrg02F7OVnZ8OwdaPMaK6PU=; b=T3XSRik7bKtqM1aNquyRMZVlus4fJ4RRV4WH9yuzxuXrHtudA3q+LlNMJ9R35AV5Km4hZt J/A/9OIaMW/R0uXyFbmlO1adO0/qnC0YUM7/xc07NDMvo/+T0lbQhygVKM8/3ZRBYhccKS NLyR2C+9EHjrBDCHaM2TcqNOOApMJJg= X-MC-Unique: x77qCbzzP_mic0SRf_u26A-1 X-Mimecast-MFC-AGG-ID: x77qCbzzP_mic0SRf_u26A_1787256246 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787256246; x=1787861046; darn=nongnu.org; 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:content-type; bh=o/Xkfq+lq3xPoFL/oLLlWrg02F7OVnZ8OwdaPMaK6PU=; b=Jaj1rCoxmJqQ4jeT3GJdePY6yaQ2XK3epug3pScMpBhaxW/BZjBiH9SFhKZ3V2pqxp kbFldjh62bw3MWFOlwg4cAixPKF6r6ETNjsEiGp42Bd7Zg6+pa9XB5O+QzS32N8VWmE2 r/xsqNKN/ITaAsT/dh0ffKDe52hpHJ5YDFrbyAJZryhYW5LK7dmmFA9M7/6SUZuarHr2 U2Xl/A/GmBFBJyiGHtcBzAM3RxXgtPTf+sM7aY3ohnXJHE/wBsrywrJX8MHYfcmXfFYl ze0QVLs6lZ5g1Gzel6dHnO16i5Jzn9UdGZlw3Jar1SgMSZbXBeb2+75C4hL5Mg4R4A4c L1aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787256246; x=1787861046; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=o/Xkfq+lq3xPoFL/oLLlWrg02F7OVnZ8OwdaPMaK6PU=; b=gtzatQ2JIIF9+MoWs/IxOk4GrWlL3YdM4WPZ0YQGAzpsKpZsjQLgdgpxVvvzX3ob4J 5h0fAp42vV28ozduxp32neUVRSJNUvFAMtDQN49iFccXtTJwIczR+MKBIiguCGQ1jXh3 YY/9kzETb+01biUMX3wM08+RXISM4Y/K2nNT1uVXulZajfUwhzzGfkgIBDi+qK61gmMy A7IH0ILq9e1Vr1bR7cqdd575/vEkkmlJoomgpSVUzsUVLlmGFj1vg3myrS5NBcbG3g81 RX6trXl0mMGWE9ZsFzvWifmLrJQULEuPrViz9blu2PA8Xuhn9IdXgp46q0AA4dPQGc4P 8yxw== X-Gm-Message-State: AOJu0YwriIKqSzCNb0ugNbr4Bkr5R9biEKRez66k2xsXSB/5Aorcbo6v aCdNdxjXQOF6GO4rcLGjadoStb0YFG/waAIuCv8JfiMF/XsxxYSA1jhjNjQwXMfLV8CzRLqc09t 86BLmpLad1uddH5LBCU5KdHpCoeb5XjJs3CksFiDKnjp0Dbh3GELePjJeEiWbhWP6zJze3LNy0d 52+BjWAYAr4/Jzaa3wTNB/GTMKvmJPjDaG+vj0Qw== X-Gm-Gg: AR+sD12IC41qWQOL02UGNyY89+cq7Xh/p99Lil0Ygw7jyVpFDZ0itRI0FLA4ML+Hcgc xcFjJAF4pIGZ6miwCcI4HXL6I3Nt9bJmw4KI+7o6XuK9dlQf7kifqBvprE4lX4Ms8KBOVhHwG2U ESSXTTAvrK7Vj3Om5lmsJMouATvo9/dOFz0LIbbjnqREF0ltHmv5VT7mVCDIgTrBrBib+PW7Uvo wyz8RVShq22SRpIBTGXyGEmx/D4AjcRMZiDP9Mm+hMzeTwQmIhiZgdQUBbRH2yljUSNoygFQmaU yPmuHormfGEJtygnkbO9X082nRUw9D0XatqFcdQIXtf+GqXllU22sjWCkBsxqF9wvW3GqbPuon4 WZnCXllBX3Z+Dslgskf8yM3I7vStTZaAtbJclZ+qPRIZFtuq+uiPPYBdEmLY= X-Received: by 2002:a05:6820:7085:20b0:69d:9dfb:7928 with SMTP id 006d021491bc7-6b1591d56ecmr1170021eaf.3.1787256245699; Thu, 20 Aug 2026 13:04:05 -0700 (PDT) X-Received: by 2002:a05:6820:7085:20b0:69d:9dfb:7928 with SMTP id 006d021491bc7-6b1591d56ecmr1169948eaf.3.1787256245128; Thu, 20 Aug 2026 13:04:05 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Jack Wang , Peter Xu , Li Zhijian , Juraj Marcin , Fabiano Rosas , Samuel Zhang , Yanfei Xu , Jinpu Wang Subject: [PATCH v2 10/10] migration/rdma: Sanity check compress request ranges Date: Thu, 20 Aug 2026 16:03:22 -0400 Message-ID: <20260820200322.3321036-11-peterx@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260820200322.3321036-1-peterx@redhat.com> References: <20260820200322.3321036-1-peterx@redhat.com> MIME-Version: 1.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H2=0.001, SPF_HELO_PASS=-0.001, 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 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 @redhat.com) X-ZM-MESSAGEID: 1787256291504158500 Content-Type: text/plain; charset="utf-8" The offset/length ranges are not sanity checked in RDMA requests, add the checks. Reported-by: Tristan (@TristanInSec) Closes: https://gitlab.com/qemu-project/qemu/-/work_items/4005 Reviewed-by: Jinpu Wang Signed-off-by: Peter Xu Reviewed-by: Fabiano Rosas --- migration/rdma.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/migration/rdma.c b/migration/rdma.c index d8953363fe..e976739fad 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -3198,6 +3198,28 @@ static int dest_ram_sort_func(const void *a, const v= oid *b) return (a_index < b_index) ? -1 : (a_index !=3D b_index); } =20 +static bool rdma_compress_range_check(RDMALocalBlock *block, + RDMACompress *comp) +{ + uint64_t block_end =3D block->offset + block->length; + uint64_t comp_end; + + if (uadd64_overflow(comp->offset, comp->length, &comp_end)) { + goto fail; + } + + if (comp->offset < block->offset || comp_end > block_end) { + goto fail; + } + + return true; +fail: + error_report("%s: compress request range outside range" + " (block=3D%s, offset=3D%"PRIu64", length=3D%"PRIu64")", + __func__, block->block_name, comp->offset, comp->length); + return false; +} + /* * During each iteration of the migration, we listen for instructions * by the source VM to perform dynamic page registrations before they @@ -3277,7 +3299,9 @@ int rdma_registration_handle(QEMUFile *f) goto err; } block =3D &(rdma->local_ram_blocks.block[comp->block_idx]); - + if (!rdma_compress_range_check(block, comp)) { + goto err; + } host_addr =3D block->local_host_addr + (comp->offset - block->offset); if (comp->value) { --=20 2.54.0