Received: by 2002:a05:7412:a9a2:b0:e2:908c:2ebd with SMTP id o34csp436641rdh; Thu, 26 Oct 2023 06:29:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IESSphrLvQ6jEIQTPpDZ9XqI/D4qTj92pN2fuIjEW31VfshfBnMmLeB0Hz4vHYsTiHA3e/z X-Received: by 2002:a25:400e:0:b0:d9c:cc27:cc4a with SMTP id n14-20020a25400e000000b00d9ccc27cc4amr16853751yba.32.1698326956712; Thu, 26 Oct 2023 06:29:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698326956; cv=none; d=google.com; s=arc-20160816; b=qUuCETxKUtTMwmKzIBFYLWMDa5rS8QkdWtn7dj9MdK9dEroCUhQz9BLCUGbBtKrToI 3ZijhLnhLJE55hb0CTsofbYCrbeh20Kqd1V0lNQEQIwpJNNP15jg7Q6woxepJZSKF22+ wZV34NCAahAx30ZRDysY03b8YIkl7spM/IDQnf1bZAoseDnwFvYGzyPstlLsCLonvBjA 3Jpa9KNLR1RBkYfsRz+bWQzZcpJnvckhvice5+TROOYM6ywVaflsWL6kTu8PP9YbvFMH HZ4h5etX1Noo/e6e+Wrv3605om18wxTQhVZ2dBLktRmAE8oUP5nrWsexrcCORtbeIS6G 33AA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=snTafHfsgjf8lsDX9AHXwAIrIsctXzmxm7Qr74Zy0VM=; fh=aDKTtk0wMEhyUKsVAswUX11tS7Lzh6+UAICZK7HGi50=; b=Kziy8O2GEvuuM4fWrTDe3ZMIgj70k/+CjSnKN1uMNdvhzFaTpgnJN/g99+zcnE0BEb mwSIX6bql5LsG/dTUYk4n3JKw5roOx5fXULH7KbjJniHz82kkZsHheDYtEInPyZXUO/L oC8GNsOSPHxTWzBe7XiEttJxUyg2yb5NmUdeqt0mLkHlRjM4IA4JBPpp6Kvn24BNGeN5 dfJYV2fQ99/sSphmE4HM3SqaNtuzN+vmXClMVUB0MjEcWHNpDY1J8usUGin0X42/WHJM hmB+reUWJZg5WWPBjDHDJZ2yp4BLXoHHoVs3JrIVYduc5A16qN2IHw3ArnMGZI0H5FTm yQmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=zNWfqiOe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id o17-20020a254111000000b00d9aed39121dsi14308891yba.263.2023.10.26.06.29.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 06:29:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=zNWfqiOe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 464FA821A142; Thu, 26 Oct 2023 06:29:15 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231173AbjJZN3K (ORCPT + 99 others); Thu, 26 Oct 2023 09:29:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51972 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230413AbjJZN3J (ORCPT ); Thu, 26 Oct 2023 09:29:09 -0400 Received: from mail-qv1-xf29.google.com (mail-qv1-xf29.google.com [IPv6:2607:f8b0:4864:20::f29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8A264AB for ; Thu, 26 Oct 2023 06:29:07 -0700 (PDT) Received: by mail-qv1-xf29.google.com with SMTP id 6a1803df08f44-66d0252578aso6550486d6.0 for ; Thu, 26 Oct 2023 06:29:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698326946; x=1698931746; darn=vger.kernel.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=snTafHfsgjf8lsDX9AHXwAIrIsctXzmxm7Qr74Zy0VM=; b=zNWfqiOe7r2Hq1mTkgbvHS/FQkp0HcwaCfFfnLbTO3AwR4mpnR1P/+NxaYck5QaUeE qjA7vEpX/97tLhdh26yc5dfY+NHRRaaIb43HsnkqwW7V8zcLR2C/fFRxrPb1ClzQVhcK ZxLUx6/OKvmpj1S7ZFeoPc5Tlz30RcjCQbDpaNwu5J/Zj/FacrPkzfUpbegcLWPVSgTh 5lmJSvKl4GPIs9IRYkqlgjaJv9yjY3cc1EUq6lPJvppUpCiLbUxRHptpOVYn35qfGx+x +GxwfpbsJOqFFldelI+YjPPNtjJZrqtlwPKSStDJAFUp0scdpHE0wnfUMmZBKrHfipdA qhTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698326946; x=1698931746; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=snTafHfsgjf8lsDX9AHXwAIrIsctXzmxm7Qr74Zy0VM=; b=hDQnfSEeb+MEm7klTymVMFWKbPTHqf7PH+8O2yfNFfo4inqZULa9Bzn4J/ZMgNn8i4 9g8mqrzjbMgOi/3w51VtyTbka66JYpNykw+DjKXHy3tV5YNop9i9/HZJMB2g0H5XtZcz rnuFqFhwmbZWIHgs7mXNEw3ozdKR5ZCPNmgsJhhq6DAZKIng0T4n1lhcJEOvtn64jHON XT4WS8GjkUmuotZgMQFcv19wUbfMp3l8ehGjMAyrkGdhjphPZHhyGMrfgkxGpSbhhZ1D w6LgbOgI0joSxuLEf14ucuP4ByXZk68kPf83RjZc14qQkwTTKRYWDdYXTFICWSSGP7uL vceg== X-Gm-Message-State: AOJu0YzeaFHw66BEwzKspVZoditEjE3WTYrgxH5fKVfEQjzh86b45Sum pq8Ii37hRdNbVDfUx1nVrlv76Blof2V5GmLBosHMcw== X-Received: by 2002:a05:6214:d8a:b0:65d:6a5:1a3f with SMTP id e10-20020a0562140d8a00b0065d06a51a3fmr24310498qve.43.1698326946425; Thu, 26 Oct 2023 06:29:06 -0700 (PDT) MIME-Version: 1.0 References: <20231025083812.456916-1-glider@google.com> In-Reply-To: From: Alexander Potapenko Date: Thu, 26 Oct 2023 15:28:25 +0200 Message-ID: Subject: Re: [PATCH v9 1/2] lib/bitmap: add bitmap_{read,write}() To: Andy Shevchenko Cc: catalin.marinas@arm.com, will@kernel.org, pcc@google.com, andreyknvl@gmail.com, aleksander.lobakin@intel.com, linux@rasmusvillemoes.dk, yury.norov@gmail.com, alexandru.elisei@arm.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, eugenis@google.com, syednwaris@gmail.com, william.gray@linaro.org, Arnd Bergmann Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 26 Oct 2023 06:29:15 -0700 (PDT) > > * bitmap_to_arr64(buf, src, nbits) Copy nbits from buf to u64[] dst > > * bitmap_get_value8(map, start) Get 8bit value from map at start > > * bitmap_set_value8(map, value, start) Set 8bit value to map at start > > + * bitmap_read(map, start, nbits) Read an nbits-sized value from > > + * map at start > > + * bitmap_write(map, value, start, nbits) Write an nbits-sized value to > > + * map at start > > I still didn't get the grouping you implied with this... Given your second reply, I can disregard this one, right? > > > * Note, bitmap_zero() and bitmap_fill() operate over the region of > > * unsigned longs, that is, bits behind bitmap till the unsigned long > > ... > > > +/** > > + * bitmap_read - read a value of n-bits from the memory region > > + * @map: address to the bitmap memory region > > + * @start: bit offset of the n-bit value > > + * @nbits: size of value in bits, nonzero, up to BITS_PER_LONG > > + * > > + * Returns: value of nbits located at the @start bit offset within the @map > > + * memory region. > > + * > > + * Note: callers on 32-bit systems must be careful to not attempt reading more > > + * than sizeof(unsigned long). > > sizeof() here is misleading, We talk about bits, BITS_PER_LONG (which is 32), > here it's better to be explicit that reading more than 32 bits at a time on > 32-bit platform will return 0. Actually what you need is to describe... > > > + */ > > +static inline unsigned long bitmap_read(const unsigned long *map, > > + unsigned long start, > > + unsigned long nbits) > > +{ > > + size_t index = BIT_WORD(start); > > + unsigned long offset = start % BITS_PER_LONG; > > + unsigned long space = BITS_PER_LONG - offset; > > + unsigned long value_low, value_high; > > + > > + if (unlikely(!nbits || nbits > BITS_PER_LONG)) > > + return 0; > > ...this return in the Return section. > Parameter description for @nbits actually mentions BITS_PER_LONG already, so would it be ok to drop the Note: and extend the Returns: section as follows: + * Returns: value of nbits located at the @start bit offset within the @map + * memory region. For @nbits = 0 and @nbits > BITS_PER_LONG the return value + * is undefined. ? (Yury didn't want the zero return value to be part of the contract here).