From nobody Sun Jun 14 20:02:56 2026 Received: from mail-vk1-f179.google.com (mail-vk1-f179.google.com [209.85.221.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2F50C382365 for ; Sun, 5 Apr 2026 21:32:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775424761; cv=none; b=Hj2dmzbcTv5JzXlKTzJGXNnCRJHyamZ3F1d8x9iWHKtEGeya9f8aDEXdKleMgft7y8OECvkotuI/Fy56ZdoX8Nhug5Jo8OgF/brs21E1MdOGZNZUyQZGTxsh7tJ8B2jvtYTt8Tc11a7ilK6VA1a3teQZ2k3QO2fSeKlbZoX0QFY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775424761; c=relaxed/simple; bh=LGeHUz1nkm0cmVZj4JP3rWQRQUF8C7HFzf77++2/i0s=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=PQsoYqv1x0f6859SMIIeMyIHsNYdVWLFYj9sTaU0HIsWUmNPh5BEH5aRYdI+Xs9evowgh2rUYv5MhYQgH1Qme74mvSgc4BjiO+svsXD83bm6KusHepU6AwLE+et3lDMk7VTC9UvzSJiEkdIf/dy1+D5zxJe02QzcSSI96xu0uhg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=LRG2sBEr; arc=none smtp.client-ip=209.85.221.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LRG2sBEr" Received: by mail-vk1-f179.google.com with SMTP id 71dfb90a1353d-56d93355337so2530762e0c.0 for ; Sun, 05 Apr 2026 14:32:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775424759; x=1776029559; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=hZQLuPBBkhC/cjq6fqBTSFddeeLKb5qHOa+I9HI+Wdc=; b=LRG2sBEr2sdmXQCggazLJ7CsOdGd2WmbhazaLf2kbH5UFGKmpiaUDIopoEOEkBQ6Rh 4R8QIWvRGx4/YM7hMFvN+koLF1LGVaqVTN96j+m+1xvuHZcQS4h1sjR1ynJRkiQaA0si 1Y3g9z8B9rK3lkEZyFJyfTpYR+pl/z54R5a4t6nEak+KuCWehZuPi5JyfZTNy1WAJtT/ uSQoSz7KCry526H2AqPgGebsM03C2qbe1RaEl31gBmdH0Lu764gvbzUSGEgZZgQfSIy6 OELVFrZwPSuapCVIPS42M/eD1UAdingmHRpE6fWASprc5vt0oBZllI0k7eVekpor02WO OCfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775424759; x=1776029559; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hZQLuPBBkhC/cjq6fqBTSFddeeLKb5qHOa+I9HI+Wdc=; b=cBevmbORxlTzmimdo+1rbb7TvRw++OJ4HMzdRwo3/IQ8K5l7bbIBQCsGzNbt181mzA pKD3ZC8ySWqXbeH53oaCsid3KrOK/YfALbUsWUgJYH8t2wBCaWIpNOKpVib6pMPgvpTe qpO5C7ev4gu8hwuUBpfQnvZmxQrqgjWgWcdv7B5OiI1ZyDF/rZQggIiwbeXs63KzQV74 5RDWRVOCQon8LplLY3LLS2NVxia3YNJqNiXEI+vdwbH5wR9UCkaz8OGIJahrhBqU7Z3x ysGdyZ9tlZq2VbIjWow7E1wostQd5nBKAJuJtY8InY+KmhLygh83RJM9PeOCzlwLVO5r SRTw== X-Forwarded-Encrypted: i=1; AJvYcCVX10jnSa3exIKE311ZIWaE+BJBv7gx3O95gPO4e+1Rz0wOoP7217MSG7cEYRSITSj8zGft2AJqfR6uv6I=@vger.kernel.org X-Gm-Message-State: AOJu0Ywz5UK68w7L6USxWFcHY3iq9lzNKL2EHddqi3fSpSlKWtRPvAeY CPQtRLZcGj4BzfGkamcBZUWAagZbFwnuk8BYCzonkDoRjdKec+NnZKGv X-Gm-Gg: AeBDieut7WarrZFMMGPOpeooNXpfN+c/7slS6N+sszoXdJ0aDI3A83W+qliuCsR+6Pd a7krBwH7+Ff5t3Ja0rd6gi7ewfD3mrVqXCNo6lAo5DBBBXESvsBziqi+lPyjF7K3b2baP3/Ukj+ iThe6T0cpW1hrLb0zMkTN1l0N4xmZZrX7M4Im6MinoZMAU6BgfyCYETLrLBaW3KguYydZRmprEh Mjbz/OAzF7b/SxK/tW0ebNarZIxMflpOE1UbgKOjXdzcHo7AWlyaw7rLboCKj/z9Qv5yZ9ONA6G 0zYzXREA9vWoRP1md4pYOSl91t13Dl2CMSSKnfGJl2/Sm+wkYvUFxvaEtoOivvDM1fqMI5e6vEY qfZOl8vBZQBkYynUUuxsjjRsC9PKJRKCQmveuRxLab4mQbGd05YuB3aPfQKoeDian499mF4muPv KRZrMvEOK00x9jXkNfQZU1k59Nx7lVDLc= X-Received: by 2002:a05:6122:829b:b0:56b:1eb:d396 with SMTP id 71dfb90a1353d-56daba2a7efmr3826650e0c.14.1775424759106; Sun, 05 Apr 2026 14:32:39 -0700 (PDT) Received: from luan-macbookair ([177.235.195.67]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-56d9bc9bc41sm13790501e0c.11.2026.04.05.14.32.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Apr 2026 14:32:38 -0700 (PDT) From: Luan Haickel Araujo To: david@kernel.org, mst@redhat.com, jasowang@redhat.com Cc: xuanzhuo@linux.alibaba.com, eperezma@redhat.com, virtualization@lists.linux.dev, linux-kernel@vger.kernel.org, Luan Haickel Araujo , David Hildenbrand Subject: [PATCH] virtio_mem: add bitmap_test_range_all_set/zero helpers Date: Sun, 5 Apr 2026 18:32:10 -0300 Message-ID: <20260405213210.108533-1-luanharaujo@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Encapsulate find_next_bit and find_next_zero_bit calls into helpers to verify if a range of subblocks is entirely plugged or unplugged. This improves readability as requested by the TODO comments in the source code. Validation confirms the change is binary-neutral on ARM64, with the generated instructions remaining identical. Suggested-by: David Hildenbrand Signed-off-by: Luan Haickel Araujo --- Hi David, This is my first patch contribution to the Linux kernel, following up on your TODO notes in virtio_mem.c. As part of my learning process (LFX 103), I verified the change in a QEMU (KVM) environment with test_bitmap. I also compared the generated assembly on ARM64 and it remains identical, confirming the helpers are binary-neutral as expected. I noticed these helpers could also be useful in include/linux/bitmap.h in the future. If you think it makes sense to move them there, I'd be happy to work on that in a next step. Looking forward to your feedback. Luan. drivers/virtio/virtio_mem.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/drivers/virtio/virtio_mem.c b/drivers/virtio/virtio_mem.c index 48051e9e98ab..e94e30af3a5d 100644 --- a/drivers/virtio/virtio_mem.c +++ b/drivers/virtio/virtio_mem.c @@ -538,6 +538,22 @@ static void virtio_mem_sbm_set_sb_unplugged(struct vir= tio_mem *vm, __bitmap_clear(vm->sbm.sb_states, bit, count); } =20 +static inline bool bitmap_test_range_all_set(const unsigned long *map, + unsigned int start, unsigned int nbits) +{ + unsigned int next_zero_bit =3D find_next_zero_bit(map, start + nbits, sta= rt); + + return next_zero_bit >=3D start + nbits; +} + +static inline bool bitmap_test_range_all_zero(const unsigned long *map, + unsigned int start, unsigned int nbits) +{ + unsigned int next_set_bit =3D find_next_bit(map, start + nbits, start); + + return next_set_bit >=3D start + nbits; +} + /* * Test if all selected subblocks are plugged. */ @@ -550,9 +566,7 @@ static bool virtio_mem_sbm_test_sb_plugged(struct virti= o_mem *vm, if (count =3D=3D 1) return test_bit(bit, vm->sbm.sb_states); =20 - /* TODO: Helper similar to bitmap_set() */ - return find_next_zero_bit(vm->sbm.sb_states, bit + count, bit) >=3D - bit + count; + return bitmap_test_range_all_set(vm->sbm.sb_states, bit, count); } =20 /* @@ -564,9 +578,7 @@ static bool virtio_mem_sbm_test_sb_unplugged(struct vir= tio_mem *vm, { const int bit =3D virtio_mem_sbm_sb_state_bit_nr(vm, mb_id, sb_id); =20 - /* TODO: Helper similar to bitmap_set() */ - return find_next_bit(vm->sbm.sb_states, bit + count, bit) >=3D - bit + count; + return bitmap_test_range_all_zero(vm->sbm.sb_states, bit, count); } =20 /* --=20 2.53.0