From patchwork Sat Nov 18 15:50:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166544 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1240739vqn; Sat, 18 Nov 2023 07:52:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IFoWeBfG5bIbL4H8tnL/7B8x3gMJB9FFfEGSaGegEl9HbPZ4zeSXhrNgNhI4ADmItEcjPTx X-Received: by 2002:a05:6870:c907:b0:1e9:feb7:71db with SMTP id hj7-20020a056870c90700b001e9feb771dbmr3544987oab.36.1700322736680; Sat, 18 Nov 2023 07:52:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322736; cv=none; d=google.com; s=arc-20160816; b=U+Ws44ea6z8d9od7bHJ34Z53ltM4gIiYtSjMM+y8NQ2qelsrXPFdl5YC9NloJzvVXZ QUjBc3KKlkMNur0DMVHIslkLWu8xo1MkdLX3qdvYTLSqAUJORN6GW/J+Gl8VbuXTXSQ/ Xh57C6tWd7imYEsPZIc0Wn/wYENdnAKWDZjv87KCiIPA1CRQZlbzcSHfF5h9gPaX8PFW YWsL5XBBoxraS5LuLlJDTzua26muyAX70om1oRAatgnIgeWxocQExzbJ1kjkdH7EjsNy VWmCooEYRTFJuyzhtH/H5E7UeR8jS7d+hBHcXBOAZQAUIYxkozB1DQnflfGZvS7G6aS0 VzxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=FtFgcsJzlik9FHkciB+wVhA9q1gRoy67qNZRN3dQ8lw=; fh=GMQO6VbexA4bwc0LKYOCM8gMNxMsSvB3XtjEcY3pdlA=; b=xhWdJDaQpVJd+xIsrSnlz9G0lRjeBJzaRLC+3HUW2fI/rJIRGvMWfsn1zAYqURTujB 2bB3bNERRaIUuEWGjuRLId/1PI7jI4cA3v/72pJnsXwsRGABgcqHTQmlVHEOyUY9eAs5 48aANockPnE+EVLZ9G6s0AXJbwwyG/rJ4juJ6+3q4oCsjFSUOMGltCLbsOrq5c5r815a /bLJhZ//57wX15YC8N1isx9OAm9KxcJ5GNOW8pORN31tL2lmEOtTYIXvD7FgvieoHHtu zlRcipKc0JoCfd+wge4xfpuvyQT9w69YtUwaN4GaNzwDJqs3jKFmXJeU3Pn0RpvTBU5i gR4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=UZjC7tBN; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id w4-20020a056a0014c400b006cb6a604979si526037pfu.212.2023.11.18.07.52.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:52:16 -0800 (PST) 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=@gmail.com header.s=20230601 header.b=UZjC7tBN; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 9DD87804E44C; Sat, 18 Nov 2023 07:51:25 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229949AbjKRPvT (ORCPT + 29 others); Sat, 18 Nov 2023 10:51:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37204 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230056AbjKRPvQ (ORCPT ); Sat, 18 Nov 2023 10:51:16 -0500 Received: from mail-yw1-x1135.google.com (mail-yw1-x1135.google.com [IPv6:2607:f8b0:4864:20::1135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8B479D5D; Sat, 18 Nov 2023 07:51:11 -0800 (PST) Received: by mail-yw1-x1135.google.com with SMTP id 00721157ae682-5a7b3d33663so33593727b3.3; Sat, 18 Nov 2023 07:51:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322670; x=1700927470; darn=vger.kernel.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; bh=FtFgcsJzlik9FHkciB+wVhA9q1gRoy67qNZRN3dQ8lw=; b=UZjC7tBNqvQ3LIO2JEbZpu4Q0crbsl24RDzQZGegNn0OPUZtZkCs/29OiPNhN9M6hV LGQfkl6+A4mr1ghE7QlKE5WVMvjzh97Noc6mKXMXAtrCrDeH6mN8x1jMHu+o2H8nuIOU fP7UySeohS+rHUNG1bsyWAblwvz4bsNDaC1OXXy9FuUbcxUUA6Ux7wJZWe9MAV4/jedp xZCqNXd1CqM3KVqezWw7KzonotD6xlPCv49WV9PmhnPNew3jHAaJxyGyXSjqFMUF2Ens /EwmD11tsZ4einav7TJeHBAfpDkqAct0wMmE2O8TT/eSczS7RddMqXulsP/Y25Bxw7/N MgAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322670; x=1700927470; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FtFgcsJzlik9FHkciB+wVhA9q1gRoy67qNZRN3dQ8lw=; b=AYNyWKbpsOhVqyVRgfSGLZYBkgi4+qonyBdzpiqA6V+xDCQAAcpuvE4idFytExulVA dAcFCkKwu1k+3ekNbdAMhfjq/3PVJj8XXOLc11wHTLH4iRJFv4I+WzHGgWo4m9nZ3cah pHM3Q5mh59Mt2ttza1dyvw4V/eNzXs8h/MsIVbsvRrad0aUg71vehFBWgzmDzF7rKbc+ uqBr6f02n0jKguWhofpONka0WbDNJ22aPceP8LK9hkfkx3QIO77Xk78fGjKj39SqOjyY vRMUQhWQUXG7aUZrTbmuoX/nypF0QGVf9UYj/LFirtMTIPhaBNQh6QCxylFlcYvJ/a6J CReQ== X-Gm-Message-State: AOJu0Yysly0aPPgP+HrBgWiIDtZ6UuxLtRUlY5It1T8pzJQGL/yWfVFo XsgfyxzHEA3WHK9NIwZhDeZi63ihhZcdE+4D X-Received: by 2002:a0d:cbd7:0:b0:5a7:ba17:15ac with SMTP id n206-20020a0dcbd7000000b005a7ba1715acmr3133986ywd.41.1700322669620; Sat, 18 Nov 2023 07:51:09 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id p127-20020a0dcd85000000b005a7bbd713ddsm1151825ywd.108.2023.11.18.07.51.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:08 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, "David S. Miller" , "H. Peter Anvin" , "James E.J. Bottomley" , "K. Y. Srinivasan" , "Md. Haris Iqbal" , Akinobu Mita , Andrew Morton , Bjorn Andersson , Borislav Petkov , Chaitanya Kulkarni , Christian Brauner , Damien Le Moal , Dave Hansen , David Disseldorp , Edward Cree , Eric Dumazet , Fenghua Yu , Geert Uytterhoeven , Greg Kroah-Hartman , Gregory Greenman , Hans Verkuil , Hans de Goede , Hugh Dickins , Ingo Molnar , Jakub Kicinski , Jaroslav Kysela , Jason Gunthorpe , Jens Axboe , Jiri Pirko , Jiri Slaby , Kalle Valo , Karsten Graul , Karsten Keil , Kees Cook , Leon Romanovsky , Mark Rutland , Martin Habets , Mauro Carvalho Chehab , Michael Ellerman , Michal Simek , Nicholas Piggin , Oliver Neukum , Paolo Abeni , Paolo Bonzini , Peter Zijlstra , Ping-Ke Shih , Rich Felker , Rob Herring , Robin Murphy , Sathya Prakash Veerichetty , Sean Christopherson , Shuai Xue , Stanislaw Gruszka , Steven Rostedt , Thomas Bogendoerfer , Thomas Gleixner , Valentin Schneider , Vitaly Kuznetsov , Wenjia Zhang , Will Deacon , Yoshinori Sato , GR-QLogic-Storage-Upstream@marvell.com, alsa-devel@alsa-project.org, ath10k@lists.infradead.org, dmaengine@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-block@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-hyperv@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-media@vger.kernel.org, linux-mips@vger.kernel.org, linux-net-drivers@amd.com, linux-pci@vger.kernel.org, linux-rdma@vger.kernel.org, linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org, linux-serial@vger.kernel.org, linux-sh@vger.kernel.org, linux-sound@vger.kernel.org, linux-usb@vger.kernel.org, linux-wireless@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, mpi3mr-linuxdrv.pdl@broadcom.com, netdev@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 01/34] lib/find: add atomic find_bit() primitives Date: Sat, 18 Nov 2023 07:50:32 -0800 Message-Id: <20231118155105.25678-2-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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]); Sat, 18 Nov 2023 07:51:25 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917614278962438 X-GMAIL-MSGID: 1782917614278962438 Add helpers around test_and_{set,clear}_bit() that allow to search for clear or set bits and flip them atomically. The target patterns may look like this: for (idx = 0; idx < nbits; idx++) if (test_and_clear_bit(idx, bitmap)) do_something(idx); Or like this: do { bit = find_first_bit(bitmap, nbits); if (bit >= nbits) return nbits; } while (!test_and_clear_bit(bit, bitmap)); return bit; In both cases, the opencoded loop may be converted to a single function or iterator call. Correspondingly: for_each_test_and_clear_bit(idx, bitmap, nbits) do_something(idx); Or: return find_and_clear_bit(bitmap, nbits); Obviously, the less routine code people have write themself, the less probability to make a mistake. Those are not only handy helpers but also resolve a non-trivial issue of using non-atomic find_bit() together with atomic test_and_{set,clear)_bit(). The trick is that find_bit() implies that the bitmap is a regular non-volatile piece of memory, and compiler is allowed to use such optimization techniques like re-fetching memory instead of caching it. For example, find_first_bit() is implemented like this: for (idx = 0; idx * BITS_PER_LONG < sz; idx++) { val = addr[idx]; if (val) { sz = min(idx * BITS_PER_LONG + __ffs(val), sz); break; } } On register-memory architectures, like x86, compiler may decide to access memory twice - first time to compare against 0, and second time to fetch its value to pass it to __ffs(). When running find_first_bit() on volatile memory, the memory may get changed in-between, and for instance, it may lead to passing 0 to __ffs(), which is undefined. This is a potentially dangerous call. find_and_clear_bit() as a wrapper around test_and_clear_bit() naturally treats underlying bitmap as a volatile memory and prevents compiler from such optimizations. Now that KCSAN is catching exactly this type of situations and warns on undercover memory modifications. We can use it to reveal improper usage of find_bit(), and convert it to atomic find_and_*_bit() as appropriate. The 1st patch of the series adds the following atomic primitives: find_and_set_bit(addr, nbits); find_and_set_next_bit(addr, nbits, start); ... Here find_and_{set,clear} part refers to the corresponding test_and_{set,clear}_bit function, and suffixes like _wrap or _lock derive semantics from corresponding find() or test() functions. For brevity, the naming omits the fact that we search for zero bit in find_and_set, and correspondingly, search for set bit in find_and_clear functions. The patch also adds iterators with atomic semantics, like for_each_test_and_set_bit(). Here, the naming rule is to simply prefix corresponding atomic operation with 'for_each'. All users of find_bit() API, where heavy concurrency is expected, are encouraged to switch to atomic find_and_bit() as appropriate. Signed-off-by: Yury Norov --- include/linux/find.h | 289 +++++++++++++++++++++++++++++++++++++++++++ lib/find_bit.c | 85 +++++++++++++ 2 files changed, 374 insertions(+) diff --git a/include/linux/find.h b/include/linux/find.h index 5e4f39ef2e72..e8567f336f42 100644 --- a/include/linux/find.h +++ b/include/linux/find.h @@ -32,6 +32,16 @@ extern unsigned long _find_first_and_bit(const unsigned long *addr1, extern unsigned long _find_first_zero_bit(const unsigned long *addr, unsigned long size); extern unsigned long _find_last_bit(const unsigned long *addr, unsigned long size); +unsigned long _find_and_set_bit(volatile unsigned long *addr, unsigned long nbits); +unsigned long _find_and_set_next_bit(volatile unsigned long *addr, unsigned long nbits, + unsigned long start); +unsigned long _find_and_set_bit_lock(volatile unsigned long *addr, unsigned long nbits); +unsigned long _find_and_set_next_bit_lock(volatile unsigned long *addr, unsigned long nbits, + unsigned long start); +unsigned long _find_and_clear_bit(volatile unsigned long *addr, unsigned long nbits); +unsigned long _find_and_clear_next_bit(volatile unsigned long *addr, unsigned long nbits, + unsigned long start); + #ifdef __BIG_ENDIAN unsigned long _find_first_zero_bit_le(const unsigned long *addr, unsigned long size); unsigned long _find_next_zero_bit_le(const unsigned long *addr, unsigned @@ -460,6 +470,267 @@ unsigned long __for_each_wrap(const unsigned long *bitmap, unsigned long size, return bit < start ? bit : size; } +/** + * find_and_set_bit - Find a zero bit and set it atomically + * @addr: The address to base the search on + * @nbits: The bitmap size in bits + * + * This function is designed to operate in concurrent access environment. + * + * Because of concurrency and volatile nature of underlying bitmap, it's not + * guaranteed that the bit found is the 1st bit in the bitmap. It's also not + * guaranteed that if @nbits is returned, the bitmap is empty. + * + * The function does guarantee that if returned value is in range [0 .. @nbits), + * the acquired bit belongs to the caller exclusively. + * + * Returns: found and set bit, or @nbits if no bits found + */ +static inline +unsigned long find_and_set_bit(volatile unsigned long *addr, unsigned long nbits) +{ + if (small_const_nbits(nbits)) { + unsigned long val, ret; + + do { + val = *addr | ~GENMASK(nbits - 1, 0); + if (val == ~0UL) + return nbits; + ret = ffz(val); + } while (test_and_set_bit(ret, addr)); + + return ret; + } + + return _find_and_set_bit(addr, nbits); +} + + +/** + * find_and_set_next_bit - Find a zero bit and set it, starting from @offset + * @addr: The address to base the search on + * @nbits: The bitmap nbits in bits + * @offset: The bitnumber to start searching at + * + * This function is designed to operate in concurrent access environment. + * + * Because of concurrency and volatile nature of underlying bitmap, it's not + * guaranteed that the bit found is the 1st bit in the bitmap, starting from @offset. + * It's also not guaranteed that if @nbits is returned, the bitmap is empty. + * + * The function does guarantee that if returned value is in range [@offset .. @nbits), + * the acquired bit belongs to the caller exclusively. + * + * Returns: found and set bit, or @nbits if no bits found + */ +static inline +unsigned long find_and_set_next_bit(volatile unsigned long *addr, + unsigned long nbits, unsigned long offset) +{ + if (small_const_nbits(nbits)) { + unsigned long val, ret; + + do { + val = *addr | ~GENMASK(nbits - 1, offset); + if (val == ~0UL) + return nbits; + ret = ffz(val); + } while (test_and_set_bit(ret, addr)); + + return ret; + } + + return _find_and_set_next_bit(addr, nbits, offset); +} + +/** + * find_and_set_bit_wrap - find and set bit starting at @offset, wrapping around zero + * @addr: The first address to base the search on + * @nbits: The bitmap size in bits + * @offset: The bitnumber to start searching at + * + * Returns: the bit number for the next clear bit, or first clear bit up to @offset, + * while atomically setting it. If no bits are found, returns @nbits. + */ +static inline +unsigned long find_and_set_bit_wrap(volatile unsigned long *addr, + unsigned long nbits, unsigned long offset) +{ + unsigned long bit = find_and_set_next_bit(addr, nbits, offset); + + if (bit < nbits || offset == 0) + return bit; + + bit = find_and_set_bit(addr, offset); + return bit < offset ? bit : nbits; +} + +/** + * find_and_set_bit_lock - find a zero bit, then set it atomically with lock + * @addr: The address to base the search on + * @nbits: The bitmap nbits in bits + * + * This function is designed to operate in concurrent access environment. + * + * Because of concurrency and volatile nature of underlying bitmap, it's not + * guaranteed that the bit found is the 1st bit in the bitmap. It's also not + * guaranteed that if @nbits is returned, the bitmap is empty. + * + * The function does guarantee that if returned value is in range [0 .. @nbits), + * the acquired bit belongs to the caller exclusively. + * + * Returns: found and set bit, or @nbits if no bits found + */ +static inline +unsigned long find_and_set_bit_lock(volatile unsigned long *addr, unsigned long nbits) +{ + if (small_const_nbits(nbits)) { + unsigned long val, ret; + + do { + val = *addr | ~GENMASK(nbits - 1, 0); + if (val == ~0UL) + return nbits; + ret = ffz(val); + } while (test_and_set_bit_lock(ret, addr)); + + return ret; + } + + return _find_and_set_bit_lock(addr, nbits); +} + +/** + * find_and_set_next_bit_lock - find a zero bit and set it atomically with lock + * @addr: The address to base the search on + * @nbits: The bitmap size in bits + * @offset: The bitnumber to start searching at + * + * This function is designed to operate in concurrent access environment. + * + * Because of concurrency and volatile nature of underlying bitmap, it's not + * guaranteed that the bit found is the 1st bit in the range. It's also not + * guaranteed that if @nbits is returned, the bitmap is empty. + * + * The function does guarantee that if returned value is in range [@offset .. @nbits), + * the acquired bit belongs to the caller exclusively. + * + * Returns: found and set bit, or @nbits if no bits found + */ +static inline +unsigned long find_and_set_next_bit_lock(volatile unsigned long *addr, + unsigned long nbits, unsigned long offset) +{ + if (small_const_nbits(nbits)) { + unsigned long val, ret; + + do { + val = *addr | ~GENMASK(nbits - 1, offset); + if (val == ~0UL) + return nbits; + ret = ffz(val); + } while (test_and_set_bit_lock(ret, addr)); + + return ret; + } + + return _find_and_set_next_bit_lock(addr, nbits, offset); +} + +/** + * find_and_set_bit_wrap_lock - find zero bit starting at @ofset and set it + * with lock, and wrap around zero if nothing found + * @addr: The first address to base the search on + * @nbits: The bitmap size in bits + * @offset: The bitnumber to start searching at + * + * Returns: the bit number for the next set bit, or first set bit up to @offset + * If no bits are set, returns @nbits. + */ +static inline +unsigned long find_and_set_bit_wrap_lock(volatile unsigned long *addr, + unsigned long nbits, unsigned long offset) +{ + unsigned long bit = find_and_set_next_bit_lock(addr, nbits, offset); + + if (bit < nbits || offset == 0) + return bit; + + bit = find_and_set_bit_lock(addr, offset); + return bit < offset ? bit : nbits; +} + +/** + * find_and_clear_bit - Find a set bit and clear it atomically + * @addr: The address to base the search on + * @nbits: The bitmap nbits in bits + * + * This function is designed to operate in concurrent access environment. + * + * Because of concurrency and volatile nature of underlying bitmap, it's not + * guaranteed that the found bit is the 1st bit in the bitmap. It's also not + * guaranteed that if @nbits is returned, the bitmap is empty. + * + * The function does guarantee that if returned value is in range [0 .. @nbits), + * the acquired bit belongs to the caller exclusively. + * + * Returns: found and cleared bit, or @nbits if no bits found + */ +static inline unsigned long find_and_clear_bit(volatile unsigned long *addr, unsigned long nbits) +{ + if (small_const_nbits(nbits)) { + unsigned long val, ret; + + do { + val = *addr & GENMASK(nbits - 1, 0); + if (val == 0) + return nbits; + ret = __ffs(val); + } while (!test_and_clear_bit(ret, addr)); + + return ret; + } + + return _find_and_clear_bit(addr, nbits); +} + +/** + * find_and_clear_next_bit - Find a set bit next after @offset, and clear it atomically + * @addr: The address to base the search on + * @nbits: The bitmap nbits in bits + * @offset: bit offset at which to start searching + * + * This function is designed to operate in concurrent access environment. + * + * Because of concurrency and volatile nature of underlying bitmap, it's not + * guaranteed that the bit found is the 1st bit in the range It's also not + * guaranteed that if @nbits is returned, there's no set bits after @offset. + * + * The function does guarantee that if returned value is in range [@offset .. @nbits), + * the acquired bit belongs to the caller exclusively. + * + * Returns: found and cleared bit, or @nbits if no bits found + */ +static inline +unsigned long find_and_clear_next_bit(volatile unsigned long *addr, + unsigned long nbits, unsigned long offset) +{ + if (small_const_nbits(nbits)) { + unsigned long val, ret; + + do { + val = *addr & GENMASK(nbits - 1, offset); + if (val == 0) + return nbits; + ret = __ffs(val); + } while (!test_and_clear_bit(ret, addr)); + + return ret; + } + + return _find_and_clear_next_bit(addr, nbits, offset); +} + /** * find_next_clump8 - find next 8-bit clump with set bits in a memory region * @clump: location to store copy of found clump @@ -577,6 +848,24 @@ unsigned long find_next_bit_le(const void *addr, unsigned #define for_each_set_bit_from(bit, addr, size) \ for (; (bit) = find_next_bit((addr), (size), (bit)), (bit) < (size); (bit)++) +/* same as for_each_set_bit() but atomically clears each found bit */ +#define for_each_test_and_clear_bit(bit, addr, size) \ + for ((bit) = 0; \ + (bit) = find_and_clear_next_bit((addr), (size), (bit)), (bit) < (size); \ + (bit)++) + +/* same as for_each_clear_bit() but atomically sets each found bit */ +#define for_each_test_and_set_bit(bit, addr, size) \ + for ((bit) = 0; \ + (bit) = find_and_clear_next_bit((addr), (size), (bit)), (bit) < (size); \ + (bit)++) + +/* same as for_each_clear_bit_from() but atomically clears each found bit */ +#define for_each_test_and_set_bit_from(bit, addr, size) \ + for (; \ + (bit) = find_and_set_next_bit((addr), (size), (bit)), (bit) < (size); \ + (bit)++) + #define for_each_clear_bit(bit, addr, size) \ for ((bit) = 0; \ (bit) = find_next_zero_bit((addr), (size), (bit)), (bit) < (size); \ diff --git a/lib/find_bit.c b/lib/find_bit.c index 32f99e9a670e..c9b6b9f96610 100644 --- a/lib/find_bit.c +++ b/lib/find_bit.c @@ -116,6 +116,91 @@ unsigned long _find_first_and_bit(const unsigned long *addr1, EXPORT_SYMBOL(_find_first_and_bit); #endif +unsigned long _find_and_set_bit(volatile unsigned long *addr, unsigned long nbits) +{ + unsigned long bit; + + do { + bit = FIND_FIRST_BIT(~addr[idx], /* nop */, nbits); + if (bit >= nbits) + return nbits; + } while (test_and_set_bit(bit, addr)); + + return bit; +} +EXPORT_SYMBOL(_find_and_set_bit); + +unsigned long _find_and_set_next_bit(volatile unsigned long *addr, + unsigned long nbits, unsigned long start) +{ + unsigned long bit; + + do { + bit = FIND_NEXT_BIT(~addr[idx], /* nop */, nbits, start); + if (bit >= nbits) + return nbits; + } while (test_and_set_bit(bit, addr)); + + return bit; +} +EXPORT_SYMBOL(_find_and_set_next_bit); + +unsigned long _find_and_set_bit_lock(volatile unsigned long *addr, unsigned long nbits) +{ + unsigned long bit; + + do { + bit = FIND_FIRST_BIT(~addr[idx], /* nop */, nbits); + if (bit >= nbits) + return nbits; + } while (test_and_set_bit_lock(bit, addr)); + + return bit; +} +EXPORT_SYMBOL(_find_and_set_bit_lock); + +unsigned long _find_and_set_next_bit_lock(volatile unsigned long *addr, + unsigned long nbits, unsigned long start) +{ + unsigned long bit; + + do { + bit = FIND_NEXT_BIT(~addr[idx], /* nop */, nbits, start); + if (bit >= nbits) + return nbits; + } while (test_and_set_bit_lock(bit, addr)); + + return bit; +} +EXPORT_SYMBOL(_find_and_set_next_bit_lock); + +unsigned long _find_and_clear_bit(volatile unsigned long *addr, unsigned long nbits) +{ + unsigned long bit; + + do { + bit = FIND_FIRST_BIT(addr[idx], /* nop */, nbits); + if (bit >= nbits) + return nbits; + } while (!test_and_clear_bit(bit, addr)); + + return bit; +} +EXPORT_SYMBOL(_find_and_clear_bit); + +unsigned long _find_and_clear_next_bit(volatile unsigned long *addr, + unsigned long nbits, unsigned long start) +{ + do { + start = FIND_NEXT_BIT(addr[idx], /* nop */, nbits, start); + if (start >= nbits) + return nbits; + } while (!test_and_clear_bit(start, addr)); + + return start; +} +EXPORT_SYMBOL(_find_and_clear_next_bit); + #ifndef find_first_zero_bit /* * Find the first cleared bit in a memory region. From patchwork Sat Nov 18 15:50:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166545 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1240761vqn; Sat, 18 Nov 2023 07:52:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IGEW4qYlSa551LXy494i+BXsMKC5FaMVykjS5ISgp7VHA9JCT6rFfKV03RsKKVfkQSy8IH2 X-Received: by 2002:a17:903:22c3:b0:1cc:4625:74e2 with SMTP id y3-20020a17090322c300b001cc462574e2mr12647615plg.24.1700322739044; Sat, 18 Nov 2023 07:52:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322739; cv=none; d=google.com; s=arc-20160816; b=eZ/Y8gqReTsYDPtvrvLA6RKiRiqrL46Bs7Clbn4InhcxN6jFfj6Lb8cwrruLrBrFXH wjl5vNHrCCPgpyaTqX5ZWDoRU8OzH9YRiO5rQKDn2iRsfNQ5YP5nLp/KMv0DRiQ6bf2k IwM/kRmnK1Flyf5c4FBO70/xyMDD9EW7vVnh1y1nJNs0CiS0gCUUtJ1TSMXlADuT2Gf6 x1wNwCkloksMzLimACsLhzi4rdnAEBy3giWHqWoXBpUZhKHv7UkkV8BEBJTA9eLjbEzv vIfDc5pwxboa8P77CWLsJvA57BI6w4L0buVsmdbgOx7uc8tf1IJO9flSIiTuGX7V1qmX AmFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=wja3OVPJTOloxhD0fIIOnOKhGR1o2s7RteZ+eX82u+o=; fh=khzza3wJpM58GHI+0C75S5ZAzfmv38FFsx3wla+KjW4=; b=0RSAj7URGeKDt10fmVzjLyUZt4WaQIKylUv0acFCKLEyfM+Lji0i2g4wD6ccMK8h9q c9LOOXeIlf4RzVzP9CtmPRdD2rol2OwWrYbreXGs/5U8MSDAYX79npC6NL3EQl7Pf7+W EN58XyBHMYpt+KL7ZMgmTxOaLQO5xRUxsflw6sT++Q4Hnilme+cTHEjzqAQGrlpLh3Ys LmHb/1+nbmWZEZEA9dQxBYqgx5k064F3AjKZ4nmQJwkJfQ6VC6AW9TCr5kZ1DIYwwSNA 8mCmAEwOGI9hI8jIrzuDfbPL5w3sR9cwWj7QYtRSTQW210O6OhbIzKJNrxZsTQgD+Za6 oJBg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=LezXZ6w9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id je18-20020a170903265200b001cf50ef35aasi1655644plb.9.2023.11.18.07.52.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:52:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=LezXZ6w9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (Postfix) with ESMTP id 05B6F804E2CA; Sat, 18 Nov 2023 07:51:31 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230048AbjKRPvX (ORCPT + 29 others); Sat, 18 Nov 2023 10:51:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37212 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230092AbjKRPvR (ORCPT ); Sat, 18 Nov 2023 10:51:17 -0500 Received: from mail-yw1-x1136.google.com (mail-yw1-x1136.google.com [IPv6:2607:f8b0:4864:20::1136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 15B5C1A1; Sat, 18 Nov 2023 07:51:14 -0800 (PST) Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-5c99226c1e6so1048087b3.1; Sat, 18 Nov 2023 07:51:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322672; x=1700927472; darn=vger.kernel.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; bh=wja3OVPJTOloxhD0fIIOnOKhGR1o2s7RteZ+eX82u+o=; b=LezXZ6w9oRAfsFpEnEKgrHaoIbxiWXXQoO30aBaUNEVY0CLBzI+FewEhmYuXPZgFKO Jlbvc5gUCIIwxhD9C0Bxp70TB5JCyXzNNQCD/G0DpriBVPAjnGN0KHTnVGH0iQun5keL jyuXirnQpGF06pyHvQQLpuvEX+IvtzLyWur7RQ4ym3KhFoLs6n0B/liW7BzI1uCAIQbT Kd9BuNbqP972eUXr4T39BiQssIVmO6b50pP2kH9YNiLulUmAydIfSGoPl+NXoVX7b801 5aPMBuiMvu1zn17OSGlXCEsrbk0gw/lrzL9XTa4UnyrK7dy2+3SEOhtcYRyZrZCbU3Ar TiMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322672; x=1700927472; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wja3OVPJTOloxhD0fIIOnOKhGR1o2s7RteZ+eX82u+o=; b=fPg9Wk8B7a9XsZV2klt/QL9asY6omZUYzjsXUcoHmLgRPPOtBv0W+d5zj18BdlvGiw 8qbU9JiywXNbxyr0izJ9gdoIBFYqEJvDQJcVUMvtuvHQ/EnTa4VOzWh3/C/Qo/K3D6Ka R3ulKPKJ74X2LSWaDfCsNOzqJU3Jturs0oea+1kSbUM8+UChXGyhwltJrf7/s77E1hZF of9hymMHOK8094oHdnWUaLwo/k8nUeePiWL1ACTMIe8BdTfcGJ+njCyPcoadVdkpf63r lq/B6D5OzEKV1l0z+3S/S0dT7BoJHrEkoshoPkd7Uzm0UD1T7e5ie4sUVSHz9k6D8wjL XF8Q== X-Gm-Message-State: AOJu0YyXNKgAz1Fmg6sH1SglDhhnOHZ61P8qy8Zm6BuFu1RCZVkU9zMK +us+yntGlycaWft6zUeswbeHVhS+wQgazg3e X-Received: by 2002:a81:528d:0:b0:5b0:36f5:81d2 with SMTP id g135-20020a81528d000000b005b036f581d2mr1329059ywb.26.1700322671999; Sat, 18 Nov 2023 07:51:11 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id s189-20020a0de9c6000000b005c5c3bae1dfsm1178248ywe.54.2023.11.18.07.51.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:10 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Jens Axboe , linux-block@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 02/34] lib/sbitmap; make __sbitmap_get_word() using find_and_set_bit() Date: Sat, 18 Nov 2023 07:50:33 -0800 Message-Id: <20231118155105.25678-3-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:51:31 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917616417806500 X-GMAIL-MSGID: 1782917616417806500 __sbitmap_get_word() opencodes either find_and_set_bit_wrap(), or find_and_set_next_bit() depending on hint and wrap parameters. Switch it to use the atomic find_bit() API. While here, simplify sbitmap_find_bit_in_word(), which calls it. Signed-off-by: Yury Norov --- lib/sbitmap.c | 46 ++++++++-------------------------------------- 1 file changed, 8 insertions(+), 38 deletions(-) diff --git a/lib/sbitmap.c b/lib/sbitmap.c index d0a5081dfd12..b21aebd07fd6 100644 --- a/lib/sbitmap.c +++ b/lib/sbitmap.c @@ -133,38 +133,11 @@ void sbitmap_resize(struct sbitmap *sb, unsigned int depth) } EXPORT_SYMBOL_GPL(sbitmap_resize); -static int __sbitmap_get_word(unsigned long *word, unsigned long depth, +static inline int __sbitmap_get_word(unsigned long *word, unsigned long depth, unsigned int hint, bool wrap) { - int nr; - - /* don't wrap if starting from 0 */ - wrap = wrap && hint; - - while (1) { - nr = find_next_zero_bit(word, depth, hint); - if (unlikely(nr >= depth)) { - /* - * We started with an offset, and we didn't reset the - * offset to 0 in a failure case, so start from 0 to - * exhaust the map. - */ - if (hint && wrap) { - hint = 0; - continue; - } - return -1; - } - - if (!test_and_set_bit_lock(nr, word)) - break; - - hint = nr + 1; - if (hint >= depth - 1) - hint = 0; - } - - return nr; + return wrap ? find_and_set_bit_wrap_lock(word, depth, hint) : + find_and_set_next_bit_lock(word, depth, hint); } static int sbitmap_find_bit_in_word(struct sbitmap_word *map, @@ -175,15 +148,12 @@ static int sbitmap_find_bit_in_word(struct sbitmap_word *map, int nr; do { - nr = __sbitmap_get_word(&map->word, depth, - alloc_hint, wrap); - if (nr != -1) - break; - if (!sbitmap_deferred_clear(map)) - break; - } while (1); + nr = __sbitmap_get_word(&map->word, depth, alloc_hint, wrap); + if (nr < depth) + return nr; + } while (sbitmap_deferred_clear(map)); - return nr; + return -1; } static int sbitmap_find_bit(struct sbitmap *sb, From patchwork Sat Nov 18 15:50:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166546 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1240824vqn; Sat, 18 Nov 2023 07:52:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IElE+daNV1UgukDjt8rj/4YUerix6lJyuiQTpZBgzN6Ghr2VtX4M4kUMjDnc4eipCUAnA66 X-Received: by 2002:a17:90b:4b4e:b0:27d:166b:40f6 with SMTP id mi14-20020a17090b4b4e00b0027d166b40f6mr2277201pjb.41.1700322749254; Sat, 18 Nov 2023 07:52:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322749; cv=none; d=google.com; s=arc-20160816; b=DbxpmgYRV3INL6a1mvhszSkQdlabYRdqblD545SdUXQFII0bebmD+/t+ytpPcV90c1 VXvN9JnyF+0GouvquE9OAC+ocDoFJKRqccSNMvppXQmwN4o+H2Vkdo1Rglz1fIOH5bhf GEMbDwAxzfDTdcFvxYbXlNhqBvzJLOFfz3sY6/E4HcHZQoiy3zo8AbtP7ZnzzIpxaL0m 03JShItJdihkarF5MrIPYmubW4k4bEK1yOKZUYr7LabJZOtJsWU1x4MH77bI0ATO4yCB CwxPeXY043aSkZEmm98MiKe/S1w6qrZKKfrWzcrs6kKHnjyl8njxgiRjw3rJ+Amd6lC3 96CA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HtNrEcrTZb5UAh7OysIMcPcS6uJH+lnrl/PJXmZoqog=; fh=vA8mJna8XqcduIw7ou+jGaYA1KDyfQlDp1lcz68+azA=; b=lm+CuDNx4SZ7+bNqnr00XOGaFg1C6YZleP+RAzXeut+GVD/KznJQCSChpknIYGCpu1 DE9vTX9eupy2TeybuIfb148ohyX1TJ0hNjqE2z5+4BQ3ZHkv8Ar7husb8P0ssG5L4+b3 jXyg0kwr3e/FoFnDwl9aQd57yZxn39cXY4C0qXW9sm46oGjhXdypJBvZHEtZDGSki772 YZ+4XqwTwNfPqXisySYmLFy0wb1r1e+WigrBSdOMkBwHYUSj8ALh6fKVHeegpp9nwj81 9os4D6BhIxAomHJOy/QUSEi3WUfDUlhXh8kWOG1CxySqnLo8/HBqi05QQYZtsjZHg4Bi U6+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=B9B1gHAT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 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 fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id pm15-20020a17090b3c4f00b0025c1d114af0si4641803pjb.93.2023.11.18.07.52.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:52:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=B9B1gHAT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 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 fry.vger.email (Postfix) with ESMTP id 17F25809AFC6; Sat, 18 Nov 2023 07:52:15 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230227AbjKRPv1 (ORCPT + 29 others); Sat, 18 Nov 2023 10:51:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37242 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230163AbjKRPvT (ORCPT ); Sat, 18 Nov 2023 10:51:19 -0500 Received: from mail-yw1-x1136.google.com (mail-yw1-x1136.google.com [IPv6:2607:f8b0:4864:20::1136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8125BD4F for ; Sat, 18 Nov 2023 07:51:15 -0800 (PST) Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-5b499b18b28so32746667b3.0 for ; Sat, 18 Nov 2023 07:51:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322674; x=1700927474; darn=vger.kernel.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; bh=HtNrEcrTZb5UAh7OysIMcPcS6uJH+lnrl/PJXmZoqog=; b=B9B1gHATqxOBJm5GMiuRjNdbleYah1hTnn3RXmaUPbClGNSYiFYnqMDnKqX2SEUnGM fG/ex97/I4glD9U/I4HpSEskzafoxp1I/mtxPyi6ZDc/k6Bx8pUnGOJ1u4ZiqwF4tpHZ FQJ/wRZ9/0M6MQGff3O5PwctwvohIpT5Erf6A2Sfvp9pgrYjeR1effvHGzpMjU23bdt2 JRDKOVhm9wdR754GLNGleg64faL0lJn1klKh4x+AeLGu5yD5K3LDHQDr88Hehv6b53lW FTjWgXwbfXOHB+ero3KhS7aDJaQhj8DcAcS36y4LYVAEvrZORdHfpmhBh9FuvSETdRdP dTPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322674; x=1700927474; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HtNrEcrTZb5UAh7OysIMcPcS6uJH+lnrl/PJXmZoqog=; b=mEAhLhD5KKGBZkCECj0W15wGu5DkF5GOyCFcpMhfSv7ck7r+/tvdA+ct/VPdls5BIc Vt6jx1bkEmL/qGB4Oj1Fk7Eoy6eMk4+bMysMwkM78tpRyFyvi5iA4zKeQANW+RE8U1Vp Zhn7sMgG38sluPRvw33X1bDSr3Ha+w6b2d2Vge/fS+NgTRgqtooHR2lzNIMSY6g+l9Zp qeEKz8WcEU0/EGJAmdSLd/fVmv/N3m7OUQmc5CtRLUQuxet5CaH64Te3aZsobBommLCk GLo5jKDZQMhBlwi1XDHtIeZbrrRUpP/CDkXAMCC/92wRO7jblPbjm4C1zWKE/AVrMBpp Nc4w== X-Gm-Message-State: AOJu0YxBLuVGq3+0BUG+WesuY7ssS95G3WpVDC3//ODM5x/J4XDhZpxN t0wsLiCx8rpR7HqCBMh00QQ8a+23FyR5zyL0 X-Received: by 2002:a81:470a:0:b0:5a8:e6f4:4b6c with SMTP id u10-20020a81470a000000b005a8e6f44b6cmr2719557ywa.25.1700322673713; Sat, 18 Nov 2023 07:51:13 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id q126-20020a815c84000000b005a7c829dda2sm1170194ywb.84.2023.11.18.07.51.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:12 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Christian Brauner , David Howells , Siddh Raman Pant , Yury Norov , Dave Airlie , David Disseldorp , Philipp Stanner , Nick Alcock Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 03/34] watch_queue: use atomic find_bit() in post_one_notification() Date: Sat, 18 Nov 2023 07:50:34 -0800 Message-Id: <20231118155105.25678-4-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.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 (fry.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:52:15 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917627089913349 X-GMAIL-MSGID: 1782917627089913349 post_one_notification() searches for a set bit in wqueue->notes_bitmap, and after some housekeeping work clears it, firing a BUG() if someone else cleared the bit in-between. We can allocate a bit atomically with the atomic find_and_clear_bit(), and remove the BUG() possibility entirely. Signed-off-by: Yury Norov --- kernel/watch_queue.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/kernel/watch_queue.c b/kernel/watch_queue.c index 778b4056700f..07edd4a2b463 100644 --- a/kernel/watch_queue.c +++ b/kernel/watch_queue.c @@ -112,7 +112,7 @@ static bool post_one_notification(struct watch_queue *wqueue, if (pipe_full(head, tail, pipe->ring_size)) goto lost; - note = find_first_bit(wqueue->notes_bitmap, wqueue->nr_notes); + note = find_and_clear_bit(wqueue->notes_bitmap, wqueue->nr_notes); if (note >= wqueue->nr_notes) goto lost; @@ -133,10 +133,6 @@ static bool post_one_notification(struct watch_queue *wqueue, buf->flags = PIPE_BUF_FLAG_WHOLE; smp_store_release(&pipe->head, head + 1); /* vs pipe_read() */ - if (!test_and_clear_bit(note, wqueue->notes_bitmap)) { - spin_unlock_irq(&pipe->rd_wait.lock); - BUG(); - } wake_up_interruptible_sync_poll_locked(&pipe->rd_wait, EPOLLIN | EPOLLRDNORM); done = true; From patchwork Sat Nov 18 15:50:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166551 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241178vqn; Sat, 18 Nov 2023 07:53:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IFVgq+5v+W39czFn4B3xxuLRv6ZiU/jn4uOyOdIdbngAtgYZyRFH9640Crp3tXLiba55NsN X-Received: by 2002:a17:902:82c1:b0:1cc:4985:fbf8 with SMTP id u1-20020a17090282c100b001cc4985fbf8mr2145950plz.59.1700322797056; Sat, 18 Nov 2023 07:53:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322797; cv=none; d=google.com; s=arc-20160816; b=cnS8JMk6cwnXPsw5XyYa1wwhSWbaX7r8WzP6bB4eaJENuC2UyuZYSvPQkXSLC5/o2w XrQc1qsLDdGFwzcweA0+l6aXnOKKmuiOQ/mVa6Ynm5o53aQek2q4zWrvL8b/+552ErBm i5WzQ7sEJuu9l9wZjHHKVR4ns9tKW1H/jg0HKwq/+gJDT5OUwiAGV4X7Q3wtzx6o7toK Nq5VioJClVWJ9LZqkRYNl2zWewISam/FE4HIAAfmI6wSivDQ0gE1B4+eOmw+ebHY/DAh tP+RvraLc8Mrun7YA+krtHSL0eRDu8pphPS8gvj3olnNUz0SVfujYNp7SYlYj5NE3RPz 9nrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9WwK51pC/Flt9q/I+kAw/5yF9gjhLf/hhE3qbzZj538=; fh=zsoxxqPM3iuQvqy3tykiElgW4ufH/RDoH608+wYmgfo=; b=Sa4pDWAyQSwTWx7Hx8y1MX9uS6LHaBYU4lR6inkA25cTB1no3rLFQu6JW1/wGBsS8F Zrka/NPmxMsECjVjkXAig8zsJtfEj1hfEkIVwfawFVLBqLlNRWuqncCxYQ7T03t7k+Ok 5AeyGQuYsY8DCMqKY0ahhSGZ7F7DC6S0yXHHN2nF5jjzaa/wXnZl/yH8ZGTwb2GNqnzU GUktCQKvgsoEWkjgYjTFmC64kzZO9IQS01JyDIPaj+f2pkIa5Fcvt40fGyTbwS0IPRth N4ZGhxeDy7dLdxa+6eRDHwd79L+aoq65BBizFI/EACpQtAdtBqSif6qgiCO6IZhxzMSD Vvlg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=P5YBDmuk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 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 agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id k3-20020a170902c40300b001c5de4a5b4esi4822309plk.597.2023.11.18.07.53.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:53:17 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=P5YBDmuk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 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 agentk.vger.email (Postfix) with ESMTP id 056DF80C9298; Sat, 18 Nov 2023 07:52:56 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230334AbjKRPwO (ORCPT + 29 others); Sat, 18 Nov 2023 10:52:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50480 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229662AbjKRPv2 (ORCPT ); Sat, 18 Nov 2023 10:51:28 -0500 Received: from mail-yw1-x1134.google.com (mail-yw1-x1134.google.com [IPv6:2607:f8b0:4864:20::1134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3E01BD5C for ; Sat, 18 Nov 2023 07:51:17 -0800 (PST) Received: by mail-yw1-x1134.google.com with SMTP id 00721157ae682-5a87ac9d245so33492817b3.3 for ; Sat, 18 Nov 2023 07:51:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322675; x=1700927475; darn=vger.kernel.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; bh=9WwK51pC/Flt9q/I+kAw/5yF9gjhLf/hhE3qbzZj538=; b=P5YBDmuk3cEzULVFK5ObOumk7DoixChS5whcVIIVaZsTZzQ3E4EkzC6aSus8c3n3iW u3M+lr1RiR8YxaIlhF+pdjp6kEjqzfwTLj7lCk1iCCJlZFUEOkls+01wzsGF53Ynr0Fr KfMkEbnUWLv+HKS8A/3+dMaWJNNONMb62c/wMq1l7aaQ9HeKc2Joc1pInvQfRwnY8g7M xAMfC8BO+2HLwNZe5OXx/RFn3S1qZp2VkmSAqSk/YZ/1kRn3nPplYsC1ppf4VS8Iji01 L3rBCl5KCh3n9v9WW2uLvpFGjcW9Ymy13ES5tshCsb7jgoGUy3VDx+1tnq8vfnroFXWC ftHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322675; x=1700927475; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9WwK51pC/Flt9q/I+kAw/5yF9gjhLf/hhE3qbzZj538=; b=U3GynlV4UiSK6JIBHCnMwX4lbGgB7JuryjUSdbXykE+RjOH8QihYd2ONB2BMwSFC+K b2SZj/JDu4KF/xee/+BS/94h59k+pGuonI8/t9sQLxOIqy2Hje6WPuuTl0pOGMWxXE8c sIgEmYGPnTFkqA5tj36yB7ba3Sgh99gMMJ6iUsnpAfxkxaWnzqFPL59abjeYTxpwg9DT pV83uN+k9JrsnEG1t465O9XCVGyqMjhNmorhpP+pWgtsru0oSw+M5DnDUK+l1swdod49 gOtg3DQjno1tPTD+uJDUAvDX3LZVsjNuLIfJnIYL09McXgIvRJtU6IWi7ZAc4Jkn3M4B SgpQ== X-Gm-Message-State: AOJu0Yy+rd0/yCexXKsvAKMB1G3T+SGxcpnZB+F/diANtUfgk4ycXMci S3PEC9Perq/youdP6i8EnAO9kfiTkjWlhY+6 X-Received: by 2002:a0d:d556:0:b0:59b:c0a8:2882 with SMTP id x83-20020a0dd556000000b0059bc0a82882mr2805662ywd.46.1700322675422; Sat, 18 Nov 2023 07:51:15 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id w8-20020a816208000000b00597e912e67esm1183639ywb.131.2023.11.18.07.51.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:14 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Yury Norov , Andy Shevchenko , Rasmus Villemoes , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Valentin Schneider Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 04/34] sched: add cpumask_find_and_set() and use it in __mm_cid_get() Date: Sat, 18 Nov 2023 07:50:35 -0800 Message-Id: <20231118155105.25678-5-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.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 (agentk.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:52:56 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917677121522570 X-GMAIL-MSGID: 1782917677121522570 __mm_cid_get() uses a __mm_cid_try_get() helper to atomically acquire a bit in mm cid mask. Now that we have atomic find_and_set_bit(), we can easily extend it to cpumasks and use in the scheduler code. __mm_cid_try_get() has an infinite loop, which may delay forward progress of __mm_cid_get() when the mask is dense. The cpumask_find_and_set() doesn't poll the mask infinitely, and returns as soon as nothing has found after the first iteration, allowing to acquire the lock, and set use_cid_lock faster, if needed. cpumask_find_and_set() considers cid mask as a volatile region of memory, as it actually is in this case. So, if it's changed while search is in progress, KCSAN wouldn't fire warning on it. Signed-off-by: Yury Norov --- include/linux/cpumask.h | 12 ++++++++++ kernel/sched/sched.h | 52 ++++++++++++----------------------------- 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index cfb545841a2c..c2acced8be4e 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -271,6 +271,18 @@ unsigned int cpumask_next_and(int n, const struct cpumask *src1p, small_cpumask_bits, n + 1); } +/** + * cpumask_find_and_set - find the first unset cpu in a cpumask and + * set it atomically + * @srcp: the cpumask pointer + * + * Return: >= nr_cpu_ids if nothing is found. + */ +static inline unsigned int cpumask_find_and_set(volatile struct cpumask *srcp) +{ + return find_and_set_bit(cpumask_bits(srcp), small_cpumask_bits); +} + /** * for_each_cpu - iterate over every cpu in a mask * @cpu: the (optionally unsigned) integer iterator diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 2e5a95486a42..b2f095a9fc40 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -3345,28 +3345,6 @@ static inline void mm_cid_put(struct mm_struct *mm) __mm_cid_put(mm, mm_cid_clear_lazy_put(cid)); } -static inline int __mm_cid_try_get(struct mm_struct *mm) -{ - struct cpumask *cpumask; - int cid; - - cpumask = mm_cidmask(mm); - /* - * Retry finding first zero bit if the mask is temporarily - * filled. This only happens during concurrent remote-clear - * which owns a cid without holding a rq lock. - */ - for (;;) { - cid = cpumask_first_zero(cpumask); - if (cid < nr_cpu_ids) - break; - cpu_relax(); - } - if (cpumask_test_and_set_cpu(cid, cpumask)) - return -1; - return cid; -} - /* * Save a snapshot of the current runqueue time of this cpu * with the per-cpu cid value, allowing to estimate how recently it was used. @@ -3381,25 +3359,25 @@ static inline void mm_cid_snapshot_time(struct rq *rq, struct mm_struct *mm) static inline int __mm_cid_get(struct rq *rq, struct mm_struct *mm) { + struct cpumask *cpumask = mm_cidmask(mm); int cid; - /* - * All allocations (even those using the cid_lock) are lock-free. If - * use_cid_lock is set, hold the cid_lock to perform cid allocation to - * guarantee forward progress. - */ + /* All allocations (even those using the cid_lock) are lock-free. */ if (!READ_ONCE(use_cid_lock)) { - cid = __mm_cid_try_get(mm); - if (cid >= 0) + cid = cpumask_find_and_set(cpumask); + if (cid < nr_cpu_ids) goto end; - raw_spin_lock(&cid_lock); - } else { - raw_spin_lock(&cid_lock); - cid = __mm_cid_try_get(mm); - if (cid >= 0) - goto unlock; } + /* + * If use_cid_lock is set, hold the cid_lock to perform cid + * allocation to guarantee forward progress. + */ + raw_spin_lock(&cid_lock); + cid = cpumask_find_and_set(cpumask); + if (cid < nr_cpu_ids) + goto unlock; + /* * cid concurrently allocated. Retry while forcing following * allocations to use the cid_lock to ensure forward progress. @@ -3415,9 +3393,9 @@ static inline int __mm_cid_get(struct rq *rq, struct mm_struct *mm) * all newcoming allocations observe the use_cid_lock flag set. */ do { - cid = __mm_cid_try_get(mm); + cid = cpumask_find_and_set(cpumask); cpu_relax(); - } while (cid < 0); + } while (cid >= nr_cpu_ids); /* * Allocate before clearing use_cid_lock. Only care about * program order because this is for forward progress. From patchwork Sat Nov 18 15:50:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166547 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1240917vqn; Sat, 18 Nov 2023 07:52:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IF1S5tVcdEDo9gORsK8TdBbGf97lFjIs2zOkxMUH80+JTVJUKK3GkNSZms6lKHKx4zSw+p8 X-Received: by 2002:a05:6e02:48c:b0:35a:efb1:2890 with SMTP id b12-20020a056e02048c00b0035aefb12890mr3010221ils.17.1700322761564; Sat, 18 Nov 2023 07:52:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322761; cv=none; d=google.com; s=arc-20160816; b=WbThSrxBjP39YWHu5VJBp+Keo6tUiPAXk3ZZlaC3GyB7wRIp4rDuXz93l0neYzFW7Z f5uZjZMbaLcgAbYgIijK5feDfCQe38jdTbpimY5lqKdbPXbB2W/bRDSwQ24ldO6r0deH qsWfWoEdj8qkpjXXWyvnp470AIRROaDbWq5rnKNhCz2y9zr7Y0zD8bknLHg5bk7e/3Qh HgX2WEpTMtkWthXUJihkvNlb/Nfjso3Klya3n+iq6e8UzCtl6mB9rpdYspf4MPqjPO6+ RORHAiD7h7+S1Gi0z8GxcUQDC4qkQsYNluPPNgAU8tFfWWqSJXO/wsNOmswZ5qYYl2Mp OGqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=VvI9Us0OJutYR180bTDT/eNujgeRZcibPGsiE0LS1nQ=; fh=jZUpjB1GRMBHaI36eg0HGMxNpLxtIF+vqVUo9ok21Hg=; b=AMl13xPcUrIAHCk0v8q/b7rr+UCpiG0a8oCp1yRosCI1QstRNQJwIIJ2r3rv21MTBX yrZcjM+D8jgNT3AghP+MgZ3sDwdy+ePLDwVNboMXc0X+Ljj24wgG1jnK2eu+ehWTcefY +/53cKP2Mc3RXtQDu2QVYFI52jxcQQ2hLjR04wSHlHQS2It/9mNszRjImhW+Z3g+Qm2x pBFWM86xisirYO/magyZ7uDLnA66vVGm4JJkhB0lMd8m6Jsr6sriiQ4m0ItuhDexyhKK NewqSd4+XhOWV7ndidYfRouXoX4r/gRbY1YgI7sQx/z+AM7kN4kYmLbTt1tMUqYwyrxu nFFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=LwtggBdJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id e191-20020a6369c8000000b00578a43e3b0bsi4443757pgc.655.2023.11.18.07.52.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:52:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=LwtggBdJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 12EEA805362B; Sat, 18 Nov 2023 07:52:39 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230407AbjKRPwR (ORCPT + 29 others); Sat, 18 Nov 2023 10:52:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50496 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230265AbjKRPv3 (ORCPT ); Sat, 18 Nov 2023 10:51:29 -0500 Received: from mail-yw1-x112c.google.com (mail-yw1-x112c.google.com [IPv6:2607:f8b0:4864:20::112c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F89AD5D; Sat, 18 Nov 2023 07:51:18 -0800 (PST) Received: by mail-yw1-x112c.google.com with SMTP id 00721157ae682-5afa5dbc378so29842967b3.0; Sat, 18 Nov 2023 07:51:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322677; x=1700927477; darn=vger.kernel.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; bh=VvI9Us0OJutYR180bTDT/eNujgeRZcibPGsiE0LS1nQ=; b=LwtggBdJKHWA0eKvQx/VVJwcqd6OcSZTW7/0ktKKrLTEOM8k8fJHzYDM+0nNiWwzzJ 1gAW3B25oENQteAaOBgDxTMWe2L7Cr21Boc8+PC3//OvpTXTySZn6tj0vMvdreb8ow1K 2GiMK4zWNp7E+bbL1XJ6OdtcSWr6Vjb+79sEpOscywb3mohFuEhnDk70qlhPgtVJqPky EflHGGYAY1Yv06dEIMizyUNKolcsgDFYW7pxb/Zklmq04pYeU3x6sN2R5dxDXma0DJYx E6LroP97qdCV1CG+hyo+Nv0lVfM4CLKklSrEbqyQCs//nyQcZWsDOa3h+PtbgVOrg2b7 VR7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322677; x=1700927477; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VvI9Us0OJutYR180bTDT/eNujgeRZcibPGsiE0LS1nQ=; b=m23iT6uu+HE783nV8u4uxISNULCDGnlZs6nGvjJDOdp2CdiCPPXk3nAVInO07LZVZ1 lixVtdkQJFLP4U1wsy2lncP16uQ686GR0sBcfgdK8VggBYlbiqpDN5HioyAvt4tLOG6p KUDfW1hEYUuihIBYsQckFaZMy1hECr6Ub7Uy44xr4Qi8vBERrd09r9pNkIQNfzQCUFZk 2u849YdzB+YD4C8bbtE7BmA/eMwJgeafZjaYvwM+WUDsTy2NzxU37FrSUwIOCKmNZhxm sftaYbLZyD/Wz8qMImbhr6K2heJJmRkEF3h73/cX2lnR7y8l/C3VnqLdG0fA+po9hMaZ 0Wew== X-Gm-Message-State: AOJu0YyWJs/z5AGn+OepsJZlSGmxvlx561XmbxobMmIzVV8WBXYXUdD4 ntShjWSyoEcU/NQmpYhm9Ln0kbQ3uDMPltUd X-Received: by 2002:a25:1346:0:b0:d9a:5220:d6b3 with SMTP id 67-20020a251346000000b00d9a5220d6b3mr1526816ybt.56.1700322677059; Sat, 18 Nov 2023 07:51:17 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id x16-20020a25ce10000000b00da034601e2esm1006873ybe.52.2023.11.18.07.51.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:16 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Thomas Bogendoerfer , Yury Norov , linux-mips@vger.kernel.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 05/34] mips: sgi-ip30: rework heart_alloc_int() Date: Sat, 18 Nov 2023 07:50:36 -0800 Message-Id: <20231118155105.25678-6-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:52:39 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917639735632018 X-GMAIL-MSGID: 1782917639735632018 heart_alloc_int() opencodes find_and_set_bit(). Switch it to using the dedicated function, and make an nice one-liner. Signed-off-by: Yury Norov --- arch/mips/sgi-ip30/ip30-irq.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/arch/mips/sgi-ip30/ip30-irq.c b/arch/mips/sgi-ip30/ip30-irq.c index 423c32cb66ed..3c4d4e947817 100644 --- a/arch/mips/sgi-ip30/ip30-irq.c +++ b/arch/mips/sgi-ip30/ip30-irq.c @@ -28,17 +28,9 @@ static DEFINE_PER_CPU(unsigned long, irq_enable_mask); static inline int heart_alloc_int(void) { - int bit; + int bit = find_and_set_bit(heart_irq_map, HEART_NUM_IRQS); -again: - bit = find_first_zero_bit(heart_irq_map, HEART_NUM_IRQS); - if (bit >= HEART_NUM_IRQS) - return -ENOSPC; - - if (test_and_set_bit(bit, heart_irq_map)) - goto again; - - return bit; + return bit < HEART_NUM_IRQS ? bit : -ENOSPC; } static void ip30_error_irq(struct irq_desc *desc) From patchwork Sat Nov 18 15:50:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166566 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241864vqn; Sat, 18 Nov 2023 07:54:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IEoV1WTFlbRc+Hm1bG89bgPUNiACnG4zMotl/7rSzKK/znu75o3m1DlDGxMIg7B4y9AtCAQ X-Received: by 2002:a05:6a00:32cb:b0:68f:b015:ea99 with SMTP id cl11-20020a056a0032cb00b0068fb015ea99mr3495399pfb.10.1700322896494; Sat, 18 Nov 2023 07:54:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322896; cv=none; d=google.com; s=arc-20160816; b=KMgX6ln9hs0nGsv+6dEplbbN/E2SRAlySBLOYYJB1doIaBreXvZxXgzW2RJkXrr+tJ X0dFuYU0YdufUpJ1R4JYSn3T6TuqkpQqhi9Va+PtgBzdssHQ54Z44LcpH+e8fHzBtIMr lglPWVDXDUu5zTOncJAOnrYCik/F7NwNpTtGDMAx5a7zIaVnbctqLoL0b5DsDl4R6HiZ jL4C6uEVFDDIWEGYtOUtaFuOUDuLlM3tofqeKyd7GXeuHj1u4A3RjspgZX1XerIE2RGB RIXHWtmcNGbgjIavbsWrwsHj8VfzPQvk3T0ehH0g3UAKoi1FdeOLjTtS2/dyrHdUeFMF VVQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=UQERxgfSt89Kdhgk7cTMKz26OCMV2gzbBEX6BC+o/Hk=; fh=0j20rKVwuBFDwqBYXMtOF+8NJCkTzE8j3Gn/Pw4QJMU=; b=QsqlI00jbgcNuqRw8BHy/6wo0P7lFx+3OtePMSK6oxtikCjH4QmmIlgCKjl0eGVinM yaJ8u0W6PC0ye9GjFb94d5BJv/n/kU32iP0Z0OjXL6hMa1u7BmvQxdmLhDFsTwETqs3i 4zYSq8OjDwosUiQDAWzJpN9ua7Na84C1N0RjsK7+/twJzskBEUSeTjeQllZEZU8ysXL1 Cb0apIUJUDfvAsQBz7nnV6xgs8/xkzIc283Wu9OhXzJmrndohnS6QzVj3wDY+7sdcvGL bpa/UXp/AcRMpF+EsSq4YgQ7sfd0ux4gKon3qBmjw41tAdCGbOVxuvEcOzyaGiMTpP40 q1nw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=YUwjoHQ5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id x20-20020a63fe54000000b00578a98c0687si4751562pgj.99.2023.11.18.07.54.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:54:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=YUwjoHQ5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (Postfix) with ESMTP id A47B5809C905; Sat, 18 Nov 2023 07:54:38 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230265AbjKRPwV (ORCPT + 29 others); Sat, 18 Nov 2023 10:52:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50480 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230219AbjKRPwL (ORCPT ); Sat, 18 Nov 2023 10:52:11 -0500 Received: from mail-yw1-x1130.google.com (mail-yw1-x1130.google.com [IPv6:2607:f8b0:4864:20::1130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7626BD71; Sat, 18 Nov 2023 07:51:20 -0800 (PST) Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-5c8bc1ea998so8916957b3.0; Sat, 18 Nov 2023 07:51:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322678; x=1700927478; darn=vger.kernel.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; bh=UQERxgfSt89Kdhgk7cTMKz26OCMV2gzbBEX6BC+o/Hk=; b=YUwjoHQ5DP+OyTDVhE+0ai4t07Rh6sz1nx/RGU2cioED3f31OpbpPBwTPXNtQq3Nr5 fOWht3OTsYOA0xs0/1LdlwGyCdbVOWp/lwda84iwF6Ly5qjB3XWU8bc5Cwdteq49byLi sct6wV78F/DqLxVxSzLQZdgvQSm9KgmtRTpqKmrH2LJ7/EDRMt4/f/l/QCpMDnusidnF uomKLDcRQMWx6lG5kpWQv4iDOqnns1govW+N4F3TOCaNidRczrYDsSFOuMlXaS4+5mih WrcLnluP+Gog8zCec9UqY7muw2Ih5vqE3/aic0PJ+muLmK9Yc5jNGHx8FSTvoHwpDCBv DjcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322678; x=1700927478; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UQERxgfSt89Kdhgk7cTMKz26OCMV2gzbBEX6BC+o/Hk=; b=RtXQGtRFDejaZwVDWMaOUQf4XRbp9d3M8SdIE7t8lK+NhR1s4axR0UfW+tLfztH/0k 4UPUlC2SodDnKTHLakfdHaHZBs/rOc3GlEhXkByfhQbx0bs7wdry08sccJXaeePyQDln MzDqjzthYW2T4c7iPqpYBFS7KJDDq+rcRwAFzwf48XKmpfpjnV2sD3+rRJJxr5ketYEo c0XFFFeMDeMDG+5iO39YpDYHZY8nd9jKzfqQqXWeHcnZbS/q0UjVtv7JBDSlvfo/B4G4 AH0xfnVLnCmqIWq+dlY8UvVxhvs/uWkToFm/X3gszQ6Xpt9IJd23O65htrV/4fRGZCwq 7csw== X-Gm-Message-State: AOJu0YyJgNThU54dj8hNR357cS7gbfscu9e4jnLuwLt0SObrkFcaBBBO YbMmHUtuGiycOL69cPjqid0qSWm0GrWdAMf4 X-Received: by 2002:a0d:eb51:0:b0:5a8:250f:687c with SMTP id u78-20020a0deb51000000b005a8250f687cmr1514575ywe.15.1700322678534; Sat, 18 Nov 2023 07:51:18 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id o81-20020a817354000000b005869cf151ebsm1159023ywc.144.2023.11.18.07.51.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:18 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, "David S. Miller" , Rob Herring , Sam Ravnborg , Yury Norov , sparclinux@vger.kernel.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 06/34] sparc: fix opencoded find_and_set_bit() in alloc_msi() Date: Sat, 18 Nov 2023 07:50:37 -0800 Message-Id: <20231118155105.25678-7-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.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 (fry.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:54:38 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917781734809425 X-GMAIL-MSGID: 1782917781734809425 alloc_msi() opencodes find_and_clear_bit(). Switch it to using the dedicated function, and make an nice one-liner. Signed-off-by: Yury Norov --- arch/sparc/kernel/pci_msi.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/arch/sparc/kernel/pci_msi.c b/arch/sparc/kernel/pci_msi.c index fc7402948b7b..91105c788d1d 100644 --- a/arch/sparc/kernel/pci_msi.c +++ b/arch/sparc/kernel/pci_msi.c @@ -96,14 +96,9 @@ static u32 pick_msiq(struct pci_pbm_info *pbm) static int alloc_msi(struct pci_pbm_info *pbm) { - int i; - - for (i = 0; i < pbm->msi_num; i++) { - if (!test_and_set_bit(i, pbm->msi_bitmap)) - return i + pbm->msi_first; - } + int i = find_and_set_bit(pbm->msi_bitmap, pbm->msi_num); - return -ENOENT; + return i < pbm->msi_num ? i + pbm->msi_first : -ENOENT; } static void free_msi(struct pci_pbm_info *pbm, int msi_num) From patchwork Sat Nov 18 15:50:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166558 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241397vqn; Sat, 18 Nov 2023 07:53:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IGIsctShyvdvrxRIWFgqarOeAVlfMy0Tfv2Oy7sJVu/5nE1KVkaFj6IEg5IQnCoElyD6RBk X-Received: by 2002:a17:902:ec91:b0:1cc:b20d:7ec3 with SMTP id x17-20020a170902ec9100b001ccb20d7ec3mr3139116plg.45.1700322827058; Sat, 18 Nov 2023 07:53:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322827; cv=none; d=google.com; s=arc-20160816; b=AJhXpvoQzeGnj3OVncBZAR2PWL+vo+yua03xBMoIEe6q6qArHbx3Nu5s6RA+nEMOQo WbUnFd0L9J0vPLphimBPQCeMBYzAhGdsu97v34EG0AMfsdFJ5nQs6iEKwpxEfjJzqdSo S84Pn2vsyhRHzXpRT/ed6N6eES/FblVCAxeC/54FRuTIpFtzwSlJ3dZUTuvGuaChDd1I T3pMgG8y7wGkGZC0ukNWWQXmYREjEAxCD8yZCC8AlAvnJIR/sXTVpTfabWkHg1XXkaee UUZQswY2Na3ptGS+kTDCvc5PaQ/neRv1pHo+RanRV8wQNf4nWC+wGpsm5CHgNwPJOcZG J73g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=gyoEyO/BvLzExTTgi8khHbjKTjqWvT4r1T0zFU2+3B4=; fh=gnxk/nbutWeccv39WdMZaQmDbojLO4fo9OHA/GnXEjI=; b=bB/l40RejUF9ihwi9T2VWM/DvZxTJEcTq8xTmmUqYkLo56jTbKGH3p0HtbZUnkfaPh sfhz0ofw3o4cF78Cp8ZdDVJebS2N2moU6j97M+ZYqvVsLQ1yAZ338r+yv4g70wzvbqsc jPLf/F2Tow1trhhaMs6W1HNcDIWmLv0aUb15hF2wnhMewmMeBlkgJqRUquxukq51Dkrx c3/pKsiL/LA8clXg2vlsRyaQs36VWV6ltDcBtH4u4ylwlchaiK48VO/cHvOSHpT9fMXv VUteMz5DUIJnByi6ogph3PPneS9D/k4pImMohn8GPUzUdpArDFcvMZY55ehVW7UhXmdq 07BQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=eAYDhoo5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id u15-20020a170902e5cf00b001ce6693d6edsi2553087plf.370.2023.11.18.07.53.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:53:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=eAYDhoo5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (Postfix) with ESMTP id D296C80972BB; Sat, 18 Nov 2023 07:53:31 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230395AbjKRPw3 (ORCPT + 29 others); Sat, 18 Nov 2023 10:52:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230373AbjKRPwQ (ORCPT ); Sat, 18 Nov 2023 10:52:16 -0500 Received: from mail-yb1-xb35.google.com (mail-yb1-xb35.google.com [IPv6:2607:f8b0:4864:20::b35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 609A310D2 for ; Sat, 18 Nov 2023 07:51:22 -0800 (PST) Received: by mail-yb1-xb35.google.com with SMTP id 3f1490d57ef6-db35caa1749so1089841276.2 for ; Sat, 18 Nov 2023 07:51:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322680; x=1700927480; darn=vger.kernel.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; bh=gyoEyO/BvLzExTTgi8khHbjKTjqWvT4r1T0zFU2+3B4=; b=eAYDhoo5LWl01TZzKDQXAmWOeLYBLa9ZfNNJzDryiiiKwgUj3vr9CiGvbrY52X16Av dj8pzPLEJkly88f2AFSiwtyDHLrXAwvFx31AtIoq5z5MMLih/iSgVURt0Xxq502emeKo gQc3vABv8BLyuSyPGa5OzloOSa9dVKMpXn6UFx36MkYrKBQ1Cel/rI08NTYNLgP7DkH3 Rm1Hcmj19H60/2+r3AbHCcBUxCeV9YUXZNWPL2Aqokjx56A0j8351VYK7Dh6RqI+ikbL 6ECJWdJ0/v9b0kLWNz0ltGrc4Hd4LJbz5g+XZKUZFInfhKKa+C8lGRayWOAk3WIPY9iB h0uQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322680; x=1700927480; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gyoEyO/BvLzExTTgi8khHbjKTjqWvT4r1T0zFU2+3B4=; b=m2NYVouJlQ3nztd4ThDpV9tFA6WKt9N+1txXYqQjI/tIRw3yvISK4GHwEYxnMY+ftV 60R7BitGLxitdDWvm6Xf5xGUm8cPVIP5ze0zQz6YaQ0P8+fepffJ4eOYrct229ba1Psn pbRfvE1PfWFoQfPd9H+1sO5X/UzIo9Sj1UOVS5WmgOuYLY7B+P5MXGeMF7+VYfEx7LbV nRbZVYyjo0OP+e8inNvq276koqUo5PjocWWtjxpwG/Wo8Lceew1C7PqDGj4DJLacZ8Dt aBMJP1CslGURRXgjA7R9IkxmJ1astmNGBKbVetexEzJax+LrMziBpin3Mw2EFoZm/VDu 8FHA== X-Gm-Message-State: AOJu0Yy8ciWodJy13aZrAlVptmfSGhDYO+hZGr+SlpF5/4r7WvfrxWoM Zz+4noxOb0JojUbleUQU4igdxfpk6PVIYLWw X-Received: by 2002:a25:bb92:0:b0:daf:be86:a2ea with SMTP id y18-20020a25bb92000000b00dafbe86a2eamr2470792ybg.38.1700322680273; Sat, 18 Nov 2023 07:51:20 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id d2-20020a25cd02000000b00d8679407796sm999292ybf.48.2023.11.18.07.51.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:19 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Will Deacon , Mark Rutland , linux-arm-kernel@lists.infradead.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 07/34] perf/arm: optimize opencoded atomic find_bit() API Date: Sat, 18 Nov 2023 07:50:38 -0800 Message-Id: <20231118155105.25678-8-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.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 (fry.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:53:31 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917708535654336 X-GMAIL-MSGID: 1782917708535654336 Switch subsystem to use atomic find_bit() or atomic iterators as appropriate. Signed-off-by: Yury Norov --- drivers/perf/arm-cci.c | 23 +++++------------------ drivers/perf/arm-ccn.c | 10 ++-------- drivers/perf/arm_dmc620_pmu.c | 9 ++------- drivers/perf/arm_pmuv3.c | 8 ++------ 4 files changed, 11 insertions(+), 39 deletions(-) diff --git a/drivers/perf/arm-cci.c b/drivers/perf/arm-cci.c index 61de861eaf91..70fbf9d09d37 100644 --- a/drivers/perf/arm-cci.c +++ b/drivers/perf/arm-cci.c @@ -320,12 +320,8 @@ static int cci400_get_event_idx(struct cci_pmu *cci_pmu, return CCI400_PMU_CYCLE_CNTR_IDX; } - for (idx = CCI400_PMU_CNTR0_IDX; idx <= CCI_PMU_CNTR_LAST(cci_pmu); ++idx) - if (!test_and_set_bit(idx, hw->used_mask)) - return idx; - - /* No counters available */ - return -EAGAIN; + idx = find_and_set_bit(hw->used_mask, CCI_PMU_CNTR_LAST(cci_pmu) + 1); + return idx < CCI_PMU_CNTR_LAST(cci_pmu) + 1 ? idx : -EAGAIN; } static int cci400_validate_hw_event(struct cci_pmu *cci_pmu, unsigned long hw_event) @@ -802,13 +798,8 @@ static int pmu_get_event_idx(struct cci_pmu_hw_events *hw, struct perf_event *ev if (cci_pmu->model->get_event_idx) return cci_pmu->model->get_event_idx(cci_pmu, hw, cci_event); - /* Generic code to find an unused idx from the mask */ - for (idx = 0; idx <= CCI_PMU_CNTR_LAST(cci_pmu); idx++) - if (!test_and_set_bit(idx, hw->used_mask)) - return idx; - - /* No counters available */ - return -EAGAIN; + idx = find_and_set_bit(hw->used_mask, CCI_PMU_CNTR_LAST(cci_pmu) + 1); + return idx < CCI_PMU_CNTR_LAST(cci_pmu) + 1 ? idx : -EAGAIN; } static int pmu_map_event(struct perf_event *event) @@ -861,12 +852,8 @@ static void pmu_free_irq(struct cci_pmu *cci_pmu) { int i; - for (i = 0; i < cci_pmu->nr_irqs; i++) { - if (!test_and_clear_bit(i, &cci_pmu->active_irqs)) - continue; - + for_each_test_and_clear_bit(i, &cci_pmu->active_irqs, cci_pmu->nr_irqs) free_irq(cci_pmu->irqs[i], cci_pmu); - } } static u32 pmu_read_counter(struct perf_event *event) diff --git a/drivers/perf/arm-ccn.c b/drivers/perf/arm-ccn.c index 728d13d8e98a..d657701b1f23 100644 --- a/drivers/perf/arm-ccn.c +++ b/drivers/perf/arm-ccn.c @@ -589,15 +589,9 @@ static const struct attribute_group *arm_ccn_pmu_attr_groups[] = { static int arm_ccn_pmu_alloc_bit(unsigned long *bitmap, unsigned long size) { - int bit; - - do { - bit = find_first_zero_bit(bitmap, size); - if (bit >= size) - return -EAGAIN; - } while (test_and_set_bit(bit, bitmap)); + int bit = find_and_set_bit(bitmap, size); - return bit; + return bit < size ? bit : -EAGAIN; } /* All RN-I and RN-D nodes have identical PMUs */ diff --git a/drivers/perf/arm_dmc620_pmu.c b/drivers/perf/arm_dmc620_pmu.c index 30cea6859574..e41c84dabc3e 100644 --- a/drivers/perf/arm_dmc620_pmu.c +++ b/drivers/perf/arm_dmc620_pmu.c @@ -303,13 +303,8 @@ static int dmc620_get_event_idx(struct perf_event *event) end_idx = DMC620_PMU_MAX_COUNTERS; } - for (idx = start_idx; idx < end_idx; ++idx) { - if (!test_and_set_bit(idx, dmc620_pmu->used_mask)) - return idx; - } - - /* The counters are all in use. */ - return -EAGAIN; + idx = find_and_set_next_bit(dmc620_pmu->used_mask, end_idx, start_idx); + return idx < end_idx ? idx : -EAGAIN; } static inline diff --git a/drivers/perf/arm_pmuv3.c b/drivers/perf/arm_pmuv3.c index 18b91b56af1d..784b0383e9f8 100644 --- a/drivers/perf/arm_pmuv3.c +++ b/drivers/perf/arm_pmuv3.c @@ -825,13 +825,9 @@ static irqreturn_t armv8pmu_handle_irq(struct arm_pmu *cpu_pmu) static int armv8pmu_get_single_idx(struct pmu_hw_events *cpuc, struct arm_pmu *cpu_pmu) { - int idx; + int idx = find_and_set_next_bit(cpuc->used_mask, cpu_pmu->num_events, ARMV8_IDX_COUNTER0); - for (idx = ARMV8_IDX_COUNTER0; idx < cpu_pmu->num_events; idx++) { - if (!test_and_set_bit(idx, cpuc->used_mask)) - return idx; - } - return -EAGAIN; + return idx < cpu_pmu->num_events ? idx : -EAGAIN; } static int armv8pmu_get_chain_idx(struct pmu_hw_events *cpuc, From patchwork Sat Nov 18 15:50:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166548 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1240937vqn; Sat, 18 Nov 2023 07:52:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IEg2F8Iwbtu8bdQH/EBhIW7tGlwnmr+xUQ59zNc2MP95ddVpIRrKGhzTRMi5jLO+TjKPCt0 X-Received: by 2002:a05:6a20:c184:b0:187:a75d:29db with SMTP id bg4-20020a056a20c18400b00187a75d29dbmr2736332pzb.27.1700322764475; Sat, 18 Nov 2023 07:52:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322764; cv=none; d=google.com; s=arc-20160816; b=zXm9oeA0IsUE9WOsAEBoxO7NtxH4gLKh3XZ3xZDkWK1v33AGgQu3QBLjLESaayKfDa BMQNOmOOhz+XfAgPPSGNyrQWobdz5BFqbJQGn/h8OKubh6CzM2vT6//qKIxrdcTAmSVn TetuVdZTEg8kgXtngTZk9LXDRmzzndlITLBwIf+vnZVtzU3PU+Jp4UNoonfVGIWrNDAa X7SbfKNrY7GCL5PL9PLfRd6dszUGHVujgXVeL2Qz8vuO6rZsvzEh8o7wSbDka5m724G5 zo5Y/XYjt6y+bcU2NnWyLOABgoRVWMDLHyXnk/0X425yPxUJ4Dz5+wliBmUtx9V4gmnG OjMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9UsBR6w3W758FRiCdHZSwpEWSnagR0QzKE5nlW0aMIc=; fh=0oYWc+SYdph/MHBVC3B6vPlgLv4Jp8XiQTLh6OCXz74=; b=g3DDsmkD/ZzhhtsfmJHLvQ8zrOzDHGUQqLtX0AoHSfBpl8plmDaTkUz6XfbcrDGweD 7ahneCW4d/4JRY7h0C66VnxFaCDZiG5a/BiLB2HeMhbwEk8jznuVGpdC21DGTiFt8Rk1 hhz1fw6xoA8O69ivCa3RIGYUWHewa+KzH+IS6N8Xmq2HtmGqUe76JAYZC1EJuq/t0Ogm H4R9ltoBzo1GYxso6SRPZIrZ5nrIxc9vj+1d4o9iSuaN8bDagWPu7uZ1AGxeApwpnaaz 2toKPm+Q3aANZBgS9frWMR6H+IwmA1AfdQNtJCqkSPsfNgDmONvSG5yY0GTntj3zOBWi ++5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=nQs2UW3w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id b17-20020a656691000000b0057942bfab4dsi4413198pgw.395.2023.11.18.07.52.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:52:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=nQs2UW3w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (Postfix) with ESMTP id 42AB280A73E2; Sat, 18 Nov 2023 07:52:43 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230350AbjKRPwb (ORCPT + 29 others); Sat, 18 Nov 2023 10:52:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230241AbjKRPwR (ORCPT ); Sat, 18 Nov 2023 10:52:17 -0500 Received: from mail-yw1-x112f.google.com (mail-yw1-x112f.google.com [IPv6:2607:f8b0:4864:20::112f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F07410EC for ; Sat, 18 Nov 2023 07:51:24 -0800 (PST) Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-5bf58914bacso32809437b3.3 for ; Sat, 18 Nov 2023 07:51:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322682; x=1700927482; darn=vger.kernel.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; bh=9UsBR6w3W758FRiCdHZSwpEWSnagR0QzKE5nlW0aMIc=; b=nQs2UW3wVet4kSsKbSzaXKJxEP2BuksvcT/EJAsDwDfEp6x0P9IKYl818BEEF4AWP5 HGtA5IY818T7+BWc3POZXJRStncOM+cEpVsgppyURmDZPKkHamsdXZTwgwWI4kLk+au4 epfgzV4FElITDS9w4wHt4jRqEuiufR4mHUAgAx95EYNuBk8qBK/ozLdmZEIPThfhhSi2 nfRFUF/4bRkUEYrp1Qx9A9GAVRaAZb7JK0tdeX1K5a63pfMrnpWUmd6q1kdL/wBa+LGE 0IsXZQl4aE+RMaJOPZ1DRx6w0VbY4c2db9ZAB3Q2TTwTvx9iJ9nE93Bf0z1YbB4K8Op6 JJOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322682; x=1700927482; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9UsBR6w3W758FRiCdHZSwpEWSnagR0QzKE5nlW0aMIc=; b=ghirHcFsp0Z5YM/lQMSVuwGaysjCiq3GZC0nFrWUKgyCjdDJ9h7+H4GNRVt+QQS+DB r7caDzVSwXRCbSgITNvvqhDKS0T18RI6ciunWBUe1gGPc1q4GY8pS3Dtqmo++gLlZchu 1/DoIxHumrmChxJK7WkD0qDnLPE+PK8Wu2Up94aGpGa9mLBWzOtjVEpA+QQ882BjKd/o qE7P6yq3wirdlsB929LsVpXpovpIrQj2k/qP6r3Tyffi/21dYpE8brSrKbqgcpLaEocg tlVUcX3QzJEbZVX0y55OQEeIEyILd3i68jGzrVjIDVzgzRyQ+6tVmrDEoNAMnn/ypG4m dCIQ== X-Gm-Message-State: AOJu0YwD2iYuveaU0a+UiAU13EZWIVfbcOfWx4tLejy63EiPQzSRZTzR fQjL5n114NS7OI3jMZvgHUC+lNZk0diFg21W X-Received: by 2002:a0d:dc43:0:b0:59b:ec85:54ee with SMTP id f64-20020a0ddc43000000b0059bec8554eemr3160808ywe.39.1700322682161; Sat, 18 Nov 2023 07:51:22 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id d19-20020a814f13000000b0058ddb62f99bsm1187785ywb.38.2023.11.18.07.51.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:21 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Shuai Xue , Will Deacon , Mark Rutland , linux-arm-kernel@lists.infradead.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 08/34] drivers/perf: optimize ali_drw_get_counter_idx() by using find_bit() Date: Sat, 18 Nov 2023 07:50:39 -0800 Message-Id: <20231118155105.25678-9-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:52:43 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917643250884813 X-GMAIL-MSGID: 1782917643250884813 The function searches used_mask for a set bit in a for-loop bit by bit. We can do it faster by using atomic find_and_set_bit(). Signed-off-by: Yury Norov Acked-by: Will Deacon --- drivers/perf/alibaba_uncore_drw_pmu.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/perf/alibaba_uncore_drw_pmu.c b/drivers/perf/alibaba_uncore_drw_pmu.c index 19d459a36be5..2a3b7701d568 100644 --- a/drivers/perf/alibaba_uncore_drw_pmu.c +++ b/drivers/perf/alibaba_uncore_drw_pmu.c @@ -274,15 +274,9 @@ static const struct attribute_group *ali_drw_pmu_attr_groups[] = { static int ali_drw_get_counter_idx(struct perf_event *event) { struct ali_drw_pmu *drw_pmu = to_ali_drw_pmu(event->pmu); - int idx; + int idx = find_and_set_bit(drw_pmu->used_mask, ALI_DRW_PMU_COMMON_MAX_COUNTERS); - for (idx = 0; idx < ALI_DRW_PMU_COMMON_MAX_COUNTERS; ++idx) { - if (!test_and_set_bit(idx, drw_pmu->used_mask)) - return idx; - } - - /* The counters are all in use. */ - return -EBUSY; + return idx < ALI_DRW_PMU_COMMON_MAX_COUNTERS ? idx : -EBUSY; } static u64 ali_drw_pmu_read_counter(struct perf_event *event) From patchwork Sat Nov 18 15:50:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166549 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1240976vqn; Sat, 18 Nov 2023 07:52:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IHXlzXEB6rleRdBpjtiG6pVsThD28rVi4epoXh+1YMGnKqBBIgSx1aXTRDUZx/tp4a2JzCG X-Received: by 2002:a17:902:d4c6:b0:1c6:30d1:7214 with SMTP id o6-20020a170902d4c600b001c630d17214mr2543684plg.55.1700322768994; Sat, 18 Nov 2023 07:52:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322768; cv=none; d=google.com; s=arc-20160816; b=EZPWCbwG/17BKOSwqoS5i0tJstuV4ojmA99BaZ8DMMo2Zcc/T8bvYAMw5/sCJB4G32 3PpZETTyPWKbBG6+4gtnf3IUZb7eb0VaTS8Tf4/9NoVHqaBK57ohpLwo5ghoPgna8kxj X5OXAgCK3xrAxzeGUhA3F9wnXLC3yG5OcfcAIHPjzX2YVqFldw+VLUwwFVWgKp4UBmj8 dZessydgN3Hm2IO/DFORwrvDsCyE4iO9xqBdrAnzsqRTIOWtdCgiv1R3GEaDO8rclsZo ma4LdR4MKjjjZ3+s8bHmD4x+INjsYvwIP7ow702Fd5vN/vemCOpyXcE+JT+koOxhKz4R eJ9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=1vgDBzQP5sgQpLZgXf8Y/I5f9ETKynbv5QtuyG4UrSA=; fh=TxaAaaZdzBgBLHJ63uZmZgTOY0EHpWDRcpT1wBmtlwI=; b=KPd8G7WXe/jd8vJdB4W2QtZr3Z+gqyp/lyH+zyr9jPq3xoENyCUSK1P3tLqAvDtlcv U7OgVvmkNxuRc1602lnBRWdigImxEllKXFxHrhoQiXrQKCd/BXduMh8/1U9qiH78QVSB 7c5S7ezbG9b0IyFMyjyKJfqMfOlKLLxGvvNgBihm5eD0rKX+5aM+gJgMv3xSocW1VwRz xQbD5rjx1CLlT4NsdsPAa3HbrerxpX0guwTvUUMvGc5mKkTrZl/9M5Z7gJSzfDl8V0kt kk0eF8RLHeZTNZI9a4WZHPUxKled+tr5ahbc9aSonS6WiPaRelTr3D5AfGXC4Vf8SYmp re+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=NLM9Ml01; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id u14-20020a17090341ce00b001cc4efcc852si4099489ple.427.2023.11.18.07.52.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:52:48 -0800 (PST) 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=@gmail.com header.s=20230601 header.b=NLM9Ml01; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 23AB080A73E2; Sat, 18 Nov 2023 07:52:48 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231215AbjKRPwd (ORCPT + 29 others); Sat, 18 Nov 2023 10:52:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37296 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230409AbjKRPwR (ORCPT ); Sat, 18 Nov 2023 10:52:17 -0500 Received: from mail-yw1-x1131.google.com (mail-yw1-x1131.google.com [IPv6:2607:f8b0:4864:20::1131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3CEA610F5; Sat, 18 Nov 2023 07:51:25 -0800 (PST) Received: by mail-yw1-x1131.google.com with SMTP id 00721157ae682-5c6705515d8so20371277b3.2; Sat, 18 Nov 2023 07:51:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322684; x=1700927484; darn=vger.kernel.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; bh=1vgDBzQP5sgQpLZgXf8Y/I5f9ETKynbv5QtuyG4UrSA=; b=NLM9Ml01qJ4IkgQbv+Ri2+76QFWWzLh3mkWpi2OMleBF9fCxNnKV5WDc06aryh1ZCn vgOHDqjT7TWl8ljXxWzhEk3nj/Rd37oKoCseY8zyOTDceyspJJZJLUMxHczflHr6WWiw Deqd55futvd833FMrWwCkW7ijwTE1YzqyTTnYiqV7sUY2VObBW7IK/Yb/L3r+4qtbuSD lGs/RspReC5DpMizaE+J0JUaIJ99LGvfX/+urpzt4h3ltI6Sop1MaPpEmGu+q/dLMQGh ig5sveUuNKNUpxCnyXMTgAGx32LMQxZLI/Rsz88fRT36Sfd/3YlkIzw6AX/ru5Vxgku/ SJag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322684; x=1700927484; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1vgDBzQP5sgQpLZgXf8Y/I5f9ETKynbv5QtuyG4UrSA=; b=oMZ2QVn4WxpBJ5vMypY2awJI3IUtglNe8gR6mNOxIkxy263dtx1wKXYhE5j5/VhuP8 7A6Gz7dHzS6QZbbrYzvJfwgdoLSXBIfrUwcbx9O7QWSuA8Y/nA0veHz/CLXpx2D39ipW 81j1mXz/B1WVkhHlTeHIet3MHRENMF3hFJQg+EiHNYVQcj6VtnHTuHZQfGWYz4lOKLhB Dxw1eg1ZT5t9LT0zt/XODIYHvdUv1ZonCVmx1lDXywfTIvZso7SNIk6Myr3XvhJOUqcF nv/UqMRagQVx2CqWcbqlV3PVSApHF/OPVxThZfQvcYnzkAzfGhYJ41X1dbn8FFfVqHxP mdcA== X-Gm-Message-State: AOJu0YzCOvVbW5kpSYk52bruo/clHnp9aJNaVqjyXPUBPzocVqsNUJ5A UnJmYkW4h01GOgI2UHB8hsXumyjjWavZEoWM X-Received: by 2002:a0d:ccd4:0:b0:5a8:7cb2:15d0 with SMTP id o203-20020a0dccd4000000b005a87cb215d0mr2911801ywd.11.1700322683795; Sat, 18 Nov 2023 07:51:23 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id j63-20020a0dc742000000b005a7d9fca87dsm1157680ywd.107.2023.11.18.07.51.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:22 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Fenghua Yu , Dave Jiang , Vinod Koul , dmaengine@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 09/34] dmaengine: idxd: optimize perfmon_assign_event() Date: Sat, 18 Nov 2023 07:50:40 -0800 Message-Id: <20231118155105.25678-10-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:52:48 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917647867577856 X-GMAIL-MSGID: 1782917647867577856 The function searches used_mask for a set bit in a for-loop bit by bit. We can do it faster by using atomic find_and_set_bit(). Signed-off-by: Yury Norov Reviewed-by: Dave Jiang Acked-by: Vinod Koul --- drivers/dma/idxd/perfmon.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/dma/idxd/perfmon.c b/drivers/dma/idxd/perfmon.c index fdda6d604262..4dd9c0d979c3 100644 --- a/drivers/dma/idxd/perfmon.c +++ b/drivers/dma/idxd/perfmon.c @@ -134,13 +134,9 @@ static void perfmon_assign_hw_event(struct idxd_pmu *idxd_pmu, static int perfmon_assign_event(struct idxd_pmu *idxd_pmu, struct perf_event *event) { - int i; - - for (i = 0; i < IDXD_PMU_EVENT_MAX; i++) - if (!test_and_set_bit(i, idxd_pmu->used_mask)) - return i; + int i = find_and_set_bit(idxd_pmu->used_mask, IDXD_PMU_EVENT_MAX); - return -EINVAL; + return i < IDXD_PMU_EVENT_MAX ? i : -EINVAL; } /* From patchwork Sat Nov 18 15:50:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166550 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241084vqn; Sat, 18 Nov 2023 07:53:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IHQSagmkku6txGCh0MoTUhLuFqOSxgo2DjbghnWkGkW2Qd+2S2V8YZ0XiE0AdIZ6JkGmGXg X-Received: by 2002:a05:6a20:4406:b0:187:4ee0:e958 with SMTP id ce6-20020a056a20440600b001874ee0e958mr13176108pzb.8.1700322785847; Sat, 18 Nov 2023 07:53:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322785; cv=none; d=google.com; s=arc-20160816; b=tJ8MGaq7p8aj7QdDlsWhES8+3qSqi1nK7jouVRBwj/L6YBppyHfaLdNSVVkaJAnV2n OT1hU6SRAA2u14mQ3oackjD/aHf44e1t2YBguaUqdUswWy/VpWV2uYbuxSkdt7sricip /0lY7EPTG99fhZ+dLoeetK67nMKPGQwdnPWXUTerFlzQ12dSt4Y+fE/a9CvhVouPAs1i 2k/rNfYalnBwZQAWmlV/FPmnjBGmU4V9UGJctdKLr3tPC9jFzCKquxkwX8Vxt74fiGfO 2GdWRHfy1Dv560act/fiVi5uPMQCyosvd/7sa76NroGFQLe+ngvrb7NHH31+imIxy1Zs 9Wxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=SrDABjtie/YsTla3oR4TwoLfOAKA91LiKhvoQvuKuZ0=; fh=hIDjZPJ429YWM7aHDh3SaSk3Nu0HPpTmwbXnVqvMNfo=; b=JzM6w1QfjpX29gGBh+swcsTp/xeFNNNvN7pz8YTvW3lXnzrsEaSMufDr3N9FnuSHY6 mI3QxR7UYxkecLKS2LiRP2HsIaP652e4QQpK0A7rv5NhAGzMIA2qS2R4h9V0q1QUrvoJ +9PnqYJ9LeerkGZngwPbK821YuX4GfcwEEaa9OIFKAJ84bO436PkrORwdjEXlzp2+c0Y RCfLMixYdpfMN2rzIIY3LX6kMrcbJ3h0l6XD+Kx1j1DatD3mcw+9M4MvUJZFFLlR4f7t 1JOf3lZzUD+McKzTz9ZEgrXRduHvSgn+D92JP9lgHOauPzRPWQ+3hVBuMf5ybIfTH81y FlVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=kjjbNi9a; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id w68-20020a636247000000b00578f23273a3si4588257pgb.738.2023.11.18.07.53.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:53:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=kjjbNi9a; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 E90FF805363E; Sat, 18 Nov 2023 07:53:02 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231297AbjKRPwm (ORCPT + 29 others); Sat, 18 Nov 2023 10:52:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40688 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230477AbjKRPw0 (ORCPT ); Sat, 18 Nov 2023 10:52:26 -0500 Received: from mail-yb1-xb35.google.com (mail-yb1-xb35.google.com [IPv6:2607:f8b0:4864:20::b35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 113DC1705; Sat, 18 Nov 2023 07:51:27 -0800 (PST) Received: by mail-yb1-xb35.google.com with SMTP id 3f1490d57ef6-d9a6399cf78so2391158276.0; Sat, 18 Nov 2023 07:51:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322685; x=1700927485; darn=vger.kernel.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; bh=SrDABjtie/YsTla3oR4TwoLfOAKA91LiKhvoQvuKuZ0=; b=kjjbNi9ampdDnKd3zsNfGlvyotuVRpTMFasdFcBZSuASyM7r0SZeuKIg9iXIWqr8FF kjOdeEnby6zw0bWAlnZeK+skpxFk85DrayPy1N70H/xesbLTMqO/cn0HhhSTtDimrejm H/JeiPxktiKXqn6UlFFbLVSHdaHRR6dXUihHu4dxoBs4R9vmxmuGsttGGeK1+C7cSA22 pRsbuKiu/ODwIABAgL8cdZ3lG6FNG/xGU2YkhYSzPWMuEMEtGj+sifZQLuxtu7ZoGfqa B2HBINkWNoP0tPrucZmrIqDwEy8VVsCYaSc2RxtZHecJ89/q0L+b1jqP9CNsURLKrleq aDMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322685; x=1700927485; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SrDABjtie/YsTla3oR4TwoLfOAKA91LiKhvoQvuKuZ0=; b=M/9I8S0aHZDkNfUL/rmE3xhIxYSoDkIjbp3AX4ebud0xx2rYzDPD2E4QRcoCa6uR48 v7xzuS0yrngL5b/U1vDgtnaV4Avz/xXB8C/8VvTjzhhluiLrpeHIyh8NgD7pP2o4hzIR plVkIeSlyhiGL2b0VGO+UVrjjjp59oW4c4MVP9V6VWaJrAgJY0s3XK7xrB37PsCkeEun X5nUtLYbARaDVb1DNKalCZj2Pw9RxoMQpEdJW9fopEAWB7pjII78830l6QXK/aNe7M1z jaodA1eHQDOwSpbUpSRe4hDy0HLdT6SgpprQCH7omBhBWW7EGxY5pi8/q49AhTgmubwp k7/A== X-Gm-Message-State: AOJu0Yzu6LjgcBVP+RUuzpN6J3C1+4CQcrSwvI2bmfUl0r3mtDpjXP42 5blB62JtLVKnJpTf+1RpGAUM6FgobsTPdmMR X-Received: by 2002:a25:ad4f:0:b0:daf:7702:fd60 with SMTP id l15-20020a25ad4f000000b00daf7702fd60mr1666269ybe.1.1700322684938; Sat, 18 Nov 2023 07:51:24 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id e14-20020a25d30e000000b00d9cd730e4d0sm1000457ybf.26.2023.11.18.07.51.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:24 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Kalle Valo , Jeff Johnson , ath10k@lists.infradead.org, linux-wireless@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 10/34] ath10k: optimize ath10k_snoc_napi_poll() by using find_bit() Date: Sat, 18 Nov 2023 07:50:41 -0800 Message-Id: <20231118155105.25678-11-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:53:03 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917665629958908 X-GMAIL-MSGID: 1782917665629958908 ath10k_snoc_napi_poll() traverses pending_ce_irqs bitmap bit by bit. We can do it faster by using for_each_test_and_clear_bit() iterator. Signed-off-by: Yury Norov --- drivers/net/wireless/ath/ath10k/snoc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/snoc.c b/drivers/net/wireless/ath/ath10k/snoc.c index 2c39bad7ebfb..a1db5a973780 100644 --- a/drivers/net/wireless/ath/ath10k/snoc.c +++ b/drivers/net/wireless/ath/ath10k/snoc.c @@ -1237,11 +1237,10 @@ static int ath10k_snoc_napi_poll(struct napi_struct *ctx, int budget) return done; } - for (ce_id = 0; ce_id < CE_COUNT; ce_id++) - if (test_and_clear_bit(ce_id, ar_snoc->pending_ce_irqs)) { - ath10k_ce_per_engine_service(ar, ce_id); - ath10k_ce_enable_interrupt(ar, ce_id); - } + for_each_test_and_clear_bit(ce_id, ar_snoc->pending_ce_irqs, CE_COUNT) { + ath10k_ce_per_engine_service(ar, ce_id); + ath10k_ce_enable_interrupt(ar, ce_id); + } done = ath10k_htt_txrx_compl_task(ar, budget); From patchwork Sat Nov 18 15:50:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166560 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241502vqn; Sat, 18 Nov 2023 07:54:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IGBvZZaLU19zNy1FW0/BpUDsiIvPlMBzmaFXIYwoFD9zEk7alkZ6B5RrMKniiJoOc+TBe0F X-Received: by 2002:a05:6a20:430d:b0:189:3748:f060 with SMTP id h13-20020a056a20430d00b001893748f060mr2385970pzk.26.1700322842565; Sat, 18 Nov 2023 07:54:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322842; cv=none; d=google.com; s=arc-20160816; b=Tg2qgdyZ2Km/GoPjalr3DDU/Ny7sqei/KRA0z6AeFItAz5v5Im9ZbTKrO/p7DZuClK V/Zs6C3WM2jwRqEcX/g7YoPWociXwLPylzxsC/HMu54wipwZfTOiu9dNZLEW3Zp7gbr7 xlBqR2YeJp3+fWiknGADHGlXpF8cUiEd84eCyTB8pgymfgJeW7yOpt9g5+mzzJ868UVR nm3MZSFUiqxaUb+e98HaQJZrwqsaJkrSwN2kPs0l+QV3v21yYc5CHxg7zMJWeVwvaf1Q ZRxG2Cg84GjBNwqyP2RnPSZsLow9/v3XWrfIEnh/0k1rx6bBj+X5BZrrgBmQfQhPHmFO YH0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9aggm3BNjkpQF7Koo2HqoELFr7cmqY1seHu1T/WMe7U=; fh=DGB9hGcL7Yr5amNaW0Gre2aGvIsbsvLa60mZGt/rvsA=; b=NthSHQ0cKTZI+9m6Qjlofn9XScVBG04WBnTglnHvg9/lKppVSFvxorzwdmvvUwrS2O kciPiX8u7/bGvXL8EYvNKWezNBvNyJnd7h9SrMFYoSSS+UmcuM657W/94ihk632ly8II 6zo8WuzIgybKt2DxYBBVH3dJ0sTqZ1NeUKv3FwO4a1ZdkrqVgPxuW4u4V6kuHW5/Jub/ lxRAj+nDpE+QY0GgUQeCBdpMVn1AtshEUGfBojQlRsxlCv9bYjwgPInlH7abeqcFinhS wnxj6bDO8h6stMNkRi5/2PRYktzFeVlnrye8LUwmLRa5Wj27LZISuqbQQ/RsqU8Tvut1 WJzg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=YSZU3unX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 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 agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id f68-20020a625147000000b006b261e83225si4290397pfb.310.2023.11.18.07.54.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:54:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=YSZU3unX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 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 agentk.vger.email (Postfix) with ESMTP id 265FF80CCD1B; Sat, 18 Nov 2023 07:53:47 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230092AbjKRPwq (ORCPT + 29 others); Sat, 18 Nov 2023 10:52:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40730 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230518AbjKRPw1 (ORCPT ); Sat, 18 Nov 2023 10:52:27 -0500 Received: from mail-yb1-xb30.google.com (mail-yb1-xb30.google.com [IPv6:2607:f8b0:4864:20::b30]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3E751717; Sat, 18 Nov 2023 07:51:28 -0800 (PST) Received: by mail-yb1-xb30.google.com with SMTP id 3f1490d57ef6-daf7ed42ea6so2930520276.0; Sat, 18 Nov 2023 07:51:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322686; x=1700927486; darn=vger.kernel.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; bh=9aggm3BNjkpQF7Koo2HqoELFr7cmqY1seHu1T/WMe7U=; b=YSZU3unXxunBjc0Nwg3LGWUwuVEUIjnWBFaxcuQ9q+Z7ObgNYQN7NrfhdPSPxzbxhk 04W07mpNFFNRxri1fG5gJ4sn697UaQVCebHYqn09C4vzO4FDtuZHBqMfM67miN4aHZkQ SopWczZEwqmnakeZUnlT81J9LVUL2nb1Ry718lGzB0ORy7xQtpwHkCea3USCkItcsEBx IwC+QXKKHqu5UWSiSW13C/IeFtrvu5i54A1D9sw2brWvw6ardCzvhP40s4XUjSpJhODB L05cydNJKVLuvG8L6mgODO7HJnCugy9faB2ZCVS8Baf45q+yIYYR4rAFJOaYYp3n6ilW pn0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322686; x=1700927486; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9aggm3BNjkpQF7Koo2HqoELFr7cmqY1seHu1T/WMe7U=; b=Fvgf4DImL67n1JSfpUjw7oDFeopsi1R4kTRqpID8Rkw8ukteAo6NAFsQojoFsvAE2h YhLranh7PaT0tmQWOVXhPvYEt0Ng+p5E7Miha+TqJUoT8HcOhe6z544DQ9OuyNbFLEuc e2EJJQ6KRbH528fSyMjt1zND1E2XTV3bkHNXFt54zezKMcLDXHo0jmsG8lnaX+lyf95x LMjp+yeeIttagJCjYUUOeL9ehwhSW7KC8vZnWW/YrwTPa/pmYRCdirjnNdvdVdFpoQJI BZLIouQq+3C5PcfSSLhRfCb5+JyttbfdU28DXcrBZ/9Ueq4FDM4Y6+2ab0LuTWK5WdfS /QBA== X-Gm-Message-State: AOJu0YxoxW9nVCmObO/zyylhyj3qjvM7e9MS4+B2oBa/Zdk/WerOd+9x 1CMHNloY7Q3i2yj0RV8msqx9GyvoT57NN8I+ X-Received: by 2002:a25:2bc8:0:b0:d9a:5630:5281 with SMTP id r191-20020a252bc8000000b00d9a56305281mr2127641ybr.62.1700322686501; Sat, 18 Nov 2023 07:51:26 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id w16-20020a05690202d000b00d9abce6acf2sm964670ybh.59.2023.11.18.07.51.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:25 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Ping-Ke Shih , Kalle Valo , linux-wireless@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 11/34] wifi: rtw88: optimize rtw_pci_tx_kick_off() by using find_bit() Date: Sat, 18 Nov 2023 07:50:42 -0800 Message-Id: <20231118155105.25678-12-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.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 (agentk.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:53:47 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917724637532415 X-GMAIL-MSGID: 1782917724637532415 rtw_pci_tx_kick_off() traverses tx_queued bitmap bit by bit. We can do it faster by using atomic for_each_test_and_clear_bit() iterator. Signed-off-by: Yury Norov --- drivers/net/wireless/realtek/rtw88/pci.c | 5 ++--- drivers/net/wireless/realtek/rtw89/pci.c | 5 +---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/pci.c b/drivers/net/wireless/realtek/rtw88/pci.c index 2bfc0e822b8d..a0d69c75a381 100644 --- a/drivers/net/wireless/realtek/rtw88/pci.c +++ b/drivers/net/wireless/realtek/rtw88/pci.c @@ -789,9 +789,8 @@ static void rtw_pci_tx_kick_off(struct rtw_dev *rtwdev) struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv; enum rtw_tx_queue_type queue; - for (queue = 0; queue < RTK_MAX_TX_QUEUE_NUM; queue++) - if (test_and_clear_bit(queue, rtwpci->tx_queued)) - rtw_pci_tx_kick_off_queue(rtwdev, queue); + for_each_test_and_clear_bit(queue, rtwpci->tx_queued, RTK_MAX_TX_QUEUE_NUM) + rtw_pci_tx_kick_off_queue(rtwdev, queue); } static int rtw_pci_tx_write_data(struct rtw_dev *rtwdev, diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c index 14ddb0d39e63..184d41b774d7 100644 --- a/drivers/net/wireless/realtek/rtw89/pci.c +++ b/drivers/net/wireless/realtek/rtw89/pci.c @@ -1077,10 +1077,7 @@ static void rtw89_pci_tx_kick_off_pending(struct rtw89_dev *rtwdev) struct rtw89_pci_tx_ring *tx_ring; int txch; - for (txch = 0; txch < RTW89_TXCH_NUM; txch++) { - if (!test_and_clear_bit(txch, rtwpci->kick_map)) - continue; - + for_each_test_and_clear_bit(txch, rtwpci->kick_map, RTW89_TXCH_NUM) { tx_ring = &rtwpci->tx_rings[txch]; __rtw89_pci_tx_kick_off(rtwdev, tx_ring); } From patchwork Sat Nov 18 15:50:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166554 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241231vqn; Sat, 18 Nov 2023 07:53:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IGrZY1YH7YB/q6zdXY1tysME75oecXz/3pE8ZLRgwD3gSrZWrdEloA6jbw+bw75aS4nlbBh X-Received: by 2002:a05:6a20:12c2:b0:185:9de4:fd31 with SMTP id v2-20020a056a2012c200b001859de4fd31mr3325314pzg.18.1700322804815; Sat, 18 Nov 2023 07:53:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322804; cv=none; d=google.com; s=arc-20160816; b=HRjByoc8o9dSUQILnvs8PuCtolMAOcaG6GestDNnR63Th2VxIulkdgHckpvUsqULI+ CahV5b6PAeSKbdXLWTI9gopCzozvUlvJsAAL7M2b30NVaGYfmdQ+bL6AezFFHP9zBqH/ ErynQeEVuOh6S+tr6NunjHgZCJWUJdpFOU7Sw7NXHakN2ltGYdbJ+WdLgeDy7YDSXJIK auI8SFUqxpz5Cr4bpqA7tZdZeGJe1FbkdEijkBpwWY1yRNmt7jdhO3ZKNSEAFpCGfXpB e6Zy7SMYMPx175Ov1S03/l7P2mlhfaCrLvAaIpevbwA/1YsRj6u4TiWix4iuhQ6E6qQY mHHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=/7UbIoFa3HLA+YNouSNyxHd1ANvqTMMe1TaZ6Yb0imk=; fh=qfHDG4/PTGLWqHShWonFkWmwjRYv/m1aHA3C9T7t8MA=; b=wppKa0smcoul0AZi0YIbBEqAEKUg5nb/Ve2xvP7ydnzSCIm5RSuMFrHEzlP2n7qc9p 4VSVS5hoDxmjoUfmhZGQgY22L0VeHAJGq4F6qd6nyazchtjFfG3Heb8HfONcWmA8iYrO eeBXhdjziZsX4gfaAWcgbaI9YP7NgagqgGkbPCQFz8jl0VkLO+rNcZWIp8SYGbvkM8Z4 dOY2yn9gG3CibDuDTtyzszcOayF0VRD5B6dpsszUNO/bQrkIPrcpLaeDYhaVK6aVPRH+ 0YqvAzSnqzCsD8ByoKWoxzaFSSOFeKrteA36pII+cqQBQZK6CgabdX5SQkPxt+Kc/qh/ rFDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=KAi1o1Lp; 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 lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id fj27-20020a056a003a1b00b006bf349fd067si4502940pfb.156.2023.11.18.07.53.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:53:24 -0800 (PST) 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=KAi1o1Lp; 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 0D9808051A24; Sat, 18 Nov 2023 07:53:21 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231148AbjKRPwv (ORCPT + 29 others); Sat, 18 Nov 2023 10:52:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40626 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231134AbjKRPw2 (ORCPT ); Sat, 18 Nov 2023 10:52:28 -0500 Received: from mail-yb1-xb2a.google.com (mail-yb1-xb2a.google.com [IPv6:2607:f8b0:4864:20::b2a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D5381728; Sat, 18 Nov 2023 07:51:29 -0800 (PST) Received: by mail-yb1-xb2a.google.com with SMTP id 3f1490d57ef6-da0359751dbso2372606276.1; Sat, 18 Nov 2023 07:51:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322688; x=1700927488; darn=vger.kernel.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; bh=/7UbIoFa3HLA+YNouSNyxHd1ANvqTMMe1TaZ6Yb0imk=; b=KAi1o1Lp2NXwdu7Wp2qrYSU1kAU39h4nCxehYxl8oMXiayPkh0Q3w/J9ydhyMErtxH 4qcESin55kISPjFb4nD6h7tm8Drs9yk9ITYtfYpqhRTc1ZLLV3Hxy3EzxlpoTAVcnFIF HrF+Cks34FmnTYFTG1GezpcK3MxWcW5vRrrZEiuLZo45H4OImCbrOS4s1vGq81zYoFFA MzPsW+2v3WUuNPg17AqgaNfFqIdsA7bK0GOIRKUkDzRwvtu63GfYqRvQ3XlsnBbMGOCA kuUhkDvJj/MXlAOEHpBRWsCGlE/nhsoGr5rfga4yWUDCOzXSywEmuG3FC2KCoaonDgIJ atxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322688; x=1700927488; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/7UbIoFa3HLA+YNouSNyxHd1ANvqTMMe1TaZ6Yb0imk=; b=tByGhZ5Qiz9yPFEuwaCgeDROxQEZA1QwOkU7blb+kM6cfMvG+M7LHn7V9RKwm+lZE9 xKONKvwhXDiHhDAs75OwCbhabqiFqykPFvOiIwh/6ZwVg1IFRmPwkC9ceKGrbWGn5xnn lp03mxOPC1d47QbflBbrJeRfDwrB76dw6LDuYWSsM2Mapy8XZ3rjqTe1dqyadqKQto0o nW9GjbJrGkk4Lp85GypdWldfZg2mb5+2IABjwp1rc1RFwLChF4o6rKCU2fFimeTb4hAK CcYtJqwtuuQDVcSpJ1YQZroYSGkkGdr2saseBF6P8wI5f2GEzKOdtX48ZjBkLAyujQV4 tKBg== X-Gm-Message-State: AOJu0YzYzv4yYTGCKXFCN/v11vwMFj/gIIbxgs96Sz2acUt45KbXES62 8bsaVeiCKoKsFuGrhC3mypDrVjfXGtsZXaVp X-Received: by 2002:a25:ad4f:0:b0:daf:7702:fd60 with SMTP id l15-20020a25ad4f000000b00daf7702fd60mr1666371ybe.1.1700322688428; Sat, 18 Nov 2023 07:51:28 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id w4-20020a254904000000b00da3b52e3cf5sm1010714yba.10.2023.11.18.07.51.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:27 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Stanislaw Gruszka , Kalle Valo , Gregory Greenman , Hans de Goede , Johannes Berg , Kees Cook , Yury Norov , Miri Korenblit , linux-wireless@vger.kernel.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 12/34] wifi: intel: use atomic find_bit() API where appropriate Date: Sat, 18 Nov 2023 07:50:43 -0800 Message-Id: <20231118155105.25678-13-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:53:21 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917685514715833 X-GMAIL-MSGID: 1782917685514715833 iwlegacy and iwlwifi code opencodes atomic bit allocation/traversing by using loops. Switch it to use dedicated functions. Signed-off-by: Yury Norov --- .../net/wireless/intel/iwlegacy/4965-mac.c | 7 ++----- drivers/net/wireless/intel/iwlegacy/common.c | 8 ++------ drivers/net/wireless/intel/iwlwifi/dvm/sta.c | 8 ++------ drivers/net/wireless/intel/iwlwifi/dvm/tx.c | 19 ++++++++----------- 4 files changed, 14 insertions(+), 28 deletions(-) diff --git a/drivers/net/wireless/intel/iwlegacy/4965-mac.c b/drivers/net/wireless/intel/iwlegacy/4965-mac.c index 69276266ce6f..8fb738c95cb4 100644 --- a/drivers/net/wireless/intel/iwlegacy/4965-mac.c +++ b/drivers/net/wireless/intel/iwlegacy/4965-mac.c @@ -2089,12 +2089,9 @@ il4965_txq_ctx_stop(struct il_priv *il) static int il4965_txq_ctx_activate_free(struct il_priv *il) { - int txq_id; + int txq_id = find_and_set_bit(&il->txq_ctx_active_msk, il->hw_params.max_txq_num); - for (txq_id = 0; txq_id < il->hw_params.max_txq_num; txq_id++) - if (!test_and_set_bit(txq_id, &il->txq_ctx_active_msk)) - return txq_id; - return -1; + return txq_id < il->hw_params.max_txq_num ? txq_id : -1; } /* diff --git a/drivers/net/wireless/intel/iwlegacy/common.c b/drivers/net/wireless/intel/iwlegacy/common.c index 054fef680aba..c6353e17be50 100644 --- a/drivers/net/wireless/intel/iwlegacy/common.c +++ b/drivers/net/wireless/intel/iwlegacy/common.c @@ -2303,13 +2303,9 @@ EXPORT_SYMBOL(il_restore_stations); int il_get_free_ucode_key_idx(struct il_priv *il) { - int i; - - for (i = 0; i < il->sta_key_max_num; i++) - if (!test_and_set_bit(i, &il->ucode_key_table)) - return i; + int i = find_and_set_bit(&il->ucode_key_table, il->sta_key_max_num); - return WEP_INVALID_OFFSET; + return i < il->sta_key_max_num ? i : WEP_INVALID_OFFSET; } EXPORT_SYMBOL(il_get_free_ucode_key_idx); diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/sta.c b/drivers/net/wireless/intel/iwlwifi/dvm/sta.c index 8b01ab986cb1..21e663d2bc44 100644 --- a/drivers/net/wireless/intel/iwlwifi/dvm/sta.c +++ b/drivers/net/wireless/intel/iwlwifi/dvm/sta.c @@ -719,13 +719,9 @@ void iwl_restore_stations(struct iwl_priv *priv, struct iwl_rxon_context *ctx) int iwl_get_free_ucode_key_offset(struct iwl_priv *priv) { - int i; - - for (i = 0; i < priv->sta_key_max_num; i++) - if (!test_and_set_bit(i, &priv->ucode_key_table)) - return i; + int i = find_and_set_bit(&priv->ucode_key_table, priv->sta_key_max_num); - return WEP_INVALID_OFFSET; + return i < priv->sta_key_max_num ? i : WEP_INVALID_OFFSET; } void iwl_dealloc_bcast_stations(struct iwl_priv *priv) diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/tx.c b/drivers/net/wireless/intel/iwlwifi/dvm/tx.c index 111ed1873006..1b3dc99b968c 100644 --- a/drivers/net/wireless/intel/iwlwifi/dvm/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/dvm/tx.c @@ -460,17 +460,14 @@ int iwlagn_tx_skb(struct iwl_priv *priv, static int iwlagn_alloc_agg_txq(struct iwl_priv *priv, int mq) { - int q; - - for (q = IWLAGN_FIRST_AMPDU_QUEUE; - q < priv->trans->trans_cfg->base_params->num_of_queues; q++) { - if (!test_and_set_bit(q, priv->agg_q_alloc)) { - priv->queue_to_mac80211[q] = mq; - return q; - } - } - - return -ENOSPC; + int q = find_and_set_next_bit(priv->agg_q_alloc, + priv->trans->trans_cfg->base_params->num_of_queues, + IWLAGN_FIRST_AMPDU_QUEUE); + if (q >= priv->trans->trans_cfg->base_params->num_of_queues) + return -ENOSPC; + + priv->queue_to_mac80211[q] = mq; + return q; } static void iwlagn_dealloc_agg_txq(struct iwl_priv *priv, int q) From patchwork Sat Nov 18 15:50:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166555 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241260vqn; Sat, 18 Nov 2023 07:53:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IE79lKY9icwFYmm85lPfqLRKXu+v3MCYA9rNMWBJdLAjMjwZulzxFrz9e/J+bnAOB2za3Eb X-Received: by 2002:a05:6a20:7d9e:b0:187:b995:fb72 with SMTP id v30-20020a056a207d9e00b00187b995fb72mr3475900pzj.2.1700322809693; Sat, 18 Nov 2023 07:53:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322809; cv=none; d=google.com; s=arc-20160816; b=J8XF8lNQUIgsWkNteUweyeAkZf0DE9kiJA6OmWWg2yuuTFXImkw4M1CLJLxHRWpTbk 9fRO5/WQNfQO6SW2lKzbD5gJhQzr2RMlB9Of0T2mDcqJuYX+BJ1RWPBITSiWvOpH6iah 0pMnWieDSp9RR487/p+UWOkSmNSB/8af4kDBIGKlVu+tbFv1nGuOsPVB/JMDS/1i2PFq QZIo4YzNDkKtIGM3KskzMHSQfVw6GDXAy7bNUCaGTLpbbDAXZMzF2x/KI0yB9bboziUE iLjspT+mus3BEYZxLG1rzophDvvToqS7t+ZAOeg8vEO38LY7+I80jTsRRuoFB9BK+80s kULQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=FWIlOk1FsRTd5Pg1eEMJS0d0MbiyZx68JIVX7B57ps0=; fh=c1BYRk7JYcxDfDmE70ijSNOm8k5Gejuj5f742qPnA0g=; b=gMdwdMd+xeIig7/oTQqI5ITDyCiyE9Zr8i2I53HInB+jw6423aUvtNA6Zh6iGjHdvm tyvNWzubUrhCP0g9GZMGYr4USF/okxOeb7XGyo7cLX8cI2fDeAp48LOvAf5BqhopB7qP GEXfxu+/izMgjZ8+4aGiwXH4fiO+nnwivlzMN3gTs6vusDHDldG/2zjvZcIuetrbAGvy V0ornxEqM0WziRxzL0VjWVvYRdIKtBQsOMYlvNYw86GJ4v0et4AGB9CZvANodH8cr8+y 8R3PpaFqynltgCXYoTVsCHXFmYE3RWe16kRlCAM836P/nM3suUUtp7laHW9i0/7AXmbk zbWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=mXAB05eH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id a3-20020a631a43000000b005b8615bd40dsi4622720pgm.813.2023.11.18.07.53.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:53:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=mXAB05eH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 B7965805363E; Sat, 18 Nov 2023 07:53:27 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231171AbjKRPxA (ORCPT + 29 others); Sat, 18 Nov 2023 10:53:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230216AbjKRPw3 (ORCPT ); Sat, 18 Nov 2023 10:52:29 -0500 Received: from mail-yw1-x112f.google.com (mail-yw1-x112f.google.com [IPv6:2607:f8b0:4864:20::112f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DECA11985; Sat, 18 Nov 2023 07:51:31 -0800 (PST) Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-5a7fb84f6ceso29711467b3.1; Sat, 18 Nov 2023 07:51:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322689; x=1700927489; darn=vger.kernel.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; bh=FWIlOk1FsRTd5Pg1eEMJS0d0MbiyZx68JIVX7B57ps0=; b=mXAB05eHIJUK3SjzKjiL/jMGPGujkItEHsnP4JJFtHV57ZvtkIiEdaTnoDuv1Hs+PV q+RK/R0TZffv6D/9MK8vRCS/tu/WtD0ZU4maYuIQPvmu03BJRHoNnjg5bVNFBtyBBh+F pTjRxP8YTIsxyUnwv8dltoKsA6Hd6DzZbvkrNop+hsS9NicxayHvVTc5wU4w3ZY5oPvb R5Q2Ipe3rm4pvAwQolwXK2TFIKUpkc2zbbaxrRlHFo2m7rPa9Gj9HrS5Cq3/B61TBpMD Du9r4Obt9Cnfgv9N2PfJHRg8uxbiycN2uAbLYN0/uMVaT9EDs1RGmOPO6W79HNKEodfB 8Y4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322689; x=1700927489; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FWIlOk1FsRTd5Pg1eEMJS0d0MbiyZx68JIVX7B57ps0=; b=tr5nUVMepAS5806kNAfiJvw17Ug5+cV96trbomLUI6k/U/4tGwSlVYsIRRsgn+Xitt MnCq8qNrMnnavztvIBGQwvwVyD6Wt4XXDnS4WB7KFhPuGAhLEKz3pQzKt855Mc0B4Kdt /CkxHQA7+a/dKliqecawq974HYnGhdYTiuLvE7X08MmoXL//GI7cv/qwhv4s1/O/uPWm vIVwrc9/1ZPu/lgWBO7yWo4BYgNg7oRC+ORkAuLfBc7dqhvKCh8btFn+BykAjY/q3FyR gCGTMb0NYUeNgHGsv5i0e+aLxrcsjUXLlz5c7D5iDjcetI8eWMInfKyS4G543oY0D6EM IRvQ== X-Gm-Message-State: AOJu0YyRJRAOANLV/nOITrWhUmxTZRto3nmONas9CLQ74T1GXCB/1jz+ oNNTxrPgSKS1Y2jFW9osoLvNrdxtjgRcCiNI X-Received: by 2002:a0d:d54e:0:b0:5a7:ba53:be73 with SMTP id x75-20020a0dd54e000000b005a7ba53be73mr2010066ywd.15.1700322689525; Sat, 18 Nov 2023 07:51:29 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id k186-20020a0dfac3000000b00559f1cb8444sm1186208ywf.70.2023.11.18.07.51.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:29 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Vitaly Kuznetsov , Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , kvm@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 13/34] KVM: x86: hyper-v: optimize and cleanup kvm_hv_process_stimers() Date: Sat, 18 Nov 2023 07:50:44 -0800 Message-Id: <20231118155105.25678-14-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:53:27 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917690595023992 X-GMAIL-MSGID: 1782917690595023992 The function traverses stimer_pending_bitmap n a for-loop bit by bit. We can do it faster by using atomic find_and_set_bit(). While here, refactor the logic by decreasing indentation level and dropping 2nd check for stimer->config.enable. Signed-off-by: Yury Norov --- arch/x86/kvm/hyperv.c | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c index 238afd7335e4..460e300b558b 100644 --- a/arch/x86/kvm/hyperv.c +++ b/arch/x86/kvm/hyperv.c @@ -870,27 +870,26 @@ void kvm_hv_process_stimers(struct kvm_vcpu *vcpu) if (!hv_vcpu) return; - for (i = 0; i < ARRAY_SIZE(hv_vcpu->stimer); i++) - if (test_and_clear_bit(i, hv_vcpu->stimer_pending_bitmap)) { - stimer = &hv_vcpu->stimer[i]; - if (stimer->config.enable) { - exp_time = stimer->exp_time; - - if (exp_time) { - time_now = - get_time_ref_counter(vcpu->kvm); - if (time_now >= exp_time) - stimer_expiration(stimer); - } - - if ((stimer->config.enable) && - stimer->count) { - if (!stimer->msg_pending) - stimer_start(stimer); - } else - stimer_cleanup(stimer); - } + for_each_test_and_clear_bit(i, hv_vcpu->stimer_pending_bitmap, + ARRAY_SIZE(hv_vcpu->stimer)) { + stimer = &hv_vcpu->stimer[i]; + if (!stimer->config.enable) + continue; + + exp_time = stimer->exp_time; + + if (exp_time) { + time_now = get_time_ref_counter(vcpu->kvm); + if (time_now >= exp_time) + stimer_expiration(stimer); } + + if (stimer->count) { + if (!stimer->msg_pending) + stimer_start(stimer); + } else + stimer_cleanup(stimer); + } } void kvm_hv_vcpu_uninit(struct kvm_vcpu *vcpu) From patchwork Sat Nov 18 15:50:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166552 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241194vqn; Sat, 18 Nov 2023 07:53:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IEUyI7ZGssTyIuYTSPVZVp16ZklGzs00qAaNvO9SbGgn12x/6pSy2qIONB55xyoYzGkHRvz X-Received: by 2002:a05:6a21:144e:b0:187:4329:f06d with SMTP id oc14-20020a056a21144e00b001874329f06dmr7975761pzb.31.1700322799497; Sat, 18 Nov 2023 07:53:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322799; cv=none; d=google.com; s=arc-20160816; b=D74Af0bzBkT42cAmMh9HxSX65gJnV372oKOOnb7DIVA3zQni4a8eeemOF3XMF+AVV5 TZtc+Otkfb1MkcZJtF8gKv7x21JAY9c+ucOB/+rxxIltRrq2WPhdGNWXr644qAYzQ0WE BUAP2dt+7daS4079MzUfzBHpTXDwY8RGKoGlxqx/qgPzgMmHmJ5yT8pVchkSecmd3g3Z MtV5c0QLbqBqJLYSQHIQjfcxRl8QKireX0TmaRemhSOpQqIXASIgwAFTT/IiJeeOsUa0 5w3v1q4jsAjJiQrrnNPAND5zs66y+bdIlctFRxav6lMpLUghhgExnq2aIEriKtr8qYRv c9tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=an+B6x9GS644FA4Rk778Y0CGpfaOfqQCwN2Xt25DKlo=; fh=mfHUeE8LqJa9zAUNL6zd52NynPT3rOublyOY0yZ/mQI=; b=UB5PXT8ldBBdvtlR7R4wzZVoOWnyd7/+bmrBaAAyrvaVKAm9SWanDGdI0fbLfqiVJq A6odBd4+raZc4XKRBPS9rOOUEMyQFDxPFlxOt+qe4nuxNPHYyyPpatrxzUZQjndGM4P0 WRkJVx5MfoGev8qERu1lAwf3+koDvnNQZnEvdcgY1QvaVukqb7BpXlPYiu+ysIhe0S0l om9npSRVPR4HrFmXeG/ZnfcSpV7FtPL8xroxQZ4qb99vPACM0xs856Moa9X7+FhmE1so 7GCf7K1wHnw0K4q2gL+Zy+CQK/3eaaORLGowufYGORz9j3CH8gYdK2SL/eWcP4HETocR Eqnw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="Rcd/ITOD"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id k2-20020a633d02000000b005bd2ab86667si4643489pga.651.2023.11.18.07.53.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:53:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="Rcd/ITOD"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (Postfix) with ESMTP id 6485B809FCB1; Sat, 18 Nov 2023 07:53:18 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231244AbjKRPxH (ORCPT + 29 others); Sat, 18 Nov 2023 10:53:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231197AbjKRPwb (ORCPT ); Sat, 18 Nov 2023 10:52:31 -0500 Received: from mail-yw1-x1134.google.com (mail-yw1-x1134.google.com [IPv6:2607:f8b0:4864:20::1134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69E641992; Sat, 18 Nov 2023 07:51:32 -0800 (PST) Received: by mail-yw1-x1134.google.com with SMTP id 00721157ae682-5a877e0f0d8so32646977b3.1; Sat, 18 Nov 2023 07:51:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322691; x=1700927491; darn=vger.kernel.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; bh=an+B6x9GS644FA4Rk778Y0CGpfaOfqQCwN2Xt25DKlo=; b=Rcd/ITOD2m9aVQEloHhk6b5W/g9VVxTP+FPhjUibMHhWW+UyofAYE6E6XaVsJkelaa 1FurLJpmQTQYUnOTAh0zWbO9krO0XDjwL4EVEAn3GtQ7yUqdGDDpLETHf8RYSUFv1rKF gqviN3RgiEj1Qp+Uuxmo+9oIPJbBOvRvzGeQQOV9tISy1tjFL0dHiQN0rlpUsDQddOGX EaA6OHurJPnWpPYHuibF2zCJsnHLurNrqzCmIQUEEXlo24TWwJPPFPXCMG9DXzU14Hgt Bullw6uV/qUGM4ONhmO4sCeLyyzIzzpvyQsGMrmObCPErIcy1/uidjFId4F+tlqAZqa5 mP9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322691; x=1700927491; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=an+B6x9GS644FA4Rk778Y0CGpfaOfqQCwN2Xt25DKlo=; b=VfOJabkPz1FtLH/mZcmCRAioTgckNPotClE7g9dlseGJI+TNgxph7rhwpZEDxWmvP6 T+BIGKJqBk2ZdJboGgB3tyHsGMHo4OlD20JU9IK7aDRDmC1dtgBHS2gShAOUbBXl+EVG xl+DVtkryBh4dmpAITxCB29iwidOeQ5YPkZLKR3K9b7pNf7zR71ybI6S5inGwMmiOe3o H3EiSk4ssZ2sle8a+tWbOhzB6fK+I8A/AVeSMwkLQq8Sog7mi03aayGmhqQDgTjkpkny AHeqVDj9WxvPifSCcW530EBRZSEshi3n32RAmzvG7bZAP60h8wMZvjSJ1qQiE4km1fDV 9V0Q== X-Gm-Message-State: AOJu0YzKs71rDIY0H7+VRnRtu01Yfu5301Eke8Ely9Q6lukNR2F/rqpa Y1/C1875PwYFhZWsH3d7I7OktnglCF/BvlW5 X-Received: by 2002:a0d:cb45:0:b0:5c9:3442:9c8c with SMTP id n66-20020a0dcb45000000b005c934429c8cmr941390ywd.21.1700322691140; Sat, 18 Nov 2023 07:51:31 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id i78-20020a819151000000b005a7bf9749c8sm1173851ywg.4.2023.11.18.07.51.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:30 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , linux-hyperv@vger.kernel.org, linux-pci@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 14/34] PCI: hv: switch hv_get_dom_num() to use atomic find_bit() Date: Sat, 18 Nov 2023 07:50:45 -0800 Message-Id: <20231118155105.25678-15-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:53:18 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917679547315960 X-GMAIL-MSGID: 1782917679547315960 The function traverses bitmap with for_each_clear_bit() just to allocate a bit atomically. We can do it better with a dedicated find_and_set_bit(). Signed-off-by: Yury Norov Reviewed-by: Michael Kelley --- drivers/pci/controller/pci-hyperv.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c index 30c7dfeccb16..033b1fb7f4eb 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -3605,12 +3605,9 @@ static u16 hv_get_dom_num(u16 dom) if (test_and_set_bit(dom, hvpci_dom_map) == 0) return dom; - for_each_clear_bit(i, hvpci_dom_map, HVPCI_DOM_MAP_SIZE) { - if (test_and_set_bit(i, hvpci_dom_map) == 0) - return i; - } + i = find_and_set_bit(hvpci_dom_map, HVPCI_DOM_MAP_SIZE); - return HVPCI_DOM_INVALID; + return i < HVPCI_DOM_MAP_SIZE ? i : HVPCI_DOM_INVALID; } /** From patchwork Sat Nov 18 15:50:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166553 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241226vqn; Sat, 18 Nov 2023 07:53:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IG4nQoVE2zLForuRPbFj97HXX5GzpbjfBZT4J8cfhlx7yxivsIfDWueAT/d/aiLjdaupOJ4 X-Received: by 2002:a05:6a00:800d:b0:6cb:6939:1f96 with SMTP id eg13-20020a056a00800d00b006cb69391f96mr895507pfb.13.1700322804501; Sat, 18 Nov 2023 07:53:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322804; cv=none; d=google.com; s=arc-20160816; b=xPoLUibshusDuvClR1i07lk1sejH/WyPMbW8Cx54wYBQbdtu9r2IX4l2G9ZH1q7gOX SHkG0JL39Nv0I7qQ5RkrvEQsiNZ2EZ8fPMuG/fLivij6W1yxjJzp5mPrVsvd2RcN1F58 8a7Z/VDAw24yAprf5t2JUplf4oSilRGy7qYToJJGzmNaMYeFLevAKxgOLiicIg6bUZmk /DnE5tJeGoZqRLIT/zhj73tx7A1oSRh+1kHCicIZAchqgBQs4Jtor5Zo4czppLBgzaU3 D+TnmI9Sisb4uPlx2GkzJT+peDgxv3gEjKLVOWRCUAoUAp+pwGYwtr89F/3f3yIoHgdS v9RQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=JOfyysznONox9DaU39l3AImWR8KMLBN7ng9G0tjKefQ=; fh=wVICzTjNULSHowhyep3F7GGgVmNmLeFe05z5X9b8Cjg=; b=K6P5J0yHafxu0rwK6PsYNvz2Ei6Dt8LFvfH1dmiotFkLTr1gwKF8olA8fyAjAkz+un eNDbsUz/NAgRcBOngIwzCoXkR3NU4kIdzXptQkzVdUzKT+Il7ucO5J+9tMkybNj4PQlE BagAtNBJR0KgSlw5gYIkymWsHkdCq4OQwuffuZcolMj0vkEgL97JXS4SIS4pPOk7pzl1 cq1IiBaslbpmxiEuX/z9vyRsTCocYHg7GZ5E40/yK6+NKHmE+vTxxm+UGj3OpJc6UaYm suzoiGczFpJ0jo8bVMwddzY1Z7+tOlYFilEftA+WNHgLyiPNA1PNximBrkvgjRppdxCe TSeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=nSDKSRA5; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id cl19-20020a056a02099300b00589878c0a5bsi4796948pgb.71.2023.11.18.07.53.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:53:24 -0800 (PST) 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=@gmail.com header.s=20230601 header.b=nSDKSRA5; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id A3630809FCB1; Sat, 18 Nov 2023 07:53:23 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231285AbjKRPxM (ORCPT + 29 others); Sat, 18 Nov 2023 10:53:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49896 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231232AbjKRPwj (ORCPT ); Sat, 18 Nov 2023 10:52:39 -0500 Received: from mail-yw1-x112b.google.com (mail-yw1-x112b.google.com [IPv6:2607:f8b0:4864:20::112b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CFA5819A8; Sat, 18 Nov 2023 07:51:34 -0800 (PST) Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-5a87ac9d245so33494857b3.3; Sat, 18 Nov 2023 07:51:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322692; x=1700927492; darn=vger.kernel.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; bh=JOfyysznONox9DaU39l3AImWR8KMLBN7ng9G0tjKefQ=; b=nSDKSRA5Nur2rNbS9UT+M3DyFOxmz1yxHC/uujqsK+JEEQO6nCgLIS/DkxQ7RMZ+en GmG/bsf5W0rcQrHLcawcv3wDa4Cq6rAcx0EBXARYqxfP/8RN2vm7Vylr1WMDUYzXdRWO cc9pijrEBkuVK86d8TVo4pKVFkKiVzl4HRjF572qbIGyBJDb6LqDAtQKx1ts2r5LuKiq QTSt4ESFs5M8V5UFWixhZq3/DEsQoOQUwFqaXiBsLGhYzvHuy680AEjYuec/Dpwl4Cgy NemOO+7rWdsDeAKBqIQuNJZe1Hc0IIXB7YOHgOeYRFIXrlJ48Fk/igBkerDajrCtuwC+ H0pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322692; x=1700927492; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JOfyysznONox9DaU39l3AImWR8KMLBN7ng9G0tjKefQ=; b=P+D8cf4pgVfNYcYom3qvU61hBuZsTBjehYXRSKr9RO3AfiYcVKULZhfHtCtlGMwNRy J5DYzLg+d6133ZSv+nvOc7TOsRf3b5miqHfg0LuF/4PEHu442rtMfabsR9rVySZNeYo/ zcjb5hLdsiEDvA8UBR7yJ8gGxMgXNpv2rI3JftZNB74U3/81HLbTRS1h6nGGi2HLeUYk iJKTOcnH1BKiiQZAPHKH7iVZCOJL2nLpVBYxYQiG2mVMBbkgSFfGtBJy0izuFlwi/gYA iTRx8V1VbIGAWVTIgCTRRzZNfC73B08zmsO3d7rCjDhxRFBfIRsPZJfE29X34XP4eqMu JpYw== X-Gm-Message-State: AOJu0Yw+8A9bV6lhNzHW7/hlokXO71YbmrcNAqBBC/UWmHlSU/QfnSX+ uZR5xmMSsHxkhISHL0ywAf4xQwbdgWooF6VD X-Received: by 2002:a05:6902:12:b0:dae:4dfd:f6f5 with SMTP id l18-20020a056902001200b00dae4dfdf6f5mr2240825ybh.27.1700322692315; Sat, 18 Nov 2023 07:51:32 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id d2-20020a25cd02000000b00d8679407796sm999387ybf.48.2023.11.18.07.51.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:31 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Sathya Prakash Veerichetty , Kashyap Desai , Sumit Saxena , Sreekanth Reddy , "James E.J. Bottomley" , "Martin K. Petersen" , Nilesh Javali , Manish Rangankar , GR-QLogic-Storage-Upstream@marvell.com, mpi3mr-linuxdrv.pdl@broadcom.com, linux-scsi@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 15/34] scsi: use atomic find_bit() API where appropriate Date: Sat, 18 Nov 2023 07:50:46 -0800 Message-Id: <20231118155105.25678-16-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:53:23 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917684895169142 X-GMAIL-MSGID: 1782917684895169142 SCSI code opencodes atomic bit allocation/traversing generic routines. Switch it to use dedicated functions. Signed-off-by: Yury Norov --- drivers/scsi/mpi3mr/mpi3mr_os.c | 21 ++++++--------------- drivers/scsi/qedi/qedi_main.c | 9 +-------- drivers/scsi/scsi_lib.c | 5 ++--- 3 files changed, 9 insertions(+), 26 deletions(-) diff --git a/drivers/scsi/mpi3mr/mpi3mr_os.c b/drivers/scsi/mpi3mr/mpi3mr_os.c index 040031eb0c12..11139a2008fd 100644 --- a/drivers/scsi/mpi3mr/mpi3mr_os.c +++ b/drivers/scsi/mpi3mr/mpi3mr_os.c @@ -2276,13 +2276,9 @@ static void mpi3mr_dev_rmhs_send_tm(struct mpi3mr_ioc *mrioc, u16 handle, if (drv_cmd) goto issue_cmd; do { - cmd_idx = find_first_zero_bit(mrioc->devrem_bitmap, - MPI3MR_NUM_DEVRMCMD); - if (cmd_idx < MPI3MR_NUM_DEVRMCMD) { - if (!test_and_set_bit(cmd_idx, mrioc->devrem_bitmap)) - break; - cmd_idx = MPI3MR_NUM_DEVRMCMD; - } + cmd_idx = find_and_set_bit(mrioc->devrem_bitmap, MPI3MR_NUM_DEVRMCMD); + if (cmd_idx < MPI3MR_NUM_DEVRMCMD) + break; } while (retrycount--); if (cmd_idx >= MPI3MR_NUM_DEVRMCMD) { @@ -2417,14 +2413,9 @@ static void mpi3mr_send_event_ack(struct mpi3mr_ioc *mrioc, u8 event, "sending event ack in the top half for event(0x%02x), event_ctx(0x%08x)\n", event, event_ctx); do { - cmd_idx = find_first_zero_bit(mrioc->evtack_cmds_bitmap, - MPI3MR_NUM_EVTACKCMD); - if (cmd_idx < MPI3MR_NUM_EVTACKCMD) { - if (!test_and_set_bit(cmd_idx, - mrioc->evtack_cmds_bitmap)) - break; - cmd_idx = MPI3MR_NUM_EVTACKCMD; - } + cmd_idx = find_and_set_bit(mrioc->evtack_cmds_bitmap, MPI3MR_NUM_EVTACKCMD); + if (cmd_idx < MPI3MR_NUM_EVTACKCMD) + break; } while (retrycount--); if (cmd_idx >= MPI3MR_NUM_EVTACKCMD) { diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c index cd0180b1f5b9..2f940c6898ef 100644 --- a/drivers/scsi/qedi/qedi_main.c +++ b/drivers/scsi/qedi/qedi_main.c @@ -1824,20 +1824,13 @@ int qedi_get_task_idx(struct qedi_ctx *qedi) { s16 tmp_idx; -again: - tmp_idx = find_first_zero_bit(qedi->task_idx_map, - MAX_ISCSI_TASK_ENTRIES); + tmp_idx = find_and_set_bit(qedi->task_idx_map, MAX_ISCSI_TASK_ENTRIES); if (tmp_idx >= MAX_ISCSI_TASK_ENTRIES) { QEDI_ERR(&qedi->dbg_ctx, "FW task context pool is full.\n"); tmp_idx = -1; - goto err_idx; } - if (test_and_set_bit(tmp_idx, qedi->task_idx_map)) - goto again; - -err_idx: return tmp_idx; } diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index cf3864f72093..4460a37f4864 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -2499,9 +2499,8 @@ void scsi_evt_thread(struct work_struct *work) sdev = container_of(work, struct scsi_device, event_work); - for (evt_type = SDEV_EVT_FIRST; evt_type <= SDEV_EVT_LAST; evt_type++) - if (test_and_clear_bit(evt_type, sdev->pending_events)) - sdev_evt_send_simple(sdev, evt_type, GFP_KERNEL); + for_each_test_and_clear_bit(evt_type, sdev->pending_events, SDEV_EVT_LAST) + sdev_evt_send_simple(sdev, evt_type, GFP_KERNEL); while (1) { struct scsi_event *evt; From patchwork Sat Nov 18 15:50:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166557 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241313vqn; Sat, 18 Nov 2023 07:53:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IHZkdusMlHeR7+d8kpxjxd5S1yeQcmcVyYPnenlc6xLlTG8wXbxfIXc7bHIJUZ6WBtmzWmh X-Received: by 2002:a17:902:ead1:b0:1cc:fc8:5be1 with SMTP id p17-20020a170902ead100b001cc0fc85be1mr3269939pld.1.1700322815496; Sat, 18 Nov 2023 07:53:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322815; cv=none; d=google.com; s=arc-20160816; b=evOCokav5BBdQYwfbL13RGdDh+gwwbPHyPD/5vjbcbux581Yt66xyVt6MW6hDvnp+u PoEfPpXL+9yTWpzNJ+xfZ3UwY0IozDFSKND+EI1nZLri8YearTFfm+bRCQcFpIXaUwxN QMy9dfn/m3GYtZUeGYmh8pZqRsYSffyrUQr+5f09xDxV4FxmIByTHGVIZ4Y3U2v4a6e5 QmHXBt51vl1UngluW5vkn2IYM/yJF8Ew7dUreQWFIFpPP2hyiG9MU/DhgdmM0p4Q0JxG oBHOc8/frDlYOI1w5H8hTcH/UBXkfo61xslPa2/ynXJn7b/MhgH9rMphknY2nBTQkRwW Mu1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=2sgPttQUTNTuJ1Gv7B+hCylz5123eQWSPdiwCHEz6H8=; fh=2UdteiilnCVhKmRQZ8btQy9HBw9tv0rGaqtPg0gaFYE=; b=dfWGbiNaKBMoE249G5ndm4GY0y6beilpqGNtpLPYLh/zLg5wjP8cuMtQ+KjOOwCWpz BEZHBkx4inImTdi+mSSdMDtjZygxEgzE/KiyjrEPri5jslbcN9LFptrcZVqO74ei5KKc GdTWBsMaZdnl4bjrHK13ewp1RqtgGP6nUs69U9RfAlW02iZwBo34UkRBo+nZXHvgMdvU d8pZ61xNz2VMghvNnz68tzxZ0H7rGtK/3WOL3Z1z7aWG13smOIPLCixS80+MWzLKBLrG wO/bVwVfzCBeCAASF8FNwcnLMVUvCEkPlw0BHI6bIZ98cfW5GC+w1NFgjTDf6nuA2Yyn FSqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=PoNIotFY; 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 lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id lm15-20020a170903298f00b001c3a05b0b58si4861265plb.500.2023.11.18.07.53.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:53:35 -0800 (PST) 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=PoNIotFY; 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 4D3FE8051A22; Sat, 18 Nov 2023 07:53:33 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231572AbjKRPxQ (ORCPT + 29 others); Sat, 18 Nov 2023 10:53:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44496 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230358AbjKRPwk (ORCPT ); Sat, 18 Nov 2023 10:52:40 -0500 Received: from mail-yb1-xb31.google.com (mail-yb1-xb31.google.com [IPv6:2607:f8b0:4864:20::b31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8269119B4 for ; Sat, 18 Nov 2023 07:51:35 -0800 (PST) Received: by mail-yb1-xb31.google.com with SMTP id 3f1490d57ef6-dafe04717baso2735378276.1 for ; Sat, 18 Nov 2023 07:51:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322694; x=1700927494; darn=vger.kernel.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; bh=2sgPttQUTNTuJ1Gv7B+hCylz5123eQWSPdiwCHEz6H8=; b=PoNIotFYnRO1vakd/M6VycSkD3A4sX/1tLnMXtRJOaid3l8nMRfWklAhxIiJcPKWWR +/VSe19s7rJwBZ7K8p04nY28F1C3gs2X6WtZxvKnFg5+eBNFe9oB/9L2ramKlhqDK9JS Caxb/ExO62CG+9lULE455pTIgthCmBJ8Pa/BzsVG3p2Y7irAjFjTO379nGv+zARdCM2q AtsvsaP7b/FbxTOfE3slsJ3yH11bI0qKWOreP8NP/RmgNCXUROVZLMbhrE889LLqmMJf LeAijksAPm6a5qJ3UT87Hzyi6xIlEez5TuMBG+wJMevNlpWHyHjRxS3xW1l10kNzKPyy kc6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322694; x=1700927494; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2sgPttQUTNTuJ1Gv7B+hCylz5123eQWSPdiwCHEz6H8=; b=eJxp+j/f2xSes4ranWypt0XOVJam0eYhTiHDUQIPNXLzva7/3XtqPbSakKpxQvFINg jpuzlMvmC3yP7A+uMNqlAoZfhBP5PiwamYM35Nl4yeJ1JrnDe64KdCoMVrEjaFp3CJN8 hCh+acpINwVxy9e/ASVanpdacvNYqhjzLa3Tla0KFYSHL7sjwpSY5ix5vVH7+9xon1h5 PIEPj5cWWV9fM5rnPqBSXtXWPMJLPC2vW4LuKQD3xzHHrDfv1Gmo05/NE73xS9Z0ZpJI 0f1acIkLK57qEDMMI4yA9d508EQWEcAO79VMrdd4K8oZZ33BYotuygsYp/IodBTBTc/T SCtQ== X-Gm-Message-State: AOJu0Ywv3KI2X5X/k2yYtd1RqZ6mSStc7n4pRYCFC/NBKGx43jdXDitY Q4STSBT77ONNjw05xFVZ9y+Y3B7BcKxLjH3A X-Received: by 2002:a25:6d44:0:b0:da0:9735:b012 with SMTP id i65-20020a256d44000000b00da09735b012mr2056422ybc.11.1700322693911; Sat, 18 Nov 2023 07:51:33 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id u14-20020a05690201ce00b00d7b8a1074d4sm967654ybh.57.2023.11.18.07.51.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:33 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Michael Ellerman , Nicholas Piggin , Christophe Leroy , Yury Norov , Colin Ian King , linuxppc-dev@lists.ozlabs.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 16/34] powerpc: use atomic find_bit() API where appropriate Date: Sat, 18 Nov 2023 07:50:47 -0800 Message-Id: <20231118155105.25678-17-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:53:33 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917696214200861 X-GMAIL-MSGID: 1782917696214200861 Fix opencoded find_and_{set,clear}_bit() by using dedicated functions. Signed-off-by: Yury Norov --- arch/powerpc/mm/book3s32/mmu_context.c | 10 ++--- arch/powerpc/platforms/pasemi/dma_lib.c | 45 +++++----------------- arch/powerpc/platforms/powernv/pci-sriov.c | 12 ++---- 3 files changed, 17 insertions(+), 50 deletions(-) diff --git a/arch/powerpc/mm/book3s32/mmu_context.c b/arch/powerpc/mm/book3s32/mmu_context.c index 1922f9a6b058..7db19f173c2e 100644 --- a/arch/powerpc/mm/book3s32/mmu_context.c +++ b/arch/powerpc/mm/book3s32/mmu_context.c @@ -50,13 +50,11 @@ static unsigned long context_map[LAST_CONTEXT / BITS_PER_LONG + 1]; unsigned long __init_new_context(void) { - unsigned long ctx = next_mmu_context; + unsigned long ctx; - while (test_and_set_bit(ctx, context_map)) { - ctx = find_next_zero_bit(context_map, LAST_CONTEXT+1, ctx); - if (ctx > LAST_CONTEXT) - ctx = 0; - } + ctx = find_and_set_next_bit(context_map, LAST_CONTEXT + 1, next_mmu_context); + if (ctx > LAST_CONTEXT) + ctx = 0; next_mmu_context = (ctx + 1) & LAST_CONTEXT; return ctx; diff --git a/arch/powerpc/platforms/pasemi/dma_lib.c b/arch/powerpc/platforms/pasemi/dma_lib.c index 1be1f18f6f09..906dabee0132 100644 --- a/arch/powerpc/platforms/pasemi/dma_lib.c +++ b/arch/powerpc/platforms/pasemi/dma_lib.c @@ -118,14 +118,9 @@ static int pasemi_alloc_tx_chan(enum pasemi_dmachan_type type) limit = MAX_TXCH; break; } -retry: - bit = find_next_bit(txch_free, MAX_TXCH, start); - if (bit >= limit) - return -ENOSPC; - if (!test_and_clear_bit(bit, txch_free)) - goto retry; - - return bit; + + bit = find_and_clear_next_bit(txch_free, MAX_TXCH, start); + return bit < limit ? bit : -ENOSPC; } static void pasemi_free_tx_chan(int chan) @@ -136,15 +131,9 @@ static void pasemi_free_tx_chan(int chan) static int pasemi_alloc_rx_chan(void) { - int bit; -retry: - bit = find_first_bit(rxch_free, MAX_RXCH); - if (bit >= MAX_TXCH) - return -ENOSPC; - if (!test_and_clear_bit(bit, rxch_free)) - goto retry; - - return bit; + int bit = find_and_clear_bit(rxch_free, MAX_RXCH); + + return bit < MAX_TXCH ? bit : -ENOSPC; } static void pasemi_free_rx_chan(int chan) @@ -374,16 +363,9 @@ EXPORT_SYMBOL(pasemi_dma_free_buf); */ int pasemi_dma_alloc_flag(void) { - int bit; + int bit = find_and_clear_bit(flags_free, MAX_FLAGS); -retry: - bit = find_first_bit(flags_free, MAX_FLAGS); - if (bit >= MAX_FLAGS) - return -ENOSPC; - if (!test_and_clear_bit(bit, flags_free)) - goto retry; - - return bit; + return bit < MAX_FLAGS ? bit : -ENOSPC; } EXPORT_SYMBOL(pasemi_dma_alloc_flag); @@ -439,16 +421,9 @@ EXPORT_SYMBOL(pasemi_dma_clear_flag); */ int pasemi_dma_alloc_fun(void) { - int bit; - -retry: - bit = find_first_bit(fun_free, MAX_FLAGS); - if (bit >= MAX_FLAGS) - return -ENOSPC; - if (!test_and_clear_bit(bit, fun_free)) - goto retry; + int bit = find_and_clear_bit(fun_free, MAX_FLAGS); - return bit; + return bit < MAX_FLAGS ? bit : -ENOSPC; } EXPORT_SYMBOL(pasemi_dma_alloc_fun); diff --git a/arch/powerpc/platforms/powernv/pci-sriov.c b/arch/powerpc/platforms/powernv/pci-sriov.c index 59882da3e742..640e387e6d83 100644 --- a/arch/powerpc/platforms/powernv/pci-sriov.c +++ b/arch/powerpc/platforms/powernv/pci-sriov.c @@ -397,18 +397,12 @@ static int64_t pnv_ioda_map_m64_single(struct pnv_phb *phb, static int pnv_pci_alloc_m64_bar(struct pnv_phb *phb, struct pnv_iov_data *iov) { - int win; + int win = find_and_set_bit(&phb->ioda.m64_bar_alloc, phb->ioda.m64_bar_idx + 1); - do { - win = find_next_zero_bit(&phb->ioda.m64_bar_alloc, - phb->ioda.m64_bar_idx + 1, 0); - - if (win >= phb->ioda.m64_bar_idx + 1) - return -1; - } while (test_and_set_bit(win, &phb->ioda.m64_bar_alloc)); + if (win >= phb->ioda.m64_bar_idx + 1) + return -1; set_bit(win, iov->used_m64_bar_mask); - return win; } From patchwork Sat Nov 18 15:50:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166556 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241312vqn; Sat, 18 Nov 2023 07:53:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IH7nunXIR2CveiNIP7OYL6M4SRsB+oJnT3EBPShxqQC3L2KlBfoNqtWmPjel+Gwc5dc/ABE X-Received: by 2002:a17:902:b282:b0:1cc:ee07:1654 with SMTP id u2-20020a170902b28200b001ccee071654mr2323238plr.14.1700322815336; Sat, 18 Nov 2023 07:53:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322815; cv=none; d=google.com; s=arc-20160816; b=sUfhmdPRPKWnDZgBt7gSvS7WHDJSjlrqTq4Y/T4tMT2Bsc9ZP+hlYYwv/mCPUIhisP STjceNaQtEMiUYXOhQ+GJP+kImOycyLAVcz2+YfMdYYf4pPMF+8FJWX0Lp0YT9sR495S xW7GPo2wjrhJdrd8H0qpirROi0TnGvyNQp8t+8mJ5OvFSQt8l4ON10DWBMljTqGHn853 dbUk6qTNtdgWRsaNg8ZseSzzmTiWLgAt9CDe4QQQewCFWlLp5C0siP49G/W76gFHjuwi 9te/TucAm/qaWYg40WjshtNyBYEgrQ+ls8mfXyfYhXBPxO1qVyVQwcgOm+82BfGTyvU+ jY/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=V1XoIiNxFuF4VYuiH6Quz1F4aXv1fFJNE5bF8jDHsU4=; fh=XFKv0OZz4fHcb5vEiUZx7P1jrU2nAnvNkOc6NDlsQAo=; b=PulzjSckAh4MdalYVYRSmexKm1nHXQg/3Dvq2d7NBLN/miG40ZdV68Ipst9wM4Nl4S spcZOu24eVlkFBGlvQE55QHu0UXkIIOMycqxq6qQNnqA5j6kLBRxWJepOcjNylmP+gCs 9MK9SEmnGGz/QdspjXb7Nza4mBhS8YypUmpByJsVlFypQgZhajMplHxrkg/joGBzL1Q6 5szyE8EKo2DY/CHXzQgyUkvx6TWBb6CX2fayXHMpcE3G6VoTk4STC4iGYm8Ti+wSr9TT 2cp99dI6tJd7QhmtMdki7PLUl+DXAjlhS8m/aPQrtPtKtw//AN62nPPJ5JAmhFdvV5wA vHgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=hlKddV1Z; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id n4-20020a170902f60400b001c9cc3a07c3si4783248plg.280.2023.11.18.07.53.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:53:35 -0800 (PST) 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=@gmail.com header.s=20230601 header.b=hlKddV1Z; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 8C7F8803E785; Sat, 18 Nov 2023 07:53:34 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231615AbjKRPxT (ORCPT + 29 others); Sat, 18 Nov 2023 10:53:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49986 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231288AbjKRPwk (ORCPT ); Sat, 18 Nov 2023 10:52:40 -0500 Received: from mail-yw1-x112c.google.com (mail-yw1-x112c.google.com [IPv6:2607:f8b0:4864:20::112c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 754D719BD; Sat, 18 Nov 2023 07:51:36 -0800 (PST) Received: by mail-yw1-x112c.google.com with SMTP id 00721157ae682-5a7c011e113so33664547b3.1; Sat, 18 Nov 2023 07:51:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322695; x=1700927495; darn=vger.kernel.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; bh=V1XoIiNxFuF4VYuiH6Quz1F4aXv1fFJNE5bF8jDHsU4=; b=hlKddV1ZThbFGBIC3Mt4kcl4GyJ6WPC/E2l6MGw6iT0VsfvIkpHSIuiOarggBOOO0y Am+PaVm4CA4E5s/3Eb28ojrSfeCLeg3exTbaFqIcS3wE3TWSvztmHCy1FwSF/uyc9Ikm COrJMc9H+GWinvC8IFslYeXIr14KBnQcHzNgqwXx18LIupRp41+SG7x39nj74EyCM0Py 4BhDe96uNH5lpWVXXArerd5A07PHBsiPoHf6eoUj23jqrHNdZIvauee3J41KhQKInOOW vI1QmI+H4ZPK6S660VXQDodbS9IF6yzvX2Oxp8v5nP90Hr+A8C5wt57TjtDtQAlTeguC 2mKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322695; x=1700927495; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=V1XoIiNxFuF4VYuiH6Quz1F4aXv1fFJNE5bF8jDHsU4=; b=eptNtO0BX6DJEuznzkoLGDykQeLE0tKOWtvJQDMGdPYefPYCIinjiBXQLf3i7s6H1f Gvln745/1tQZZ35MXbTW6Z0g6is2ekdvVEAvcZzDu8sYOP5PyJdkt1WgebhmBAMkMwwy AI6G7W24FuXTRySY0yNadt8Uk2hCkDki5mzlNKhjlj25qiC3k3SgoI8zngUWmeUo4rH/ /hmNAwUySOKv0w735WXCJ+8zmmYjPpUYtXTBfILzQCDiUBFs7l8ZbhfvaDOgCsKO466u ASY339EhNmZ0wWDje725zYc53OZTx/wWzNdBYRLuH8UMFD2bpnxuJoRTii2k/AUgsSFI /n9A== X-Gm-Message-State: AOJu0YxiA1/BXZyKiyQp5RhGISo5lhGwUcDLryN9K0onFfBmXZRrLuC+ 9L9AcrxuZ5zGmEopMP++FqtcCV8LLYGrgdvJ X-Received: by 2002:a81:8447:0:b0:5a7:a81d:e410 with SMTP id u68-20020a818447000000b005a7a81de410mr3105570ywf.18.1700322695050; Sat, 18 Nov 2023 07:51:35 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id h12-20020a816c0c000000b005c5a3f80239sm1158114ywc.88.2023.11.18.07.51.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:34 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Will Deacon , Robin Murphy , Joerg Roedel , Andy Gross , Bjorn Andersson , Konrad Dybcio , Yury Norov , linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-arm-msm@vger.kernel.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 17/34] iommu: use atomic find_bit() API where appropriate Date: Sat, 18 Nov 2023 07:50:48 -0800 Message-Id: <20231118155105.25678-18-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:53:34 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917696388987707 X-GMAIL-MSGID: 1782917696388987707 Fix opencoded find_and_set_next_bit() in __arm_smmu_alloc_bitmap() and msm_iommu_alloc_ctx(), and make them nice one-liner wrappers. While here, refactor msm_iommu_attach_dev() and msm_iommu_alloc_ctx() so that error codes don't mismatch. Signed-off-by: Yury Norov --- drivers/iommu/arm/arm-smmu/arm-smmu.h | 10 ++-------- drivers/iommu/msm_iommu.c | 18 ++++-------------- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.h b/drivers/iommu/arm/arm-smmu/arm-smmu.h index 703fd5817ec1..004a4704ebf1 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu.h +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.h @@ -453,15 +453,9 @@ struct arm_smmu_impl { static inline int __arm_smmu_alloc_bitmap(unsigned long *map, int start, int end) { - int idx; + int idx = find_and_set_next_bit(map, end, start); - do { - idx = find_next_zero_bit(map, end, start); - if (idx == end) - return -ENOSPC; - } while (test_and_set_bit(idx, map)); - - return idx; + return idx < end ? idx : -ENOSPC; } static inline void __iomem *arm_smmu_page(struct arm_smmu_device *smmu, int n) diff --git a/drivers/iommu/msm_iommu.c b/drivers/iommu/msm_iommu.c index f86af9815d6f..67124f4228b1 100644 --- a/drivers/iommu/msm_iommu.c +++ b/drivers/iommu/msm_iommu.c @@ -185,17 +185,9 @@ static const struct iommu_flush_ops msm_iommu_flush_ops = { .tlb_add_page = __flush_iotlb_page, }; -static int msm_iommu_alloc_ctx(unsigned long *map, int start, int end) +static int msm_iommu_alloc_ctx(struct msm_iommu_dev *iommu) { - int idx; - - do { - idx = find_next_zero_bit(map, end, start); - if (idx == end) - return -ENOSPC; - } while (test_and_set_bit(idx, map)); - - return idx; + return find_and_set_bit(iommu->context_map, iommu->ncb); } static void msm_iommu_free_ctx(unsigned long *map, int idx) @@ -418,10 +410,8 @@ static int msm_iommu_attach_dev(struct iommu_domain *domain, struct device *dev) ret = -EEXIST; goto fail; } - master->num = - msm_iommu_alloc_ctx(iommu->context_map, - 0, iommu->ncb); - if (IS_ERR_VALUE(master->num)) { + master->num = msm_iommu_alloc_ctx(iommu); + if (master->num >= iommu->ncb) { ret = -ENODEV; goto fail; } From patchwork Sat Nov 18 15:50:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166559 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241482vqn; Sat, 18 Nov 2023 07:53:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IHQHe0nUB86hIH7GzmiRMW8nBqZVTpnP/9SeOHUsj32PjNN5Ao5t1mD2yTUgoVyNq3l+u6j X-Received: by 2002:a17:902:f604:b0:1cc:70dd:62e7 with SMTP id n4-20020a170902f60400b001cc70dd62e7mr3195823plg.32.1700322838956; Sat, 18 Nov 2023 07:53:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322838; cv=none; d=google.com; s=arc-20160816; b=U7W63LUrZsfLX2m7bG4gqMXNOqtq/wi6n0YePt8AKVYExayUUmr17WpdP1fMK8b3w+ 2V8xEBvtF2spnHRsewsR3YPs81Zft+/5dMn5h7w7+YPa7ApGbAiSRPw2KX9lDWAPomiP WtbjZwMKHaCzfBSKBlJal8xPlVMjFWYOwEOM/jAJPDdqpxalDQQD5806zVtvBlWpQOc2 QnCyoAuY6mpyUmh72xldVsJYtYJbKdyspTAwKIKK9eDJEK7zzZqA6jhLbEWG9XdfhEPe wXo1+D1LA0rnO35mfjiMdyyODiBfErZ7K0VuEGi99feBl/I4hUFNOAmYdChtTF1bnxwh sOOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=X35XMuOkQGRdZiwlzwdQZgjDPtyUYCVaMlOgAQr4CJI=; fh=8qFFgVjaBz9rtKRJgodL9dWLc5waKtCkCFt8hedVcpA=; b=oV4OlHMgNaK5qfocIEXSOKCOP1DMpspbIfkFLw7aIACcC0keD8tjCxM2DVHEx4DtRb xzQz1KvRVugrXfijnO0MXr/WDHNLq2ZY2aLDfZUWy05KI2HhFqNgCmro+uDAV2i/EEfb G0CUYZv6VmjYAQtrPSHdR0EIKaXQspT4ju+FsFc5sEgijLz/XLlBERbP+lofcIy/l0fN Re5apRiM3ZKoF1V5FKSElTZSr80gbiqrdz7X9wBWSxvviJounBz0kuVjHox7Pk4OCxQF cq9Z+xCyOLnAUhbgrV0yGDaWBmjtzn+bMlpr46/WmV1SEt8pj639BpkHbjME/Y822gcx ONBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Zxvk2SQ2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id iz9-20020a170902ef8900b001ce5b936707si4232452plb.595.2023.11.18.07.53.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:53:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Zxvk2SQ2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 D9F788050FB9; Sat, 18 Nov 2023 07:53:55 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229929AbjKRPxi (ORCPT + 29 others); Sat, 18 Nov 2023 10:53:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44556 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229480AbjKRPwn (ORCPT ); Sat, 18 Nov 2023 10:52:43 -0500 Received: from mail-yw1-x112a.google.com (mail-yw1-x112a.google.com [IPv6:2607:f8b0:4864:20::112a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 765A2D58; Sat, 18 Nov 2023 07:51:37 -0800 (PST) Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-5c9adcaf514so405017b3.2; Sat, 18 Nov 2023 07:51:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322696; x=1700927496; darn=vger.kernel.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; bh=X35XMuOkQGRdZiwlzwdQZgjDPtyUYCVaMlOgAQr4CJI=; b=Zxvk2SQ2TdWAKA7Wv5MzEaJezJmEcN2rcF2SkfgbS5YuiJd6L5S23PmiwXpjZyE0/G hikIQFfpvqVVy2YKm3u3dnMMi+p0fKJ0kSHGbTQ3lGkDLzR75nnRcILlrZIgkeO3DSyw 3cDAB1lNohNnAQTDUXZz9g7G3JfaxW2hXsD5EMOsqc2rYrjxEuzjiv+1n8YOorCzC+EE UE2dWl1llANf6D5P5n/VheWWZCzrZwO8thOMAXPjm7By55LjQPf791oSOItviPs9JXfj Fl0l5uqtfSC8nNMZRqnjUnUF49mdCcfquaFEHstRQeYJOS8Cq3PWs5Bp31RoGxjjDB5O XYUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322696; x=1700927496; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=X35XMuOkQGRdZiwlzwdQZgjDPtyUYCVaMlOgAQr4CJI=; b=jH96M27GtpaMUlix3CdFYCsYagsGJng1oNeVdZFmQp2vbjJemDB/4TZ51JgWjcIqLd uHfffyxJ0s1JrscxnUezxpoA1e2wrspu8b/d+8gLMf1Ebq8Nq/aWZmHf0P+OxQPW6guW zX4kHrpWm7baOoCCI3EmzlWSP8h/kY762mNKQVyjJE9+ukQWLTvR7P9RkDOuX5NFSR+X Xu1386e5vH9NkgYSFyXIhTFS1d1x3w0GUrrIjACJc2b+IDWG7RI0r1wiWFeyz8tq+14r cepecTd4RGuU9mLokeLOUi7PpZI66EtGjnmXaqUboeCF/8HguNjRuibUEPOcJGPGYdb+ 0nsw== X-Gm-Message-State: AOJu0Yyeh6OhiQLXzwpLmdCrbCpUYjD2MjMHdzAI0jVca7eyQmlMuqpY IJK8kXgKrNQSQNTDq8epBzr+OKL6Bovhu5+j X-Received: by 2002:a81:a141:0:b0:5a7:b819:648f with SMTP id y62-20020a81a141000000b005a7b819648fmr2715402ywg.4.1700322696135; Sat, 18 Nov 2023 07:51:36 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id b65-20020a0dd944000000b005a8c392f498sm1167744ywe.82.2023.11.18.07.51.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:35 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Hans Verkuil , Mauro Carvalho Chehab , linux-media@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 18/34] media: radio-shark: use atomic find_bit() API where appropriate Date: Sat, 18 Nov 2023 07:50:49 -0800 Message-Id: <20231118155105.25678-19-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:53:55 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917720864594674 X-GMAIL-MSGID: 1782917720864594674 Despite that it's only 2- or 3-bit maps, convert for-loop followed by test_bit() to for_each_test_and_clear_bit() as it makes the code cleaner. Signed-off-by: Yury Norov --- drivers/media/radio/radio-shark.c | 5 +---- drivers/media/radio/radio-shark2.c | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/media/radio/radio-shark.c b/drivers/media/radio/radio-shark.c index 127a3be0e0f0..0c50b3a9623e 100644 --- a/drivers/media/radio/radio-shark.c +++ b/drivers/media/radio/radio-shark.c @@ -158,10 +158,7 @@ static void shark_led_work(struct work_struct *work) container_of(work, struct shark_device, led_work); int i, res, brightness, actual_len; - for (i = 0; i < 3; i++) { - if (!test_and_clear_bit(i, &shark->brightness_new)) - continue; - + for_each_test_and_clear_bit(i, &shark->brightness_new, 3) { brightness = atomic_read(&shark->brightness[i]); memset(shark->transfer_buffer, 0, TB_LEN); if (i != RED_LED) { diff --git a/drivers/media/radio/radio-shark2.c b/drivers/media/radio/radio-shark2.c index f1c5c0a6a335..d9ef241e1778 100644 --- a/drivers/media/radio/radio-shark2.c +++ b/drivers/media/radio/radio-shark2.c @@ -145,10 +145,7 @@ static void shark_led_work(struct work_struct *work) container_of(work, struct shark_device, led_work); int i, res, brightness, actual_len; - for (i = 0; i < 2; i++) { - if (!test_and_clear_bit(i, &shark->brightness_new)) - continue; - + for_each_test_and_clear_bit(i, &shark->brightness_new, 2) { brightness = atomic_read(&shark->brightness[i]); memset(shark->transfer_buffer, 0, TB_LEN); shark->transfer_buffer[0] = 0x83 + i; From patchwork Sat Nov 18 15:50:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166576 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1242657vqn; Sat, 18 Nov 2023 07:56:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IFk3jQ6UR0kdja530cwJ57SaqrbVVaJf6stzUPKnvnYJkVl+dmHk7u1is/m6eJ14qwj8xUT X-Received: by 2002:a05:6808:148c:b0:3b6:d371:d4d4 with SMTP id e12-20020a056808148c00b003b6d371d4d4mr4101178oiw.37.1700323017615; Sat, 18 Nov 2023 07:56:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700323017; cv=none; d=google.com; s=arc-20160816; b=M6Graku6QRUf7V5V3cJJ1+F8bWPQafHjwfLegBiSqCbllV7CuzvUbGrlDlEPJGVhZl Wl2ZMTD0WUh5RBIEqg7ucQwltxp7JheElEXzRIQe4jebaMPEeuxAFpS8eN7KkEncKO6g jyQ5KJU1rYvUEpqpMjdQ9jrMmUCbT0U2k6RhdOMnz5ZZ/0g7DdbsRsYYXhBGeyknd1H4 l09ODPL7jctPBxPlWwJoNpluyTPOaVYgV6FaEc1Q5nrV7/sb4MSPKrycR6kRdYUEOsF7 7yiayqnnKV+KT8KoKnKhZ3UQxp8mNIK4BKc8ICR0xWaD17u2T0ZDHdhP+nIwXh/cvb/a vuwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=MVDnPRtaRLazzNSQqeYFzsOLIVc3PVHkJ3Smdo81+fM=; fh=EGIv8xk7mkhIV7R+QRNHPAL39OD3QwBnbbTDDRgHKJ0=; b=0n7Bw0eoE+JG1jhE41FF43hzoPjnPyu6iWAVMndtic4Ug6PXO4jRJY9okD07XRBbJ2 ogFMt2q7GnPz4XiG7FZQkYsRmRpsZeGkfySkZiKxsuJIkoGtcQXdLwl1cBehQwmun19L dYjVh8HEHeHkSSk2UxHmYor+286dfq9zsMeWcQ+pkJmphv0vI8i1QooM98BIDjTLzJKP /Qly7wO3S6WHLzASCyC/fLjOKJ6vZwKN7rar1uMOQPE9BaE4eESbisgxLUdc1wgW9L2D L9LJt52SZ1k88cKuLj0efExJjYlXS09RKZmO7VT7SyTjYRNnCZEzbkJ8covtosobq+mP 8j4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=fH6IUlnK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id bx10-20020a056a02050a00b005acf4298a78si5116738pgb.149.2023.11.18.07.56.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:56:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=fH6IUlnK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (Postfix) with ESMTP id 4F770808405F; Sat, 18 Nov 2023 07:55:49 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230153AbjKRPxn (ORCPT + 29 others); Sat, 18 Nov 2023 10:53:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231361AbjKRPws (ORCPT ); Sat, 18 Nov 2023 10:52:48 -0500 Received: from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com [IPv6:2607:f8b0:4864:20::b29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A799F1BD4; Sat, 18 Nov 2023 07:51:39 -0800 (PST) Received: by mail-yb1-xb29.google.com with SMTP id 3f1490d57ef6-da819902678so2850616276.1; Sat, 18 Nov 2023 07:51:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322698; x=1700927498; darn=vger.kernel.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; bh=MVDnPRtaRLazzNSQqeYFzsOLIVc3PVHkJ3Smdo81+fM=; b=fH6IUlnKl+XJ2/OuYFTx23RstVGtGSlGFQ/3+xlroLXDu1iCWEociJ0i4qjs+HhfEO aOtwuhCaKCn7N8R9ulrKmvt4zGkgL7KmefwSS7195RiI72CX5L4ijY+RYDxqavdqTV+p +QBshJ9+oMGQvxhCvauk98tZur/evaRPmpJsAoCYoZy2Tb5OKqqszoCNwuVCMnlNDyli qzi6MZ7EwJpElz7mSyM11yFwcUpU3M5Yju7pLfZz6aS11EsbRQG4Hq6lYFslYBY8w/Vx atEKoMayU0rr/A8RMw6MDDnGuHW/QKvL/5CqcjIqhRyTfjN8X/8v9tbPw+v3CbFo914V OpxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322698; x=1700927498; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MVDnPRtaRLazzNSQqeYFzsOLIVc3PVHkJ3Smdo81+fM=; b=eUFVJ/I3c6HsTpn6yVhaxaa7ggfFTiZExzEdL7k7TgltVCHgxwh9Te/HU78iWKbNef mvYGpGLKhqbwhMW8N/QUQSlS7YtLLMXBK65rqTWi/lhcD4FwlV2DX5znt8tJK7fPMkTZ ZUE7Ts7WF5tDXSbLRy1rta/I9Bxi/wWkK7IGbvPwoZsFpSj6jchUjyk/TuxU6a1TIVgR ACu4e8F+lCT048CmIXf3gsEojWBWFOYtu9Z1Opoa2FP6E+ufNxZ/LAEwOMrRN2UyvhqA 4fA7zV9ii6twWTk/e36KL4DlVVlw83h3NLHSFA06h6x/ap4/lXzEs96JkfnBfhld1M5e JZIQ== X-Gm-Message-State: AOJu0Yzqtkc6PYBlKcP3kf941lOT5TJm9olg/hXHoEGSDc/VUGGDCHrU zMT0iZtmxUCJd8Iouv9yl57hLl6jOgbN8Ok7 X-Received: by 2002:a5b:a12:0:b0:d9a:ba25:d1f9 with SMTP id k18-20020a5b0a12000000b00d9aba25d1f9mr2149118ybq.9.1700322697688; Sat, 18 Nov 2023 07:51:37 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id b79-20020a253452000000b00da076458395sm998958yba.43.2023.11.18.07.51.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:36 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Edward Cree , Martin Habets , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Yury Norov , netdev@vger.kernel.org, linux-net-drivers@amd.com Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 19/34] sfc: switch to using atomic find_bit() API where appropriate Date: Sat, 18 Nov 2023 07:50:50 -0800 Message-Id: <20231118155105.25678-20-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.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 (fry.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:55:49 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917908388491379 X-GMAIL-MSGID: 1782917908388491379 SFC code traverses rps_slot_map and rxq_retry_mask bit by bit. We can do it better by using dedicated atomic find_bit() functions, because they skip already clear bits. Signed-off-by: Yury Norov Reviewed-by: Edward Cree --- drivers/net/ethernet/sfc/rx_common.c | 4 +--- drivers/net/ethernet/sfc/siena/rx_common.c | 4 +--- drivers/net/ethernet/sfc/siena/siena_sriov.c | 14 ++++++-------- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/drivers/net/ethernet/sfc/rx_common.c b/drivers/net/ethernet/sfc/rx_common.c index d2f35ee15eff..0112968b3fe7 100644 --- a/drivers/net/ethernet/sfc/rx_common.c +++ b/drivers/net/ethernet/sfc/rx_common.c @@ -950,9 +950,7 @@ int efx_filter_rfs(struct net_device *net_dev, const struct sk_buff *skb, int rc; /* find a free slot */ - for (slot_idx = 0; slot_idx < EFX_RPS_MAX_IN_FLIGHT; slot_idx++) - if (!test_and_set_bit(slot_idx, &efx->rps_slot_map)) - break; + slot_idx = find_and_set_bit(&efx->rps_slot_map, EFX_RPS_MAX_IN_FLIGHT); if (slot_idx >= EFX_RPS_MAX_IN_FLIGHT) return -EBUSY; diff --git a/drivers/net/ethernet/sfc/siena/rx_common.c b/drivers/net/ethernet/sfc/siena/rx_common.c index 4579f43484c3..160b16aa7486 100644 --- a/drivers/net/ethernet/sfc/siena/rx_common.c +++ b/drivers/net/ethernet/sfc/siena/rx_common.c @@ -958,9 +958,7 @@ int efx_siena_filter_rfs(struct net_device *net_dev, const struct sk_buff *skb, int rc; /* find a free slot */ - for (slot_idx = 0; slot_idx < EFX_RPS_MAX_IN_FLIGHT; slot_idx++) - if (!test_and_set_bit(slot_idx, &efx->rps_slot_map)) - break; + slot_idx = find_and_set_bit(&efx->rps_slot_map, EFX_RPS_MAX_IN_FLIGHT); if (slot_idx >= EFX_RPS_MAX_IN_FLIGHT) return -EBUSY; diff --git a/drivers/net/ethernet/sfc/siena/siena_sriov.c b/drivers/net/ethernet/sfc/siena/siena_sriov.c index 8353c15dc233..554b799288b8 100644 --- a/drivers/net/ethernet/sfc/siena/siena_sriov.c +++ b/drivers/net/ethernet/sfc/siena/siena_sriov.c @@ -722,14 +722,12 @@ static int efx_vfdi_fini_all_queues(struct siena_vf *vf) efx_vfdi_flush_wake(vf), timeout); rxqs_count = 0; - for (index = 0; index < count; ++index) { - if (test_and_clear_bit(index, vf->rxq_retry_mask)) { - atomic_dec(&vf->rxq_retry_count); - MCDI_SET_ARRAY_DWORD( - inbuf, FLUSH_RX_QUEUES_IN_QID_OFST, - rxqs_count, vf_offset + index); - rxqs_count++; - } + for_each_test_and_clear_bit(index, vf->rxq_retry_mask, count) { + atomic_dec(&vf->rxq_retry_count); + MCDI_SET_ARRAY_DWORD( + inbuf, FLUSH_RX_QUEUES_IN_QID_OFST, + rxqs_count, vf_offset + index); + rxqs_count++; } } From patchwork Sat Nov 18 15:50:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166561 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241579vqn; Sat, 18 Nov 2023 07:54:14 -0800 (PST) X-Google-Smtp-Source: AGHT+IGomWBsZQrt5/xZOmR+uQSnP1CdQ88PFCTSYpX1Ec6n3qHRCDc7ab+FB7F7PV81V8wFcCso X-Received: by 2002:a05:6a21:788e:b0:187:4118:c0ee with SMTP id bf14-20020a056a21788e00b001874118c0eemr3003648pzc.46.1700322854665; Sat, 18 Nov 2023 07:54:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322854; cv=none; d=google.com; s=arc-20160816; b=nnVLsAqBjJzwqWkYnbQOl7e6aUWmizuMxPD++5C5BDqlGo5ofFKafVOcv7wdb97heV rRfMjyhQE+cO4qvPRDtFaFssWcHWHpgGRg+Iu7UbPqo3F7fgKBTAbYOg7y5ez42aQYh0 y17y4v9nXhGAfxgezBVO9LRQ67rdoTdcnqquPkeZIeY8UXnc9UVusfQw6FYK1C6o8DCk XRLRTSxo2q1DOVSYYm3QCQQbtIyhqK7twFQi+DlU/Ce2C3FyyUHmB5+S6sBaUBAanYpC mAtqSPMRixRl3Dib+u1SxS7GxPZIiqhGQKSEetUfpaobM8nDYpwqjZd+HXvNIB3j0zUZ N4kA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=KH/C2GbGilv4dEVGrlEtm1neXP6vUXqVIR2w3PMGoMU=; fh=Ls5ZoVGmokLPft6yHsLiuMZnWVtkdm5FZ8a4Fwc8LxI=; b=bC8Gt1KA0/Yf5zZ+dGCFWKk9Px+PdYcuZmgic8pT0SREK6VqORRqH08nAxWbqyLcZu olwVjPOp8SRFVeez2pv7wfqyaKuEIoDS3i6Rqjx4CXieH6vhYnz/DV9cATNXQAiSbF0U arT5ehr0c5agg1Y5Hu+JhvYk+9bxURgOaxuL9HxVfSlTjVP6ErNrB1NNravedJE5UOUg 3w9MnUp11CedaK20ONFV3tMNqlA+E82GzLKzdAI1rrupNvl8hx/NbdBMlejTMKgFJirp pxw+no00wbFYF9/9AjRT0dkw++Qj4ybaTcNwZeSn5xdToiESfhBb4gq5urELmGyY/ncQ +SMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=l1wglQac; 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 lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id a10-20020a631a4a000000b00563de199314si4564654pgm.896.2023.11.18.07.54.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:54:14 -0800 (PST) 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=l1wglQac; 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 6F7D38050F99; Sat, 18 Nov 2023 07:54:12 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231134AbjKRPx6 (ORCPT + 29 others); Sat, 18 Nov 2023 10:53:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44652 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231157AbjKRPwx (ORCPT ); Sat, 18 Nov 2023 10:52:53 -0500 Received: from mail-yw1-x1136.google.com (mail-yw1-x1136.google.com [IPv6:2607:f8b0:4864:20::1136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69A9310F7; Sat, 18 Nov 2023 07:51:41 -0800 (PST) Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-5c9169300caso5651217b3.2; Sat, 18 Nov 2023 07:51:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322699; x=1700927499; darn=vger.kernel.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; bh=KH/C2GbGilv4dEVGrlEtm1neXP6vUXqVIR2w3PMGoMU=; b=l1wglQacW5bOp1InX5DIoQdvtQBnkVSQYzCPO11Q64OYnQnkYSOLykca4riSKSiBkk E0BU9SRbJi+7G8534ABotGg3Mi4jtFnH7arCjWR/tcvS0LpKeEm0ct1F0IpC06WMJgC1 24PVVzDzyCB2fwWj+cN2t2tu7ddqB4tf0JH+ArX30sMP+e6A5xoXjQemJnzFZ9DgdeeU e/aOO+iJn/v/eQ2+nBd8kn6ROXq7O95FlDHrwCafcpeevlKZ5pv6h2WHLKra0cEXtHug GwTPHVVre3UOlyXXBJTgPB+eMq0WT++SfG3j3repoa7Z0nH2Hks66sza2TwOuzOhN7VD 4+dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322699; x=1700927499; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KH/C2GbGilv4dEVGrlEtm1neXP6vUXqVIR2w3PMGoMU=; b=VxEm2Df9RIjMC2a0y94OFs8TXVij0mgoEl7ir/ixFvKMUrF0XzMMtCfeFtzMIUYpRb oFmpjZ2Kk5+r86s5KNBEkN5WRXIVgAvW1QnJkooA19IvhX2MlZdQw8ZPC8fAmdIQKdx1 B6oRVTpg31E6h6UHm/0/9g/MSLEcG4ymS+QAehWOCs0qzXQ2aPduhUmWE9lY2/gO+1m8 c407Gli2AkKgnBJLb5HLv5cmdjfd0LIJ18Cs5zwVPdTMRs4qJY26IhRn8dtG3Dd/x3Rz bFjOOnzlOfq8vLqRB0EIdm0oTho+JcwoTx+yFMleaRzHnyVgRkvwd/1WwWtTcy5iNEAz vr0w== X-Gm-Message-State: AOJu0YzbVYSm83orr5EYTVRziJ757bp+/ifrP4F7NbhoZXmL8M32dy3l JQ465BX+rojqgqkl2hMJUmN+EchTly22GOfN X-Received: by 2002:a25:ac89:0:b0:da0:c744:3211 with SMTP id x9-20020a25ac89000000b00da0c7443211mr2333419ybi.2.1700322699285; Sat, 18 Nov 2023 07:51:39 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id l129-20020a257087000000b00d8168e226e6sm1005873ybc.47.2023.11.18.07.51.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:38 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Jiri Slaby , linux-serial@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 20/34] tty: nozomi: optimize interrupt_handler() Date: Sat, 18 Nov 2023 07:50:51 -0800 Message-Id: <20231118155105.25678-21-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:54:12 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917737444394381 X-GMAIL-MSGID: 1782917737444394381 In exit path of interrupt_handler(), dc->flip map is traversed bit by bit to find and clear set bits and call tty_flip_buffer_push() for corresponding ports. We can do it better by using for_each_test_and_clear_bit(), because it skips already clear bits. Signed-off-by: Yury Norov --- drivers/tty/nozomi.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/tty/nozomi.c b/drivers/tty/nozomi.c index 02cd40147b3a..de0503247391 100644 --- a/drivers/tty/nozomi.c +++ b/drivers/tty/nozomi.c @@ -1220,9 +1220,8 @@ static irqreturn_t interrupt_handler(int irq, void *dev_id) exit_handler: spin_unlock(&dc->spin_mutex); - for (a = 0; a < NOZOMI_MAX_PORTS; a++) - if (test_and_clear_bit(a, &dc->flip)) - tty_flip_buffer_push(&dc->port[a].port); + for_each_test_and_clear_bit(a, &dc->flip, NOZOMI_MAX_PORTS) + tty_flip_buffer_push(&dc->port[a].port); return IRQ_HANDLED; none: From patchwork Sat Nov 18 15:50:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166565 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241860vqn; Sat, 18 Nov 2023 07:54:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IF+hVt8beGxoA3JUc4dl+oU/ENvKSWg8IAx8a6ghYSTLnyvGBos45r/GVxKjDIII674n0Oh X-Received: by 2002:a05:6808:148d:b0:3a9:307a:62aa with SMTP id e13-20020a056808148d00b003a9307a62aamr4293114oiw.22.1700322896254; Sat, 18 Nov 2023 07:54:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322896; cv=none; d=google.com; s=arc-20160816; b=KXmeyhJOX7KyIw4KJHO2zYalBgQbr23NftfOM2TT8prj0oRGVa1LjwR5SnJQNy2BNh +QYBryZot5MY81XD4f/tO8W6Jki1zqbMkmFG8ZRc9OnhphwKvZcO+nI4iAFYns/Y71u3 kBbLf8G3J8O/xYs1d5/5PpkXDkpTtTQW3MVIR/RjwSnM/L2PLl3oLPCrxUGthMJZYZnU BB3Vpm76tsXU8PiMsIJkhFhvMkDIBBptCKpIeOoBaOtC+zlUbM1gODj+yU1+nM2tE3R3 5wkzyHsY++YLu+ESbzsRMbXP6QgIC+UChzhtnKrUwWa9bs1lDsfzF34Mt0Vi0HcxS7Ts R/Nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=xU0+DezQv+68hocsYMOkgL5EeuD6VUR6bUdseKeBvTQ=; fh=6CIiMnTuCAYeGdw0oSp7oKlEaMJGvwctMPMG/OYrKlQ=; b=yKOy6MvfWGcZ3FEbNn7YuwspMvzNj4ta/PVmfIuE87zv+JBIihgYgsUO0IxZsgRxnS I9WQ/+CEUuWjTnozQEIIzi5kKyBtR4BiBSIN0o2m8A14GhuG3tGU0q9UYXHxdU1/Qo0N MmvMAA5P1t/6ilPnhCho7GCgb5ikB9qFpQpsIiyfPyZieCOvQYzmuEfP0xgG3DAsc+L7 5vJnOvliFB/zrH/0ZBGkjMxzJX5ypYhyqyZEDQqddwzKINSW9J0eVUtpoGMshsDKZAJA /hgtQXwT/xgRDe+7//T71bMQfcXhrlTzGJJIWmBAyV5oT7PY2HmhvVrmzkZNgL1yYrVg 1tHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=dZ2UyIN3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id k26-20020a63ff1a000000b005b98aa3f613si4569177pgi.405.2023.11.18.07.54.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:54:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=dZ2UyIN3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (Postfix) with ESMTP id 98F69809C900; Sat, 18 Nov 2023 07:54:38 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230496AbjKRPxx (ORCPT + 29 others); Sat, 18 Nov 2023 10:53:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37296 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231134AbjKRPwx (ORCPT ); Sat, 18 Nov 2023 10:52:53 -0500 Received: from mail-yw1-x112f.google.com (mail-yw1-x112f.google.com [IPv6:2607:f8b0:4864:20::112f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 490D81BE7; Sat, 18 Nov 2023 07:51:42 -0800 (PST) Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-5a87ac9d245so33495957b3.3; Sat, 18 Nov 2023 07:51:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322701; x=1700927501; darn=vger.kernel.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; bh=xU0+DezQv+68hocsYMOkgL5EeuD6VUR6bUdseKeBvTQ=; b=dZ2UyIN3A4I+uz+Sprjt0VFFj2X1jLL9nuNKSLztr7npWIr2Wwr9XCrUOUNsY1qTds 8rkTbFjknSc3F3dFcBOhd5maeRBv1jYrtfv+w7Frs5L8gaFvgskYcb/P54v5XX/oVTaJ ZG7qKLROTfnDkmDrjNJNThlmazWaAfYEzaIQWmd0F0NOkmc5gpXXb2gke5lcxNMMm/4w 7i5nlsgTGGT13TELNRctEnXItDifjQ9UB5GHshV5gb/vX06mZJPXZruDiK548QeTMO/5 HPqXXnvTfTmaJO5Lmni60R+eYQv5LvUokaPYhqVYbvjFUPLz0aEEMOZ1yfBZ/rHPERmE qDxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322701; x=1700927501; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xU0+DezQv+68hocsYMOkgL5EeuD6VUR6bUdseKeBvTQ=; b=I7jo1eXBOJcRH97wbiZI+Ts0zwaq0W9hUk4s4hLhYqrpNTCyBR4EmlGt/WYW80yce3 1OrctUM1MXyBpR7W+Is9pVVRom40yohTbH0yzZTSzaXKqZGfs13nQPITLFgHf7XzVSiT wgl7EYTlXu/MkLXCVW5vOTs2uhb+PNM9pD1HwW3CPYv1k5I0RfPNKZSqLhI6cn+BscDo t/aiFLdYeJpjNO/visorZ8IpJYV8+nWNB8+yDpoaiAlrRNa3+y4vH2JzNA15Assa3cri XuBKpxEGkyh8om7yv0s315DzvTSoiyQyAZyrVnS/pDGcOAj3SsqHe0GP13GVTfUdpT9I P1wA== X-Gm-Message-State: AOJu0Yx+LLJpqYnfAeNVJwbUaW9IEnzim3iiyZlD05ZYoXL1F4W/s8uH YaG37nntgUQXGKqu0SVtugTfuYJURxhTuhKq X-Received: by 2002:a81:928f:0:b0:5ad:47ba:fa43 with SMTP id j137-20020a81928f000000b005ad47bafa43mr2864475ywg.35.1700322700888; Sat, 18 Nov 2023 07:51:40 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id x188-20020a8187c5000000b005af958bb2absm1157374ywf.109.2023.11.18.07.51.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:40 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Oliver Neukum , Greg Kroah-Hartman , linux-usb@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 21/34] usb: cdc-acm: optimize acm_softint() Date: Sat, 18 Nov 2023 07:50:52 -0800 Message-Id: <20231118155105.25678-22-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.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 (fry.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:54:38 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917781259614036 X-GMAIL-MSGID: 1782917781259614036 acm_softint(), uses for-loop to traverse urbs_in_error_delay bitmap bit by bit to find and clear set bits. We can do it better by using for_each_test_and_clear_bit(), because it doesn't test already clear bits. Signed-off-by: Yury Norov Acked-by: Oliver Neukum --- drivers/usb/class/cdc-acm.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index a1f4e1ead97f..8664b63050b0 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -613,9 +613,8 @@ static void acm_softint(struct work_struct *work) } if (test_and_clear_bit(ACM_ERROR_DELAY, &acm->flags)) { - for (i = 0; i < acm->rx_buflimit; i++) - if (test_and_clear_bit(i, &acm->urbs_in_error_delay)) - acm_submit_read_urb(acm, i, GFP_KERNEL); + for_each_test_and_clear_bit(i, &acm->urbs_in_error_delay, acm->rx_buflimit) + acm_submit_read_urb(acm, i, GFP_KERNEL); } if (test_and_clear_bit(EVENT_TTY_WAKEUP, &acm->flags)) From patchwork Sat Nov 18 15:50:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166572 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1242081vqn; Sat, 18 Nov 2023 07:55:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IFgZFhWWQjDQ1LJB7B4w82tV8ZKg3jnaEWmZy3yAiiK52pjS4TvLAT4cGuH5lxAmN/z+Xqp X-Received: by 2002:a05:6a20:3941:b0:15e:7323:5bf3 with SMTP id r1-20020a056a20394100b0015e73235bf3mr12132667pzg.26.1700322926630; Sat, 18 Nov 2023 07:55:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322926; cv=none; d=google.com; s=arc-20160816; b=MMTXUxbAaYBKaJIRy43Kg4cIpqzEWqKAwHvQb6WfPlBndnQJ3f8+N5UpDFxCEI5S3K F6/n/9Q+w7f5xV9ovAY0HjgzbbDkJcanyqvbaVOdVRrNuUts8G7G+PKEryQPBmT9zPMX lGUMcuDkfKXFAOO4iLdXdvp0TlNnrhX+4E0FFe5A18Fl1FFbcaxzBjmdw/qJN3s7sPNe t0wjCMVkTUOqXhJIjESo0g2lMTJQtQivSQlzmAAlxsiVgF2+xsi/GFpmWxdWPyKwO25g BIS73PRPRasPu94cSZDlAt5Buuik7bm6aGqttZxMp3bV9ssQPWoezkK5NRI70U4w5uQa qkqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=tg2dWT1RhFKme6yZPEIj44E7/nsRkUJhN3arViZI26M=; fh=AAkF6Tex0WhlI6W6ro+87m8Pskr+ISiOTwlW2FEOExQ=; b=SliU3FUdxiXg1zoqZ7ZZRKos0XaKJpy6Yxe8wLzYBKqNu1/lRZOYXpP/1DU4/zKK+2 WMVDPXaVTi/k4AIw4G2oDBHUbKzppLKPDyiz48o+rqLiu8NQN8LnKKawckw2Om5Xhj0P nHTpXAqiCPZVTfRrNkIXeDCaRyIlohxjkSdS0bAQ+FzYHgheVLxxRxv5lLG7jQP3du+4 nVLjHadprWIXoYxltcoo2bVF14+DggnBvJh8pu5lSDhTpL13/yqBQeoc+CbF/bP7twUa oiP7GGWT1jfUbe2ddY3/cM2rKv270dqDvppSJpqHky/rgjYDhGYbj1rIDoZ+v35tHvRD 1Mow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=LX0Ty0bL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 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 agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id f10-20020a6547ca000000b005a9b0fe6afbsi4514269pgs.144.2023.11.18.07.55.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:55:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=LX0Ty0bL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 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 agentk.vger.email (Postfix) with ESMTP id DB77380D1598; Sat, 18 Nov 2023 07:55:10 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232664AbjKRPyA (ORCPT + 29 others); Sat, 18 Nov 2023 10:54:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231389AbjKRPxA (ORCPT ); Sat, 18 Nov 2023 10:53:00 -0500 Received: from mail-yb1-xb30.google.com (mail-yb1-xb30.google.com [IPv6:2607:f8b0:4864:20::b30]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ECD151BF9; Sat, 18 Nov 2023 07:51:43 -0800 (PST) Received: by mail-yb1-xb30.google.com with SMTP id 3f1490d57ef6-d9ac3b4f42cso3362107276.0; Sat, 18 Nov 2023 07:51:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322702; x=1700927502; darn=vger.kernel.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; bh=tg2dWT1RhFKme6yZPEIj44E7/nsRkUJhN3arViZI26M=; b=LX0Ty0bL4pMGI7gQ5d7p8EDFQ9rDmYzupxxul3h1v0ChIU2ggm3JZfJqnfaxHnlMH7 dMKNUQ+FdJFnmF5e8H4/8nAqVTSbVQOlRuUDrIwHiqXd4sg2OPukdZDT7WeNCa3sOyqI /fo3kQhSmqBcZmgZufy3bEzS8R/LGyjCWczqu6KUYr8Nj3/W9jEjt2Gdx+krsfF0SdUI rXzQKd9bZKzK1aQtcKdJQFLzr2h8crIscLZ+g+H2BZO0netk4WdH/N20fl9aXKZyyd50 TbVdX15R2F919pwplLPX9mQUAxaGk9qHABAdAlJw5fZYAXPjqWxVYZXlFUA7WUHP8b6C g9oA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322702; x=1700927502; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tg2dWT1RhFKme6yZPEIj44E7/nsRkUJhN3arViZI26M=; b=IPF8W04ewcwO6sh9e9zownO9utMV4G+4Rp+V8FnsWAjJjgOkX/MduzvDBqT8VsypF1 LwQK+k9i9kQ4WqTC/b4JA4vPSqYnWFOUNZchwrcjug5OGpZ/v4sgAb+z5oV/ovuyj5l6 PFULSZ6ZAcUWw70Xt9c0DWPDM2OyCrQ1IxhBOYgXPfN8svR51mZ3Un5YaXD9oQNrzKAV YJV3j5rRmlhW3mkqj2p6TIeIU7K4k6USgM7VORprI9nczBaJXVht7YT/lt52XBNVt8FA NuETR2X3WuXonV5MocpaK9n5Arw42p4jZPPDYnetHniHOR9TkVZLo0vGZ1DFkyQGi073 3ajA== X-Gm-Message-State: AOJu0Yz2C07TxMPEY/hOyRwClLk8XJH2DDPdQzIhGUiRGtcuOwNNFi3I IpVgxBjnchWtS60v3ruwZH2BA1uz1zw+cBmi X-Received: by 2002:a25:ad4f:0:b0:daf:7702:fd60 with SMTP id l15-20020a25ad4f000000b00daf7702fd60mr1666669ybe.1.1700322702147; Sat, 18 Nov 2023 07:51:42 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id i10-20020a05690200ca00b00daf198ef6fbsm964572ybs.21.2023.11.18.07.51.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:41 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Jens Axboe , Damien Le Moal , Chaitanya Kulkarni , Ming Lei , Johannes Thumshirn , Chengming Zhou , Nitesh Shetty , Akinobu Mita , "Shin'ichiro Kawasaki" , Yury Norov , linux-block@vger.kernel.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 22/34] block: null_blk: fix opencoded find_and_set_bit() in get_tag() Date: Sat, 18 Nov 2023 07:50:53 -0800 Message-Id: <20231118155105.25678-23-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.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 (agentk.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:55:11 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917813118915840 X-GMAIL-MSGID: 1782917813118915840 get_tag() opencodes find_and_set_bit(). Switch the code to use the dedicated function, and get rid of get_tag entirely. Signed-off-by: Yury Norov --- drivers/block/null_blk/main.c | 41 +++++++++++------------------------ 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/drivers/block/null_blk/main.c b/drivers/block/null_blk/main.c index 22a3cf7f32e2..a41d146663e1 100644 --- a/drivers/block/null_blk/main.c +++ b/drivers/block/null_blk/main.c @@ -760,19 +760,6 @@ static void put_tag(struct nullb_queue *nq, unsigned int tag) wake_up(&nq->wait); } -static unsigned int get_tag(struct nullb_queue *nq) -{ - unsigned int tag; - - do { - tag = find_first_zero_bit(nq->tag_map, nq->queue_depth); - if (tag >= nq->queue_depth) - return -1U; - } while (test_and_set_bit_lock(tag, nq->tag_map)); - - return tag; -} - static void free_cmd(struct nullb_cmd *cmd) { put_tag(cmd->nq, cmd->tag); @@ -782,24 +769,22 @@ static enum hrtimer_restart null_cmd_timer_expired(struct hrtimer *timer); static struct nullb_cmd *__alloc_cmd(struct nullb_queue *nq) { + unsigned int tag = find_and_set_bit_lock(nq->tag_map, nq->queue_depth); struct nullb_cmd *cmd; - unsigned int tag; - - tag = get_tag(nq); - if (tag != -1U) { - cmd = &nq->cmds[tag]; - cmd->tag = tag; - cmd->error = BLK_STS_OK; - cmd->nq = nq; - if (nq->dev->irqmode == NULL_IRQ_TIMER) { - hrtimer_init(&cmd->timer, CLOCK_MONOTONIC, - HRTIMER_MODE_REL); - cmd->timer.function = null_cmd_timer_expired; - } - return cmd; + + if (tag >= nq->queue_depth) + return NULL; + + cmd = &nq->cmds[tag]; + cmd->tag = tag; + cmd->error = BLK_STS_OK; + cmd->nq = nq; + if (nq->dev->irqmode == NULL_IRQ_TIMER) { + hrtimer_init(&cmd->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); + cmd->timer.function = null_cmd_timer_expired; } - return NULL; + return cmd; } static struct nullb_cmd *alloc_cmd(struct nullb_queue *nq, struct bio *bio) From patchwork Sat Nov 18 15:50:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166562 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241734vqn; Sat, 18 Nov 2023 07:54:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IG83UdbXUlLScUFJjDdojVdbqGJ8YXLs5GNjUzuGsZC0CoogV1QGkBSLkwEGMZzFXaNGotv X-Received: by 2002:a17:902:ec02:b0:1cc:482c:bc4d with SMTP id l2-20020a170902ec0200b001cc482cbc4dmr2445453pld.5.1700322877165; Sat, 18 Nov 2023 07:54:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322877; cv=none; d=google.com; s=arc-20160816; b=qJX8pnyn6JE84XSry3sN3uqikkF+CZKBYAE1FbPIhAMGFfrrdZjZO/kbGkh/1aSwkk fGhnqVhijZOBiYJQC/5iJthjQ7YeZZEGwZVEju960YuypxB0NgeW6hIHlp8kmgtKyQjd Euze3ZNMBHQTIDjl7WAYfBW43VR8VqGCwsoLczDnM2cbLwuADY7WFwEPrUS9g3t3en1q avxGlVum2d+8ATBuREjwzRPlj0CXdQ2mdE1UJu5NBv5QWyaAoYVcdQsHy2N6OGRxJOve TtnjuseCFdzSLLBVkpaOGXcO6Zww4ofJhJesff1SiILS52fzWWT14ptIruTbB9qJDAfb Cr0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=phxxXofFhF+VjGYxpvuhMgjdcfI/PSJyd4/4jUAT2FE=; fh=CYUadrsdwvzTks0+b+VAvi/6YDI9FcSIz+8j0nZxFIs=; b=xcpnkwABTVXPJOs3Vouc+9F4OInSwY+sXY6wbw2/Do9H30zSXGo+2Wq/a6zn20kYCI KppyDUWCPX/phj/SbKYv29fBTwSC77YqU0GVLUscMGyLlOwUclUZ9SzXII4Jk0ZMtX/R Mv6rtVx2IzYPbV6EIk0PdDeCC5ZW1YX6HLWeU/Ku8ZX0Dyyh8ET6NneQbGDrzsSB4cmb U5PLgAbvNX1FyuUs3lt67jlaKreL1jjQ/aomM5gdzVLzVhbiaNzcYe5OpKAkKKGHtlrf jAlVRtI6FFMMsjOJvnHRlUqQxsC7BkpqBk6zySbNyvSs99uMowdQhSkeSa1w43aAjVfz 42SA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=a5eesQm5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id q7-20020a170902edc700b001cc330e48e6si4276475plk.80.2023.11.18.07.54.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:54:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=a5eesQm5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 9E9D8804BDE2; Sat, 18 Nov 2023 07:54:34 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231180AbjKRPyH (ORCPT + 29 others); Sat, 18 Nov 2023 10:54:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51420 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231185AbjKRPxD (ORCPT ); Sat, 18 Nov 2023 10:53:03 -0500 Received: from mail-yw1-x112c.google.com (mail-yw1-x112c.google.com [IPv6:2607:f8b0:4864:20::112c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 348B71FC3; Sat, 18 Nov 2023 07:51:45 -0800 (PST) Received: by mail-yw1-x112c.google.com with SMTP id 00721157ae682-5a7dd65052aso33807947b3.0; Sat, 18 Nov 2023 07:51:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322703; x=1700927503; darn=vger.kernel.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; bh=phxxXofFhF+VjGYxpvuhMgjdcfI/PSJyd4/4jUAT2FE=; b=a5eesQm5O5JlmTp25FdxAsMuE7ZxUbyEvxra9wNcgqF4HasdgmMdaBOnyuKe8Lni68 BNj7pLsw4KCBvmUmqH1wcclGY+yyp+l/VtGcBlXNwSjchXwTajKqO7GSzUU3sfNyrwi2 JDdg1U579Ay14OlS/8DKkiy2vSTY6Hjekkivf6NPU6/NUvzlaFpG5ZgLUUT/rYmH1gIJ dTG2LFgNy3Gp3d77fRodIlGnfSTHji9GUlt5fN0rHSjV1rRQRUhiYSnIeAdNHXyKDSR0 hpN8jcPeNdMJhikWMX/zeg/9YGO60YWSIMhLUVwMTSvm/ScIOMF4Uvg3GJYRen/7wT9n Idfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322703; x=1700927503; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=phxxXofFhF+VjGYxpvuhMgjdcfI/PSJyd4/4jUAT2FE=; b=xBmHlC75oOuWzumRnfFouqx8fPIrKuYJMhVSYBBmkjc9rSepUW/H8jCnmvswPyzjlM Y/cHDc+KOrLHAGUt7utk9Sp5mNO4o8jmdCZqFs/EzFDo5xNKDgayRYLxWJuEZWu7U7OC 1NouYGyWN+3KcA+Ihv3FYvJYYumS1UMtxTM9FzH80zGJZ8UAUx/7jlfAq16NkbcU9bnX tmmttx4hn4oc3v1UWBadGahclL8qYWh0GHSwtskcHYG4veSOKeF2BZohEs/cT7hHsVFO 9sxUkRqzsYWY9vySqU9IZ3/7c0DET9WpLttwYIw1hh0dgjrWuCcSwUz+RoW8axzLPfKN K9PQ== X-Gm-Message-State: AOJu0Yx5NEoS4oSGaUyTvKkRM6W5fKgPnjedPR4JV6sVY1MIu+SpRhrj h6SJa09wHbPDb/d4VJLb4HWMUSAAT0/HJ4Kf X-Received: by 2002:a81:920e:0:b0:5a7:b036:360c with SMTP id j14-20020a81920e000000b005a7b036360cmr2839457ywg.23.1700322703364; Sat, 18 Nov 2023 07:51:43 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id t195-20020a8183cc000000b00582b239674esm1172512ywf.129.2023.11.18.07.51.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:42 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, "Md. Haris Iqbal" , Jack Wang , Jason Gunthorpe , Leon Romanovsky , linux-rdma@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 23/34] RDMA/rtrs: fix opencoded find_and_set_bit_lock() in __rtrs_get_permit() Date: Sat, 18 Nov 2023 07:50:54 -0800 Message-Id: <20231118155105.25678-24-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:54:34 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917761281812133 X-GMAIL-MSGID: 1782917761281812133 The function opencodes find_and_set_bit_lock() with a while-loop polling on test_and_set_bit_lock(). Use a dedicated find_and_set_bit_lock() instead. Signed-off-by: Yury Norov --- drivers/infiniband/ulp/rtrs/rtrs-clt.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c index 07261523c554..2f3b0ad42e8a 100644 --- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c @@ -72,18 +72,9 @@ __rtrs_get_permit(struct rtrs_clt_sess *clt, enum rtrs_clt_con_type con_type) struct rtrs_permit *permit; int bit; - /* - * Adapted from null_blk get_tag(). Callers from different cpus may - * grab the same bit, since find_first_zero_bit is not atomic. - * But then the test_and_set_bit_lock will fail for all the - * callers but one, so that they will loop again. - * This way an explicit spinlock is not required. - */ - do { - bit = find_first_zero_bit(clt->permits_map, max_depth); - if (bit >= max_depth) - return NULL; - } while (test_and_set_bit_lock(bit, clt->permits_map)); + bit = find_and_set_bit_lock(clt->permits_map, max_depth); + if (bit >= max_depth) + return NULL; permit = get_permit(clt, bit); WARN_ON(permit->mem_id != bit); From patchwork Sat Nov 18 15:50:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166575 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1242535vqn; Sat, 18 Nov 2023 07:56:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IFsjSz5D92jsAK0rkR8cm36jHVxNHgGo6pymL0HjUNB7Pid/wvj5EgAolJQ7Y3D6K7En0g+ X-Received: by 2002:a17:903:234a:b0:1cd:fce2:d702 with SMTP id c10-20020a170903234a00b001cdfce2d702mr3501202plh.15.1700322998285; Sat, 18 Nov 2023 07:56:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322998; cv=none; d=google.com; s=arc-20160816; b=jAXGVQtSK1W+rX11Xsn6EGvW4FxhT+oOcgkS1xpOuAtHatQzBFqfUTg623Tna/xFnw 9sQwDwfgZs2ZhLGp68rgZPSrr0jiWb9fDe0WKNPXfe5v9KdDakIN37hJVWP+s9QJAFsZ 3tyC3uT8yJ2FAey/VsBo9hXh5uj+qcJP/gVG4ja0PWM0jNiNY9jD2AdAUaGsbNrZjZJB vjhp55X9SB7frikUTL5hWlSPUZiYNOjMQ9ccvRNnkKsCHjDml7x3PZd+yBx1Nb6vqWi/ S81JRUNoZELqBARBn9e9049k/0jBg0gRtKU5GJGi8VTmmo/C16wFIcf2alZ5Ly2Mp/T7 XzyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0d2eKvr3TXuVBrgKyJ84PHfbsLaO9M1lKSW9z0G3/1I=; fh=C+ovTFCDw8NHPQbveulH9KzROSWF649qWdmKuHaPnH0=; b=zugpa0MFJcJhV0lVl/oSXfxEkpV5RvA6/dAlI8tek9DoSyCm4uyOT2uKmSnSfv7Az1 DFeWyYorcPFUi9/r/D1IzRF1RQ4Tr4b8onrPZg6QuTJqVCip4yo+gEhN5oswAjyzyqHD 8p5Go+4m6Lcm44XfZ4nMe4wH5UaiKLBwJyGkON+wwikdXjQ7en68lFBA0D1uE+i5AlSa qon3W6WN0ZQuPAIz49H1Cii30X5P8DWRskxKAnTYwxJee2C4aNkLg52wI7sANHgLONH+ N0ve86+Xmgsy6oFJLNV4vc0d2jzjoi7JOBUIF7g65SZ2ha4KDbx/47AFLBE4IYjhZaW/ rzCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=CliZe3Tk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 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 groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id 11-20020a170902c14b00b001cc0e39373bsi4292924plj.32.2023.11.18.07.56.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:56:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=CliZe3Tk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 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 groat.vger.email (Postfix) with ESMTP id 0FFB98087DE0; Sat, 18 Nov 2023 07:55:52 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232881AbjKRPyK (ORCPT + 29 others); Sat, 18 Nov 2023 10:54:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230306AbjKRPxE (ORCPT ); Sat, 18 Nov 2023 10:53:04 -0500 Received: from mail-yw1-x1132.google.com (mail-yw1-x1132.google.com [IPv6:2607:f8b0:4864:20::1132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 85E921FC6; Sat, 18 Nov 2023 07:51:46 -0800 (PST) Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-5a86b6391e9so34000057b3.0; Sat, 18 Nov 2023 07:51:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322704; x=1700927504; darn=vger.kernel.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; bh=0d2eKvr3TXuVBrgKyJ84PHfbsLaO9M1lKSW9z0G3/1I=; b=CliZe3TkN7RwUCns6Euw1bJup2j6ayFXl5NT81h8uTPGUvhdBUh5diVVPsw3bAbv27 WZ2XqtPAIvvkC7CD0hD9ixz4h1RcDLrTHRS74k6yrVGcpAiwFT2AGBj0AU7of/fywI/L JTTng5KOCH3F3F3JG5l4LczIrrFtSuo46cgoPeRbag2VvuLz7te8cEiyJA9x5SqAc1kh K6jXIdOvZhFRpD6r4hAFZf6CykGW9soyWPMRYXBM86k5SaLBbiFH6ulPZlWh+Ur7AbFu SLkqGLq07GRBd3MckE6gBcEmhEzwiHsA3J+7Abja/qAvN0ewCQxmvDr8ZSfEaekFZKXm 5+TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322704; x=1700927504; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0d2eKvr3TXuVBrgKyJ84PHfbsLaO9M1lKSW9z0G3/1I=; b=v8DWeUGOsMEG/nOvZRXGtQNXetznK5b3gSHY4FMsJ8voW2KhCYXJDp74yXgG4jmx4B Wy9Gau/uMpkHhVxMJt7zmBzljsdJ+36A3OtccYlnIudugKhjJN4/BiuSvZb2ywamXYSz 2Bb6vfTV4At9BxwHjxbtLckWpxn601w2TFmsmvCcmenZ1nFPyvmWlasTvDvZYOXMMRod Cl0INW2+LHrQKCAupymrRRoYbzqyA2+cOYckP9Ra28SZEE/xp7pKkwze5ah8DWk7emD6 Bi5KUwp/U7SQ6+Uu6RBtgmkedDDa6BYDFH1KMmXnXDpRkPVoFHS34SakTDxdTL/Epbrh ctjg== X-Gm-Message-State: AOJu0Yyq9LqF2t7qh5s0Wd4QMBlkDaTzp3ujSBGrTvuYla/skZJYY73y 18FYq+3z3tuDesfzS9/tv8xd7W1czoz0mznF X-Received: by 2002:a05:690c:2a85:b0:5af:66e7:e382 with SMTP id ek5-20020a05690c2a8500b005af66e7e382mr2522479ywb.34.1700322704464; Sat, 18 Nov 2023 07:51:44 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id q126-20020a815c84000000b005a7c829dda2sm1170423ywb.84.2023.11.18.07.51.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:44 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Karsten Keil , netdev@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 24/34] mISDN: optimize get_free_devid() Date: Sat, 18 Nov 2023 07:50:55 -0800 Message-Id: <20231118155105.25678-25-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.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 (groat.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:55:52 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917888116730011 X-GMAIL-MSGID: 1782917888116730011 get_free_devid() traverses each bit in device_ids in an open-coded loop. We can do it faster by using dedicated find_and_set_bit(). It makes the whole function a nice one-liner, and because MAX_DEVICE_ID is a small constant-time value (63), on 64-bit platforms find_and_set_bit() call will be optimized to: ffs(); test_and_set_bit(). Signed-off-by: Yury Norov --- drivers/isdn/mISDN/core.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/isdn/mISDN/core.c b/drivers/isdn/mISDN/core.c index ab8513a7acd5..3f97db006cf3 100644 --- a/drivers/isdn/mISDN/core.c +++ b/drivers/isdn/mISDN/core.c @@ -197,14 +197,9 @@ get_mdevice_count(void) static int get_free_devid(void) { - u_int i; + u_int i = find_and_set_bit((u_long *)&device_ids, MAX_DEVICE_ID + 1); - for (i = 0; i <= MAX_DEVICE_ID; i++) - if (!test_and_set_bit(i, (u_long *)&device_ids)) - break; - if (i > MAX_DEVICE_ID) - return -EBUSY; - return i; + return i <= MAX_DEVICE_ID ? i : -EBUSY; } int From patchwork Sat Nov 18 15:50:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166568 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241875vqn; Sat, 18 Nov 2023 07:54:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IFRwcLEp4dtxs4TNQrAL2hp0GLtaOTHEdP4wpUcxYVri6HCoXmJD9kgKhBXnUxW0sivuDwy X-Received: by 2002:a05:6a21:38c7:b0:187:6b05:c6e7 with SMTP id yk7-20020a056a2138c700b001876b05c6e7mr1724712pzb.39.1700322898598; Sat, 18 Nov 2023 07:54:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322898; cv=none; d=google.com; s=arc-20160816; b=OC8tJ2Jf2Ab9BN7bDGXF4C8u2+6pxTpPz8Yq+rK22RLT3SFgnC1XKQG5IoBJ+D71WC g9pKSkgGRHwhtpe6sKHISOcFIG6oPuNWPRLZ48sQTSWZIB2rAGSuRQ9HJ0tJdt9KCs/u Vzdgdk55HZA9r7p5VwSsQ/Z+WXbXAoVA+R2BOYAYB7XN08KRNr7Skw5V1dF4/fJst//8 7wg8Gxi4ZcrrI1RxYSVDDaZesDdEyqGMQWGSaXIGBtMKj1dkXD5obokzZlb8OoR3oG8K 7S458Lq6C2SHleZjikqSs9R5cSALbK2vsoOV1so4dMb9dG0SwDG6oIB2jceMueYg+JP3 /SvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+wZmOHN/Mg2WsccYCg7xC7qQhfAqQUan5w/+E5l83yM=; fh=+hyK/WOEgClk6Lhav0lmBFPu+5l5tp99b1ymAPtfkDU=; b=u2kH4QONyIKcOnU8V4CpySDkipw9Am1rJjeZJVKCPTDw4KJk2++sgV7a0DhI2tm4zT oibVrkek2PVi4775QpTyp9sEgW9uOw5WbOEp+zXmXxOUzJGEaYc6dGyHk7clU29QRdkQ C54jP9w1Am+FpvdursqZhmstVUVoA6jqicI3r8CSYS/MX1GzHBwk7EEzO4WfRUBIabhO wd0cdmWCuYnxYumPhvfYGy70jrn4l4DEou+qJu3c58SCn5HLxl1O12ymFsThubtX3nEf b5bCXz7clFrpmONozPhOz7ssAtHAKmAomApfHPZeUsw8ay4waNwdUxIF06wbepGkM/fd ZTRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=cioG4iq4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id p24-20020a63e658000000b005b90b310e26si4509594pgj.403.2023.11.18.07.54.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:54:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=cioG4iq4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 1A0EA804AF79; Sat, 18 Nov 2023 07:54:56 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232937AbjKRPyP (ORCPT + 29 others); Sat, 18 Nov 2023 10:54:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49844 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230441AbjKRPxF (ORCPT ); Sat, 18 Nov 2023 10:53:05 -0500 Received: from mail-yw1-x1133.google.com (mail-yw1-x1133.google.com [IPv6:2607:f8b0:4864:20::1133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D72561FD2; Sat, 18 Nov 2023 07:51:47 -0800 (PST) Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-5a84204e7aeso33080057b3.0; Sat, 18 Nov 2023 07:51:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322706; x=1700927506; darn=vger.kernel.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; bh=+wZmOHN/Mg2WsccYCg7xC7qQhfAqQUan5w/+E5l83yM=; b=cioG4iq440S8UbfRh0/MZWlkYyGhkicQn7v7zVRG+6tK6pFqDhQXlCb3/U8Axte3nu nhoGZb0O4z4D9XcEMxWHkks53RfHl2N2inPX5H3K+3ZY4cO3O9bR8nsbWMAOKzvUl7m4 bp7nrP4mQ23b7742UAG6wQUQMkb9VzNV9sTijPlxOm680tpPlauMRaK3wg039To86Iii 6lVkJ+4KkYI5K8LzhFU//cOCRK/qO1eceR6oawjQj5tSL+zxyboPsGi5ub312TMS1MEB FOxI4zFhncEw0O2kSbIeUysYeeJYmLWwvtVQRAjV7fb0yZVpV+s/pM29qz9zQMy0BaZv 5pOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322706; x=1700927506; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+wZmOHN/Mg2WsccYCg7xC7qQhfAqQUan5w/+E5l83yM=; b=TZFdpTxEA7HZI+e1/e8+/xaNziTNx1yxHA9+xxMvNisafaSa/0HQTvqKo1BbkeXqsj /Yx+DG3JBwDKsLGMXWuwuPYDFm1nZiQ+wyFs6m7XGcZW3/cI0hSqiIXQD/lOipOMhdVa jLMLYT/BKWj/RxcQro6NZGvD68R/BiIlKgN2oCC+LvAEfIBY7pA+SokALX9RxpG//XN2 yITM5HZE5EWM+lMJAM9/35qAHQRKauVR7Z5WWxldz6uQ5csOTQqLl7DEcPrHWd854IAd yBnWEhRCqTqW6OfgkmhT6hsYsy19406p6yWDwCYjUVN13HI4BkOt0j9UrcVMR79V6ZVy 45tA== X-Gm-Message-State: AOJu0YxzF9Te+udH47+rGExGLbPlS+U0Wq2Y+VuS5G/rT1uqpOmRTsSt 9aUrCTdrtZRAydkGEeN9w0Qk1vXQmCTIGGgM X-Received: by 2002:a0d:d48a:0:b0:59b:5d6b:5110 with SMTP id w132-20020a0dd48a000000b0059b5d6b5110mr2902658ywd.21.1700322706091; Sat, 18 Nov 2023 07:51:46 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id m2-20020a819c02000000b0057a44e20fb8sm1163887ywa.73.2023.11.18.07.51.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:45 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Yury Norov , linux-media@vger.kernel.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 25/34] media: em28xx: cx231xx: fix opencoded find_and_set_bit() Date: Sat, 18 Nov 2023 07:50:56 -0800 Message-Id: <20231118155105.25678-26-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:54:56 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917783982725928 X-GMAIL-MSGID: 1782917783982725928 Functions in the media/usb drivers opencode find_and_set_bit() by polling on a found bit in a while-loop. Signed-off-by: Yury Norov --- drivers/media/usb/cx231xx/cx231xx-cards.c | 16 ++++------ drivers/media/usb/em28xx/em28xx-cards.c | 37 +++++++++-------------- 2 files changed, 21 insertions(+), 32 deletions(-) diff --git a/drivers/media/usb/cx231xx/cx231xx-cards.c b/drivers/media/usb/cx231xx/cx231xx-cards.c index 92efe6c1f47b..b314603932d7 100644 --- a/drivers/media/usb/cx231xx/cx231xx-cards.c +++ b/drivers/media/usb/cx231xx/cx231xx-cards.c @@ -1708,16 +1708,12 @@ static int cx231xx_usb_probe(struct usb_interface *interface, return -ENODEV; /* Check to see next free device and mark as used */ - do { - nr = find_first_zero_bit(&cx231xx_devused, CX231XX_MAXBOARDS); - if (nr >= CX231XX_MAXBOARDS) { - /* No free device slots */ - dev_err(d, - "Supports only %i devices.\n", - CX231XX_MAXBOARDS); - return -ENOMEM; - } - } while (test_and_set_bit(nr, &cx231xx_devused)); + nr = find_and_set_bit(&cx231xx_devused, CX231XX_MAXBOARDS); + if (nr >= CX231XX_MAXBOARDS) { + /* No free device slots */ + dev_err(d, "Supports only %i devices.\n", CX231XX_MAXBOARDS); + return -ENOMEM; + } udev = usb_get_dev(interface_to_usbdev(interface)); diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c index 4d037c92af7c..af4809fe74a8 100644 --- a/drivers/media/usb/em28xx/em28xx-cards.c +++ b/drivers/media/usb/em28xx/em28xx-cards.c @@ -3684,17 +3684,14 @@ static int em28xx_duplicate_dev(struct em28xx *dev) return -ENOMEM; } /* Check to see next free device and mark as used */ - do { - nr = find_first_zero_bit(em28xx_devused, EM28XX_MAXBOARDS); - if (nr >= EM28XX_MAXBOARDS) { - /* No free device slots */ - dev_warn(&dev->intf->dev, ": Supports only %i em28xx boards.\n", - EM28XX_MAXBOARDS); - kfree(sec_dev); - dev->dev_next = NULL; - return -ENOMEM; - } - } while (test_and_set_bit(nr, em28xx_devused)); + nr = find_and_set_bit(em28xx_devused, EM28XX_MAXBOARDS); + if (nr >= EM28XX_MAXBOARDS) { + /* No free device slots */ + dev_warn(&dev->intf->dev, ": Supports only %i em28xx boards.\n", EM28XX_MAXBOARDS); + kfree(sec_dev); + dev->dev_next = NULL; + return -ENOMEM; + } sec_dev->devno = nr; snprintf(sec_dev->name, 28, "em28xx #%d", nr); sec_dev->dev_next = NULL; @@ -3827,17 +3824,13 @@ static int em28xx_usb_probe(struct usb_interface *intf, udev = usb_get_dev(interface_to_usbdev(intf)); /* Check to see next free device and mark as used */ - do { - nr = find_first_zero_bit(em28xx_devused, EM28XX_MAXBOARDS); - if (nr >= EM28XX_MAXBOARDS) { - /* No free device slots */ - dev_err(&intf->dev, - "Driver supports up to %i em28xx boards.\n", - EM28XX_MAXBOARDS); - retval = -ENOMEM; - goto err_no_slot; - } - } while (test_and_set_bit(nr, em28xx_devused)); + nr = find_and_set_bit(em28xx_devused, EM28XX_MAXBOARDS); + if (nr >= EM28XX_MAXBOARDS) { + /* No free device slots */ + dev_err(&intf->dev, "Driver supports up to %i em28xx boards.\n", EM28XX_MAXBOARDS); + retval = -ENOMEM; + goto err_no_slot; + } /* Don't register audio interfaces */ if (intf->altsetting[0].desc.bInterfaceClass == USB_CLASS_AUDIO) { From patchwork Sat Nov 18 15:50:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166563 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241814vqn; Sat, 18 Nov 2023 07:54:48 -0800 (PST) X-Google-Smtp-Source: AGHT+IFnFr2LUFImugZN9tmekTnNjsAeTzKTfFOVamogFAxuyCvEhZrTcf4AYIwTyzkZX0Oce60M X-Received: by 2002:a05:6a21:3282:b0:187:4bbe:b2fa with SMTP id yt2-20020a056a21328200b001874bbeb2famr2541790pzb.16.1700322888568; Sat, 18 Nov 2023 07:54:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322888; cv=none; d=google.com; s=arc-20160816; b=FC91eSu/ZtgdbxM56sIQl9Eb0PIK3nbFic8v6heGrJ9pEsLIjGUup9GaRFXz2bCYf+ Z8GQBGbbY/dUee3KKS93pH8Ulq9lgyShoz1q9x1yVZtjwsMZ2p1f1P99Wt2I5sRell0a AiYGaHntha/DU2IjAsPOMO/LQPAPDmCrbnBLriYzn234o8RO5vt64CztiV+reqn2wKxY eYuHpDt4sQNpcAMrLzUgbi/VLMGYtHDQ284CfzTPyfdig1kITTsxgaP+aACVDTnAtKiz r79/GaN1kNuHuOE1IrrqE+envsE/WrYyWvpYuCM3FWVPuSiost2GPrQLxBc3gjphmKhy WprA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=fm1bHPEyELp3MiPjOSu0bHDojYqM84986duNSStQHBY=; fh=oUdsZkNoIjtsGJVHynoBYU/VVwMJHMBx6arsr/5XmjA=; b=ZCTsWWkdOR31MfE/rdjBHPKY8RnqF37RaxKwAQP7hnSUG4j24PKw1+thpSNDHXoXWX OwoewxpbZBNviQ9mFwyPCmi/2Ts/JdCuop61bETao0xaqztK7Sivug7Oqgw+nUcAK2Yt eUR4G3l0IoavoW0sYMarRjxJt0aTlRNIe1K1jmbeLLq6RZ1LvHSDD4WmlyaicwKGC4l7 nePvT/5JucC51KJ04X2Q4Y3gSWFjEP61HygArvRjbtqwt5neW+J6tLNwHIsptkGJLsrk UAdkkQwho4Z5tmFAjgsKvA31SzjQABhKzrI1T5qTxqIFCRRdiWqdcCUsWAiEsV99zj9R /qhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=S4GwRONQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id z3-20020a17090abd8300b00280a01a906esi6917424pjr.162.2023.11.18.07.54.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:54:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=S4GwRONQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (Postfix) with ESMTP id 57C2780A5FB8; Sat, 18 Nov 2023 07:54:47 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231431AbjKRPy0 (ORCPT + 29 others); Sat, 18 Nov 2023 10:54:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230409AbjKRPxG (ORCPT ); Sat, 18 Nov 2023 10:53:06 -0500 Received: from mail-yw1-x112a.google.com (mail-yw1-x112a.google.com [IPv6:2607:f8b0:4864:20::112a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF76A1FD9; Sat, 18 Nov 2023 07:51:48 -0800 (PST) Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-5c516f92759so32038617b3.2; Sat, 18 Nov 2023 07:51:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322708; x=1700927508; darn=vger.kernel.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; bh=fm1bHPEyELp3MiPjOSu0bHDojYqM84986duNSStQHBY=; b=S4GwRONQN6Sg7Bq0l5QNXv2PN7PtyWj4PbeIQm1D0PgHld0Aue9+G9wJIa3+VR6r4N 69fckYz3ZFtTSrTmp3wBm9HgI4AFnN9oP8kq2NFoUF7zI5qMGuq0QfN8uWOwRlPcugwb SgsXAzhcRoKLyTeBcAykIkmKaVsdwZTdnJ5oMwlTmUIrFNm6hE7uIZwbfaRavFTiFbSN vgLIi9Doss0CR/kd4xoJudiEEg0LxDUQSmpsoAPa9Rmil3o3cEkzZkK+0SN5LNZQnmG0 AT8q/gLHLLhO5bFeMeduSD7QNmlMQ2PI9YysiarzIbxyaKqkuWP1uhYJj7ntZbz/adua lqdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322708; x=1700927508; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fm1bHPEyELp3MiPjOSu0bHDojYqM84986duNSStQHBY=; b=GvT1qHTA1uEw494ni2VTjuK/ejdoxx2W4wC6b86eetyhkRQcvwqLVuPHZqngQNHWE9 dH4nYSxgs41Au6dTRF9+wxsmX1DMAdGL7VCzEidM3cTZGwg1rs/eU/bEz0zTRhR/U9Cv 4+s+twvmyjJy2dfHPNz27sxaCqP7cz7hoyB0d8Z8tZ+36nFIJD2LMr98ongzkb7HAhpm mQUe43NT0Q9kPYAErdfb28epsXkRnD2REq0gxnuFzu5G+q9qlahmAT24manx57LN1lPJ OrJhi7ujbDrip45E/9MuE9on4tDNZSIDVWJ11mMeaERVCsriDnS1kjXNYTS+PA6WFcoX Phkw== X-Gm-Message-State: AOJu0YxMJB6d2rNmyaG7G7trBdICttbdfXUClSnpYrs9S3nhXHKBdK0e ZNaImNiBiHR4RDMbCI7KngBlwAnUSXF289po X-Received: by 2002:a81:ef0d:0:b0:59b:5696:c33 with SMTP id o13-20020a81ef0d000000b0059b56960c33mr2780375ywm.46.1700322707666; Sat, 18 Nov 2023 07:51:47 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id b65-20020a0dd944000000b005a8c392f498sm1167821ywe.82.2023.11.18.07.51.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:46 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Jiri Pirko , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 26/34] ethernet: rocker: optimize ofdpa_port_internal_vlan_id_get() Date: Sat, 18 Nov 2023 07:50:57 -0800 Message-Id: <20231118155105.25678-27-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:54:47 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917773174574155 X-GMAIL-MSGID: 1782917773174574155 Optimize ofdpa_port_internal_vlan_id_get() by using find_and_set_bit(), instead of polling every bit from bitmap in a for-loop. Signed-off-by: Yury Norov --- drivers/net/ethernet/rocker/rocker_ofdpa.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/rocker/rocker_ofdpa.c b/drivers/net/ethernet/rocker/rocker_ofdpa.c index 826990459fa4..449be8af7ffc 100644 --- a/drivers/net/ethernet/rocker/rocker_ofdpa.c +++ b/drivers/net/ethernet/rocker/rocker_ofdpa.c @@ -2249,14 +2249,11 @@ static __be16 ofdpa_port_internal_vlan_id_get(struct ofdpa_port *ofdpa_port, found = entry; hash_add(ofdpa->internal_vlan_tbl, &found->entry, found->ifindex); - for (i = 0; i < OFDPA_N_INTERNAL_VLANS; i++) { - if (test_and_set_bit(i, ofdpa->internal_vlan_bitmap)) - continue; + i = find_and_set_bit(ofdpa->internal_vlan_bitmap, OFDPA_N_INTERNAL_VLANS); + if (i < OFDPA_N_INTERNAL_VLANS) found->vlan_id = htons(OFDPA_INTERNAL_VLAN_ID_BASE + i); - goto found; - } - - netdev_err(ofdpa_port->dev, "Out of internal VLAN IDs\n"); + else + netdev_err(ofdpa_port->dev, "Out of internal VLAN IDs\n"); found: found->ref_count++; From patchwork Sat Nov 18 15:50:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166564 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241825vqn; Sat, 18 Nov 2023 07:54:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IHW39GuI1Klivw+aJEQn+/M3G2snDIL3md3zShgQzk9BWsvsiNvqXRweaPkQy9zXg6hhELq X-Received: by 2002:a17:902:e748:b0:1ca:8541:e1ea with SMTP id p8-20020a170902e74800b001ca8541e1eamr3689076plf.0.1700322890363; Sat, 18 Nov 2023 07:54:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322890; cv=none; d=google.com; s=arc-20160816; b=sFg6GabBpKH2XyMZbp9mJxHAe5oS+9aBNrM7uqzFQJGFHCI9ARcHAUeLJVZGzFrjtL umXDuLwD+4HclthaeLOWNtVBOzIbtrr8UY5ogoDmKcL5VzFjZBSbP0h9IXsw7iJJ4dW6 TR8kgsYpuB2As2jnsoMxg4YYRZPVlRplyCz8KKh6B0darYB+x0QxMJsG1XMykhcerpZu r9DB1Qu1IV05EFwmvpauGcWEsxbpdrSv7Z3xodMDRip4rIJD8zJhe/YrOTNMeLRmqpBQ +5EvmmmDZXOwS1WfGFAwjH/bz/yb7Htne1gffAgGJ0wUKOtkQlDxtkIeJl4KTLf9Exji 9rWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=q0DdBJNYkBobnoLbuVdpfFwfkBXRkkwlqArhSXd28Ns=; fh=PmwcTKpoIUopcRl6aoYVrH3qpF5PH2wRpC6UK3TKDKM=; b=BPADxCbeVUbHf1jVfZMRzvRGqL76Jd4803TZ0jdLtfKzLOQRrL2z3WggKCDhHvhd4R naXf4zuTsV1Mxxxr5IVceVdpZFUIIBAh4vyaJivnPyKT3e2jIvmwTOvmS8Ca+ehxjr33 IBYYAt/UQojCpgYcx18iscC/DkLJyJerTNZB39uLifBq09bo7NYjJNbOQI95wC73SkLU M3zHpz2QTxHJytxxah9XCminhJwozv7qsLMWs9v6lK460GnrJiMbNGIthcaDj+LLaWd1 K86v5s/tqDYI/qV/OgZkoCzjEoYET9niZrmhsWVDXWAUUErw/3YjewgX+h1m0iHbN4nI J4YA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=h85wGB4u; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id l18-20020a170902eb1200b001bf1d1d99b0si4306205plb.568.2023.11.18.07.54.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:54:50 -0800 (PST) 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=@gmail.com header.s=20230601 header.b=h85wGB4u; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id F2D3D804E451; Sat, 18 Nov 2023 07:54:48 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231288AbjKRPya (ORCPT + 29 others); Sat, 18 Nov 2023 10:54:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49986 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231197AbjKRPxJ (ORCPT ); Sat, 18 Nov 2023 10:53:09 -0500 Received: from mail-yw1-x1129.google.com (mail-yw1-x1129.google.com [IPv6:2607:f8b0:4864:20::1129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AEA111FE5; Sat, 18 Nov 2023 07:51:50 -0800 (PST) Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-5b499b18b28so32751827b3.0; Sat, 18 Nov 2023 07:51:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322709; x=1700927509; darn=vger.kernel.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; bh=q0DdBJNYkBobnoLbuVdpfFwfkBXRkkwlqArhSXd28Ns=; b=h85wGB4uDaCRaOlOiipFKIhfT6uht+Bl+Tl8v7GH6vA18ehtjHt6ia+qyyd2qF82b4 BlwOMtt/hLHgeDnRymeeBW6olQA+DKhBpK5Ah/S063zZWYRrkhad6iOQueZwZw8/EpXQ 1l7EWkKEcpiSnNIg3eHYj2n74NoG6P2vlDg2/CI3ty1mhuGWyegQBINphlEkjHeSHCCc CROPr/XXZaDg+nW0qCIWwGnvBYRA7hRvYKkA4e1wRa/cOvVn/7iNN5eUy77scPYSWHeG LICzIKT46NXe3LyehwIrnOAHIgPaeoLhzVGr0j4xNFptnsqn51ddM5nQWajRx4Q7MNPb MnTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322709; x=1700927509; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=q0DdBJNYkBobnoLbuVdpfFwfkBXRkkwlqArhSXd28Ns=; b=SBHnHTG2TU3yX+A+q9zRJnjGH9J99pAljaSW1/lskIvLJOVLJ03xVH3Db1zdOpR45g AAGWS/n3dipL2HgpuJlRdd3idwXDYm1F2Rp//Ymr4hhK3+hcsb2wJQdcc0kVhW43kF8g 6/VMYME1fsT+LuO+2ussn2Owi2dNAgFYMmsKAU9PdlEMzaK2JwcCTr5HKjgPPsbZJPSH MakhXNp1nxbQFvWaymWJMrEy9XZTpzM7CdIZuMgFU6AIA+wp1czKBNokdzapaLjX3TOk U6JynVgkJwbFC7z5wUoXu4dmOTuMCSOBcBtvnF8TlF/wqXGjsOsrXpxkvWwNr6PLLdo6 y1gg== X-Gm-Message-State: AOJu0YwEUcGyoKjR7IoNapoe5tMfBd62W1kjelnHvdY1R3ZNsbDG7bFl PCR4HGhc6BnH0oJLiYqBthuASZuOcSaokAdo X-Received: by 2002:a81:4fcf:0:b0:5a7:c906:14f with SMTP id d198-20020a814fcf000000b005a7c906014fmr2498604ywb.11.1700322708779; Sat, 18 Nov 2023 07:51:48 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id y200-20020a81a1d1000000b005af5ef0687bsm1177615ywg.13.2023.11.18.07.51.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:48 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Jiri Slaby , Hugo Villeneuve , Lech Perczak , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Andy Shevchenko , =?utf-8?q?Uwe_Kleine-K=C3=B6ni?= =?utf-8?q?g?= , Thomas Gleixner , Hui Wang , Isaac True , Yury Norov , linux-serial@vger.kernel.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 27/34] serial: sc12is7xx: optimize sc16is7xx_alloc_line() Date: Sat, 18 Nov 2023 07:50:58 -0800 Message-Id: <20231118155105.25678-28-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:54:49 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917775036439507 X-GMAIL-MSGID: 1782917775036439507 Instead of polling every bit in sc16is7xx_lines, switch it to using a dedicated find_and_set_bit(), and make the function a simple one-liner. Signed-off-by: Yury Norov --- drivers/tty/serial/sc16is7xx.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c index db2bb1c0d36c..6a463988d5e0 100644 --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c @@ -427,15 +427,9 @@ static void sc16is7xx_port_update(struct uart_port *port, u8 reg, static int sc16is7xx_alloc_line(void) { - int i; - BUILD_BUG_ON(SC16IS7XX_MAX_DEVS > BITS_PER_LONG); - for (i = 0; i < SC16IS7XX_MAX_DEVS; i++) - if (!test_and_set_bit(i, &sc16is7xx_lines)) - break; - - return i; + return find_and_set_bit(&sc16is7xx_lines, SC16IS7XX_MAX_DEVS); } static void sc16is7xx_power(struct uart_port *port, int on) From patchwork Sat Nov 18 15:50:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166567 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241867vqn; Sat, 18 Nov 2023 07:54:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IGp6FNiAv2ZgwUmwhlBB7NWaxeuLxyN1wLPzKI5zH2CRGvnANv1SGw35W/E2HKDGlCWKHwI X-Received: by 2002:a17:90b:4a0e:b0:279:1367:b9a3 with SMTP id kk14-20020a17090b4a0e00b002791367b9a3mr2177895pjb.4.1700322897712; Sat, 18 Nov 2023 07:54:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322897; cv=none; d=google.com; s=arc-20160816; b=ioWFVrg3JOu7vwPm3xQqqPSjI+uhxdxC0fYnO3Z56hg2R331Eost/WtaqE/GCSy0aa fmn6GQyW5ZRZNW1gXbhCZ7ZzCtuGNd0sDRQrbaEZ55U/FdpjLvpCkPefPBMFX8FLXaIL ltWNeSleFIri5RLtfrJPAyKNuSzjaja8RlSCPM5urlIxmJQ91UY0a2jthRbU4nfXsf5H L4jfqAmQ7ztCVb9M/17cSflDxG2PCP9QgCXdbrKTF5fshruIhpl9Ut7pO6S1UksDtcqs Op6gUiYLHWx5COgaqqWaQD/u2fJCnjoHTXfpf1oxnZjAPAGv15X+4f8YrJBzOIw2FxMh eFxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=5/FFRxNdIVmBtGkGik+eY+kvUwCYYAdIhZdGmVH5ny0=; fh=W4RMLU6uuOqMY+gd33lk+rKEupJfUP5xtmTPpnSB9EQ=; b=m8qXioA/Nci3BJFUbKn50+1VD4imv33Zu02DpOy4D9aqKwWn13JRPrUC/iBR6mbddp /2iFFHo19gDh7+PRndkxQdqTeYJdgnoNyyc0HzuUhX+/76HIpA4HfHwqkMXHQyxwmK6D Gon6YbobbUEnqg3/Fp0YTXFdLjA0LQzKG5Wnv+WWTZQ1ryQU4r+zyHDZlzo6wmu0ez/e QMhZFvhBqILGz1wPKDpxSMcSazo1h1iNGAVT17JtqQlxXkxg9DAvYIZJoFvssHBWtw5Q CJC4cutWwZvyjHCFkQSo9xeHHHA8FeFqLmrSStD2NrnkBrTo4fWMz6ML+cdtuq4ip69q AG6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=XHFM6tKQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id w18-20020a17090a8a1200b00280414d7a6bsi4158919pjn.190.2023.11.18.07.54.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:54:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=XHFM6tKQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (Postfix) with ESMTP id A99C680BBC78; Sat, 18 Nov 2023 07:54:56 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231639AbjKRPyg (ORCPT + 29 others); Sat, 18 Nov 2023 10:54:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230253AbjKRPxc (ORCPT ); Sat, 18 Nov 2023 10:53:32 -0500 Received: from mail-yw1-x1133.google.com (mail-yw1-x1133.google.com [IPv6:2607:f8b0:4864:20::1133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1500D1FEB; Sat, 18 Nov 2023 07:51:52 -0800 (PST) Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-5c9adcaf514so407127b3.2; Sat, 18 Nov 2023 07:51:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322710; x=1700927510; darn=vger.kernel.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; bh=5/FFRxNdIVmBtGkGik+eY+kvUwCYYAdIhZdGmVH5ny0=; b=XHFM6tKQUtr+ERDMSFScqY8TpsnBRXCGYuutGO0nb1jrhv7VWiCmz8vSZpRl3H4EXu NFFvC0GFb4qTtkyiEroiLv8JYpXsun4dWahd/cWc+aTR+916BWvMI7BLQCQuSJ6Fjx6s 090ZZr+pw0FC4Bq1GekOw4/eCTAka5QBvtAP78FJ61Ps42T/bDARzMy98D/iZfaF6UQy a6d+X6NSxvFmKGCYr7Krt+yLnooXahSheZ5psFFQElE+6wVU/Qg4ImNxK3eZUs/xp/2G 6wYVpt4CIuhipxn2oo1Jcp08zqJr6C9XjNOupeVlIjjqab8ENkNrALLPhWq33QZFI0FB GFNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322710; x=1700927510; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5/FFRxNdIVmBtGkGik+eY+kvUwCYYAdIhZdGmVH5ny0=; b=Ct4nzdt4mx15hxHbv9hsQAhX2ZtgICGYJzYRlqHiHPRHJa6oEGKJrH7qdylsNj3fTL sJJSB0rcQCe5oR1diK6OgnhPWyDBnYIadr+BiR5o2D0ivbOPEBAC8lGnx02/6l+7ltgI 2IwAy4Gh1TEPeN9Cw9SejC0a5jb3BGCsPobEwVGuUyYcGKXzHeaBA7s0MBDEp5K3E0NK y6OrDPCOWXEZkU63RC3GSf4EGndtCdoy3sI7N4OS/W3G9blvqoRYkHUwXD9+zoZ52iuQ er4glkaX9oODEHOnf+qZmfVM2+uaDndlXBRNDZHMqxxZAOiaSvAhK/7aG0WEPc3kY2Vm 3dqw== X-Gm-Message-State: AOJu0YzJqz7WaDwT8PabL6YOTwuYEF3To1B16tJSGFBNFCnd9T2Ywmhw wISDFCj8etrArWmi3LoI2uXtgy5vyjUKZmyU X-Received: by 2002:a0d:d951:0:b0:5a7:d412:af32 with SMTP id b78-20020a0dd951000000b005a7d412af32mr2476093ywe.10.1700322710270; Sat, 18 Nov 2023 07:51:50 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id i205-20020a8154d6000000b0059bcadded9dsm1176063ywb.116.2023.11.18.07.51.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:49 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Karsten Keil , Marcel Holtmann , Johan Hedberg , Luiz Augusto von Dentz , Yury Norov , netdev@vger.kernel.org, linux-bluetooth@vger.kernel.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 28/34] bluetooth: optimize cmtp_alloc_block_id() Date: Sat, 18 Nov 2023 07:50:59 -0800 Message-Id: <20231118155105.25678-29-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:54:56 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917782851085352 X-GMAIL-MSGID: 1782917782851085352 Instead of polling every bit in blockids, switch it to using a dedicated find_and_set_bit(), and make the function a simple one-liner. Signed-off-by: Yury Norov --- net/bluetooth/cmtp/core.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c index 90d130588a3e..b1330acbbff3 100644 --- a/net/bluetooth/cmtp/core.c +++ b/net/bluetooth/cmtp/core.c @@ -88,15 +88,9 @@ static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_connin static inline int cmtp_alloc_block_id(struct cmtp_session *session) { - int i, id = -1; + int id = find_and_set_bit(&session->blockids, 16); - for (i = 0; i < 16; i++) - if (!test_and_set_bit(i, &session->blockids)) { - id = i; - break; - } - - return id; + return id < 16 ? id : -1; } static inline void cmtp_free_block_id(struct cmtp_session *session, int id) From patchwork Sat Nov 18 15:51:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166577 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1242669vqn; Sat, 18 Nov 2023 07:56:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IEK8JTBfwCJgG7VJI5aybp79kbOKhd4vyKsXgzHk+dnlbRYz14tTVXiYolUbRl5fBHzAgbI X-Received: by 2002:a05:6a20:a11a:b0:188:1282:4f5f with SMTP id q26-20020a056a20a11a00b0018812824f5fmr2170877pzk.54.1700323018658; Sat, 18 Nov 2023 07:56:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700323018; cv=none; d=google.com; s=arc-20160816; b=ieCmQ9yZmfDVuv649kxvMy5mPWj7tb3eLw9ckxsvSVt/5hx9nFoEhiQqAY4wjTAye/ yTp0BRamck45jJrEXuGOMLet292RmnUw3hOBcLPJv9ewO1yKcFaudHqyTYEQFX5xhstS ttbiTft2lk4+cJxxzV+RhZhfC73dJ7OgcN7UmRrQ237RpZse0hJiQiFXyGmDWxnb4JN/ wU5a6IY46Amc/ewxYx7ax9XUp2rPPgPVKnv0CNftJH/RdHt2mOxEZKkCIfXgXv69+kJH kLPlWfN/O7ccmdJxy/lNlJ0YDLRD5F0M8AnoWMgwf/+DSfdlv7SS8skWbnluWUs7jWFL vxEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=FRJAi9fqLnpZBQBfWveY0fRnarAyBBO44GyImL+GpQw=; fh=NDbNaXA2hK0c5MfpGj9WKM2VAZappZ1nAgV0cz2V4IE=; b=Q+1XvZbDmNnyjnbELVEZzxZOYdl+xqO7xb7XnohVjr7jPnZOxS3P7XmvdyDTJcpIFY TFPusP+thIljaYtBUgxgPDOLqNR12uTQ6qQw/v+8dYIvegb8fWpMiar9ekbHSQvR3PD5 3q06qumgd2+vxaUgYy7YiOlVUO/Tg66vq9zclzzZvyl0+729Ea4E3kaSLN7DZNf0mYMT 1TbwsGmwZO+isUzNwxmtRGSfbNnb0bw+Hn9c+nd1PFY18ZBEpPApZ07rOaVHewuPclzh fOdi3yj49XP79DoqyPM8Upus8Ca037/Pdk0wA9AnsqI93Pt5e77U+PGrik2uKW4ytKiw xGmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="IT8+IBr/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 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 fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id z2-20020a056a00240200b006be0278445esi4527159pfh.138.2023.11.18.07.56.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:56:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="IT8+IBr/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 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 fry.vger.email (Postfix) with ESMTP id A2CFF8087B5A; Sat, 18 Nov 2023 07:56:26 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230494AbjKRPyl (ORCPT + 29 others); Sat, 18 Nov 2023 10:54:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231698AbjKRPxf (ORCPT ); Sat, 18 Nov 2023 10:53:35 -0500 Received: from mail-yb1-xb34.google.com (mail-yb1-xb34.google.com [IPv6:2607:f8b0:4864:20::b34]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 27F821FF3; Sat, 18 Nov 2023 07:51:54 -0800 (PST) Received: by mail-yb1-xb34.google.com with SMTP id 3f1490d57ef6-da3b4b7c6bdso2917083276.2; Sat, 18 Nov 2023 07:51:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322712; x=1700927512; darn=vger.kernel.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; bh=FRJAi9fqLnpZBQBfWveY0fRnarAyBBO44GyImL+GpQw=; b=IT8+IBr/GjwsHiuzp7JbGVGoUMD6y1ZMGmXhJaeFaN9TrOcyttSLuKo4qdu1SmXbcG VgMptIT0UAnXXPkr+htmJdWc8gttbfZJkgEawCYNoL3m1PmHFpTdb/1VYtDUa07e+tWc YjIfSHyIXopdgUYFRwTlxcaaOtQKI762QKvW8zdhLUU+jOHItUV2D9HlB/xKYgi2d27J Tx+DKwf0B/ilLwI6vSXqzgjVkD61+aQRmW9T+9xlfrfdXzy9qxHVkFY/cat075drS2di /foAu1lF96mWe7J41kM2yRloUptbCXY6fjPpShM53bkrQJ+krv3IFOWamSUUxClDXG39 4i5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322712; x=1700927512; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FRJAi9fqLnpZBQBfWveY0fRnarAyBBO44GyImL+GpQw=; b=mDBnc/xl3/t16XUHfApkuAktgGMjkyxeKEp9vBN0+hxNFXHTqEHzokNr9YK+VsAsKF FTOEo88in//BEuOU0B3wE8a0L9+6hYJj6TTNznIDk6yy2RaI95MssBIIKBq3Pd0NqI2z wDmH0xpka0HJQ8tgr3kdtTHoi8X0k4U4itbl1aEUWeTU4MKfRPQx3L6BrlEsMVUilQOE aw9m9jzk/Ciy6b3vDILc+FOIFiXzC2zN4SUIe+v+grOfQSWlrcugQQI22Xikx7qyYfVd L+leu3AqRb6r2KsJ0iU0Hv0PYJOwZQ/KjYo7Cnn9/kSZ+yzld/NPLvH/drU8h4DrTGA+ KPSQ== X-Gm-Message-State: AOJu0Yy+Fkdbs3cozq22sc2AkHohJpbMBiASZs2x7WLhVxu9P0cdIjUm 8J08UJJ4YcruDo/4vry5oWqTLuzICP1NQ/lp X-Received: by 2002:a05:6902:212:b0:d9a:d7a5:e445 with SMTP id j18-20020a056902021200b00d9ad7a5e445mr2342423ybs.49.1700322711961; Sat, 18 Nov 2023 07:51:51 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id e62-20020a25a3c4000000b00da10d9e96cesm1006690ybi.35.2023.11.18.07.51.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:51 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Karsten Graul , Wenjia Zhang , Jan Karcher , "D. Wythe" , Tony Lu , Wen Gu , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-s390@vger.kernel.org, netdev@vger.kernel.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 29/34] net: smc: fix opencoded find_and_set_bit() in smc_wr_tx_get_free_slot_index() Date: Sat, 18 Nov 2023 07:51:00 -0800 Message-Id: <20231118155105.25678-30-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.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 (fry.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:56:26 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917909240746674 X-GMAIL-MSGID: 1782917909240746674 The function opencodes find_and_set_bit() with a for_each() loop. Fix it, and make the whole function a simple almost one-liner. Signed-off-by: Yury Norov --- net/smc/smc_wr.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/net/smc/smc_wr.c b/net/smc/smc_wr.c index 0021065a600a..b6f0cfc52788 100644 --- a/net/smc/smc_wr.c +++ b/net/smc/smc_wr.c @@ -170,15 +170,11 @@ void smc_wr_tx_cq_handler(struct ib_cq *ib_cq, void *cq_context) static inline int smc_wr_tx_get_free_slot_index(struct smc_link *link, u32 *idx) { - *idx = link->wr_tx_cnt; if (!smc_link_sendable(link)) return -ENOLINK; - for_each_clear_bit(*idx, link->wr_tx_mask, link->wr_tx_cnt) { - if (!test_and_set_bit(*idx, link->wr_tx_mask)) - return 0; - } - *idx = link->wr_tx_cnt; - return -EBUSY; + + *idx = find_and_set_bit(link->wr_tx_mask, link->wr_tx_cnt); + return *idx < link->wr_tx_cnt ? 0 : -EBUSY; } /** From patchwork Sat Nov 18 15:51:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166569 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1241918vqn; Sat, 18 Nov 2023 07:55:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IG/hkNFNBaBeEGjauYxXiGwL7n9qS/4gWRVruwp6f5NNRdNGR3jZ7J6/wbHWoVLIs+U46W+ X-Received: by 2002:a05:6808:13d6:b0:3ad:fc3f:1202 with SMTP id d22-20020a05680813d600b003adfc3f1202mr3664367oiw.53.1700322902620; Sat, 18 Nov 2023 07:55:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322902; cv=none; d=google.com; s=arc-20160816; b=Q+dM5aLHv99xkZfiRwSXiXS6LDSKPCMERzh9eRj1+ec3gOo909HO+cSwNlC1xV5W7d SPEbxJFJejCokApqvSj/djdIL02xYhZ5KvG5EHTGqWM2PtiOJgB1dFk9OTSlPZzSFo6e EFcXV9mi2oMsl9J6KgsHhDobMo5eFKsAPfjbE+bvw5BJ4J5TRqy3cAUxNywvT0OfnOt3 fc3RbO38Bxst72/GdJ7bJttcJnjzHrOGd+RWC7nYSUmQPhiBkKPiMCsluW9yZpRtwMo7 FqAJGf4YfPvFL4R4Z1phaYd42V3VREk3BD8d+4YM4hrr1Vp3Mw12sryW2Z1CLdfg+bUJ W5fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Pqvvn3jC6Vz8bzOhTQHPcM8ndCOZ4pDWuw3ZxWJvphM=; fh=74v9YuhkCDE0Y/CGdhY7aIO60wgap2RId7bw7aguU8w=; b=gLTsblgUAzzTu/bkJDmanyOSS8iLV7ZAV7KXSTVYhXCOfbFIFhKMy82XlP3JlqZSfs 1mqeEGHOPwPwNTq3Ny3ja5YBYfEFEPEUqg74RfGBbL7g3cHwtLVc8CGQh2Q7MhwuVBKY 5eLBVls4dPneTWy0D0QIYwWGWaZ8FoLEpNY5HG/1f5lXCReVZQvPsO4SAVfEbo+7mKz+ S+OC9fz8MvCKtHLtJM3yaGOgMjlsY4euHtrU9r9AytPz9uvynsBRSgkQVJcQb1u6V5F6 Wrog9onVX8Q8wNkSM1WmsHUC8u+No0e2drD6Pw3XPZGi7Lyb2rXX3nJRQgNpupIqi4ny Qjmw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=cSoJGbdU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id e32-20020a631e20000000b005bde6fae09asi4232192pge.135.2023.11.18.07.55.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:55:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=cSoJGbdU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 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 snail.vger.email (Postfix) with ESMTP id A4A5780BC511; Sat, 18 Nov 2023 07:55:01 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233077AbjKRPyo (ORCPT + 29 others); Sat, 18 Nov 2023 10:54:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230292AbjKRPxh (ORCPT ); Sat, 18 Nov 2023 10:53:37 -0500 Received: from mail-yw1-x112c.google.com (mail-yw1-x112c.google.com [IPv6:2607:f8b0:4864:20::112c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCC5E1FF9; Sat, 18 Nov 2023 07:51:54 -0800 (PST) Received: by mail-yw1-x112c.google.com with SMTP id 00721157ae682-5c516f92759so32039337b3.2; Sat, 18 Nov 2023 07:51:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322713; x=1700927513; darn=vger.kernel.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; bh=Pqvvn3jC6Vz8bzOhTQHPcM8ndCOZ4pDWuw3ZxWJvphM=; b=cSoJGbdUB2e8+JfALFn1StMsw2Z57vXAv8W3lpRnBCvQ3pT50egm1YoxTOYi1LLcD8 hwrD+VPnOFkk7hSSAmOVhPTdwGqPWIPZOVwiylyErS6WcXRS8BzSvRqAdb4b6IGFdhVt 3Eoqurbr05XjloHaIaCCZztvsVWSMiBPzYu/zPRC5ZEaqS65HGekyB4/11SFgyL7oGqF 4spoIaXqnL2oOQzd1zO3vyO9aeC8XF5Zl5gYjUcF4Qv/bntzsg/yg2L3eSEP7lnQVI3g okmeVAJDLcCljZCE2jpY6icyq0x4G+l2O5KDcgxBgd2JUydy1igv+nx57E8ZWsmSoYAe HlTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322713; x=1700927513; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Pqvvn3jC6Vz8bzOhTQHPcM8ndCOZ4pDWuw3ZxWJvphM=; b=NccrJYZc/bVG7fZHBfGv6FaQQg4ay2NVnMzvgmU4IqC/3JlzOx5pvxvQefhzcwE3pg GrqjxISDDLZidVYHGBsnnFLQQpdk6ezt6LT85dUcVGT238kmXf+N+up+yir+HKwA6kh8 ex759O+75POHSkZVn2tpi2wa2bIYX/zQ29CRlE7WgoWBnxdCdEb+EqHoZ7NqVhi3Xhk6 BMMHWonvgbb7TQRT4TOTOj0LBKAJU/gpUXBBq5c6vIcCT/pgtiPdC12yd/1ZJ8wmxeKb m395yq98186MKMfU7TS5SMFEhA7h11kURS0ap5k195kHL9RAnBiRzZvAJqYrIPe/ME26 rQpA== X-Gm-Message-State: AOJu0YxDZXNP4f16SYMcts/+E8HL3Hv8zIyiWb4xFofejrJOlTeF2Jw8 M9zOGhlqbHCGO/bNVVkPzr02gveBsmrAByqI X-Received: by 2002:a81:f202:0:b0:5c9:9097:6427 with SMTP id i2-20020a81f202000000b005c990976427mr546580ywm.44.1700322713616; Sat, 18 Nov 2023 07:51:53 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id b65-20020a0dd944000000b005a8c392f498sm1167875ywe.82.2023.11.18.07.51.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:52 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Jaroslav Kysela , Takashi Iwai , Daniel Mack , Cezary Rojewski , Kai Vehmanen , Yury Norov , Kees Cook , linux-sound@vger.kernel.org, alsa-devel@alsa-project.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 30/34] ALSA: use atomic find_bit() functions where applicable Date: Sat, 18 Nov 2023 07:51:01 -0800 Message-Id: <20231118155105.25678-31-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:55:01 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917788377353200 X-GMAIL-MSGID: 1782917788377353200 ALSA code tests each bit in bitmaps in a for() loop. Switch it to dedicated atomic find_bit() API. Signed-off-by: Yury Norov Acked-by: Takashi Iwai --- sound/pci/hda/hda_codec.c | 7 +++---- sound/usb/caiaq/audio.c | 13 +++++-------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 01718b1fc9a7..29254005f394 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c @@ -3275,10 +3275,9 @@ static int get_empty_pcm_device(struct hda_bus *bus, unsigned int type) #ifdef CONFIG_SND_DYNAMIC_MINORS /* non-fixed slots starting from 10 */ - for (i = 10; i < 32; i++) { - if (!test_and_set_bit(i, bus->pcm_dev_bits)) - return i; - } + i = find_and_set_next_bit(bus->pcm_dev_bits, 32, 10); + if (i < 32) + return i; #endif dev_warn(bus->card->dev, "Too many %s devices\n", diff --git a/sound/usb/caiaq/audio.c b/sound/usb/caiaq/audio.c index 4981753652a7..74dfcf32b439 100644 --- a/sound/usb/caiaq/audio.c +++ b/sound/usb/caiaq/audio.c @@ -610,7 +610,7 @@ static void read_completed(struct urb *urb) struct snd_usb_caiaq_cb_info *info = urb->context; struct snd_usb_caiaqdev *cdev; struct device *dev; - struct urb *out = NULL; + struct urb *out; int i, frame, len, send_it = 0, outframe = 0; unsigned long flags; size_t offset = 0; @@ -625,17 +625,14 @@ static void read_completed(struct urb *urb) return; /* find an unused output urb that is unused */ - for (i = 0; i < N_URBS; i++) - if (test_and_set_bit(i, &cdev->outurb_active_mask) == 0) { - out = cdev->data_urbs_out[i]; - break; - } - - if (!out) { + i = find_and_set_bit(&cdev->outurb_active_mask, N_URBS); + if (i >= N_URBS) { dev_err(dev, "Unable to find an output urb to use\n"); goto requeue; } + out = cdev->data_urbs_out[i]; + /* read the recently received packet and send back one which has * the same layout */ for (frame = 0; frame < FRAMES_PER_URB; frame++) { From patchwork Sat Nov 18 15:51:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166574 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1242529vqn; Sat, 18 Nov 2023 07:56:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IF9Jan8KepP6zQocchhUnIJXpjQZXWZUop61Zfzymrt/sMrfyauPTEFOICGPzTKvsz+2Xf1 X-Received: by 2002:a17:902:f684:b0:1cc:f064:8d6a with SMTP id l4-20020a170902f68400b001ccf0648d6amr3767196plg.5.1700322997497; Sat, 18 Nov 2023 07:56:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322997; cv=none; d=google.com; s=arc-20160816; b=FtY2I9A0IAL6058AjoWUzTHb36uR1gDfuYmeUESq3F8eG7g3pejI1MZOvV4Z/PTe4y Ini2dyksiFptUbnm304ozBvon2OzDSvAR1o9b+MRjCz3LaxIUQ2b3ELMV2dp7bPRk/NZ G02mboqOXtJSUrpPGggJFfzFKTFVyyTI8+hmKp4MkaLKj3ZwW8WLXDFg+9oy+z+QlHk6 PvHEBoZClMsr57Bf4CdJKS7XC0eAKC3JODWDaPIFcghUdjI2UVf1ziV7exehn4tpOfTm irwdMOjOHZBgm7kwhtW3kaN4Rmoi8SnRorulmvzA/pdA6Hnprh0/Yd4zuFj39FGilqL5 dcGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Faq88orJ2tLAcgJ6Ak512QARxmUWD9dLolef7kGFuP8=; fh=V07Y7/Of3KrBfHU2cMfr8TK0/Ci4lES6l66hWNCmgf0=; b=KBrOb3gGKAqH4Z7UT8pR2RRlEFoXb9vF5LH5JwTzLJdW8bGAqpQD3yeIdfUUQ8dIMA on4i8gWvniJOLCo6ES56iM102AwQSwL0d2lbP9sPj2TRpPPlrIY/S07obSflv6Sv12Sl eQf9vIqKCYXN951q4xembUi99Tpn9fGLmO5pT8DDNtlKEg4efeS1RZxyh+mxezCm357S yp3LhIVDYKRD18dumaSXYx6UxVbkdwJsx08KRWRXfj/GeL6+2yTTdVgCr3DUq7fSwECn 7e/gNq5bz1+ZKw6wN9uD+zp7om1frbR8HohWRBAj+9WpOrSTWr9kUr1XJm0CCUBt1285 iYHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=hcACIPzB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 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 groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id jj4-20020a170903048400b001cc5d28bb2csi4196758plb.151.2023.11.18.07.56.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:56:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=hcACIPzB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 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 groat.vger.email (Postfix) with ESMTP id F2A8D8068970; Sat, 18 Nov 2023 07:55:32 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233111AbjKRPyz (ORCPT + 29 others); Sat, 18 Nov 2023 10:54:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40732 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231244AbjKRPxh (ORCPT ); Sat, 18 Nov 2023 10:53:37 -0500 Received: from mail-yw1-x1132.google.com (mail-yw1-x1132.google.com [IPv6:2607:f8b0:4864:20::1132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0482A1FFF for ; Sat, 18 Nov 2023 07:51:56 -0800 (PST) Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-5a822f96aedso33743847b3.2 for ; Sat, 18 Nov 2023 07:51:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322715; x=1700927515; darn=vger.kernel.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; bh=Faq88orJ2tLAcgJ6Ak512QARxmUWD9dLolef7kGFuP8=; b=hcACIPzBulOdtEuNm05hpsAR7UMnLmhav62wLOz5hBaF+NaS7TnMBjmZHBpNdNHso7 P+9DV7JUtJnclhdlegEPImotD8CuVBTQDwux3woKsjUay2BnxPd5e1M1kxlObqXfmW9f eJ4woQpt6fPpUx+nrbRY+zo9r+TviA7/olG313tK0nFv7FVi9jbvrpDy7JNbHiBZnO5Q vlzDinRv+pOhYFNrtwso2pyKM+KN6ZBtu/kX2ySchrgrM7X1/CdEJifdY7AuZ+2UWLvt B3vXQCjt4YnsaFdhCtvdY7QKaz39r/mGjN5n3SgC8583qWYGThYiyCTAfYiZsADh5+Id m+Qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322715; x=1700927515; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Faq88orJ2tLAcgJ6Ak512QARxmUWD9dLolef7kGFuP8=; b=JNc5YYZnll6ePdQcSaPx2sghkts4R9MBTS3h1tH4SQlVASTAnJe0clnWBBlCm/RjCu fBflDx9U3C6UuiL5NoONY+dTAq5DQ6e6ME+RjU7iMOrOiVu/JJIo/4KulRv5m7y2bgZr X7H/+56lmoqpqxWPRSISL1z7TO1fHtNhlGzdjzMdr+9SOP+LEbrrqTbnq7c/JR9EHm4K 3l6JIXmQjBoOer9TyQoZDdyRh/Ox9FtpkFbb8calxffJaJ/rQedOnlydFtsFisFCOK9J uamcJNszenxE6mtP+a0XoOMfuRG3Ne1KMMUocjrwoVzDH17cvGYkK077cMOut91SZKeQ t2aQ== X-Gm-Message-State: AOJu0YzG4hn18fS2Zjol7VvwKRdjHeVWM075jq3Qv+rVtcyG/14LtHv7 LYT3eq+BRER3bBppTWItmliUODBYksqaIf6K X-Received: by 2002:a0d:cb0b:0:b0:5a7:dda6:cbaf with SMTP id n11-20020a0dcb0b000000b005a7dda6cbafmr2882441ywd.19.1700322714741; Sat, 18 Nov 2023 07:51:54 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id k186-20020a0dfac3000000b00559f1cb8444sm1186383ywf.70.2023.11.18.07.51.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:54 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Will Deacon , Mark Rutland , Marc Zyngier , linux-arm-kernel@lists.infradead.org Cc: Yury Norov , Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 31/34] drivers/perf: optimize m1_pmu_get_event_idx() by using find_bit() API Date: Sat, 18 Nov 2023 07:51:02 -0800 Message-Id: <20231118155105.25678-32-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.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 (groat.vger.email [0.0.0.0]); Sat, 18 Nov 2023 07:55:33 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917887221866550 X-GMAIL-MSGID: 1782917887221866550 The function searches used_mask for a bit in a for-loop bit by bit. We can do it faster by using atomic find_and_set_bit(). The comment to the function says that it searches for the first free counter, but obviously for_each_set_bit() searches for the first set counter. The following test_and_set_bit() tries to enable already set bit, which is weird. This patch, by using find_and_set_bit(), fixes this automatically. Fixes: a639027a1be1 ("drivers/perf: Add Apple icestorm/firestorm CPU PMU driver") Signed-off-by: Yury Norov --- drivers/perf/apple_m1_cpu_pmu.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/perf/apple_m1_cpu_pmu.c b/drivers/perf/apple_m1_cpu_pmu.c index cd2de44b61b9..2d50670ffb01 100644 --- a/drivers/perf/apple_m1_cpu_pmu.c +++ b/drivers/perf/apple_m1_cpu_pmu.c @@ -447,12 +447,8 @@ static int m1_pmu_get_event_idx(struct pmu_hw_events *cpuc, * counting on the PMU at any given time, and by placing the * most constraining events first. */ - for_each_set_bit(idx, &affinity, M1_PMU_NR_COUNTERS) { - if (!test_and_set_bit(idx, cpuc->used_mask)) - return idx; - } - - return -EAGAIN; + idx = find_and_set_bit(cpuc->used_mask, M1_PMU_NR_COUNTERS); + return idx < M1_PMU_NR_COUNTERS ? idx : -EAGAIN; } static void m1_pmu_clear_event_idx(struct pmu_hw_events *cpuc, From patchwork Sat Nov 18 15:51:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166570 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1242063vqn; Sat, 18 Nov 2023 07:55:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IGHfrj1uRe2T50nvP//vikmGgjkn0AFvoUC9KwtKf/VSWFglydKA/CsN6knUjwIUCRqmdjL X-Received: by 2002:a05:6808:2dc7:b0:3b2:e61f:f0a8 with SMTP id gn7-20020a0568082dc700b003b2e61ff0a8mr4073249oib.45.1700322923260; Sat, 18 Nov 2023 07:55:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322923; cv=none; d=google.com; s=arc-20160816; b=PzeXqGIBXjFqzn68VkiqZV6aNj/ScIgGkODGwhZ03+aMpJWp07IfOoswT9UCKbjdVm 4vUmICSsvzdKVdWNXDFpAn3357QEa5cWCKKXCPguTUrdHe71hUSfJbnxJjpg/LuWku20 FqEXHAef7TCyitgoKCmNMWpMuB8uJD6lJIpbYQMXgGBN94cSiRVUIx/gLGOvW+km+Kjh CVKBNSZa83SXK6J9gXSCUcAmBAvOtWNg+2aA5tbkpgp7z31xIw1OIFPIMSQrgTlLrh0l eDZsxt4mRTbNeuTQYzzXqX/bzqbPM9rDYkFCUdxXZe/+Bg2IttZYQ8wZCpcjkEXWF350 d0XA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=SNt2pqVZ1WV5AdCyxo2zcjd8VNJuqW2Azbsupr/AuxU=; fh=oLvICJ5zTCC2fV7DRDoPYiyyYQjYCs8tHR4RIhoAmNI=; b=06iyRKRO3/qh2GwhW9VU1FWjLEqZuvsZHlemJwrRqukDMDsPt3JdT10MSxl7TmoV8C i3rSLTzJO9AvLhP5nHlAzvhZj/kBzEoGiqMjiSVZ04BVmsJVCxFP8Ni2TNY6N7eV20LC N2h2n2Z2YGPcv/SVdrte95OTpXvN1gtl6E+9CRm7JAdm92wWM3Qe31kDQIwq+sf39w3A MLEEn3QRTliDv8JJGSLCwhNgFHuWCJjHsmMJ5ev5+uQYvDNkMKOmxhEkUwtLAr9KBxWu o6RqRuoELPQpggd24SG783Z9+PCCYG8+Zl2iIiaotGVvAnAmJQ6fMMm5mJ7C5OCi3w4t FRqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="NGUiw/mL"; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id e20-20020a656894000000b005b8eaeabf49si4826111pgt.178.2023.11.18.07.55.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:55:23 -0800 (PST) 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=@gmail.com header.s=20230601 header.b="NGUiw/mL"; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 3471B80BC524; Sat, 18 Nov 2023 07:55:22 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229761AbjKRPzM (ORCPT + 29 others); Sat, 18 Nov 2023 10:55:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44602 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231356AbjKRPxk (ORCPT ); Sat, 18 Nov 2023 10:53:40 -0500 Received: from mail-yb1-xb2c.google.com (mail-yb1-xb2c.google.com [IPv6:2607:f8b0:4864:20::b2c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4DD2010E5 for ; Sat, 18 Nov 2023 07:51:57 -0800 (PST) Received: by mail-yb1-xb2c.google.com with SMTP id 3f1490d57ef6-da0cfcb9f40so2988934276.2 for ; Sat, 18 Nov 2023 07:51:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322716; x=1700927516; darn=vger.kernel.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; bh=SNt2pqVZ1WV5AdCyxo2zcjd8VNJuqW2Azbsupr/AuxU=; b=NGUiw/mL7WRPzT2RlK9PbyCZveUqmgM81hOy+rsUTY5fSOyrgceZh6KAyPQzty08Er GAAyE0otRecqL5W6PFgzjLVh3yne9zHw6kI2SH8c7iWoHgJMYjMEbS+595kxbLBm8qf2 qQERnVQax891G0oWLCpQSHURuboOkuyMPhmkvxoHKNqten4zo5ap/qzmonSf5EAJSo4z mDtWXXE2X35cf75WmH66B9QVWAfS2XEcrFdFNpMX/+GTN7kPhOXo1+dHUg/QsP9/hwJw wO3z9qKaKklY2xI5N5fhygTooZsfTXlDHcv8N5z/VF8EnuPvSdW/cMsUf+VEYBVP1U19 0FAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322716; x=1700927516; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SNt2pqVZ1WV5AdCyxo2zcjd8VNJuqW2Azbsupr/AuxU=; b=B6dxk603r1jGG8Pcg7ZdcDnBun7MaeN54X75oO6iBeTWopBAMV0ac7N8XkwEddJdyY HEAv9SbPkjsxPmyTfXs/4K2BfwwegAhcTwpjIptS0kWNgm6iZ2r2w/aO4E4boP/f0VOx MB4hwR3EncXb8NSmjg1PrOfY+hpkKKSNNUUY5voZsuV/5oImPrr72CTR2uqYiMoUJflh tDcGgSbnltxOZcsJIH1AVbdVVdzx4ItVW3jrg6oRsqU9+x9cuVQFnK1xLk6xHPfBtwvN AxZ2CprCmZhf68BRQLwWi1mJ1zbX7YDeeZDVc0kE0/q5H3kFsdMEz8F6ULhgpxAbehqA 7+Hg== X-Gm-Message-State: AOJu0YzYd1C2qNspPB+bM1ZaayHlo5uTOqjH72kUUKRFih4MqRHL4qEA t/4SfbySe6RMomO1DFjAr7isdtkCkM0s7/+g X-Received: by 2002:a25:ca44:0:b0:da0:54f7:69bd with SMTP id a65-20020a25ca44000000b00da054f769bdmr2497887ybg.22.1700322715920; Sat, 18 Nov 2023 07:51:55 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id y36-20020a25ad24000000b00d9a577d8434sm998467ybi.53.2023.11.18.07.51.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:55 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Geert Uytterhoeven , Hugh Dickins , Andrew Morton , Yury Norov , linux-m68k@lists.linux-m68k.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 32/34] m68k: rework get_mmu_context() Date: Sat, 18 Nov 2023 07:51:03 -0800 Message-Id: <20231118155105.25678-33-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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]); Sat, 18 Nov 2023 07:55:22 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917809427573115 X-GMAIL-MSGID: 1782917809427573115 ALSA code opencodes atomic find_and_set_bit_wrap(). Switch it to dedicated function. Signed-off-by: Yury Norov Acked-by: Greg Ungerer --- arch/m68k/include/asm/mmu_context.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/arch/m68k/include/asm/mmu_context.h b/arch/m68k/include/asm/mmu_context.h index 141bbdfad960..0419ad87a1c1 100644 --- a/arch/m68k/include/asm/mmu_context.h +++ b/arch/m68k/include/asm/mmu_context.h @@ -35,12 +35,11 @@ static inline void get_mmu_context(struct mm_struct *mm) atomic_inc(&nr_free_contexts); steal_context(); } - ctx = next_mmu_context; - while (test_and_set_bit(ctx, context_map)) { - ctx = find_next_zero_bit(context_map, LAST_CONTEXT+1, ctx); - if (ctx > LAST_CONTEXT) - ctx = 0; - } + + do { + ctx = find_and_set_bit_wrap(context_map, LAST_CONTEXT + 1, next_mmu_context); + } while (ctx > LAST_CONTEXT); + next_mmu_context = (ctx + 1) & LAST_CONTEXT; mm->context = ctx; context_mm[ctx] = mm; From patchwork Sat Nov 18 15:51:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166573 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1242092vqn; Sat, 18 Nov 2023 07:55:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IE+GcqcWVX3av2DvqwyP9iWEuz1HEc4noWxhMI3oG9y6fNZ0A91rfEqzNtNj7n7NznQVEpj X-Received: by 2002:a05:6a00:4509:b0:6b4:6b34:8cef with SMTP id cw9-20020a056a00450900b006b46b348cefmr2811796pfb.34.1700322929063; Sat, 18 Nov 2023 07:55:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322929; cv=none; d=google.com; s=arc-20160816; b=QWd23vYWLr3qnzrJXQDy8jRykrG9Bww3liIbeJfEccpNKwjHhAuSnHIbU2ZFj2fKRP rXiCQST8td6H/3/+3GVLObmfxmTVFw5yqvE6XzbvmQ9KXwiVXUWuMCimYD6vJKtIRe6f Bz1sBbHsXmTCnfncwZIoTB1ZtlUPGbDBlquBR/pq5+HpdMHDJP3cooyEROHPFaTnHRMl OMTLYvHzubgWvssqmahBtklrj0riRSWv5h/3A1O8t1RNXfnDzMb9KwMl/G97y0dt0cvP 1DB5LtMSBj2eR3ayp8PjOIsDUIStuOSgrSurxiXtNoLTM0ssS5JAw8p8anjHTCr2eQFJ 6fcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+JD5ffTGpk93tg8AkoESy4I0f3LaG6FeAVUaBjQtKP0=; fh=QVMWZf42wNs2TqkKNe3Azs4TJPCHVw7UaA6EY0+UAlI=; b=rLLmTkuz2wiJaUbKFp1q0I59p6h4kyoeUvNLZ3yD02wGFEjux4noT0P3bihD4IlLVc dkKUfx1n3FTCSdPN8C4QE+D4fURKyAS5a6bB2SzCv5d4pAhRlWN+Nlt2vrjh+oS0hgwz 67uNehOmHncy4dDJ+ZmbqLTWP6swdQirthlPCYF91aXc391gXPrDlVZxmEbyq6ixgjHv icp2/sg5N3WULj6/fzh2yelt9NxcJV2G90DsEr9f4glOUBws1dGW51zrgTxHzJFl0sRL Es6w2lbfNmEkv9lg9q6/+L7cX5iDgBaVZKb0k61OGc+efaNCjGro2+N1b2IiVkCSZQE5 q9Jg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=X7pc2AVj; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id e12-20020a65688c000000b005af44ed3148si4407101pgt.367.2023.11.18.07.55.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:55:29 -0800 (PST) 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=@gmail.com header.s=20230601 header.b=X7pc2AVj; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 42A66803E7AA; Sat, 18 Nov 2023 07:55:28 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231356AbjKRPzQ (ORCPT + 29 others); Sat, 18 Nov 2023 10:55:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44628 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230518AbjKRPxl (ORCPT ); Sat, 18 Nov 2023 10:53:41 -0500 Received: from mail-yw1-x112d.google.com (mail-yw1-x112d.google.com [IPv6:2607:f8b0:4864:20::112d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E867B2107 for ; Sat, 18 Nov 2023 07:51:58 -0800 (PST) Received: by mail-yw1-x112d.google.com with SMTP id 00721157ae682-5b383b4184fso33543527b3.1 for ; Sat, 18 Nov 2023 07:51:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322717; x=1700927517; darn=vger.kernel.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; bh=+JD5ffTGpk93tg8AkoESy4I0f3LaG6FeAVUaBjQtKP0=; b=X7pc2AVj+gHCUODSfMJQ1CCULuF++OsKUTMOHebHVYuvR+MvRn6nhotkGpU/kxXh/2 aZJ3Xya7gtFHfEbh4wBKK0E/UATRnEdwk80UWlQdUgJazARP+qCKUetQ5aLNkNquEdcU 0+XCzfzH74i9o5L9kDnBssrtP3Z3QSykWlwJv0oi9MEexSkaGku06cELfiogK2kISFeB DuU23LUY58LkVlgdEc4+13umvrYG9zK7eaxlAvKs39+PjzuGM0qRPU5HZ7r14rXMnNac jZx9whY3yYAx9Ru1flPMZll5kbS4rTK5kiGUHblS+MtLtbMveV4r67k+cMg8tSvbGln7 Yz0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322717; x=1700927517; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+JD5ffTGpk93tg8AkoESy4I0f3LaG6FeAVUaBjQtKP0=; b=WST0Rg6KKynh3QjteS6LJaCH11OKgfkcb125CGWp061Y4E2TV+j6oB79BVeX3Ddhe/ x+1uiKYQ2cRnCV5tmoELwONiJIU2WANGAMS4xkIghywK50SiwB4bS1gITbwtj3m1a439 yccK5hAcnpfiuwmGdi4G/MqWIiLNTobxGMS3fOdchG2tHLG1I4CV7pwAaXJd4kbhbb48 HQNUYPsJHFX0V4lmps1hEvxKX/mRFMZhzgU0W6yrq55jIWdWNZ5Fahy7TUg8kgCl59co MKNOo7q8an0yMA6Z51Dn7asgJpkfF2VJKz6I+WFT0pEv+6Ijhe8b84azH8xQJfCCzum5 1SQg== X-Gm-Message-State: AOJu0YwvB03sE9aRrwBoasc808s53Yf/KPxM0quuxhEdVP4LIfARlAxW JC0u/SJ+2zerM/83M2RxaT206N4UTO6an+TO X-Received: by 2002:a81:4f13:0:b0:5a5:65e:b847 with SMTP id d19-20020a814f13000000b005a5065eb847mr2911182ywb.34.1700322717124; Sat, 18 Nov 2023 07:51:57 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id w184-20020a0dd4c1000000b0059f650f46b2sm1172057ywd.7.2023.11.18.07.51.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:56 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Michal Simek , Yury Norov Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 33/34] microblaze: rework get_mmu_context() Date: Sat, 18 Nov 2023 07:51:04 -0800 Message-Id: <20231118155105.25678-34-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:55:28 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917815264370564 X-GMAIL-MSGID: 1782917815264370564 Fix opencoded find_and_set_bit_wrap(), which also suppresses potential KCSAN warning. Signed-off-by: Yury Norov --- arch/microblaze/include/asm/mmu_context_mm.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/arch/microblaze/include/asm/mmu_context_mm.h b/arch/microblaze/include/asm/mmu_context_mm.h index c2c77f708455..209c3a62353a 100644 --- a/arch/microblaze/include/asm/mmu_context_mm.h +++ b/arch/microblaze/include/asm/mmu_context_mm.h @@ -82,12 +82,11 @@ static inline void get_mmu_context(struct mm_struct *mm) return; while (atomic_dec_if_positive(&nr_free_contexts) < 0) steal_context(); - ctx = next_mmu_context; - while (test_and_set_bit(ctx, context_map)) { - ctx = find_next_zero_bit(context_map, LAST_CONTEXT+1, ctx); - if (ctx > LAST_CONTEXT) - ctx = 0; - } + + do { + ctx = find_and_set_bit_wrap(context_map, LAST_CONTEXT + 1, next_mmu_context); + } while (ctx > LAST_CONTEXT); + next_mmu_context = (ctx + 1) & LAST_CONTEXT; mm->context = ctx; context_mm[ctx] = mm; From patchwork Sat Nov 18 15:51:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 166571 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp1242064vqn; Sat, 18 Nov 2023 07:55:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IG3IG0g1fRCR7fBLv4VST+inp7JHguRqDVSn017RWUt14x6+BfMX/ci4qlYZpLvBhuP7WoL X-Received: by 2002:a17:90b:4a4e:b0:282:c485:95c2 with SMTP id lb14-20020a17090b4a4e00b00282c48595c2mr2125955pjb.30.1700322923262; Sat, 18 Nov 2023 07:55:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700322923; cv=none; d=google.com; s=arc-20160816; b=sMqDQrCWkLbbNYk1TeN9dEvMP/WgEzIjBZsqb/kSPTSnXcWDei+O62NUFF2Z3mJKHL 492+RweX8hUo5rujHYJfwoVSnNxTdppplLgRhSHNZeL0H/KTRVYmwboWW8FmqIcvco/u PkA6NYiPspmc6+Ru2GRAR5+nIVujXgXLXeod886D8hVl0Skklt6kKDsUaKar+S5C8ejb 3qSSfrQEUTW1fIkaljlPckKisuMZ1gBQzO32Ja1r4CRhiD7jM/+2f1KOKFxF6dMi3JTr DQ0c1Tn1NBdFc5+5bjU7cYqqTrDS560s7MNp78bGUgCX1JdImtQ5IAs3ALEQJQ9dwixw rFQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=uLtIilfR7gLFqagyYs+6NDG1iSmOOH2SMP2aNmrlvmc=; fh=fSYqMqVYq4+IySjMy2sR3YeOnoR/VAMikI0nVcfDoBg=; b=AjfMeS+FJ6qoVPYZ3zNdLMxyjiKmypZNTa0rGPznQevN+d1MaN/gFeNRQ9gj0dTxZY BTpI86MTH6X67O8e+OpULcNZ+tkYRyFBidGW3EgmbnGg/IqmK5xgZMoI6dp8u2j46f5v hjjqv2FKxqoXVJ2n83c/DFHRYc7CLqyPh9MoHAEe2yj81Ey6yo7+5AfQx+Da9FftJngi 8ZkEws1jUF7xZoKTce1bv+doYnosxE5bvSJBF4+PuseicWMWmcss4EyOkMjvnGiI/uxL XB2zZAhAySCas8MzNMZVOvHHs9DthAgrLrjIYp5EdAQKiOoJ95HpU/7AXfOGXkpzbZWa nV9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=GW216KwS; 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 lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id m1-20020a17090a920100b002802d12083fsi4287177pjo.54.2023.11.18.07.55.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:55:23 -0800 (PST) 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=GW216KwS; 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 17D858053636; Sat, 18 Nov 2023 07:55:21 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230521AbjKRPzJ (ORCPT + 29 others); Sat, 18 Nov 2023 10:55:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37284 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231334AbjKRPxk (ORCPT ); Sat, 18 Nov 2023 10:53:40 -0500 Received: from mail-yw1-x1131.google.com (mail-yw1-x1131.google.com [IPv6:2607:f8b0:4864:20::1131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC87D210B; Sat, 18 Nov 2023 07:52:00 -0800 (PST) Received: by mail-yw1-x1131.google.com with SMTP id 00721157ae682-5c739c80e29so18512357b3.3; Sat, 18 Nov 2023 07:52:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700322719; x=1700927519; darn=vger.kernel.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; bh=uLtIilfR7gLFqagyYs+6NDG1iSmOOH2SMP2aNmrlvmc=; b=GW216KwSCWFh4PSi9cZrFkFhSYyawbd/ImFwY7t+jv0HJKOv88GRK3GQ27YRh6i1H8 PRFBNg+087O7RyBwPj11KKG5KncOXTAafBFpaebdyWn/iiGrk5oDZXaDn8Gd1kLa3+jK 4HdAqXiuISk8PTv5tR4HtIMAgaD4KVF1+SB4tnyVxZ/mjk9voCpT8U7aZif0zXCyohWq pwVk/l+C1HMfZFBkERtFg+FgyjoDNQym8a2Ij3uTjkHKikfc2oo1Y93VPw1v/TaRGCkY ngWt5mZBoMBivDE/5F03cQM93f1YteDre75FIRo12N6ZGd9+2YNhGqEPaL4g7mv/MzV3 R1Og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700322719; x=1700927519; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uLtIilfR7gLFqagyYs+6NDG1iSmOOH2SMP2aNmrlvmc=; b=LAPhpyjy7P8OqRrlRDPQqLZMl6YYnwBTNszwK1jVahcD4o4dyft/GpsB9KxEE29CM5 f/uUyLtSpUNAmG80ICybjKN33nZhuIbQi/7gs97/C1j7RX45WisJARhj3+PKQ7XkrOYa TRuujqPjjGU1s4iPB3aEXnw00dxO2cocaDcY4vSqHFkQjGEHavNcx5cQ6S6pGKTfFKio i91ae6HCMFmmKmP8AilzO42DmvUzHRsx2a5zQWUNzuxSVzV/A8dRTJ22iDZLApL3pxLQ nBdcLHGxzEz2+SJTiTQ3uHgTtQAO+LUT+Z3afpJ1S6CfUIvUyDbtIdGhvsyeEj5QVnn3 93lA== X-Gm-Message-State: AOJu0YytblmIcL4NLe/7l0s+b4ZK7WwucJ7Ta5AjmGYst2gUcIFhYS7p 7qPx2c4lV1EzgF9+VK76SkRenmbzuDIlYmp1 X-Received: by 2002:a05:690c:13:b0:5c9:7f0a:e2fb with SMTP id bc19-20020a05690c001300b005c97f0ae2fbmr835696ywb.12.1700322718902; Sat, 18 Nov 2023 07:51:58 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:48a9:bd4c:868d:dc97]) by smtp.gmail.com with ESMTPSA id i9-20020a0ddf09000000b005a7a92a62besm1174746ywe.8.2023.11.18.07.51.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 07:51:57 -0800 (PST) From: Yury Norov To: linux-kernel@vger.kernel.org, Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , Yury Norov , linux-sh@vger.kernel.org Cc: Jan Kara , Mirsad Todorovac , Matthew Wilcox , Rasmus Villemoes , Andy Shevchenko , Maxim Kuvyrkov , Alexey Klimov Subject: [PATCH 34/34] sh: rework ilsel_enable() Date: Sat, 18 Nov 2023 07:51:05 -0800 Message-Id: <20231118155105.25678-35-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231118155105.25678-1-yury.norov@gmail.com> References: <20231118155105.25678-1-yury.norov@gmail.com> MIME-Version: 1.0 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,T_SCC_BODY_TEXT_LINE 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]); Sat, 18 Nov 2023 07:55:21 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782917809758084922 X-GMAIL-MSGID: 1782917809758084922 Fix opencoded find_and_set_bit(), which also suppresses potential KCSAN warning. Signed-off-by: Yury Norov --- arch/sh/boards/mach-x3proto/ilsel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/sh/boards/mach-x3proto/ilsel.c b/arch/sh/boards/mach-x3proto/ilsel.c index f0d5eb41521a..7fadc479a80b 100644 --- a/arch/sh/boards/mach-x3proto/ilsel.c +++ b/arch/sh/boards/mach-x3proto/ilsel.c @@ -99,8 +99,8 @@ int ilsel_enable(ilsel_source_t set) } do { - bit = find_first_zero_bit(&ilsel_level_map, ILSEL_LEVELS); - } while (test_and_set_bit(bit, &ilsel_level_map)); + bit = find_and_set_bit(&ilsel_level_map, ILSEL_LEVELS); + } while (bit >= ILSEL_LEVELS); __ilsel_enable(set, bit);