Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp2662315rdg; Mon, 16 Oct 2023 10:48:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHPd5RjytayN31b6XiQsP3vTh5g+ffRfUrjLPoXf6gcCvMdz57xhjIJPbc4Mg6ApVCiuxrs X-Received: by 2002:a05:6a20:5488:b0:159:f71f:4083 with SMTP id i8-20020a056a20548800b00159f71f4083mr34279137pzk.6.1697478534398; Mon, 16 Oct 2023 10:48:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697478534; cv=none; d=google.com; s=arc-20160816; b=XsPbSnM5znZw4y7IbC4Lp6+3eMvq2i9UBBuKQuY5iBNSVmvSTEvPnUS51bMpCGPdLX sPDUfljE8ml28G7PAgox1eE10uNFRLsevs5XDl90CZo5MezdBn76bztRdtqLa3XuBxQy 4T/rD+/9BVMiNuoH0xuVt5VLmc8DrrOJXWns+N8buS6446MZqji7tSOQ5f9piO2A1xVO OGIpY1TD1vQwwsRkUDZrUM4e63auv4JXT61Rz1JMWzFO2NeRM3WCX6ySujR/n7GHeB+4 tw7j0ZR/KEHg8dXc52XHvphNbpivp2o9MvXpMEwbiNykjRMQY430jcbpEDPlg10p1o7E xWpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=6Gni6mzvaBaFKxuMxn9hZgE2UC6/dQHw9AadxVgtVNo=; fh=eMPbq8pfXntN/rxYakyI+p9dvEeD6XJrSvONcm+H9Bk=; b=bAu2zbw7/TchgdLA5Q9JKeq8YZix1KGtECSI9jQcLE8Aysv9AP/uqugqiCCaO/SvlO tNG7v/D9UhDtTVsueFOEnxrnypOcTs31UY7Wh6efeqNmycalxdGgbUplMyUBX1iQN00R sV1q4DOdn26AFBOOPOKt4RnxtR9X7kB2A0pypduGXSYY3xsZCAr1w2HD/NU8nfaiSsye W2fuoZ8HNam/x2thnr+xXBw0GUNdGVQ9tsYN/GmfzFOuv78RJoUl7TFzVObQ+i5h3KFa AejJkY425mUO/P561qGP3uVPfu7Lm+OdrTv/SjAOA1d3CQMx5yox9AcozbbM/zcN94qR xi8Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=hrNRjp3Y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id q24-20020a63f958000000b0057cbd803b30si10837759pgk.654.2023.10.16.10.48.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 10:48:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=hrNRjp3Y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 3E9A7803BABA; Mon, 16 Oct 2023 10:48:47 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231675AbjJPRs3 (ORCPT + 99 others); Mon, 16 Oct 2023 13:48:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58116 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231611AbjJPRs1 (ORCPT ); Mon, 16 Oct 2023 13:48:27 -0400 Received: from mail-yb1-xb33.google.com (mail-yb1-xb33.google.com [IPv6:2607:f8b0:4864:20::b33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 062099F; Mon, 16 Oct 2023 10:48:26 -0700 (PDT) Received: by mail-yb1-xb33.google.com with SMTP id 3f1490d57ef6-d9a7a3e17d1so5600259276.2; Mon, 16 Oct 2023 10:48:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697478505; x=1698083305; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=6Gni6mzvaBaFKxuMxn9hZgE2UC6/dQHw9AadxVgtVNo=; b=hrNRjp3Y8049a1H5L///I9LZfu0qTi+gWkje9FexowkWG2OadlQHJoBSUB5+RyAcHR tABGr97G0FYH6oYe/B0u1wgMc+gW16JOvhvk62PUIXkvGiYDljewxwrN7PqFb0e/XMGg ijWpx0SYdRk68w1sPBG6H7fD4BK48LJdV5SNJw8gbKj9u5+yhqOS1mEBzZhl8CAZD2NN CbFVEUE1q8fsgUHHhVTUQAVee/RBgfyvdLUjBb8qqJ3nH8WMZ+Y69R0+yrLK0vWhlwVS BU/8bjRUHmMJ2SF2+sAfHzkuprXvPnSZv10lGllwNcLMtWzovJGhSRk/fwGdzy1I+C/x EjQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697478505; x=1698083305; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=6Gni6mzvaBaFKxuMxn9hZgE2UC6/dQHw9AadxVgtVNo=; b=k/iMZGgIYr0oRy/BuAYRdz8RqbSEgxCbW6P7dM9g7dUcZu7u+iiT0InZgS+jhkGgyz zjYYKQfpmEdBnNi7i8bIIQjG9bnNdLy1RB4K4PB2XDn1URyaiQSUD5fvTjqjQ9BYkWHY nzRUg01Y0uK4o68mMRejhEVekUu2/4/UVyT2jOtAZcvd8Wk+zCB671vAWuBxNqSCzCqc YcfKc2rgQeLUISgwUHh+vj2DG2X+bWGqP1zchGlOFTfiaslilW8mgsd/Fy9xrxbJoreA 0yWYplHtBCTMJXH3bzPTsiZ1eE8wMrAKWbATHUbF586AmtRx5XoEDqFX6x2DACKci3oh 934Q== X-Gm-Message-State: AOJu0YyR935g6RMJ3bseCFJCQuIi9vnC1+OfRh+BooZSVgVRk7bVoLqM O3mnbg1hFlHj1BZarT0BfF8= X-Received: by 2002:a25:3742:0:b0:d9a:4a5f:415d with SMTP id e63-20020a253742000000b00d9a4a5f415dmr18010718yba.0.1697478505154; Mon, 16 Oct 2023 10:48:25 -0700 (PDT) Received: from localhost ([2607:fb90:be80:2b9:64a5:5a0e:5435:bd4]) by smtp.gmail.com with ESMTPSA id q17-20020a25f911000000b00d20d4ffbbdbsm2775571ybe.0.2023.10.16.10.48.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 10:48:24 -0700 (PDT) Date: Mon, 16 Oct 2023 10:48:23 -0700 From: Yury Norov To: Alexander Lobakin Cc: Andy Shevchenko , Rasmus Villemoes , Alexander Potapenko , Jakub Kicinski , Eric Dumazet , David Ahern , Przemek Kitszel , Simon Horman , netdev@vger.kernel.org, linux-btrfs@vger.kernel.org, dm-devel@redhat.com, ntfs3@lists.linux.dev, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 09/13] bitmap: make bitmap_{get,set}_value8() use bitmap_{read,write}() Message-ID: References: <20231016165247.14212-1-aleksander.lobakin@intel.com> <20231016165247.14212-10-aleksander.lobakin@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231016165247.14212-10-aleksander.lobakin@intel.com> X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Mon, 16 Oct 2023 10:48:47 -0700 (PDT) On Mon, Oct 16, 2023 at 06:52:43PM +0200, Alexander Lobakin wrote: > Now that we have generic bitmap_read() and bitmap_write(), which are > inline and try to take care of non-bound-crossing and aligned cases > to keep them optimized, collapse bitmap_{get,set}_value8() into > simple wrappers around the former ones. > bloat-o-meter shows no difference in vmlinux and -2 bytes for > gpio-pca953x.ko, which says the code doesn't get optimized worse. That's just amazing! bloat-o-meter itself doesn't say on optimization, but in this case I think that BITS_PER_BYTE passed at compile time allows to generate just as good code with the generic bitmap_write/read(). Acked-by: Yury Norov > Suggested-by: Yury Norov > Signed-off-by: Alexander Lobakin > --- > include/linux/bitmap.h | 38 +++++--------------------------------- > 1 file changed, 5 insertions(+), 33 deletions(-) > > diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h > index 2020cb534ed7..c2680f67bc4e 100644 > --- a/include/linux/bitmap.h > +++ b/include/linux/bitmap.h > @@ -572,39 +572,6 @@ static inline void bitmap_from_u64(unsigned long *dst, u64 mask) > bitmap_from_arr64(dst, &mask, 64); > } > > -/** > - * bitmap_get_value8 - get an 8-bit value within a memory region > - * @map: address to the bitmap memory region > - * @start: bit offset of the 8-bit value; must be a multiple of 8 > - * > - * Returns the 8-bit value located at the @start bit offset within the @src > - * memory region. > - */ > -static inline unsigned long bitmap_get_value8(const unsigned long *map, > - unsigned long start) > -{ > - const size_t index = BIT_WORD(start); > - const unsigned long offset = start % BITS_PER_LONG; > - > - return (map[index] >> offset) & 0xFF; > -} > - > -/** > - * bitmap_set_value8 - set an 8-bit value within a memory region > - * @map: address to the bitmap memory region > - * @value: the 8-bit value; values wider than 8 bits may clobber bitmap > - * @start: bit offset of the 8-bit value; must be a multiple of 8 > - */ > -static inline void bitmap_set_value8(unsigned long *map, unsigned long value, > - unsigned long start) > -{ > - const size_t index = BIT_WORD(start); > - const unsigned long offset = start % BITS_PER_LONG; > - > - map[index] &= ~(0xFFUL << offset); > - map[index] |= value << offset; > -} > - > /** > * bitmap_read - read a value of n-bits from the memory region > * @map: address to the bitmap memory region > @@ -676,6 +643,11 @@ static inline void bitmap_write(unsigned long *map, > map[index + 1] |= (value >> space); > } > > +#define bitmap_get_value8(map, start) \ > + bitmap_read(map, start, BITS_PER_BYTE) > +#define bitmap_set_value8(map, value, start) \ > + bitmap_write(map, value, start, BITS_PER_BYTE) > + > #endif /* __ASSEMBLY__ */ > > #endif /* __LINUX_BITMAP_H */ > -- > 2.41.0