From nobody Mon Sep 28 01:12:24 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=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1785690292; cv=none; d=zohomail.com; s=zohoarc; b=a0tDyG6eH6Zc1wQ31kT8VBwiGam6wwnHzwThAo1WEtj/Q9LtSbZFvLH/z0p3FGjEfJmq1pm+CZJSyiWEZF+7ESh5di0JcT0Fd8IOh3GfxcxntJxAwqXZqRMMnjkfEMMnp6kWCjaIUm2UPqSwJnWom39z0GvIua01iTggDI3GN/8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785690292; 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=eTuO9kwkWQSNmODPQFPuOrz0Ciy9WrXZe0TuYOqtle0=; b=OvICqEyeEMlSufOXx1VBuy8EAKc8MRlxkErgz/0EjY1K2AztAitZrjM7i7i1D5rW97aUyx/GJAdzHDNeJHGUsEFJJKr6GIWUGN4PFNPL6Wzss+J/3QzuD2wGpYoGkC+7RGrArKfHKy3pV3mgv69hm8FDLKFSJvxjNEg7fZ47FZM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1785690292602235.62145695694392; Sun, 2 Aug 2026 10:04:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wqZbh-0006Tc-GV; Sun, 02 Aug 2026 13: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 1wqZbf-0006TF-NE for qemu-devel@nongnu.org; Sun, 02 Aug 2026 13:04:11 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wqZbe-0003R3-CI for qemu-devel@nongnu.org; Sun, 02 Aug 2026 13:04:11 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-8486ac3f347so3421219b3a.1 for ; Sun, 02 Aug 2026 10:04:10 -0700 (PDT) Received: from phi.nguyendp ([116.86.160.247]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13fab132cc4sm22982126c88.2.2026.08.02.10.04.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 10:04:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785690249; x=1786295049; 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=eTuO9kwkWQSNmODPQFPuOrz0Ciy9WrXZe0TuYOqtle0=; b=r8K66EWJ7vCo/Z6UDg1zE3mMbdL4JuYYB2lCBM5Tr3wNAZiKRfG2URdPjNBsvJ76wC 1di8K1VHQFcZ9SdaCGZ1AdTfybLMB2vm26M5zotM+W89eX6sLaYEBtt/xdNlCh8uy/0W F6N3pCSfLnwFMN4U2ketPVAK3oKfCn30yhLejibJGEajQuD/DgDoiPQPetsFP1EFuqdQ HytCdkmwv7wdbO7ukMisUXiFMlQU6/7dUhlxAlnhhF0tOFr8bDeKumP9/Vd5MtkY9Gtw JrpdrpStNnHFAeXg/gjz2/HDykzYvDsc/QmJPn5JiVYchbHSMx7l/SJZiDZ5y7PuRv+d JObA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785690249; x=1786295049; 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=eTuO9kwkWQSNmODPQFPuOrz0Ciy9WrXZe0TuYOqtle0=; b=hXWOlbt7xHzX1mQWTDYjwpgpZy5YpJxKAT/ENSVU+JwwquJIh/lg4wh8/U6VKMfXZW LZgWz9bASogIAEX4fCgLxD3xGWxXH5wK5CL2yFqJ6+VzAxHsGfI9Kab5wnNppMzHlKV+ 7mVXt9jqI++PBNoZw6QuUhDHveSV+s1pRD+935puCVYAMSi0CQ3FDcaP9EMp+A/gu9lr YyXo+ichhabLWh1tWFXtzgHOAkSGjoOTRwzEqY3tG1bFwN2dOqL0KvGz2ALt7U97Ib4A 4MWoR/7HFPu6VBJSEE+2MQk1wY9ATS/2eGJXF6bnz5u8aDPE+joXBItkI0j5A3vJLZf4 4HPw== X-Forwarded-Encrypted: i=1; AHgh+RqVR6zrcauT5rlIxKbO6IzCOHBl7tKbPXauIs3td7bU51s1Ee8yFMuEiOpGK5s2ur78kcNcr6inv5aI@nongnu.org X-Gm-Message-State: AOJu0YxnLHX+i0VjOgTvaIxIa6LTP+9iVq4osUNvxgbzqizi3SBzU/l3 41kCF2Wk1ej0cKBwsbL02MYqPDQHeivp5MjicX7A5mga48pd/0rBwDZb X-Gm-Gg: AR+sD114ZXl6D2bFnaf5qs96hTnzqYLUkxea6t0CoQESuHgB5U6SyJE49K0pJyHoOAN bfwP46JmhAZll+Rv8me4rs8KBlupNXWjfVumHVO2AWXPE7MZx7rYjz8qc/iH5tGc4mXR9y3tQ5J oYZnoi+GDNDCR3d5TWGFKt1Xe/9k5DI+pz+zSsAOBv0cpHp9NmI7L7t3XN4oWHf4Y8l2ry8Zt+D mdIAB8C8UyjxEygIoYBQzicb6ut3T5icAXXAJG00ni0xthzjSOPZVhut6ehp9A5okcBLuksvKWl 88pMQjzxoBxBgmF8KayAaNQf5UieyH4oE9xdU2gCMCMGHpFpa8yFln/o+hsKQLZgWhgMiEi5yP8 /edyX5wuPJU4Q9tPPRsvlGJLnCn7K/SqVy1WM7fA8HdQZUFbtLAJrC5vx6cy1LalBr7kQCeWVmd ErTAfXXKVt2ZCjxtRJspTzEefLFHNW6MUgf3QdVtGuPy8lnJIgjscj8Xxwc6eaQw== X-Received: by 2002:a05:6a20:2451:b0:3c3:80bc:1540 with SMTP id adf61e73a8af0-3c91a711b5cmr8040174637.3.1785690248820; Sun, 02 Aug 2026 10:04:08 -0700 (PDT) From: Nguyen Dinh Phi To: pbonzini@redhat.com, qemu-devel@nongnu.org Cc: qemu-rust@nongnu.org, Nguyen Dinh Phi Subject: [PATCH 1/2] rust/bits: Align SubAssign behavior with Sub Date: Mon, 3 Aug 2026 01:03:44 +0800 Message-ID: <20260802170346.3493821-2-phind.uet@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260802170346.3493821-1-phind.uet@gmail.com> References: <20260802170346.3493821-1-phind.uet@gmail.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=2607:f8b0:4864:20::430; envelope-from=phind.uet@gmail.com; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=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 @gmail.com) X-ZM-MESSAGEID: 1785690293291158500 Content-Type: text/plain; charset="utf-8" Update SubAssign to perform a bit-clear operation instead of arithmetic subtraction, matching the behavior of Sub. Signed-off-by: Nguyen Dinh Phi --- rust/bits/src/lib.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rust/bits/src/lib.rs b/rust/bits/src/lib.rs index d1141f7c88..60b63f969d 100644 --- a/rust/bits/src/lib.rs +++ b/rust/bits/src/lib.rs @@ -320,7 +320,7 @@ fn sub(self, rhs: $struct_name) -> Self::Output { =20 impl ::std::ops::SubAssign<$struct_name> for $struct_name { fn sub_assign(&mut self, rhs: $struct_name) { - self.0 =3D self.0 - rhs.0 + self.0 &=3D !rhs.0 } } =20 @@ -443,4 +443,11 @@ pub fn test_xor() { InterruptMask::OE | InterruptMask::PE | InterruptMask::FE ); } + + #[test] + pub fn test_sub_assign() { + let mut op1 =3D InterruptMask::E; + op1 -=3D InterruptMask::RI; + assert_eq!(op1, InterruptMask::E - InterruptMask::RI); + } } --=20 2.53.0 From nobody Mon Sep 28 01:12:24 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=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1785690299; cv=none; d=zohomail.com; s=zohoarc; b=DNpIIVLrvni+Axx3ba35CaWH4zun1I+XArgTdg20Gy41kk9cA0onVtodkjZc8wZmG6iAPE97G9Vurzs6H95WNyWHMLtMqmc2PR2rsPnuJTux7399Ul4hiPdWCxQEg1IsdTQnCDxPKNEiwwCdd2Q2M6ellN7NW2bYO4VZdRW+PwA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785690299; 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=IJNYg3gDw8yzjUzuXDYu3JnAfxkmY+unI72WmZ+GOvg=; b=K3SERe3IW+J8YD01BFC9IUO/wqcq3dBQ/bLhHfaNWRhzNVAFjJPimuO2C4WRXUb4d/79+DeQbBEqUD/oEems3GRe2GL2zcatF9jfUNejtSbdwDZSy5LHYJVFLoynvvmRc7dm62Dl6SCE86TYAz+5dT0lffhdAjDlcuVt3i4hx9k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1785690299110945.9607094461309; Sun, 2 Aug 2026 10:04:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wqZbj-0006U8-Nq; Sun, 02 Aug 2026 13:04:15 -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 1wqZbh-0006Tg-Kl for qemu-devel@nongnu.org; Sun, 02 Aug 2026 13:04:13 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wqZbg-0003RL-4H for qemu-devel@nongnu.org; Sun, 02 Aug 2026 13:04:13 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-38dfe7eb825so1894137a91.0 for ; Sun, 02 Aug 2026 10:04:11 -0700 (PDT) Received: from phi.nguyendp ([116.86.160.247]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13fab132cc4sm22982126c88.2.2026.08.02.10.04.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 10:04:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785690251; x=1786295051; 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=IJNYg3gDw8yzjUzuXDYu3JnAfxkmY+unI72WmZ+GOvg=; b=rR/UE/PsXw0740dN7HvaDbYKyOssSJDJVJb3TIbry6GTB50imwlY7ngjw8zjZLUA9A zOcikUzRDwTsKdsn90q+u8YP9hXIXANTkMrV+jlAKl8BqXexHjM4Uv8ATXg9YG9WbCGA 9GWP9bEa5mjfneWoDf2XnzaI6hzTqxM1KR8umhiFWgLhxBmAM7lmKSSGxBrehFV9c/hI TKpJsmGgGl7ViVl++yj26af3q7zwfVI4+7n84iNq2IA3K0GxAKBLLsxfwuW+md5YlBqb Ge6l6GugPykc82tEXt/CAtliDhycQzfPzMJWjFF394m9rNayIK4y8uyP0Ea0+qpp/QZL N7kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785690251; x=1786295051; 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=IJNYg3gDw8yzjUzuXDYu3JnAfxkmY+unI72WmZ+GOvg=; b=R7QV4L7pwxcNdPOoL4WaK2SOMZD9S8ZyGJQwNOvompEwolkrAGA7iUGuDicC7iBwpQ PaZVpupQBUEBs/T3dSQH/wRfTUxCXtQJW7nT0RAkiqsd9xS4+p0TWvZl8iz21ZZPgKYq SlrzFzJ+cXH0U+JIxIvKfgASRi6aaGnRNDLpr3tpuBllQ84iBDI0S/xbCK3X6hwKBI4Q evOSHQ5UE8RvO55vL2atrkINJ6c4ZUN97tKSjhJzASBMYcPkQEnj23b8/K6b/LidXwMh QBg2K+lDmJXX69+Atk+JiaCb5mfpj38BKDvO64pYi2Y+1AI2RapdtQyk9KppWp0RmQ07 Ub0A== X-Forwarded-Encrypted: i=1; AHgh+RqLe0yGpW7X0LDzlyRWy0pKJS9c6PHVaHZDNNKqfRPYDJ70tySEeondEECO/Hq7scN6Eyb1Hay4ZyO1@nongnu.org X-Gm-Message-State: AOJu0YwuKQjJx2GOKte7juNKOgG621rLuRZ96qJr95S6y9FxeFVs89gM +kmZr6ttXJnNv7mgg85OzoIV5VNNCdyEVi6Ir7jbD41l8Jo6l0U7LSAN X-Gm-Gg: AR+sD13+2HixGlgAnsMsoYgdbf5+kNqQi+KYR7e3HhnEbWEkanu7yzvkllPSbvqOKBA ZVpGQJROgnozGjC6pLYpUE1UKxWSY0YY4CMC0Rpk+XvTnPv2AFSQ6nRH+SRNN2xAM9Xult5CXR6 FQZ0PPaVX028QIxqiaz1l6lCcFqbReIZz8jdjEqG0ZrEQu0yVkWK8rCnaDpqsV9o7qA/G/J7ByJ UYfsQGB4iccF3Ty2Q7RHfzuNroPgijLj6k0f7Ofrg+HSIzcRgjP14toqXbaWDn43xNLBjdqJBP4 s7NkT9GN8t8ydzlFCyB7VSoWUc3DMTxqRDKiePFLDh0vVARVj7zcb/wrNwUf9BKe6JAx01Jeccs EQIS8cAL0WdYNS+yzuctwqj+Fb1HIrMeqqnxclvSGPi8BwV/Gl3hJp5DLZ6qe21mQWd+JeQ2b0d ZSBKbLAYfFyLBBR5tud02TDa0nVnaqt+LqzPUAUOqpBolR4FeOgWwUmx3GEQS5sA== X-Received: by 2002:a17:90b:2251:b0:38e:524:8797 with SMTP id 98e67ed59e1d1-38fbc438274mr6902033a91.13.1785690250799; Sun, 02 Aug 2026 10:04:10 -0700 (PDT) From: Nguyen Dinh Phi To: pbonzini@redhat.com, qemu-devel@nongnu.org Cc: qemu-rust@nongnu.org, Nguyen Dinh Phi Subject: [PATCH 2/2] rust/bits: Use checked_ilog2() in Binary::format to avoid panic Date: Mon, 3 Aug 2026 01:03:45 +0800 Message-ID: <20260802170346.3493821-3-phind.uet@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260802170346.3493821-1-phind.uet@gmail.com> References: <20260802170346.3493821-1-phind.uet@gmail.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=2607:f8b0:4864:20::102a; envelope-from=phind.uet@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=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 @gmail.com) X-ZM-MESSAGEID: 1785690301262158500 Content-Type: text/plain; charset="utf-8" ilog2() panics when VALID__ is 0 on empty bits. Switch to checked_ilog2() to handle zero safely. Signed-off-by: Nguyen Dinh Phi --- rust/bits/src/lib.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/rust/bits/src/lib.rs b/rust/bits/src/lib.rs index 60b63f969d..5769bc761a 100644 --- a/rust/bits/src/lib.rs +++ b/rust/bits/src/lib.rs @@ -215,7 +215,9 @@ pub const fn invert(self) -> Self { impl ::std::fmt::Binary for $struct_name { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt= ::Result { // If no width, use the highest valid bit - let width =3D f.width().unwrap_or((Self::VALID__.ilog2() += 1) as usize); + let width =3D f + .width() + .unwrap_or(Self::VALID__.checked_ilog2().map_or(1, |bi= t| (bit + 1) as usize)); write!(f, "{:0>width$.precision$b}", self.0, width =3D width, precision =3D f.precision().unwrap_or(width)) @@ -412,6 +414,12 @@ pub struct InterruptMask(u32) { } } =20 + bits! { + pub struct EmptyMask(u32) { + NONE =3D 0, + } + } + #[test] pub fn test_not() { assert_eq!( @@ -450,4 +458,9 @@ pub fn test_sub_assign() { op1 -=3D InterruptMask::RI; assert_eq!(op1, InterruptMask::E - InterruptMask::RI); } + + #[test] + pub fn test_bit_display_empty() { + assert_eq!(format!("{:b}", EmptyMask::NONE), "0"); + } } --=20 2.53.0