From patchwork Tue Dec 12 02:27:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177021 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469443vqy; Mon, 11 Dec 2023 18:28:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IGFV8LNHhqByek3L2G42MLveeApIjD5Bvjgr/RrlooiSyETX7iYXVMf/Wu5Z0D49MI79ADi X-Received: by 2002:a17:902:cec4:b0:1d0:4cde:6e24 with SMTP id d4-20020a170902cec400b001d04cde6e24mr5513617plg.44.1702348111653; Mon, 11 Dec 2023 18:28:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348111; cv=none; d=google.com; s=arc-20160816; b=IRLT1zb540GAfFBKu+OeFZ/0w0CVLZURvgHKpxVlOJOMwnoyb/wOqLfRJyVSVyXrn9 eJVJryZpuVnXU12/t0OWCZGWy6/nFiwASjjIVYnAboxOPYDSD55hQ0F2+AqfQwH9/ZyA wx3MfmzaHvE3mI3/nztgwKAWRGaiGPSm2prJjXUilHyKkuvJzuZZYQK/R37BYv/Tf1pf Ospni/8uN2wyrUBIcKnhro3KX1Vne+8rbjvCSH8QBzmLuST/QPldsOwcY3WicDz2feYU UgCmo3FmzfF+V00QeB42WZGRq7hnbdgg/drlm/44xsyOO8zGBZAEn8xMHnqlZfUPeeG1 dKaQ== 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=C+PiVVlt0R1rAcNbEfljLBH21XDutnmdsosj1LGuGRo=; fh=sZT6TzZUJZ+MM4lK5pRrQ58MqVCdkhEQte2MkQhfNZE=; b=T6tqmefoaW3A05qcwLaRSR9RSpqO2WF0hdzvdYQb7a+kn/pMm14olwVTtPER1a/HkP qj41JuhcqCFtRQ7EsI/J6ejU5fFVQIfvJb6QvQhJCFzT0bpElnKKArxymOLZF4ynHqQI EH9B2HxUO2maHyzVc3uHqI+jncJVNFuPIirXL0XgtmnvrFxvfzA2JnmsLQbAIcJQ63sz nDhpXy9TWqlkdp3cDV0uy2U0sRWmQiuy6CsUl+UBu+KQtCzwRbIqdhN23J34sPCPgGdf Wumh7bhResqMcvaXHNF2Up6hXqzsYMzEiWdDLMZ6KU0B1qH2YTFg8iS3i+X/xJRijfKd ezqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=UQBudszo; 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 l6-20020a170902f68600b001d0748ffd2esi7004985plg.163.2023.12.11.18.28.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:31 -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=UQBudszo; 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 677E48057989; Mon, 11 Dec 2023 18:28:27 -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 S1345674AbjLLC16 (ORCPT + 99 others); Mon, 11 Dec 2023 21:27:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345645AbjLLC1u (ORCPT ); Mon, 11 Dec 2023 21:27:50 -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 E8FA7B5; Mon, 11 Dec 2023 18:27:55 -0800 (PST) Received: by mail-yb1-xb34.google.com with SMTP id 3f1490d57ef6-db3fa47c2f7so5477929276.0; Mon, 11 Dec 2023 18:27:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348074; x=1702952874; 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=C+PiVVlt0R1rAcNbEfljLBH21XDutnmdsosj1LGuGRo=; b=UQBudszotTGe06Bk8UCTi8Uma8P8G8Msfc7Sa2OFaBp7+vgjGg1LL0YSqMdZKz1wMm tIv6gvWAI4f/BQsxV3j18nlNp34tj+G0cwrp5/oKlpWpLHhyhU0av2WRiq+yRfG8MxF1 bxPOZQBItoy9c0ybPvigf2Ich+ihh3XO9m2zOxb5TBHPTalUlC21uBe3flLXjQmrs3ba iRC+WJDkgSobVP8IdCkBqztmZUohxB/nY7wnEgiOiqLy5NLCDqPqxka3ytPmPiR2Zlya xi62tG98qrBqO9OxLNT3oYggUi64ss5ntVJM57lO0nGSCSqBIo3KOEONmblBxVmnSVov HxYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348074; x=1702952874; 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=C+PiVVlt0R1rAcNbEfljLBH21XDutnmdsosj1LGuGRo=; b=XTyeK4oNOLjka8V2Gy6xZUokNAzUJzQuAaqb2v5ZpDxOWNXpL5amT2LTmG+FKepNL6 dN5S9J58zUELkF2+RHydeBd33GJESRFAgcF2rylGegL3JKg0Gb6RzTiNqL9Tu+zHnT7E EwBvQM9PHr82SBJWfaExPIynvoWqPm/1CLQLtPgBb+mJ3W9zHi6NvdepugGif0eGOWon 6ojBt/rWpHvZ56vl8EDxdAMt6bswxjYK6ly7eFY89o+s8IovujemEePLEGuXRpYcIoGk Uu7sC9U9XPKfhUA8cG3r/qY/8oujcw3WMh+CZ1JsBzxXkCy9yf8YKbd8x3V5/0G/dta5 4cnQ== X-Gm-Message-State: AOJu0YwtxDj/+8iYpfc87Zn/4Y4I9rVcfcV6aE2WOqv7RnNxNaMhoq/l wDtiQD0To3YXrANy4+si9ijF2i8QSiEzxw== X-Received: by 2002:a25:3604:0:b0:db9:909c:ab0a with SMTP id d4-20020a253604000000b00db9909cab0amr3469170yba.121.1702348073753; Mon, 11 Dec 2023 18:27:53 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id e195-20020a2569cc000000b00db3fca90d6esm2974453ybc.2.2023.12.11.18.27.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:27:52 -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 , 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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 01/35] lib/find: add atomic find_bit() primitives Date: Mon, 11 Dec 2023 18:27:15 -0800 Message-Id: <20231212022749.625238-2-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:27 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041373424490984 X-GMAIL-MSGID: 1785041373424490984 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 to 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. In some cases concurrent operations with plain find_bit() are acceptable. For example: - two threads running find_*_bit(): safe wrt ffs(0) and returns correct value, because underlying bitmap is unchanged; - find_next_bit() in parallel with set or clear_bit(), when modifying a bit prior to the start bit to search: safe and correct; - find_first_bit() in parallel with set_bit(): safe, but may return wrong bit number; - find_first_zero_bit() in parallel with clear_bit(): same as above. In last 2 cases find_bit() may not return a correct bit number, but it may be OK if caller requires any (not exactly the first) set or clear bit, correspondingly. In such cases, KCSAN may be safely silenced with data_race(). But in most cases where KCSAN detects concurrency people should carefully review their code and likely protect critical sections or switch 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. Suffixes like _wrap or _lock derive their 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'. CC: Bart Van Assche CC: Sergey Shtylyov Signed-off-by: Yury Norov --- include/linux/find.h | 293 +++++++++++++++++++++++++++++++++++++++++++ lib/find_bit.c | 85 +++++++++++++ 2 files changed, 378 insertions(+) diff --git a/include/linux/find.h b/include/linux/find.h index 5e4f39ef2e72..237513356ffa 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 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 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 found bit 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 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 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 found bit 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 found bit 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,28 @@ 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_set_bit_from() but atomically clears each found bit */ +#define for_each_test_and_clear_bit_from(bit, addr, size) \ + for (; (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_set_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 Tue Dec 12 02:27:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177017 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469374vqy; Mon, 11 Dec 2023 18:28:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IEvmYqVx0pMt12MWtcMQUAAuOlCXXvnnWG4ZGcEJzCHOqZ0T+jsnoZCVUAMx1OIhEwu0wkJ X-Received: by 2002:a05:6808:3998:b0:3b5:6533:d2cb with SMTP id gq24-20020a056808399800b003b56533d2cbmr8441874oib.46.1702348102137; Mon, 11 Dec 2023 18:28:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348101; cv=none; d=google.com; s=arc-20160816; b=wxMvNT0hNfTR5SeEWS6Exd66nT7DnagMxLUpnMnq2NU90t2P8P45HpuTz5rgZpZ+Sv o8Lh2CB7j+O2dRHa95ADHFAopOsBlAiAWm4n4eBUy41cZa5mIh4AcmlAtEzohGXSivfR rWatDQ7QcU1OnTrvMkuHtWC9QlnZr2NlaG70h79XYYeAkClIhmmkaLS92O1VFc0lhQof +AYn7N0iOBs2r676thAVG7bg90Hv5pdv0j6/Jfa2eL0w7qRLeP6J+IlFUZCfzdCCDM/n TnvNPe/16FtVHunBB6sBRMf/fbudWTnwChscltIjjPhbk0AItpHrmlfrneTRubuS9Blm Wbyw== 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=HmvgTcSgTSYSGQ9OhXSlfMgozAivgkoJ1Cnrtk56obw=; fh=sZT6TzZUJZ+MM4lK5pRrQ58MqVCdkhEQte2MkQhfNZE=; b=OcH3HelHe+QCqZNCd7gL4rD/Co6JB0bUIjbc/Mae1Zpf4Mtp0+LJGips3NF2+b0fCw 90J0AEgILn/0RNHIfCHqaU/bske4aJn+tMnmvyj9lN+BByEuzIr5GdjXLkUNLRda+o9A cEYuRUyBVytLFOsQzMcrBBvi5npTccAY9Y2TusuXYICBEyx2N3Pie15OV5KYYOKtaTPP AkG7oAPpGd1jdD6WEqIc2NElJxHLkF4Kl1vXU1YIRH1XczwdwMuczSBuh2nArB3Dbr8s jlO9RPdbnTz++Z9cvZalXCGw36eiQbXoXQl0OZzEUF7TpZWo8ipQA36/Y253G9E3FOKU VczQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=ALmaFoSj; 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 i1-20020a635401000000b005b8ef498e2bsi6866536pgb.461.2023.12.11.18.28.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:21 -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=ALmaFoSj; 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 72911809C15A; Mon, 11 Dec 2023 18:28:18 -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 S232338AbjLLC2I (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231224AbjLLC1w (ORCPT ); Mon, 11 Dec 2023 21:27:52 -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 80B7CD2; Mon, 11 Dec 2023 18:27:58 -0800 (PST) Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-5d8a772157fso44759417b3.3; Mon, 11 Dec 2023 18:27:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348076; x=1702952876; 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=HmvgTcSgTSYSGQ9OhXSlfMgozAivgkoJ1Cnrtk56obw=; b=ALmaFoSjjUmhUdcoPPCJ5ucJ4Mw6EJ6M6IMpyRxfY2iAdP2Khfsqq2SaP8q74dXX6y 6anMXn+gOkaF7yBmLrVre7Bu1ROrLXmZ0pwcMOcMn9GReTq2Mg14kAjP9KDpo4ZVS+SB EMGIr9H+40dHRtYSl+fP3/8olGDf0syIMY6QZKBe8pzZYnQFqKuWMPtZuZuKRmktxqkA a9dXHkMz1Mejjt+9l1LaeEL9lyGywTbYZYssx5E3ChU3594S3t5HMz1a30HvodRm46O6 o2zMaTdZfDOjfC1iMLdpe4dAVsilcqTwVV72quzkJ5a0nL2xXvl0yWwSyn9vQsmHLNTN iYKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348076; x=1702952876; 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=HmvgTcSgTSYSGQ9OhXSlfMgozAivgkoJ1Cnrtk56obw=; b=gj73M48Hj4p0M5RA2PDVQrt10Mou5AbGWu4ucRvX/8vRtcKthQa3YFyXlEnWpDEh/Y mbphfSWyKrx51BHR2Dzs8PljtNjAjY1lQYM9q8Bm4RkVkWNdq/GpE3+Sq1Ck+bLgEKw4 hUZGsX1aEEqtjytN6h/dfv4yXA/MPK9EqdW26g/QUOli0EVl6MTc8k/VItOFdiVjGjzW d/KFEzVAGORlvqXDMAyNQ+m/yQ8hwAgyDZzsZYGROsalHb/wpUMGIuCGJUND0vOlNCsG XrNeCVq1QpdlKk5TgZ8wjjVFCXxvSG9uMg+9lUYxxdiEMTc77mmuMZj7bJJZgWeqyZa3 /n4w== X-Gm-Message-State: AOJu0YzXkPiFZgPtzYyz/MaYpC+EF/jphCXGeIOPa0Smv+r7D6ptVHqu KR3vwe0KZt8NpDvxjUsV4hNTyMmYiUI8Cg== X-Received: by 2002:a81:a505:0:b0:5d7:1941:aa7 with SMTP id u5-20020a81a505000000b005d719410aa7mr4037805ywg.66.1702348076388; Mon, 11 Dec 2023 18:27:56 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id a200-20020a0dd8d1000000b005d35a952324sm3448999ywe.56.2023.12.11.18.27.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:27:55 -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 , 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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 02/35] lib/find: add test for atomic find_bit() ops Date: Mon, 11 Dec 2023 18:27:16 -0800 Message-Id: <20231212022749.625238-3-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:18 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041363400892136 X-GMAIL-MSGID: 1785041363400892136 Add basic functionality test for new API. Signed-off-by: Yury Norov --- lib/test_bitmap.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/lib/test_bitmap.c b/lib/test_bitmap.c index 65f22c2578b0..277e1ca9fd28 100644 --- a/lib/test_bitmap.c +++ b/lib/test_bitmap.c @@ -221,6 +221,65 @@ static void __init test_zero_clear(void) expect_eq_pbl("", bmap, 1024); } +static void __init test_find_and_bit(void) +{ + unsigned long w, w_part, bit, cnt = 0; + DECLARE_BITMAP(bmap, EXP1_IN_BITS); + + /* + * Test find_and_clear{_next}_bit() and corresponding + * iterators + */ + bitmap_copy(bmap, exp1, EXP1_IN_BITS); + w = bitmap_weight(bmap, EXP1_IN_BITS); + + for_each_test_and_clear_bit(bit, bmap, EXP1_IN_BITS) + cnt++; + + expect_eq_uint(w, cnt); + expect_eq_uint(0, bitmap_weight(bmap, EXP1_IN_BITS)); + + bitmap_copy(bmap, exp1, EXP1_IN_BITS); + w = bitmap_weight(bmap, EXP1_IN_BITS); + w_part = bitmap_weight(bmap, EXP1_IN_BITS / 3); + + cnt = 0; + bit = EXP1_IN_BITS / 3; + for_each_test_and_clear_bit_from(bit, bmap, EXP1_IN_BITS) + cnt++; + + expect_eq_uint(bitmap_weight(bmap, EXP1_IN_BITS), bitmap_weight(bmap, EXP1_IN_BITS / 3)); + expect_eq_uint(w_part, bitmap_weight(bmap, EXP1_IN_BITS)); + expect_eq_uint(w - w_part, cnt); + + /* + * Test find_and_set{_next}_bit() and corresponding + * iterators + */ + bitmap_copy(bmap, exp1, EXP1_IN_BITS); + w = bitmap_weight(bmap, EXP1_IN_BITS); + cnt = 0; + + for_each_test_and_set_bit(bit, bmap, EXP1_IN_BITS) + cnt++; + + expect_eq_uint(EXP1_IN_BITS - w, cnt); + expect_eq_uint(EXP1_IN_BITS, bitmap_weight(bmap, EXP1_IN_BITS)); + + bitmap_copy(bmap, exp1, EXP1_IN_BITS); + w = bitmap_weight(bmap, EXP1_IN_BITS); + w_part = bitmap_weight(bmap, EXP1_IN_BITS / 3); + cnt = 0; + + bit = EXP1_IN_BITS / 3; + for_each_test_and_set_bit_from(bit, bmap, EXP1_IN_BITS) + cnt++; + + expect_eq_uint(EXP1_IN_BITS - bitmap_weight(bmap, EXP1_IN_BITS), + EXP1_IN_BITS / 3 - bitmap_weight(bmap, EXP1_IN_BITS / 3)); + expect_eq_uint(EXP1_IN_BITS * 2 / 3 - (w - w_part), cnt); +} + static void __init test_find_nth_bit(void) { unsigned long b, bit, cnt = 0; @@ -1273,6 +1332,8 @@ static void __init selftest(void) test_for_each_clear_bitrange_from(); test_for_each_set_clump8(); test_for_each_set_bit_wrap(); + + test_find_and_bit(); } KSTM_MODULE_LOADERS(test_bitmap); From patchwork Tue Dec 12 02:27:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177016 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469350vqy; Mon, 11 Dec 2023 18:28:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IFcHLifktKHsmFw7pqs0JE0mcpNgkPPFfJEAmvC8d3dZzO2HVr/7I2I/qQQ7YbEtFsDLeXg X-Received: by 2002:a17:902:d508:b0:1d0:6ffd:9e06 with SMTP id b8-20020a170902d50800b001d06ffd9e06mr5812416plg.88.1702348098895; Mon, 11 Dec 2023 18:28:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348098; cv=none; d=google.com; s=arc-20160816; b=MvygNrORdoUIehJV1bGF3DrYZ+ofg8ADi7Bb9f2brkQNOJP3PYtWyYCEgu9wj02P/p EVy22KunK4wUPqg7ZEWp3tqYOh8i53795GM3NT/cqjMHzV9TsJOQX+OLl505+q06COBt 106uwnlBnYCrHP2dcWmYKi1KvEpA+8yrUIBaTGyBm6P735CCf1uw/xxTtZgy7bJhJblk /BJGBIXt6ymlY8laRNN69HaAp5o96TKpyhDZM4eWbyLie8N5I6YIm38llfano4dtmYAp mgyojb7l37NjS5+NX5tI2pPMGfVlFVfLJuftzB+VIyuf2ZAE7zEXswrc3a6hGdlCwQcV AruA== 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=LuotiINhbKGxGGef8K7G7yCOze6MU0SeJK9/E0VqPZk=; fh=dp19uW080dhyduaU3ZulKMOfLdMz0dW2Wi61Kfp9p4I=; b=KSeAtGHeKWkuUlOMT2vVPk/FQkweoXX5e+kWsMbMmIh8d7Em+9tFLSvWs+vHc65ock zWV+P5qLIPp9hVT0Z9DF9+XWqURkNxO2ZaQ/dgpHrZiNn/8tUS7NIosYauaoklXoVfTe 9ljWdfGxGnYRozxL/qkQFESbt1KUGlLt6rrPLXEHhwS+mXtMcXuD2+ZGvjX+lQK7ZsaK v0ypG20XDCl3UF9Vm/rsqej6kzqVuc+VoOjCFLpXr3ISh2MBtqfZpj1ABMsFLmeYG25T 43OtWA17pAytv+s8d3wx88jSXJbmUcLOR2FPStTZVrzV/2MvrHtQwU9cFlxRyTrQp/zt ABqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=mOu2oZ9P; 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 jj22-20020a170903049600b001cf69216445si6989021plb.392.2023.12.11.18.28.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:18 -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=mOu2oZ9P; 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 E83198074CE7; Mon, 11 Dec 2023 18:28: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 S1345716AbjLLC2E (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231235AbjLLC1x (ORCPT ); Mon, 11 Dec 2023 21:27:53 -0500 Received: from mail-ot1-x32c.google.com (mail-ot1-x32c.google.com [IPv6:2607:f8b0:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCB46D5; Mon, 11 Dec 2023 18:27:59 -0800 (PST) Received: by mail-ot1-x32c.google.com with SMTP id 46e09a7af769-6d9e993d94dso2881092a34.0; Mon, 11 Dec 2023 18:27:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348078; x=1702952878; 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=LuotiINhbKGxGGef8K7G7yCOze6MU0SeJK9/E0VqPZk=; b=mOu2oZ9PdmyEQBvwYpbB4CxFhLPixosCG/9dqh1Cc/zIR24Fy9cxxE1bnhoq1S4HSH 2vlmhvyBtQA6tn2USXss6mEQeM9wt3l7Id3Tbu6029uRdoR/RA2glANWTWs/YjBv1Hrf RO/Bq3AuywwoN+LCLd+t/kP5HmkKKJGtbX3R58KaCqjuMoNFp/yw9rDdjSIIHkKMPiFJ ejqmZaLjmHXR4jE3vqghgoNj8WYXML9w9KOYHNlI/6E8PzshNsPZ6oKg7RLlSFj0GSaE 4DFw8w8uzqma1JnB04lU5hqrxYCQFneSE1bTt7mVJi7m4RNINMm7qpk/IDGJxwD7hexQ o9wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348078; x=1702952878; 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=LuotiINhbKGxGGef8K7G7yCOze6MU0SeJK9/E0VqPZk=; b=hNOl2H/obmBkuHof2JdmjYHXOu7+BQ9EvpAl/06W62xhN8MKny6AmKD7YGffI7etC1 lpnA5K9w6xOx5pFZQ4V2x8SXsVHz4AnUc1PqpGqXBAMHqsNjZeWdAakpsccUVFS6qetv QGZx0/w6+ZecW/OIU6oI9D8/rcx0DcqVsHuAfpg9LvHKbMxH2YhPTy6IolGN9wvyl2IN zmwvaySq4eUxSEl6Qlo9AYisCF5BLRvQeAr9QbqK+QbmMmgJb67/gpBgIF/Z/5/Pr31q lvR80DxVqOpy3nmrfOHDNZfxyIRpBrl6ovmdsXd/5sw8S7C1ssA5dyI9Vn4BfrNo3Viy ZdIg== X-Gm-Message-State: AOJu0YyMGJIhoR/j94c6UT2TGKIBe06djo4hGnT1j80nujKkkwCefYEV RRJemezSlojt0l0VbYAGfpuu5zgrB038Dw== X-Received: by 2002:a05:6830:16d9:b0:6d8:74e2:6f48 with SMTP id l25-20020a05683016d900b006d874e26f48mr4356891otr.68.1702348078162; Mon, 11 Dec 2023 18:27:58 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id q1-20020a0de701000000b005cb1bf4d466sm3464287ywe.82.2023.12.11.18.27.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:27:57 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 03/35] lib/sbitmap; optimize __sbitmap_get_word() by using find_and_set_bit() Date: Mon, 11 Dec 2023 18:27:17 -0800 Message-Id: <20231212022749.625238-4-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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=ham 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]); Mon, 11 Dec 2023 18:28:16 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041360240634282 X-GMAIL-MSGID: 1785041360240634282 __sbitmap_get_word() opencodes either find_and_set_bit_wrap(), or find_and_set_next_bit() depending on wrap parameter. Simplify it by using atomic find_bit() API. While here, simplify sbitmap_find_bit_in_word(), which calls it. CC: Jens Axboe Signed-off-by: Yury Norov Reviewed-by: Jan Kara --- lib/sbitmap.c | 46 +++++++++------------------------------------- 1 file changed, 9 insertions(+), 37 deletions(-) diff --git a/lib/sbitmap.c b/lib/sbitmap.c index d0a5081dfd12..8ecd830ba9e8 100644 --- a/lib/sbitmap.c +++ b/lib/sbitmap.c @@ -133,38 +133,13 @@ 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 (wrap) + return find_and_set_bit_wrap_lock(word, depth, hint); - if (!test_and_set_bit_lock(nr, word)) - break; - - hint = nr + 1; - if (hint >= depth - 1) - hint = 0; - } - - return nr; + return find_and_set_next_bit_lock(word, depth, hint); } static int sbitmap_find_bit_in_word(struct sbitmap_word *map, @@ -175,15 +150,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 Tue Dec 12 02:27:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177015 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469326vqy; Mon, 11 Dec 2023 18:28:15 -0800 (PST) X-Google-Smtp-Source: AGHT+IHKbtRNDy3myIfdOyRpdIH8U/t7uprq/6YvAlSi/AzLgZszS1vwRvuBvMT29+XcBlyR54zH X-Received: by 2002:a05:6a00:170a:b0:6cd:faa6:fc4b with SMTP id h10-20020a056a00170a00b006cdfaa6fc4bmr6961440pfc.33.1702348095245; Mon, 11 Dec 2023 18:28:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348095; cv=none; d=google.com; s=arc-20160816; b=tOdy0Pu3tN0jC59Ilgk4aMxGKukGZYsvixMQ3aHEvMR7+rBIieZ+Wqgl0n6awQze9I 5Z1gllcAzkUUvoBgKg+BofuF9H/7niRLDxEarrpmMcWrKTPn5TbpxGM3chR61JKrOVC+ PxcGxuPQcype8OHGRmS/0fC8WNSZoVMnE4eRiSQzN4PG2+4YmId7eqI30redwzqEMurW hER82YoWgjquviBTGTG50Q9UxASVDrivbhrGUmcYFXgpgE828QstPAJtqquiv21StXON fvIP9afgz0i34P51xaGnI/bWsv8O5L9av735qewWPlwsb+phwrDhot3C6KgpEYXeTo10 kc+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=EbntnK4HNa/CvcX2c9tw9yKQZtz2j41lTpG1pzcXcKI=; fh=F5pNsNWzV7qNRs4t+PIGfBIYDon6E4LBqCq3u0BzTiU=; b=XjWFvEAOMn+av6pRaOAiG21U+pPf+dd6U24GtakqsQE8iIQ6e5GQIppfUtbetmpZSa vD4ivLf1X+fh3YcRYydrHXbfN/whnHj4++S9hog6L5Hw0jzRYWEUAopLnXbzB4LOYWCJ eB6bSf6zd9l549bhZyZBaChNZDOnXbgzEqFIFW6DcgYKukat5dkYhWn8JZyCB19j/Fdx r4SZkIxWNkuGY+Mt0Z/hCwrD6xEWaIYyoqg4ip6x41NASJp/B+9hhJ0r6mzQwpq2Staw ltu9FUdj7jyfqom6PFjoSeXdjrtrksDEVoQ5fMy/OJC9zRVgA1fMCtcDmt/p2yfim6ZW vpfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=nl+nuKzE; 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 cj24-20020a056a00299800b006cef5bfd622si4778516pfb.65.2023.12.11.18.28.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:15 -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=nl+nuKzE; 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 33AA180A184F; Mon, 11 Dec 2023 18:28:13 -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 S1345704AbjLLC2B (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43560 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231416AbjLLC15 (ORCPT ); Mon, 11 Dec 2023 21:27:57 -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 02B21D6 for ; Mon, 11 Dec 2023 18:28:02 -0800 (PST) Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-5cbcfdeaff3so52269927b3.0 for ; Mon, 11 Dec 2023 18:28:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348080; x=1702952880; 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=EbntnK4HNa/CvcX2c9tw9yKQZtz2j41lTpG1pzcXcKI=; b=nl+nuKzExYNXseyTves7Xp5mnTvjWfv3Lv0vFI9pzpyDfHJlD9SOkItEvulJrISpI9 FkDCgIkQOR1iwNcGKMVFftVOABCvlQzXg9Nr7Fvhvs0qCLbFHQnaJPSZ8BmgOlSf64ZU K0CtuQ9rFPTeD2xi9XPGVQnmvSHm35RQ770x1F8Ux0DUHDuNjiSXsarRSwXippCaARIp /QBz3Q5DgLjeUA58ZQBxBrThHjlwjjgrvnTl3EOakdfDY6ymtHCll9CbvBt9kpCs9KHB 3kBzRytQ/0K6wtWZYQ3W/DhZUFyRI3jQkYNbrP4gSFivh0AjKoFP+/btFk9lOzYx4AGe zZZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348080; x=1702952880; 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=EbntnK4HNa/CvcX2c9tw9yKQZtz2j41lTpG1pzcXcKI=; b=PCJp4bWrbNajdrPVafOgqpB9wBcBT6lA8L47XLuiYD22+r7LeGUc+9iI8sgju6Rt4f 3PnniXt98TZ7w2XxCuczQMiIp4RbCvJJpb7BRmLKSSJC5IcIGrVuNeWgwJ+w46LUYkMB Lij7welcnBGi1EpPTyun8927mJVSZYtEZ2qQQFhSo3ZjaUJqdoq8cLbK/PQ9MtsaVLuQ kIZySNryV97o08a1/GdN7WM1CdfOxuzqfaUJv0TyFvf7cdjySsSFe7HF195EPAlxW9f2 LBHDA7WzHC4nMQNRuMnzCCdwU/qVolHzfC5C2lZHDU5kJfGACmbC0yP9a9wgRSBwQULN 9v7Q== X-Gm-Message-State: AOJu0Yy7py+KN5S40YfV11Epx+CqnRvuK5a7KHMtS3ykm/oAlOVaEWQR ntN6lStF4i2uWr10gM/hTafpz/k6nKIkwA== X-Received: by 2002:a81:4e4c:0:b0:5d7:9f0c:d36c with SMTP id c73-20020a814e4c000000b005d79f0cd36cmr4224321ywb.28.1702348079901; Mon, 11 Dec 2023 18:27:59 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id p194-20020a0de6cb000000b005956b451fb8sm3402804ywe.100.2023.12.11.18.27.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:27:58 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 04/35] watch_queue: optimize post_one_notification() by using find_and_clear_bit() Date: Mon, 11 Dec 2023 18:27:18 -0800 Message-Id: <20231212022749.625238-5-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:13 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041356218824609 X-GMAIL-MSGID: 1785041356218824609 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 the bit atomically with an 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 Tue Dec 12 02:27:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177018 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469413vqy; Mon, 11 Dec 2023 18:28:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IEVPlFltYtUkehQDdUvBk0f+qeP7Zo62nTGuG+A8rbC+UawPF02ysqUG1pSfXXMwdAZ8nQi X-Received: by 2002:a17:902:ecc3:b0:1d0:93d1:b19c with SMTP id a3-20020a170902ecc300b001d093d1b19cmr5866301plh.13.1702348106473; Mon, 11 Dec 2023 18:28:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348106; cv=none; d=google.com; s=arc-20160816; b=lnmvQPzSvOBqYgRxpSO5c2B6SSdy+9vuv5zLFwnjVlX/hAuCmiHQjU6UdqhkWjEZYs rCXH3Ta8Asy9CeWZ64nU2MKwX8wMS82juk0qBvC4qimjCcudkYeAmtuu5b+sX0ItB6Rf 5sMGD3tEgr5X8zl0bNgtw4bhsCgiWtcoOhKqilSaO+eXGaeA/evAb0Hm5WhXbID5j/M1 unt5zUPQIloJoWbcw2VLP3Lpf8GZ0jEEv/FsK1Mqa1hIAL/7DwkGfwxGxkXcQzvOVFMR ltkVd1CZ9zlr0ANt7CBKucYlGcce5IQ16sa2QacRnZ83gvYfjTmMb3dy2G6S4o6Ktbgj /dFw== 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=6hNYZVU7jLhcSO3fDn6RLV78h3tjyqIxI1rGMMvt+Xw=; fh=zrSGBF9KO/sxR9SXznPOm+UwvI3TdTFBp7zGGc43kew=; b=mXOE0SRVtDS3FiHNMT12QFECSmLIYeXsyF5rWA5TGmSlXz2urBZVICLFHIaE2+6pM4 IPxaunalf3osDBfWWR3eyU2l7+EtrBePMuKvIisDiBhTbQfX3GyN7+pRj8IytlZ3gcTB dwMvAe+FSs8I8KWglDn861sZH508LVdMrWXtdxdRWuamXXg4iga+RmLrR/vCFVKYzF1o tiKnzAgqKi2LYB4EXgLpt5KOAA0qfbApIRN5y/sqDi/Q4wg2XuKijxaHbMEG9d33Ty/a EkwsHBG3Hdco/NjVfREKAB2JFoLEaVae48ErO+nPj5za+5KgUBLwEEz0ivZfETOf2QLL oNPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="ePKsM/tG"; 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 p6-20020a170902e74600b001d0ab464f54si7255520plf.339.2023.12.11.18.28.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:26 -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="ePKsM/tG"; 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 E78FE804E7A9; Mon, 11 Dec 2023 18:28: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 S1345715AbjLLC2J (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231442AbjLLC16 (ORCPT ); Mon, 11 Dec 2023 21:27:58 -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 658A5E3 for ; Mon, 11 Dec 2023 18:28:04 -0800 (PST) Received: by mail-yb1-xb2c.google.com with SMTP id 3f1490d57ef6-db54ec0c7b8so4444880276.0 for ; Mon, 11 Dec 2023 18:28:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348082; x=1702952882; 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=6hNYZVU7jLhcSO3fDn6RLV78h3tjyqIxI1rGMMvt+Xw=; b=ePKsM/tGAdK3gvUukaOmwZsSstedhRTMlsF/UrjOvRBtMV62WUNdKpo/FLEzaCa41q GAPc0A75QBrHCxae/KIms1ARldugkQtk/k/0BrqFDgZe3R9/oIiZlaWztZkDYm+tjVcm Rw1ixVTOspUWMFG2p5lMUNloVo56pYj4VuzXBKGUTTafxYXC9xb8y5b8Q15OA9xHmvf0 fn9yjbuZzXegPepAUn8AVPsYqS4pglU6ot/eeC28azcNgpbPP58qDmR9O1UFbIxxuX7i D0+LGAamINdYzJxTMErjGsabAx/qVU0JpMWqBn9KulHEdjwfNGfHe34tqV6bvaeEcTIr q7lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348082; x=1702952882; 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=6hNYZVU7jLhcSO3fDn6RLV78h3tjyqIxI1rGMMvt+Xw=; b=RRBIF3zmp8WO5xcRfGulu03H2zCjOQw6km40KMTpn5e+vsiFbNz7R/jN5lEg8E6Zac XPtpGJW2JZhckczvqeFGW24tBHFVutn+c5rBMZlf/DWIGV5m3BMMwXgYXijQXaMUwfDo 8rz0C7y6ZycDdnCAGQlB0O68g3BI4GJaw+dKnWfBcq6VmIXSPE74yhpdegav2lfENlVI Na9n3ctKxPk2OgPTjE8ih9h9A96Vamyd+7FyHnvkU9Vq/5dVBWq4N5qdohxSIH2ad0Xc JmOlq/eN8v1esPEsEqHk3HpjciHyzmmPPJRCJymYnPY54Q3TnU141GQJum2KXXZYkT5o j43w== X-Gm-Message-State: AOJu0YxJrOXr2U/jpKbarRNDO8ySbCdH7r2U7bfBD99euP9xMF4pTnKc u9Ex2ItyzuyXNxUR6yp00gwb+PPNaCyy5A== X-Received: by 2002:a25:ef4b:0:b0:dbc:b118:588 with SMTP id w11-20020a25ef4b000000b00dbcb1180588mr980369ybm.11.1702348082171; Mon, 11 Dec 2023 18:28:02 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id h3-20020a259743000000b00db41482d349sm2868926ybo.57.2023.12.11.18.28.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:01 -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 , Bart Van Assche , Sergey Shtylyov , Mathieu Desnoyers Subject: [PATCH v3 05/35] sched: add cpumask_find_and_set() and use it in __mm_cid_get() Date: Mon, 11 Dec 2023 18:27:19 -0800 Message-Id: <20231212022749.625238-6-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:24 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041367974586539 X-GMAIL-MSGID: 1785041367974586539 __mm_cid_get() uses __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. 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. CC: Mathieu Desnoyers CC: Peter Zijlstra Signed-off-by: Yury Norov Reviewed-by: Mathieu Desnoyers --- include/linux/cpumask.h | 12 ++++++++++++ kernel/sched/sched.h | 14 +++++--------- 2 files changed, 17 insertions(+), 9 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..2ce9112de89b 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -3347,23 +3347,19 @@ static inline void mm_cid_put(struct mm_struct *mm) static inline int __mm_cid_try_get(struct mm_struct *mm) { - struct cpumask *cpumask; - int cid; + struct cpumask *cpumask = mm_cidmask(mm); + int cid = nr_cpu_ids; - 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; + while (cid >= nr_cpu_ids) { + cid = cpumask_find_and_set(cpumask); cpu_relax(); } - if (cpumask_test_and_set_cpu(cid, cpumask)) - return -1; + return cid; } From patchwork Tue Dec 12 02:27:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177019 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469426vqy; Mon, 11 Dec 2023 18:28:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IG26NOD3ARthW8iuU7MtvgtUEFxrGm9FeaPRGhqS9plusKioqcKsDoGVR5pwYX+ggHP+p/T X-Received: by 2002:a05:6830:1107:b0:6d9:f66e:f557 with SMTP id w7-20020a056830110700b006d9f66ef557mr5282749otq.8.1702348108670; Mon, 11 Dec 2023 18:28:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348108; cv=none; d=google.com; s=arc-20160816; b=JbPjwmPHHEySVfHePuIFRiQJ/xW6z7X+Q0LP00R3nWQSmeBBq7whWHnjrlm9DUeIfr iGJcpok20NQtjbNbKtbf6jf90Y9RNz7H8Js5RcjbW426fYh7amumhDR+yYUpyNTOSRYU RSzt9m2wBGDmm2pWG2p7mCj1MA8NZS4wfCOEBf8oruGet5yP6tzM5KJGHOO/LVQ47rX8 ykPQp15cKrYMMe8nA+yc1+X60Djh2iEydtJB4YIf4dJO8tNm0VUk1/+kPFpKYriY0Xho yZAlvSab3LWLpAtZ7rgUI78UKl+fKAteKqPyhirASLeU9Qopt/ymY2yUt26A1Us9/P8Q SC+g== 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=5Tx1ZYksYJvVzuOD+JQP20UpTW3NnHVR2BOmbC32l24=; fh=Al2+0xeT6Wjhg4WeHOypKwcz5GUD2dpNk0jEOZsJjew=; b=KsuRtzxgdIo4hlJe50uiAFTC8jx57rZOujF7t2Z/qDd7WTX+3Kwjq9HFMMJ2/M3WmE LW6VH0j7VqrJGWYwqMsJWvtsXez8jhfa0ZKmF0PG6XoKlswQx29C7c0F4rEYOvDNI8R9 Qv0it7c2hAMW23xp6n6fLOahtNvR9qWNPEBz/zkI/yhFtHdmdJIPc6Qy3raKhHWAaO/5 /fJTT2WFKW4UE3pYzeX7YSTllulI1d97J/sb5VN2pJ/lo58trV4RfODQmttYonW5bozr WDZvP/dh1rDNoXgXsuFh+Ee6uzfHjXFGyInpqFObQYpuEuBliGGcsp08cZ3QhsE7Hn6j QaLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=a8xtZAqn; 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 g5-20020a056a00078500b006d0810d9bf3si3440947pfu.129.2023.12.11.18.28.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:28 -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=a8xtZAqn; 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 2A74A8057980; Mon, 11 Dec 2023 18:28:25 -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 S1345697AbjLLC2M (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345688AbjLLC17 (ORCPT ); Mon, 11 Dec 2023 21:27:59 -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 7CEA3B5; Mon, 11 Dec 2023 18:28:05 -0800 (PST) Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-5e1a2253045so6489357b3.2; Mon, 11 Dec 2023 18:28:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348084; x=1702952884; 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=5Tx1ZYksYJvVzuOD+JQP20UpTW3NnHVR2BOmbC32l24=; b=a8xtZAqnpZmxgaldmGbl8zDfw4wGIe4uHry2UiKo2zru/lOtfdVstM7hB700pxlKYW 3H9Ia6HB7n2jiNIZ9mB2RKeNktz8q/qFk3RxdklUxh2VVT2y7b/VF1CmOlFPxRncWnPH mHJj4OzALSXwXiHojrjyXNZyucPR+I0BTZfzqu+mx6TonaYZy6nryn2P3WA/Qjs6J/Bn sYOCyoXCweuD2oVc1tcP6LcK8ixwdpMswad98wl4m/inTvYQBQKV/c5lpqH1sNWcS2HV ydziDWwQIP440jviJbloUYBEzZr3WW9bEqIbIjoje1Qgch+n4+MzzHKmFTaQYrupfJns tDWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348084; x=1702952884; 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=5Tx1ZYksYJvVzuOD+JQP20UpTW3NnHVR2BOmbC32l24=; b=eaXO6BQrUfnzhHbI9TNw3NjZ9fa+jOcvyvSrcfl7XaoqE5JAvp/ekqPqDf6r7w8akp Pm7bTSJ8t2VGmwdaw2+A+T3VnlwMOch23OvaQ2ffMEYjg3B1SbkZTOsVVQ7xib2sGa5Z l4eWFsVEUreJYymF5Bb1arUK1uRQytsh8xQYqeOW3zBJJwdBsOu6tX7UOWNmYOEYcdSE gb8KG9V9Db3KBnjapl8e9SX/Mz9XodDdFqCRc2eWmbPupsQdPwx6uzcgUndRkETC6tSU 7vtVY5hs0SicVxxdAXWpxuNH9P2NQaIyLfY2X9K49cWCubkDxyV+CaGnW6Nw3W01NZKh g8iA== X-Gm-Message-State: AOJu0YyPOsDtzqPgeWM/1mbCI60hPoU7rpsff9db+KKFjjtY2XGBRsik bqpfyOqDp2yGdn45TgxhqCAY2U8mxLcKaw== X-Received: by 2002:a0d:cc8e:0:b0:5d3:8400:ba9 with SMTP id o136-20020a0dcc8e000000b005d384000ba9mr4160559ywd.48.1702348084007; Mon, 11 Dec 2023 18:28:04 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id k7-20020a0dc807000000b0059a34cfa2a5sm3422328ywd.67.2023.12.11.18.28.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:03 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 06/35] mips: sgi-ip30: optimize heart_alloc_int() by using find_and_set_bit() Date: Mon, 11 Dec 2023 18:27:20 -0800 Message-Id: <20231212022749.625238-7-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:25 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041370030667741 X-GMAIL-MSGID: 1785041370030667741 heart_alloc_int() opencodes find_and_set_bit(). Simplify it by 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 Tue Dec 12 02:27:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177020 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469427vqy; Mon, 11 Dec 2023 18:28:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IHMAiseSndrZ/oVfdSLiNosBcFAVBbZ7MNFHWkEE2617iXz8fRpps0d05hnWeOD3kmxp7NY X-Received: by 2002:a05:6808:11d0:b0:3ba:4c6:f3a7 with SMTP id p16-20020a05680811d000b003ba04c6f3a7mr4520527oiv.95.1702348108781; Mon, 11 Dec 2023 18:28:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348108; cv=none; d=google.com; s=arc-20160816; b=poQgdOjIECEnc0IiGO9o9q7eBOMcRsL9cwNH6cEM1RkMwf5/SZ3EJ6onidLHNGW9eG 3u7Eza8xAAXK1GvvsQmxL8qP6O/aGb1OXZMagPQztIOa1UN1ba0ubcezlEcAH0rFfHa+ 3iM+cDi3Armb3Umt/Cfck2O6zb109wfcxPksl8SF1pEdoGlNMz+YzuZMybf+su4gCTc/ +5xFjHQQZkT4HPiZUDqqLH+mwPqt2U27cCL4HBoJLdJSn6YCTUhwIgr33VAs3SndLtV+ GasGLPUAwfWwbP7r1+FafacymjXAqDR6zhnbOG4iY9q2Z2PVoQGsM2XmPXiCjHPun00L G96w== 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=6KOs5y8ihc64lpMASwFbDug7by8ZogxYD/q/FLr95ek=; fh=510GmgDurJ8LMglDMczzGPjUEOGekYg2nEbutXgjrK8=; b=XeynXvfXpPjS1q+yPa7hKA9xXS2+mZOfy507wNMMM1/C2ol+kar9BdE2xvOjnsVTVL v0eGSHfR6UJPaFH6pHd4YH+AhE/kNA2iNNnp1NM+b70nLLIwDJ0hS/kYqOI2TZhSVm6j d8cHtRsPTqYVIib5CMWP5+ZQLA8gKGTH1qKW69wKR5O9SReqDq88SkT2hpcvMxWzCVUq 96Jv1ZWOF7w1UFfvEnNSL1HBHIBF1mGEGubfbseNjPFsh3UukEq3uvl2PMDzM4PSpKJx JNotm4DYlkJIxdDiUdyVfwXmD6ABbl256mISb+CX6/t0ecfhGdnuxBJPL61F60Q+l/Ib H6VQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=RU+12PJJ; 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 fi28-20020a056a00399c00b006b3aded7e97si7078902pfb.305.2023.12.11.18.28.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:28 -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=RU+12PJJ; 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 3CEEB809EE3E; Mon, 11 Dec 2023 18:28: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 S232333AbjLLC2P (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43616 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345700AbjLLC2A (ORCPT ); Mon, 11 Dec 2023 21:28:00 -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 9DEC6D1; Mon, 11 Dec 2023 18:28:06 -0800 (PST) Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-5d33574f64eso51853727b3.3; Mon, 11 Dec 2023 18:28:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348085; x=1702952885; 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=6KOs5y8ihc64lpMASwFbDug7by8ZogxYD/q/FLr95ek=; b=RU+12PJJdrYBX0rXfO+62RFHWxjl6wM4YG+N+3XElFV4uC8OHdEtOf75RGccwsu5Im jdEj53lrq3u1MRvtzW00Kl5a2DQTCXBlwHlcpF2kZEpI69MqotZPwKtdYBUW8l46LD1x umT/r3ATf6FORWmIQ1Rgb13WTHonAXDvkbmZZc3XeehLGz9/cPhC+i6aBSf5oJV/qi10 uHwv0HupD/bbRMnVVTQ9oTMGznKZSd4Gw//uGtVo8axIYysJnkgnMLPGuNXQHvkValC1 yrymUJhY62U9VC400oRojJ6XhaogdIAFhlb9hlA2YpXD9p9inH+UdwStDqbnNrVsO2D+ 9sKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348085; x=1702952885; 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=6KOs5y8ihc64lpMASwFbDug7by8ZogxYD/q/FLr95ek=; b=fliCjVpglKGZSh0oCjPdJtBE5K1aiDr6Lm/qRCVTUTwX4dp5YHSXILvoPfIuHeOMRD BtV3zMA0IphvfqR9t8bwx6kg0DzGp3+vW6eAD8/sBFB/weO0q8jDfqtEUexahtuKfYPi QkHe72sicNbdAmdee1oz87eQt2dl5tdwDpo1i+90N5068BABF+wWFCPF67UHJCHjF5Xm kFimfA+LnyFj58b9zWTA5BDpgrt9WpzdEpsDBGh7hQief92i9izkuxJ2QGVf8UYP68LN fBT/yI6cLLZcUDlxiINP7UGOoG12YzH5insdS+poE8n+ATCk4CIMnJCUUzBvVXpptxfN JCsw== X-Gm-Message-State: AOJu0YyoNbwao2c1rJA8veVf0xCPXIQDrb/c7UqBWQeVAO7qc1D8IR7K m6Jtez+qfb+cLvHxdPxuF+zUSo1NP+rBmQ== X-Received: by 2002:a0d:f881:0:b0:5d7:1940:b391 with SMTP id i123-20020a0df881000000b005d71940b391mr4788415ywf.93.1702348085065; Mon, 11 Dec 2023 18:28:05 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id p194-20020a0de6cb000000b005956b451fb8sm3402858ywe.100.2023.12.11.18.28.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:04 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 07/35] sparc: optimize alloc_msi() by using find_and_set_bit() Date: Mon, 11 Dec 2023 18:27:21 -0800 Message-Id: <20231212022749.625238-8-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:26 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041370348547152 X-GMAIL-MSGID: 1785041370348547152 alloc_msi() opencodes find_and_set_bit(). Simplify it by 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 Tue Dec 12 02:27:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177023 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469511vqy; Mon, 11 Dec 2023 18:28:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IFv9vY8grywIps9sIUamYb+GbXuCXN0xOnlWB68x28IYbdXRCRJVP00AvGgHcOjs0tFxp37 X-Received: by 2002:a0d:eb4a:0:b0:5de:8c10:e5a9 with SMTP id u71-20020a0deb4a000000b005de8c10e5a9mr4273164ywe.49.1702348124244; Mon, 11 Dec 2023 18:28:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348124; cv=none; d=google.com; s=arc-20160816; b=s4IOSKTO8Pj5ZRavyzimBnKwtuuFxrlj2pWtsuXlJZST+VCUYnwaN4dNeIuLgN4XtZ XhahAp+0wD505yb2T1KUe1QprTCGTwoyqQLdtbGTmE4/hTal+66jrD0ZWeNAu2g6Je3S xwhbu+6trqYG9mBjHgTRLbK66wKINxCE9na8s4RXajN3GUU6VksybaJphn48rMVH9XeX PUakJqKPK9QeyW+LaOegbiL3HT9Fk2m/nSURFSNn4CSn2sn959Y1O40XqkHMlUUYfVkV Trmo2fygEDqNkgyfJKizlDMT8K2DhWYPreF/OnIKyfGwzulfk4px4g5/p2fsHGUMJdq2 KF5w== 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=UGJ1SciKtb7P2PBkuK7lu9/Kujw3Tca15jzLy63keqo=; fh=JNQB/fTDG2yW/m6xXdDh9Aar/5sXrhsjML98mwjCxi0=; b=z9s/X0JdMKymkyFUxqvjsy+sdZFkgWSrGUc1Xk1zrmG61RFAIqE7ppX8Nd7Lb03ahG twrCIMlfcvixTEy40pu1fby8QsSWfFyMq2orhOMBcqlU/3VXZl4nEcbeh7/62rNDN5o/ gHGFFJiuJUneBkqogD6a1DadkVqj+B9n9zL5q5dkR0x/4i+C5v1Nv0oKULHxvTpDjo+9 JOikrNTvKmZUsizxhXOheg9+gMIG4Wkv5SGAEJbAHEZRBCtloMdvMlvzgTLL8RFNNjZz 9YTo//Qvh1XDGJo+kK41+gsXl1zIFHgJ2P9j2HdLj/7ZYNktISpnr9uKyQ1tVKUOZptN mnqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=T82cCyrE; 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 j4-20020a170902da8400b001cfbd3f38c6si6988598plx.302.2023.12.11.18.28.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:44 -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=T82cCyrE; 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 08A968051ABB; Mon, 11 Dec 2023 18:28:41 -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 S1345700AbjLLC2R (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43618 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345707AbjLLC2B (ORCPT ); Mon, 11 Dec 2023 21:28:01 -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 B45BBD2 for ; Mon, 11 Dec 2023 18:28:07 -0800 (PST) Received: by mail-yw1-x1131.google.com with SMTP id 00721157ae682-5cfc3a48ab2so44883077b3.0 for ; Mon, 11 Dec 2023 18:28:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348086; x=1702952886; 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=UGJ1SciKtb7P2PBkuK7lu9/Kujw3Tca15jzLy63keqo=; b=T82cCyrEJyvbQ76JeyFds3Ot/Em5U6Yy7qAldOsfHS5EIpOV36RhORTzgqAvEa9Kjk zKrZmMY29gQhFo72vYT9Z2DFeJBYxN8EWFmI2fcVtcwMiSoJQzZByhfySBj+ZeIbl54H ez5FpRjW63+epdBUcq9DP0cscfZY/2bQd1ops8I+M5gQFXQoemr3xfIMSjPccPHPWwhc 049diQzaZlpyBhHyuAlMIb34O/sv4uvDuOUe1faxzDT3ia+3ID+x9kRZywaJNTCx18Zn Bto4JK8DvuOqZorFF403J+Cqpu2E8nV9GEDdKk8cK/7sV48UtoBtTUAH6I4w/C192Sau IbQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348086; x=1702952886; 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=UGJ1SciKtb7P2PBkuK7lu9/Kujw3Tca15jzLy63keqo=; b=rTmIdjMcwi0VXRK4Qz6zrnsmhMPW8HoHhJSrRWip/5JpJ+OcZzr5hQgP1hmLePvWvY PEog06PanhwvQnoQw8yofjoKasYFllSaB5wLnKNcDzK2I82YXUAUYngFPvKvuZTtK4TV 8geYuFh3oqORRwUZee0p7z2K9mHJwwoIv9QHZug76nYXYYLME89PwvBKKMNSTGXbuWRv wbVnETpPofFM66dnAClncyC8IJrn7WDie417slilrKGNlsaGBl/1KgHCoQKzI69/RXxZ GVNaWgPaDP31kzWfwaeTpY59K32ueBRXgntXtNIVk6ibHo8pYLERvcZllDv5L+L9quuu 9hQQ== X-Gm-Message-State: AOJu0YyM2W2w1IE6puVZb7RBoRYNkdHSTex+3+Q7LwYjetE/SIXQTNWj KLilodYZSmP0zgADVE3mboJponxwGACe2A== X-Received: by 2002:a81:4fd6:0:b0:5e1:e94c:9e3c with SMTP id d205-20020a814fd6000000b005e1e94c9e3cmr174797ywb.14.1702348086183; Mon, 11 Dec 2023 18:28:06 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id u13-20020a81a50d000000b005cc8b377fe9sm3395635ywg.121.2023.12.11.18.28.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:05 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 08/35] perf/arm: use atomic find_bit() API Date: Mon, 11 Dec 2023 18:27:22 -0800 Message-Id: <20231212022749.625238-9-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:41 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041386848998744 X-GMAIL-MSGID: 1785041386848998744 Simplify subsystem by use atomic find_bit() or atomic API where applicable. CC: Will Deacon Signed-off-by: Yury Norov --- drivers/perf/arm-cci.c | 24 ++++++------------------ drivers/perf/arm-ccn.c | 10 ++-------- drivers/perf/arm_dmc620_pmu.c | 9 ++------- drivers/perf/arm_pmuv3.c | 8 ++------ 4 files changed, 12 insertions(+), 39 deletions(-) diff --git a/drivers/perf/arm-cci.c b/drivers/perf/arm-cci.c index 61de861eaf91..cb15b4cee5f7 100644 --- a/drivers/perf/arm-cci.c +++ b/drivers/perf/arm-cci.c @@ -320,12 +320,9 @@ 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_next_bit(hw->used_mask, CCI_PMU_CNTR_LAST(cci_pmu) + 1, + CCI400_PMU_CNTR0_IDX); + 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 +799,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 +853,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 6ca7be05229c..f046ad9e71f1 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 Tue Dec 12 02:27:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177022 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469468vqy; Mon, 11 Dec 2023 18:28:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IF6IIdy1dhNIpaa6vNA6BTj8iQy9wzsgSTPw7XACNFZICtpyWU7aDPNRadPErTc5K3vvOsY X-Received: by 2002:a05:6a20:bf10:b0:190:a85:c042 with SMTP id gc16-20020a056a20bf1000b001900a85c042mr6687781pzb.119.1702348117010; Mon, 11 Dec 2023 18:28:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348116; cv=none; d=google.com; s=arc-20160816; b=wflsEclz8mXD/Uda39HWOdCQqyUQthjGJW921zM6SPMCJlEvLEW2pQlImQ2UIhxufP FSSGlrSEAm4N5oXJzXXFmZlr0Z9sNtx6ts/VO5ytZVFJeHomfC/TftL/veV31klegHeu LmHzdBAhEeQjxTLdfBzTj8O604E83gSMdv0p/bRwCuBw/h2MUGfPX8Gd41s/ssAqSNQP dM7xsKUj4xpywzSg/U82vmEzuZpuhNYNsibTlIusO7xCQTOEIiXL7N+WZzWorKP1ncdv uwz2Js1VK3CUGf4VY8vlPz3RZdCYwrOBDZtkncRAyDbaeY5FkHwNnVz10Vv7bpU65p8N pAgA== 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=wOtgtWtIwGwJ1G9iBa8c13QOAAJ/9MITwOIhxFkc4ng=; fh=1EViu0/j/vX2yGB9Ufg5tfTc4itqx9d5bLCQ1jM8OSo=; b=nweN8zpz7dlKBydVU0sYGNAYa6Gh0rI3z/HYHLe3cpufrBxTrZ13vTJgt2/WvlaWLW hof5QIhdOJxegs/44m+Y/h4WvSt4Om0dwgGNkkWttcyqQsL4DWLVeEFejlefJ4I3gXTJ zdNesK2TgBMjR24W/RRy0QsIXuM3K5nR5t4F/JQRtFD+80KbrOm4q9LnfTerLey6uEg4 VUT3lMj4+/Z20D2WL0/Ut3X5iiF8jTBQ5AuSS5W0/jGIrvunjrYl9qocttae1Lt5ZpYz 3Ifyc5A2k4PAfr1gQNRIBCmOoeTVbHRvkcnqTY1+cUVSjUs7sOjUmVbf+EfmPE0nf0gy sJlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=PPYYK6gZ; 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 fm4-20020a056a002f8400b006ce79a76cb0si6832882pfb.137.2023.12.11.18.28.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:36 -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=PPYYK6gZ; 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 0394F8057993; Mon, 11 Dec 2023 18:28:34 -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 S1345753AbjLLC2Y (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345712AbjLLC2C (ORCPT ); Mon, 11 Dec 2023 21:28:02 -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 32BC9D5 for ; Mon, 11 Dec 2023 18:28:09 -0800 (PST) Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-5e1a3199f6bso6896777b3.0 for ; Mon, 11 Dec 2023 18:28:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348087; x=1702952887; 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=wOtgtWtIwGwJ1G9iBa8c13QOAAJ/9MITwOIhxFkc4ng=; b=PPYYK6gZjHpPN8gqQDwq9laUoxLJR5BRssNuC2urGmIwyElRbozZHvRUtt7/86JBhD xh1ZhXO/RKkAe2UzeroXBrd7WDIfnsKn1Nls2ux1an1mb0WJy3B002kFekxqyJb9MS/E Pk4bdzOU9/39GVQADWfzVii6riDnuYgOA5A5PTAalneKSG6dWSqPYMMNPMAlLPaE55hP g0BMXbfZ3cDz8fXBQ53z7qPeeiBvwJtIWCmlQA+Zt1EOXJF+MIxASO9BJdHL581CEmdv eNhj9IueQdDR+yAZhFcnsz0HwgJyur8mw7jLiseLClTgLAzdMhLyfqTVYlVDkxy5yWsn Yp4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348087; x=1702952887; 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=wOtgtWtIwGwJ1G9iBa8c13QOAAJ/9MITwOIhxFkc4ng=; b=wCOgN6buPNynnODnf6ARhk9O4ZQMBqxyMhfGXMLq6+gUEYuudkz3NKlolhvSmdVeF5 MfeeGC0MeIqL4HtU27m47wtCOVOvI4W/QyReOIIRhFUkzTphNqLCWJ6oFf+FnDcM9hvR EWaOA9up6Ggm+xEP5wC0yQdPadqRLzRcVLSZzEfIizLn5sr6DOW6GINBuKDj/jE+1gd5 k+mWelQzoxpCKO40cQHAJufxwHXTxXnZGrN3h8vn8NZOvQPWLDfS0vFeDgJM9upzR0QL mdh+r7xEHnqh09RjNMa4Ww/8ppyGxmk1oc0l4mvoCWEsLtemFrRBCzcpQM8FMmTp8lfB zEBw== X-Gm-Message-State: AOJu0Yyw8P6yV2uVl0wm05UoXZcAR7uPDdtwVRsnF2t59fHo7i84wlYI u19vyEcKZWlJ/rv2jpEL+mvHpByDzRx1aw== X-Received: by 2002:a81:7c89:0:b0:5d7:1941:2c2f with SMTP id x131-20020a817c89000000b005d719412c2fmr4754793ywc.92.1702348087359; Mon, 11 Dec 2023 18:28:07 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id a200-20020a0dd8d1000000b005d35a952324sm3449101ywe.56.2023.12.11.18.28.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:07 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 09/35] drivers/perf: optimize ali_drw_get_counter_idx() by using find_and_set_bit() Date: Mon, 11 Dec 2023 18:27:23 -0800 Message-Id: <20231212022749.625238-10-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:34 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041379544364535 X-GMAIL-MSGID: 1785041379544364535 The function searches used_mask for a set bit in a for-loop bit by bit. Simplify it 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 Tue Dec 12 02:27:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177028 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469563vqy; Mon, 11 Dec 2023 18:28:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IGAqENML8XAHEXf6r8XrNE4nw1ZhaeybQ/Bgc2Vmqf+y6ae09Z5cUA3+O8x0adiVpBUDS5O X-Received: by 2002:a05:6808:221c:b0:3b9:e319:6a1b with SMTP id bd28-20020a056808221c00b003b9e3196a1bmr7965862oib.14.1702348133853; Mon, 11 Dec 2023 18:28:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348133; cv=none; d=google.com; s=arc-20160816; b=JMXAU4pBojsjHsVTnL2qxMbMF6ObIy24FvDoVyl38DK1kLCXaxB/AChMkeE9jxHIOz HDgEOM6aaoUCGKMeVwhjHcDDqI664gQVvHbMsFlKHBO0T41ZZCrR3XkLPwgrfKM2tnsJ gtzqEvs5pi2rrj8RA6YhhMCRN3Xjsue7Gq3YKBWYcrWEhTYkJSCWpz2uJHb7eq1B7Qid +7BdT3UN5sAeacK/GIR1oGcCu+bpWCNV/4/XoIh6bwkoe5JYW/oCZX0yge/BWYa6G0br oMOJx/sxO2G1YUZujhcQWshCZfAw9rqTpOWIC1u0ki29FlgMsvhH6s0lsHRSt92pOIj3 h2qw== 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=2PPaj8bONHO84DcPLdZn/HzTWIYQqNGS4xiypCmsJDM=; fh=2GD2vy+HX/dHeXa4+RJL+m+Da9dxct7dx3HQA832/jc=; b=pQ9Du+fjd/JdXtF3RuENxBXFRtogwXQlhKbTEkdh08Cm0Iou0TcFfw/ZyL2MrI+NZK pD1WC6kZ/wIJQAqljXYKVeSGcE9CJqrAa0w4+E2AO33bTeON18jXvavGLoL6I46hGRlX j5COYh7q56y269kILYaQjhv6IJHOMAfgr6U1BTbcFUJSzFZCblzOkkqgSuIj9AAuC3GJ 7lwXZ9PqXSREGA506T+y58H6j5qkW3TUdfREw4L9KzpIcKx6WVS8zwYHjjL0y7vsUaVq clEkaf6pQIOibFO3R95Q1J6dPrkoXExSN3o69OwH/srtI5QfQpMtJ7Sg8wUV+2+PVtTH pQzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=EeT0ewIv; 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 j9-20020a056a00174900b006ce61c266e3si6970621pfc.318.2023.12.11.18.28.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:53 -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=EeT0ewIv; 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 D5E728051AB2; Mon, 11 Dec 2023 18:28:50 -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 S1345697AbjLLC2a (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345730AbjLLC2M (ORCPT ); Mon, 11 Dec 2023 21:28:12 -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 57808DB; Mon, 11 Dec 2023 18:28:10 -0800 (PST) Received: by mail-yw1-x1135.google.com with SMTP id 00721157ae682-5e1a2253045so6490097b3.2; Mon, 11 Dec 2023 18:28:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348089; x=1702952889; 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=2PPaj8bONHO84DcPLdZn/HzTWIYQqNGS4xiypCmsJDM=; b=EeT0ewIvIPYinBZYW6XCaUORYpOhz3jr3Z0GrxT/kf4OVCroVDB6tyMkj66+RRHzqM YmvftBXHOj9dQ7XYG6QcYxFMG1HCU7CZQm1kbLG0UTskk1gvX4myd+1PFk+et4UjnJWl FJZJLN6toQuu2l/jvRqfJsqEOtQT6x5GIj49i+Z3kLh+i49OOQmwzAhOHUlRv9p0EiFF UYmsEYTj0PdAGEMr6mWBrPqi7nZj28KRJ+jETrJ7YBuslj957L7+BD7Vi58dLswi9VgO suCPXi+W6taNzRlhJrJGGj+J2RLZmx8z1zeDh1BVT9sCrHX2bKTEKWIuMmFjWs4UIq+N 5/ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348089; x=1702952889; 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=2PPaj8bONHO84DcPLdZn/HzTWIYQqNGS4xiypCmsJDM=; b=B1GN6upNiIbnwH5D39OmDD1HD+jr+oyM1RFtgE+tYs+JyoNf5BWWY6W3AlKuTJ5dPh Lj7d0frHanBn+v61bexfqzIbdbKhMS8nSAzrhsfma9Cx0KMq8TJNKtasUXnMzc4M2P+q S5RlnlhMYTfGR3+NtZlI09aikaAdqPXQkaEIWQqUH7/ITxMUIYh0PVyZ3loEqGRrkqBq r617LQw2381cSyRD1mVZeDDZJ8EpGYWO+5nnmNt47leCx3o6othkkmxoeuQ5NOP0EU/L XsHfuF6PIga2rn2JtGIOrJdgkGzxps93VEeiAklbxq/95B+jVI8W73eE5jmW/X4Gr0f9 WT8Q== X-Gm-Message-State: AOJu0YxmZMuGuOQXLj5f/mABk/AjDzrBOufgfoTNR4E9X5PrPXjchs6/ aZR8+dU4h/DZc+Kf4Ex96jL/dJr519Vm9w== X-Received: by 2002:a0d:cc8e:0:b0:5d3:8400:ba9 with SMTP id o136-20020a0dcc8e000000b005d384000ba9mr4160620ywd.48.1702348088892; Mon, 11 Dec 2023 18:28:08 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id u13-20020a81a50d000000b005cc8b377fe9sm3395652ywg.121.2023.12.11.18.28.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:08 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 10/35] dmaengine: idxd: optimize perfmon_assign_event() Date: Mon, 11 Dec 2023 18:27:24 -0800 Message-Id: <20231212022749.625238-11-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:51 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041396733075714 X-GMAIL-MSGID: 1785041396733075714 The function searches used_mask for a set bit in a for-loop bit by bit. Simplify it by using atomic find_and_set_bit(), and make a nice one-liner. Signed-off-by: Yury Norov Reviewed-by: Dave Jiang Acked-by: Vinod Koul Reviewed-by: Fenghua Yu --- 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 Tue Dec 12 02:27:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177025 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469535vqy; Mon, 11 Dec 2023 18:28:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IEeAepeqjYjJU9P04QyX/Oire1CNtsUnJcLt3/2lbJSIUdqPrNSAAqm249867VTTjVFr3Bg X-Received: by 2002:a17:902:ecca:b0:1d0:7b65:9f8a with SMTP id a10-20020a170902ecca00b001d07b659f8amr3143259plh.51.1702348129432; Mon, 11 Dec 2023 18:28:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348129; cv=none; d=google.com; s=arc-20160816; b=z0GpO022ctIv4oaAA+2qaqD5nzkX9EVMhWv1UiuStDNzzX7zCEBmrLyklt6VswMOo9 Be/8svpv3EbAIePW2CXa5bUzBvfMu/LtjY5iV2JX9056NVLPIJyeUZk7lPkvSZ67SPp1 cZG4jDDP6884ZP8MjTFysKZMj06OXSXrEaEaOKeOhPXlVEaIpNQi4V8bPEWsFbZm3h1d q4voyVMeEYSvdk+qTTQq5n3jxy2sVduK2Skakav8ubKjjl+8+4djl4dRGyF+SySmDFQo rfS6EH/CZCMihttbsd6cn40OuDiVKj4y2JM0MKcz7sFvn57gFGKuKh5S4x1GYypmunHz Kluw== 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=GXzBG6YZWj7GIPOLgSmnK31hIBgVH/D0z2Wg9iUswnw=; fh=RayH9kYBhKkpZn/ZIZL3pdWG+K4Bc6r1wMSsARU/g4o=; b=M1purVSZnyV/l4X83YIGebQgeeeyZNykmEG9XxEYMyJG8XC4Ylmqt1pP9NvxtDAt4q cLHD4YCWIjGyraXgK6cGwfGS7MnTXDpeHf0AbLMn4Jc0i3edvITbqCelxSLLHCPUguR+ 6VbmNg5uTP2N1F4H4p5ENLWuJykvvwEfw3O0DNHm8QqGWkAaD1oD1wSVoyD8aaLsZvKp 8x1I/fmHH+24lQ9qHdKtTXtry9ICikqE9zwde3APYpBFlCkFKIw0AY79qXwfVv7Oo1HJ uRIwbnT0aH++2Xyb5BOazHJOzwwqT+4bxDuhcUjA1vpK0LSwoDeQM/DjInZ/cBanel1P UoKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=UOuIZm3O; 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 b6-20020a170902bd4600b001d055df4ce6si6943584plx.422.2023.12.11.18.28.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:49 -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=UOuIZm3O; 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 600BB804E795; Mon, 11 Dec 2023 18:28: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 S1345745AbjLLC2f (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43760 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345733AbjLLC2M (ORCPT ); Mon, 11 Dec 2023 21:28:12 -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 12FDCE5; Mon, 11 Dec 2023 18:28:12 -0800 (PST) Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-5cd81e76164so50638917b3.1; Mon, 11 Dec 2023 18:28:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348090; x=1702952890; 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=GXzBG6YZWj7GIPOLgSmnK31hIBgVH/D0z2Wg9iUswnw=; b=UOuIZm3O+SimwsEXXZbCcSLti7e1pHIQKM6scWCeeOxYK7DSTjHDKd1xL3kToQFSpe GTkRpkFMZEXtQslGvCk/ou4V6BH2kO7KqHyrtKZ6qgZ2SU/dggHYmFwbk6GWkpXJg+sQ gqIFlFJwItQHIfwuva9gG3bgg/5xG9GHZzz7rZUorLZNcuJzKFBms52Glm9v7JJBehZ7 OUyHyMdhoiWdLRfE+Ut3/NagUGkS11t1xuOQc4rqQrMf+6GNjj3/iFBsYpTYSBJGQU6/ qPk+WIz1XRO1aOOwt7ZYYwZ/o5PYn91L78KPMv8Kx5YG7vE3YxP/GUB/CHpncYRdDqZB keMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348090; x=1702952890; 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=GXzBG6YZWj7GIPOLgSmnK31hIBgVH/D0z2Wg9iUswnw=; b=HuYPW9U5Ea/TPEu42GW6GypXhVFMOx3U5vC1IIelMvD/VYLfwC5tRclLEuMBNzboi8 cEzNo+46+MjTg3WXP21NGyeA/vOr0Q9CWk8yH+LthxdizOy3mJ8X2E5rJSXDA43AV6pt UxoZTvDYCoFRRonL/0/UiiIqn1P58Dp3krUxM2DOA+E1H7pSf1FNIDFRnSsYQuhVAnZ2 J2yj6qad+Auh2vFZoTPaA768VX2ozOEbvIoF9QvoAaJdugW/2emXkGKQ444niAzm1J9a f8wcUYEBu7125i31pXKNskclgsTHOscWamgBKD30RY6HpDNrBMI7YSVV+9qi3gK93HbS XfZQ== X-Gm-Message-State: AOJu0Yy1lWWXq5zjFK+gtrzvAb1G2FEISCm7mUzagwlbzPP+kgQCW1uM rEH/+TFxqBQvKa7b8pNxmytM40hd69tPFg== X-Received: by 2002:a0d:c484:0:b0:5d7:1940:dd79 with SMTP id g126-20020a0dc484000000b005d71940dd79mr4223699ywd.79.1702348090187; Mon, 11 Dec 2023 18:28:10 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id d63-20020a0ddb42000000b005845e6f9b50sm133308ywe.113.2023.12.11.18.28.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:09 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 11/35] ath10k: optimize ath10k_snoc_napi_poll() Date: Mon, 11 Dec 2023 18:27:25 -0800 Message-Id: <20231212022749.625238-12-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:48 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041392078855389 X-GMAIL-MSGID: 1785041392078855389 ath10k_snoc_napi_poll() traverses pending_ce_irqs bitmap bit by bit. Simplify it 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 Tue Dec 12 02:27:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177024 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469515vqy; Mon, 11 Dec 2023 18:28:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IEIe45HfEM3C3KarnDTRmYFIL61Cz1hzk7SqfSBzaSeFha8NRPH0lhpFHOg6JJhP/hGcwZm X-Received: by 2002:a05:6a21:18c:b0:18b:c96b:a433 with SMTP id le12-20020a056a21018c00b0018bc96ba433mr7945259pzb.56.1702348125011; Mon, 11 Dec 2023 18:28:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348124; cv=none; d=google.com; s=arc-20160816; b=efzxV3uYCMZvzA1agLpgiEzwKNzDt8ckdoj64PTEK9a6nO83QACLmY6UYjiwIMd3dc J3AV993oUsx08RUN9QZ9u+lqdXeSSqj1LodiUERTRCsbU3arpRB2h8kMl5+ynNiJuy2q Z5MjrtOKwA7kB6hjENbPqkfTgn/jgdeAwepbWJly8BQmVP3LzGf1r2jDuqg4woF2rm2V CiWbYuRIFYg7w9vpZU/j2zdpswr0WgNFBZf0UJTKuWpgk2itLFzV/9GyGxV26deWZc5k 6YfcAr2+RCSvMreekJ0//mqeDvfc0VRXEQvwahx770zFlfbOfWNzXeooFd2qugRyLAGr zGfw== 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=QFEJBK39s2HmgQ9VlPsn5925TKEumn+jH4TGZrUP5qg=; fh=TThvRioMrlpvIX4qCDBhpm4/4U4EmAfntmWl17FlZ88=; b=l3jRowokwYrco/qYaiKaRopx+cniyCSi/Vb6lrA4OwsXU6fIAO3UCXPjJeba81Hj44 jRNb7VVpE/Y7l9Oznq8gipQkL9G6/4udkVEYcgOEviRYSGiD4D26vkvibMOfXZqGy1T9 1Pas8S5Pa6Cy1taUnbYCYr8gizKGNNboafh3jRQTFZey+RwVKAjb6XzUi8FkwN6FMzCn xDc2FR8Mee38fbqj1np+tLnpS3LQEJ3VYUPJJeoVMLSvzuQ2Y3AoyubbMwuBRyipi6S9 xNjEEZq371iPOonlUVwtZA7z/QFd50M1Cm5EWhMDhleoBaSqQkoLeMHEq3juiJb224TT 24qg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=JJLyLa4Q; 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 t3-20020a63eb03000000b005c6183ccab2si6916910pgh.630.2023.12.11.18.28.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:44 -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=JJLyLa4Q; 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 34AF78051A20; Mon, 11 Dec 2023 18:28:42 -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 S1345738AbjLLC2c (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43778 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345734AbjLLC2M (ORCPT ); Mon, 11 Dec 2023 21:28:12 -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 73D62B8; Mon, 11 Dec 2023 18:28:13 -0800 (PST) Received: by mail-yw1-x1134.google.com with SMTP id 00721157ae682-5df4993c25dso28748587b3.2; Mon, 11 Dec 2023 18:28:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348092; x=1702952892; 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=QFEJBK39s2HmgQ9VlPsn5925TKEumn+jH4TGZrUP5qg=; b=JJLyLa4QYqY3UTMvyfTXmI+k01iktZdN0dSV/P/pIhBze7LcIH0wjn+tbOgGzLHa6x LDzaXWFjoijnWIfNBAzwJunRa6sdZBeqFpS9bP1R/NpWXZ7ud8pWO30VMe+cbYiCXYVh LqNBEdLeTrY5/kjUO4IOrlVOcvGzfyFcmklk8GyvbfRNed8SskX4JoaBh1xwRqrTb08U 2lDqkklEyVBWrclNEwm/hGCHO1U9TZFGtj/Ynu/EFX5T87EYTAUNSK8g6EDaMGXmzE+f RLX/YCCX6bJBoHMdnONlevaPGX3YBOPo3c7kb30ssESng6yuOXPQ3e7XP8NLUep9E2Qf yX6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348092; x=1702952892; 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=QFEJBK39s2HmgQ9VlPsn5925TKEumn+jH4TGZrUP5qg=; b=bI9VFZshKuS5EttZv9bXmUS/0sZn9qBPI9wjec8TBRlG5F5xJf3kZaEvssAvumnrs5 bKmprBmQKp9lNXNTgL14UHiwlsFjZjrrYKS1lleeUBgLS3e8BgBxcXRVVfsUuV7MymfZ 5msAw+lRLb62HkTZq9mS2AvLVORhRgHaVaSYv9m3VhCyY4TzOfl8NBEyYNbtJcsS8EZS O2iIkMKADAXxr+gTnmfP8npPV1QgSWUyafGHzjfqQt7CalGx+8NwIL5p3lX8Szks5DNf mOZhSsa2LQ5W3Yejn2DROhMpQTBNQDHEwe8gh6+3e/9whxC/QzXWs/soYoAvMf98A0m8 J1aA== X-Gm-Message-State: AOJu0YzTcwadPqquOiYx9OWYYcAbjCZZTAcdGdJWMaGbgFYzHBuqbkPF b6N0dtC5PSm9abLB6XOC745ibKVU3sKOJw== X-Received: by 2002:a0d:ca05:0:b0:5d7:6a55:b589 with SMTP id m5-20020a0dca05000000b005d76a55b589mr4755536ywd.24.1702348091703; Mon, 11 Dec 2023 18:28:11 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id x9-20020a0dd509000000b005d951c0084esm3427568ywd.21.2023.12.11.18.28.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:11 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 12/35] wifi: rtw88: optimize the driver by using atomic iterator Date: Mon, 11 Dec 2023 18:27:26 -0800 Message-Id: <20231212022749.625238-13-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Mon, 11 Dec 2023 18:28:42 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041387440383992 X-GMAIL-MSGID: 1785041387440383992 rtw_pci_tx_kick_off() and rtw89_pci_tx_kick_off_pending() traverse bitmaps bit by bit. Simplify it 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 Tue Dec 12 02:27:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177027 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469557vqy; Mon, 11 Dec 2023 18:28:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IFh8PGCrgQKW/7htLlBaTkCgfHr9DmbTCFlkxjLLvrVfvNDWdJMbr0QHy1FBlOHbMyTigBH X-Received: by 2002:a05:6870:1690:b0:1fb:75c:3ff9 with SMTP id j16-20020a056870169000b001fb075c3ff9mr7189817oae.89.1702348132917; Mon, 11 Dec 2023 18:28:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348132; cv=none; d=google.com; s=arc-20160816; b=J79sUiYSy+QskULkvutlVLf7+r1EpcnlKBdexN6U6HiDUU3KrHejXkn2SrEUg/EugG Tm3gKd0QVTjDxpjfXZx2GVjzWHRNBzMHXn+pkaZ9gR6QwVl4032BBaoJ1nRubNgCYiF2 YPRDGCsi7sRjiuwhfGuqyffqlk27JLydAGSrxO5WuzpbnbS/UVpNS9fuUJNMrtRSZVJj HBFmPANDzSzZql38NVMhvA2igjudc2fEdKgoxuj/qme+sA2mc4H4npQ7MOSM7NhJLJu6 rAT5gAU/F02frwu+ebxGusfkzc/3WPK7AyrxhbnfWPwW+4v8zmqbp1iOSuwZG8GgfVUg rgMg== 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=0/w+UoxD/rATekKz3kzzyyo/gV2+D7OB+OCxe3PED0k=; fh=gjeqInLAbkCJgnWkx/P6T64YoTafV4GwGvY5ipmFiU4=; b=kLdpoF94mvzWsoTnfNxTR13PG7UCaUghlH666zLwesOfbjY6rl1kKmh1VyELzd4j/e km+2ObqdPBj5jq8OzUAhXkeXAyDHoZ5vQe2uCer06cTJnkbUWTzqa4ERvHkAen7h2bX1 GzkAciT+CvEGoBB5xZ7JH4c6A741b1sRfupBwgvONI3p9asm9cQWilyed+q5HzaHePPH 3Q4eP/9+QQC5AlUYxvKzPNS8/dyFEDUbI2qjqU9nEs704aTmUM50yXmZ1mo69SCDjfXO e8AHd5lTBxh2ABDhbn3A7gWKcuxu+Bz17MWZvwXXHOZctgmSv50mJ5b3zBVA6WHnHDNe DTIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="W/eegcIN"; 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 u17-20020a631411000000b005c68fce9758si7006241pgl.761.2023.12.11.18.28.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:52 -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="W/eegcIN"; 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 755C9805799D; Mon, 11 Dec 2023 18:28:50 -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 S1345763AbjLLC2i (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43724 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232333AbjLLC23 (ORCPT ); Mon, 11 Dec 2023 21:28: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 18875EB; Mon, 11 Dec 2023 18:28:15 -0800 (PST) Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-5d3c7ef7b31so50137907b3.3; Mon, 11 Dec 2023 18:28:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348093; x=1702952893; 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=0/w+UoxD/rATekKz3kzzyyo/gV2+D7OB+OCxe3PED0k=; b=W/eegcIN10Rnn2BviWHG0Zukugi4o/JFzdrwNGmFIvlsmT2w41ebE24natTUeeM9rp pU0FNrLWq8BrQHRD8il+n+0k+8LzVvkkHv5YA6Ic8AxEBF6cQw4SVcXwwlvd0NwCpIji WRjc0IvTUFw+QMLimpy9Mct3Jo+aBoRCo/8D+f5WtGEI4p1sKhMVFWnZTCtm24V1s+0T reWbxXABJTbONitmi11H0hFTTCM7AoARFr0FAJwjRhY1V7f70k1+zHNGwFUpEEo6Wuk5 FMs23q7LGfErQdarDoKGNkPjY2+dBJ+VFj/JVJKF9ZwWxlAS8qDHUQpcjeJlUM6atWXi TWZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348093; x=1702952893; 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=0/w+UoxD/rATekKz3kzzyyo/gV2+D7OB+OCxe3PED0k=; b=Iup93Thm2uxmYhB0QPMxBc2y0+d8Z0UL2TP8F4cdOdcdxlUx5nqMUDVK4/ZRBXhF11 vrPCBJ8f/l++/CTjkf5NLiWYjI3NZjShxEXMXRoAmkYAjrrnvyai/bChlckrvuFMO6Pm 1wiwNNTxd/Vzr+AP/wX8RACne80LLHAzZ3tjZ1W8mIiXbaHArQkaWC0QBAK2wQapZdSN 82Muxjl3GFhEKh0y6AWD5uw1g9R6/gSXov8h91bxvmEScL0U0Dy/Btg7MfCkkRZ5o0zd XECakM6tGYAB7kTkGMNg3kyHDr7GHqW18fUkKu072tzJFmuKrkzUuEPo5atwhyxqkEZ/ KdAA== X-Gm-Message-State: AOJu0YzF5C21X5vz65DDhP5Nelq/QEd9WPfYf+TDQH7DEIV7ZurfGtSD 4uYfa/FO92mEgeVgze6OdWZtRStTmzpwnQ== X-Received: by 2002:a0d:c907:0:b0:5d7:1941:3578 with SMTP id l7-20020a0dc907000000b005d719413578mr3549874ywd.95.1702348093356; Mon, 11 Dec 2023 18:28:13 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id c127-20020a0dc185000000b005d4035e6135sm3435201ywd.74.2023.12.11.18.28.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:12 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 13/35] KVM: x86: hyper-v: optimize and cleanup kvm_hv_process_stimers() Date: Mon, 11 Dec 2023 18:27:27 -0800 Message-Id: <20231212022749.625238-14-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:50 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041395831669705 X-GMAIL-MSGID: 1785041395831669705 The function traverses stimer_pending_bitmap in a for-loop bit by bit. Simplify it by using atomic find_and_set_bit(). While here, refactor the logic by decreasing indentation level. CC: Sean Christopherson Signed-off-by: Yury Norov Reviewed-by: Vitaly Kuznetsov Acked-by: Sean Christopherson --- arch/x86/kvm/hyperv.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c index 238afd7335e4..d541524ca49f 100644 --- a/arch/x86/kvm/hyperv.c +++ b/arch/x86/kvm/hyperv.c @@ -870,27 +870,27 @@ 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->config.enable && stimer->count) { + if (!stimer->msg_pending) + stimer_start(stimer); + } else { + stimer_cleanup(stimer); + } + } } void kvm_hv_vcpu_uninit(struct kvm_vcpu *vcpu) From patchwork Tue Dec 12 02:27:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177026 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469546vqy; Mon, 11 Dec 2023 18:28:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IHUUVozNhj/ZsyaG7ev6O0q7p9oE4gZkNXS0/dpYQtITOXo6yISQb2OWfdTkT57bAKnWDk7 X-Received: by 2002:a17:90b:23c4:b0:286:6cc0:62b2 with SMTP id md4-20020a17090b23c400b002866cc062b2mr5683446pjb.49.1702348131764; Mon, 11 Dec 2023 18:28:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348131; cv=none; d=google.com; s=arc-20160816; b=m0QEg9e/61YMHSp96e5yFiGmIH+VAwlMbKsv4Q4gMQHMSuyjvsaB7+WylQ7C7C5bj+ Grm8Q7Z8elP5JQ8BNexHWOYPoOOyfRDGgZepcjqj0AqYRQCjU+9glAu8ohnEOtLrXqhQ vKOD3iR/eGAv9JwMee6KJ6rgG3QjXGY3XFEku78NtS1Pdl0DzBwYgdmHcmMb3g02Fs1Z C6+wgo1iupvcNoYz3jH23vO5Fm00geHXwfEeOqwP+PLY0wIBc7iu+l5jnTbGoqc3tuWK lZGErcZy4L8a4Ot/o9ZuwwtxurRpoqWWmaZF8VRwTBosdhynAQT7kCyWTgy8rnfaG980 qzzg== 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=qW7aEi7LQrQfNXQqa0tMP+bXSv9DvWRxnTO5wl1idJ4=; fh=jh3jG+3L81uynKW/TjI5VXBmj75Mu+qB7CkIT64OW0I=; b=aOxKEJUwOu0m74BjVvYcPlfwQVhrEAC5mdCE4mQhvmhyNbfSUEFyqXweN3EIgPfPEM RnbWRd5FTdvCytQv4GxVclqeVf+Jk0rc2/xfS1nWLwNcF30rzCsknJZMe+kvUHm3HUSx 3Sjn4eZzHejKYv8RJEz1+qXnz6+9xeH6/T6cuZmcW1LUftCUhmVFAIKvM1/LcP1NzW0i TEauh30jXu1Y6Jeae7s7wTGbdhTovoat9QsDoc6QiLnyhEL5fbwZGYYdR1ifQDQoyYw3 b3MAOXA1juOswSzUwlhMTMvJ48u+dhho8j8CjfIWPyMRTTPLJ8JzQPhTCvYEhLHtjPkB DJQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=UP2a2USK; 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 y23-20020a17090ad71700b0028881bd2486si7058109pju.182.2023.12.11.18.28.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:51 -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=UP2a2USK; 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 80D50804E7AB; Mon, 11 Dec 2023 18:28:50 -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 S1345707AbjLLC2l (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232402AbjLLC23 (ORCPT ); Mon, 11 Dec 2023 21:28:29 -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 45A57F4; Mon, 11 Dec 2023 18:28:16 -0800 (PST) Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-5e190c4ce5cso7278287b3.0; Mon, 11 Dec 2023 18:28:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348095; x=1702952895; 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=qW7aEi7LQrQfNXQqa0tMP+bXSv9DvWRxnTO5wl1idJ4=; b=UP2a2USKrShHVJmc1pJ1JxSxP+Uf1oT1csatlzz41PBAewtD9P1DcJKNUlap36t+AD wM1pBSk8EugNFNkOSBBeaNRbMzKLPYgT/LUh+t90Nc1Md93dtNBGAkKm+nXVQE8W1oBt DdrLAJ6CrKEg5YtnywkJ18RLYs9Ha/i+BPwNpmODqD0hVmgL60kq1H3D5KuPhkWIx3GE UOnobVybftCui++I49oc4XLM96HwVHtl5m/qTPnKicau3YnWxWzV+j5YazNxtooC8xcU I/Stcrfo+vJ4F65XOBiS7TtuLpl25WmZ38RICcnv8g/2VqHk7u5oTdGMhb/jKzN/J2SZ RrmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348095; x=1702952895; 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=qW7aEi7LQrQfNXQqa0tMP+bXSv9DvWRxnTO5wl1idJ4=; b=vxarRVFk130coVv5D4DZy9W2YKN2OK3lvg3BRW+rmj0A54yDG06t07f7shRg512FII H78ouAMWEMATHeRhNMrd4X4DdjBAfNh0/blIQ6M8cDEAB8k49B6foKByNB3xwFK8MP0/ bhllF+EuBGlWbcXWAwlS38BfoV02noWieH09uLO4uC3uGDtXUqtlho/MRUFGYhgm+JFr vnldwrXXB7NPnXXwdFL7IfbmMsGckuJTzGcshYxiNdoCmN9lnxFx1xYp7pFx4mGV0xj7 /OijCe4UWk3VRVl81/tf/QKuzrQlBPAAkY/WjLFROpJ/Rw84REgzk2wrUV900538X5+u yVOw== X-Gm-Message-State: AOJu0YyeaUPNA3dDmZP7FFgS/3QAgSfkGsj1Sk7XQF5d9JYc8zljF4xk NQttpwk3CXR0q5wyKHfQUJJM465zD6JzAQ== X-Received: by 2002:a0d:c9c3:0:b0:5d8:164c:7e6c with SMTP id l186-20020a0dc9c3000000b005d8164c7e6cmr4024379ywd.26.1702348094876; Mon, 11 Dec 2023 18:28:14 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id ff1-20020a05690c320100b005e173835ffesm557743ywb.105.2023.12.11.18.28.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:14 -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 , Bart Van Assche , Sergey Shtylyov , Michael Kelley Subject: [PATCH v3 14/35] PCI: hv: Optimize hv_get_dom_num() by using find_and_set_bit() Date: Mon, 11 Dec 2023 18:27:28 -0800 Message-Id: <20231212022749.625238-15-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:50 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041394350746576 X-GMAIL-MSGID: 1785041394350746576 The function traverses bitmap with for_each_clear_bit() just to allocate a bit atomically. Simplify it by using dedicated find_and_set_bit(). Signed-off-by: Yury Norov Reviewed-by: Michael Kelley Acked-by: Wei Liu Acked-by: Bjorn Helgaas --- 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 Tue Dec 12 02:27:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177029 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469569vqy; Mon, 11 Dec 2023 18:28:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IEJ5SCoHFkeY2DRo76EhiT4qs1uC22dhETAMhpT80FEDeiMNpHXrGtmlrBVL4cOsIglnWFS X-Received: by 2002:a05:6870:315:b0:1fb:75c:4003 with SMTP id m21-20020a056870031500b001fb075c4003mr7558632oaf.99.1702348135441; Mon, 11 Dec 2023 18:28:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348135; cv=none; d=google.com; s=arc-20160816; b=uS4AlvKIwSTHZGvwB9C+AS1Bg4EwfAdMkipX5edd2OlPlt3/yTzC+WvrOq24E70YGm GrMRyZ9zFgO8gF+vi2u0MmOnRnW66PQGYQys4Gzlkgiy2eD5uwzXXAvRPOw+cHorrR4f EUtbrmDE//Oai9GvxFg4JqKyiv9NzQmXKvk5jy3MvZLPbjtnNt1lUl7IjDICMlMvYfza x+cncJnfLcsHPCDwX0ixvnkahRfovACfT6I9DrCgwGYGmOsAy6BUp6P3cSkhXpI9sliP cc84js11D6rsccpJ8z/mnWL8b/lvEFoVFBvu7FJqux9JHivSgSarp1SfaSfcx4X6M2mM SFyw== 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=4CKJG0QWFDRGpjAibRGhHIP11SM03HdEpZd2mC7AZ0Q=; fh=+YcVigSuoCqMRHH+h9JGZGsEUjb5TQq05z+vmkGHwIY=; b=Gl9VCBXam4XH2TCPkOpJoSUzPlSkoNbCQ79vzOLVlXqe3La282J03TktZ04eBcxGyM d0kxLFYCJv1eCZ6nvt/aIEDICaB3+aPmnGbb7IUSPjSWOaJtRrTbMFT/yp1Wn8PRl566 duJHuZxMgvat9JfsHZW3rPh9Dn2YyHMOOqcf9hLKaDBt7azZQ3641XRhJOfDylxFThap Ph6VqRHeSMkIUL4iM1wLdF4AQLq2fco4Rjbnsa4v4yfpEKOJMRtJp5tT3gX5QhTQqnCj sbKH1hFGa66PriDOnAQFWX+2xKKQb3GpjN4VlC/N+FbJIQNjW7WLSYIoKW8Rvf4H0t7z Mx5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Gw2B8i2Z; 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 199-20020a6301d0000000b0057745d87b53si6877262pgb.686.2023.12.11.18.28.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:55 -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=Gw2B8i2Z; 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 4B9D5804E7B9; Mon, 11 Dec 2023 18:28:54 -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 S1345779AbjLLC2n (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232511AbjLLC23 (ORCPT ); Mon, 11 Dec 2023 21:28:29 -0500 Received: from mail-yb1-xb32.google.com (mail-yb1-xb32.google.com [IPv6:2607:f8b0:4864:20::b32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B64BE8; Mon, 11 Dec 2023 18:28:17 -0800 (PST) Received: by mail-yb1-xb32.google.com with SMTP id 3f1490d57ef6-db53f8cf4afso4217026276.3; Mon, 11 Dec 2023 18:28:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348096; x=1702952896; 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=4CKJG0QWFDRGpjAibRGhHIP11SM03HdEpZd2mC7AZ0Q=; b=Gw2B8i2ZDxUP+oP5D9HXJGW9mgoGNCdB+aBNZImdcfGR+Z4vuS0rjdz0qOy8bIQv3A l6zfgaua0++Bj6lkn6d0/Fklf11Aq891lJKqooLWpqdIlD4R2dMLHVQvmdP/eRfJyJo9 3hnqkth/I5gJo4hr9hX0T8f13KqkWEgvQ+CPJXfFolekk7IQSx0UjGFbTtUD2fe9WqaE LLq+vSs03pTIfwxsrFxw77/En5DP6OGVX9n3ZIp3Acj7wmP7TC9wyEMSs3wphJRH0tQU UsuESDbXyD68iRepKKzgIXYIW1xi9CHV28qMl6+LnMfx0V6c+j6031AK2EOWjPA+HwEm 0zVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348096; x=1702952896; 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=4CKJG0QWFDRGpjAibRGhHIP11SM03HdEpZd2mC7AZ0Q=; b=OletdryjyntYLxSDZwtyj44bdClNuZfHfbOwW7xkWqxJYtd2nzT8jaR6zcwEQ/p1A2 L8gTnbrbiQpp28BgmOl2uwxdgFVRX1oxuhkWMz/UsdjQEGOVWbvNNvK3WSQEuoqfdN5W RvpZJs0a/k80/Qc0T+rl5cfl9nmAyXaJyO5TKo7ofadOX0PlQ7zphOpIAwjsSBuVESFv P0g7zeNm97ag2iuMT4dwgLmV1peBo0NiJokdY7tX88/Dj3eTHIfClPGx7mkyhGDlNJfR GmeSeoFOzZd3DVta7JojbBmTTc0aam+X82BdtMhY5KqT+cY9O8LtSmdcTj6S3pJujxCK sknw== X-Gm-Message-State: AOJu0YzJgFA+DIy/AkBjZ/qGdWXhA3mqN4+TvOtLusloTz/YbdcE+6ix 7WyYnHgx3rWvxa8q5YDCsR2pjuG4rUF05A== X-Received: by 2002:a05:6902:1ac2:b0:db5:48f9:aff1 with SMTP id db2-20020a0569021ac200b00db548f9aff1mr3726685ybb.21.1702348096184; Mon, 11 Dec 2023 18:28:16 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id g13-20020a258a0d000000b00d8674371317sm2881700ybl.36.2023.12.11.18.28.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:15 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 15/35] scsi: core: optimize scsi_evt_emit() by using an atomic iterator Date: Mon, 11 Dec 2023 18:27:29 -0800 Message-Id: <20231212022749.625238-16-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:54 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041398223464890 X-GMAIL-MSGID: 1785041398223464890 A plain loop in scsi_evt_thread() opencodes optimized atomic bit traversing macro. Simplify it by using the dedicated iterator. CC: Bart Van Assche Signed-off-by: Yury Norov --- drivers/scsi/scsi_lib.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index cf3864f72093..a4c5c9b4bfc9 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -2494,14 +2494,13 @@ static void scsi_evt_emit(struct scsi_device *sdev, struct scsi_event *evt) void scsi_evt_thread(struct work_struct *work) { struct scsi_device *sdev; - enum scsi_device_event evt_type; + enum scsi_device_event evt_type = SDEV_EVT_FIRST; LIST_HEAD(event_list); 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_from(evt_type, sdev->pending_events, SDEV_EVT_LAST + 1) + sdev_evt_send_simple(sdev, evt_type, GFP_KERNEL); while (1) { struct scsi_event *evt; From patchwork Tue Dec 12 02:27:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177037 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469725vqy; Mon, 11 Dec 2023 18:29:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IF8aWdfj09KTJuQlDPSKkSN49ZBGyt5PmJsjmeOySvJrGHDA/Qjl0jRN10Ql1AZ+hxmlkRs X-Received: by 2002:a05:6871:820e:b0:1fb:36b:59ed with SMTP id sp14-20020a056871820e00b001fb036b59edmr6545447oab.13.1702348163005; Mon, 11 Dec 2023 18:29:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348162; cv=none; d=google.com; s=arc-20160816; b=yaxHVLXRjbPW6tly8UkVr2XcV7SqyltwGu2/m6ym9ovMHGHefj9s3CMC6VB32x5nHp KLC1+MzmbQrZPkSdqUk4vPthmMBoEDqbOsOfj1YQAurzO0Dy/N0pT6f9Ro42X5QcizD2 HfKAaUYC6E36mz/FLfQcvTe3IsVpAzGyufcPs062pgQKXsWqze9lIoqtVziGTfL1zyTv xvWjmMPVIHX8+0KDvSQaq/qwFgWFb38InnkMJgMO8ZkMV9MCUEcVg2l0MGVB4s3AQ5sc xtMwGS7x0Js4XvQ9vvCIx4DKw6P0xRyF0zWxtLl5TMWGEfnmHTjMwix2BgMmms/P3X2G 3Z9A== 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=czhSXAh440OIvaVFdm7Ai9lj2nzvHorDl5GV/YP7fGM=; fh=+YcVigSuoCqMRHH+h9JGZGsEUjb5TQq05z+vmkGHwIY=; b=v0yXU1okleTJGbpPdJkdh4iQIdkkEgNYfkYKf/vSgY77qM4j+frennjZPqcBeAgBJ3 klKIi8b5qEeSdqdq6YNiKn27E1s6txrK2hrrK96F304l2sOn975Ed0TT7+6bYnaPEzx/ D0XdsZXoskiHSJBwqk05/1KVsa4vk1UtRTtNYhuriW02yRkVQSEnf2vBB9ZhIJGsA70m yhOaozRoDR8KEOGfleeSOB4GFpQp1nMZquDw6/kiDQ1IT8tAmMlATAIixKmNdWEAbJ3u 3ZvvqPoEUbIz4vOGyrd0ICdZrNUYGmcasPtfYa5vN1RVcHXih7l4+SL2FTPspGlX1Tm+ yq5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=BjtRSh3I; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 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 howler.vger.email (howler.vger.email. [2620:137:e000::3:4]) by mx.google.com with ESMTPS id z9-20020a656649000000b005b9602a7badsi7055365pgv.688.2023.12.11.18.29.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:22 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) client-ip=2620:137:e000::3:4; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=BjtRSh3I; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 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 howler.vger.email (Postfix) with ESMTP id E086D80B2D5A; Mon, 11 Dec 2023 18:29:16 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345700AbjLLC2r (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59406 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234959AbjLLC2a (ORCPT ); Mon, 11 Dec 2023 21:28:30 -0500 Received: from mail-yw1-x112e.google.com (mail-yw1-x112e.google.com [IPv6:2607:f8b0:4864:20::112e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B52A9101; Mon, 11 Dec 2023 18:28:18 -0800 (PST) Received: by mail-yw1-x112e.google.com with SMTP id 00721157ae682-5e176babd4eso9934877b3.2; Mon, 11 Dec 2023 18:28:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348097; x=1702952897; 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=czhSXAh440OIvaVFdm7Ai9lj2nzvHorDl5GV/YP7fGM=; b=BjtRSh3IWCNseVR+csP0ND2JJ0Ub+jnuOEp4oGWSaWCN1drlKOmgmgSWc6bRzrJSaA fR35bKHhVhuWVILPNHLofkGU+9fJyDOqZPgBIGiBxXLxihAq0UAwShB3y/50n9+Ui/3F MYE4716zFe/nJFMS1/gnDbrMYH926oY0BaSXeVT47s3z86TQMQqUNzRyXgclTCShZKbv KKRhLJDlcx65+gFsFCmygNap+54/G5vD4TZ7SZFSVkJ2UKNmUTNVnaItJn8DCBsoSgtf vXU6AktdJ8JJARirmLNuoF9lHycNzU2BBvN1lP1C1S9uwb4k+Cgs2isWHhLac0DNgYZ3 WgVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348097; x=1702952897; 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=czhSXAh440OIvaVFdm7Ai9lj2nzvHorDl5GV/YP7fGM=; b=LzaIK6rWRSFJeyffNHUovSP0Ib3NbOZD2AF8vm/jfdFxEtUOGaCkcf2T45JvttGjeu geIWAEq8L6b41IUQah/WBrKvYycpNpYHmQWVBILdNpEHsmV0UxBqv4ccPZuitFpOYWFa lHIzizB0M0L1JZ5nbhLSaAu+RCrJe/pi1lySmdEsKELtkkMoquFFv6v8kT2QWChsVNCV 3260mj53uM5zFLDVBLGGTITbfOidC/MDl1wvkYsFgjQwrRabapKKylphgwmUVpMlyUqg 4VDN8ChyXep8EE+VogWFTiON1EdSxXuA+qB2tcKnn+qgv/ZjDmLLpH5o50IcxD5XUDDA LmyQ== X-Gm-Message-State: AOJu0Yx+7rdHeOAB85DCHaMeJuwwmFX6/3hIwSZ0ikrJYqo6/WCgMnfc +lAgYQrO2l49B5i0HjRD9dxj0T8dxPX68w== X-Received: by 2002:a0d:ea56:0:b0:5de:7be5:b0d4 with SMTP id t83-20020a0dea56000000b005de7be5b0d4mr4526608ywe.23.1702348097341; Mon, 11 Dec 2023 18:28:17 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id l5-20020a0de205000000b005d37278f973sm3440959ywe.36.2023.12.11.18.28.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:16 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 16/35] scsi: mpi3mr: optimize the driver by using find_and_set_bit() Date: Mon, 11 Dec 2023 18:27:30 -0800 Message-Id: <20231212022749.625238-17-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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 howler.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 (howler.vger.email [0.0.0.0]); Mon, 11 Dec 2023 18:29:17 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041427051389673 X-GMAIL-MSGID: 1785041427051389673 mpi3mr_dev_rmhs_send_tm() and mpi3mr_send_event_ack() opencode find_and_set_bit(). Simplify them by using dedicated function. CC: Bart Van Assche Signed-off-by: Yury Norov --- drivers/scsi/mpi3mr/mpi3mr_os.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 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) { From patchwork Tue Dec 12 02:27:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 177030 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469593vqy; Mon, 11 Dec 2023 18:29:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IF8tE5ceu1+gzubUpuJ9KrhqJ5fZnbMZLhGPor9lw1U/gANkL2DuWr3EgS7MPQukGe4+NLB X-Received: by 2002:a17:903:2343:b0:1d0:6ffd:9e0e with SMTP id c3-20020a170903234300b001d06ffd9e0emr6161412plh.96.1702348140358; Mon, 11 Dec 2023 18:29:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348140; cv=none; d=google.com; s=arc-20160816; b=WdASp87pyx0a9/ie/qTZ2alpzwWjd1TKKMkchv1gokglvRRkwbxg0bWLqIZLbLgV8T owTQoP4CoRcuRCODLRG24k0CxX102ZDzpL2zooVKKRNIIu5BSD2m5VTo1q5CIPzKGi+y T2wgN6BAxuuLHu0HuMAqckOFIWIQ0hjp8eN/vgDpTZmoMkZezEq/hmywcaMvchz5mVfW PBcy04749xlqMWaC6oxvsS3q90qUBDhBoOz5JKGONuMeU1lsXRGBXA/B3vVH0Im1kzOu 5MTvhNU+OX6Sp7wmO3w25d4TrJl7wzypQlWTkRu/SP+tHFi0am9M23JkSu5jINTcCSMT tOQA== 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=9tKG4WVl45TB2YunCHhniL08YBM1/uYaQavYz+dOQLk=; fh=+YcVigSuoCqMRHH+h9JGZGsEUjb5TQq05z+vmkGHwIY=; b=p4OvMzrgzrSWXcMRSARJUm8XJyiXna3dhvf/Wt7Rt6nB9GBIsOYRLmdmFPxarmdB79 H9m2rYfHuCfJBQural3+75qGGZg7dk+TAsXt47qC2K4djGeEqcOQrTIerTZVKCrCwv64 ynoypXRD3MwJW5qktN0Z3cWLHNvkwcGTc1G0ii7u04G1XDKO/UeO4pePEeQt6Ub03C08 a0qZc9KAbB79RFq6nuImNI+5hBQn2Iy2pbvsEh3Z12lUEqpas7+oTOW5XtTb228lpTKW alr+tUw6jw//TrxbNeNmJB8sVOwp+gJb9cfCWXoevUYViznxt4Ajytc+iD3H41OvbE5R fzwg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=c5Do9fdr; 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 ji13-20020a170903324d00b001d058ad8759si6949896plb.533.2023.12.11.18.29.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:00 -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=c5Do9fdr; 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 62AE7804E70A; Mon, 11 Dec 2023 18:28:59 -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 S1345831AbjLLC2t (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59420 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234973AbjLLC2a (ORCPT ); Mon, 11 Dec 2023 21:28:30 -0500 Received: from mail-oo1-xc30.google.com (mail-oo1-xc30.google.com [IPv6:2607:f8b0:4864:20::c30]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 49EBDB5; Mon, 11 Dec 2023 18:28:20 -0800 (PST) Received: by mail-oo1-xc30.google.com with SMTP id 006d021491bc7-591341db3a1so70488eaf.3; Mon, 11 Dec 2023 18:28:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348099; x=1702952899; 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=9tKG4WVl45TB2YunCHhniL08YBM1/uYaQavYz+dOQLk=; b=c5Do9fdrvNlgsvxKmOXubSHYbw5IByjEzwLXYzvGflKFUIzahrCh4MfD5RVyWNb3zt hECclnmOhcWHyA08AaE2pITiZypfnVCbcVYypiwf7YJe2dYOOr131i2v8deaKEW7pUFn xLEUVslbrv+sbTZyfvzXAI7XAY2B5ZnB6ytx0thxNhx7rgqQHwUXHnlyspPZQHuc6ShH 4sUEec933NbAXVGf/4+CTWSlskR9GRL5tF+iCMzGlG4pXwutBoB10YiNwoak/Jm82r+Z oThLNI3Qqv7RpiVPGd/8NAcmEXkQroLC4lAJBqmc8+Xh4XcjxWiwlzdZegP/RjyD7KML qGIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348099; x=1702952899; 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=9tKG4WVl45TB2YunCHhniL08YBM1/uYaQavYz+dOQLk=; b=D2K0Siqo9v4vXwpuZniBmMA9Z9A9iGBfPIw0GrPeSuIGB6/MiAOUqcWUwD5h8U8KmQ sWSZAwd5Bsed6PqCBn0YVX7FNzsE4Pbnrt2BkE9Xfo8FFf/XQxu+tRHII4ztgFff4A4a +/VN/WBmpgsb4KKMM8/l+rcR5Sg1nMCBL4Ucqm4nhkJgAwQbCMw2R3X0ZqBuMi3tlt52 p4GQVPRjN0qhv7P5WmS9mf4etXRLP3/+ou0RnxFjGFg+5V769qxCdKB2pXnX7CKs2pjs gmjj3noX7gjlK2s2eDT7p1YbjHCfrxLua7pWC+Q/dE7dsGuxpl/QtgwtmLx2l2ZAgoJW VY4g== X-Gm-Message-State: AOJu0YxcG7xRaIhP9E9Dsb5RptZGwI51i64bpQ6EJbOZgz9NPxWt3Nvl aO/tQRlwugXEEQYEslMI4/yOqYrdj4LvPA== X-Received: by 2002:a05:6870:7ec4:b0:1fa:f7b1:b6d6 with SMTP id wz4-20020a0568707ec400b001faf7b1b6d6mr5231672oab.55.1702348098544; Mon, 11 Dec 2023 18:28:18 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id i187-20020a8154c4000000b005d40a826831sm3435431ywb.115.2023.12.11.18.28.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:18 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 17/35] scsi: qedi: optimize qedi_get_task_idx() by using find_and_set_bit() Date: Mon, 11 Dec 2023 18:27:31 -0800 Message-Id: <20231212022749.625238-18-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:28:59 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041403602304939 X-GMAIL-MSGID: 1785041403602304939 qedi_get_task_idx() opencodes find_and_set_bit(). Simplify it and make the whole function a simiple almost one-liner. CC: Bart Van Assche Signed-off-by: Yury Norov --- drivers/scsi/qedi/qedi_main.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) 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; } From patchwork Tue Dec 12 02:27: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: 177032 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469636vqy; Mon, 11 Dec 2023 18:29:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IFaJqAKPfSk1F4n63Wv3r1MGk4kIK5QnqndoMRBXyNPf0g+aeqxNJ5MYV6KeRvLCGnAFi0e X-Received: by 2002:a05:6871:e80f:b0:1fb:75a:6d37 with SMTP id qd15-20020a056871e80f00b001fb075a6d37mr6539262oac.94.1702348146601; Mon, 11 Dec 2023 18:29:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348146; cv=none; d=google.com; s=arc-20160816; b=wPiGzBiMfx9IS4BVwl3SKMyObLS3WQhYi7saBxEUhYUbqhQ0354U8IcM+AvAHq5D/n bCcg/VoshCle4NbKFbqMgRkNq6ECVCzhpy5TGfWQZcZkxr3faJ/DOnt9s/Kht48JfTT7 6sc2lUMq22zCxRvFiPtnJHhZKuyoqEa3/D6h+hVfiM2dSqRlJ4qdccklKpGpYMcAxHQ5 8ZsR4sa7qYpOQdbp+65cr8OPl9Ig0cjMSFPmytPQcl3wiA+TKHDm8Yk2wu2ktyjfHDz5 yE/c7ud4cilyP2Ai6/4Ep3qBrQakEY6FzDW3vOI00uwgA/43QZXSAqfaQRny28ABmtUH SnDw== 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=cRG7J1XhtxmqjKk8mPyX2ntR1/BM7lRJBdNSI5UPjng=; fh=0CfFrQyghRHoGPHkfEko4+Q2a+92pfCCdAqusa3truM=; b=hpVhKGsD8UaBY0BMZMXhNJRJ6HO/gRtat3rr4J8QvfXYiYgA1rMQ04fxIEEIv+aaWy XEZecB6dzJHR865+sFzk4GnGE706uqZMaXlHIcjOhCVFfshhHV8PGro8zqblN3MGXuC8 hXu0l5xoxPq7JNkX0IO5a5ca0JBUVgW5k3Ex49yHXEk4MxmaAtO9bSaFm/jz551lRSf0 S2x+Z4fft88aBU+CEzHAK1lQlZxl9IfUVACAjiNkpLCm0H/0QKrRHQLcdCrgl/BCDlkg NFKAdlNKNiIUwOFRp+cW+YwcOg65UkZIc6lJE2qJHa62z4fwAARAHiqDXLCH0pAp3LrF OD3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="dh7KC/Sm"; 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 j27-20020a63231b000000b005be327e08afsi6950517pgj.224.2023.12.11.18.29.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:06 -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="dh7KC/Sm"; 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 A22FC809C15C; Mon, 11 Dec 2023 18:29:02 -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 S1345778AbjLLC2w (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345728AbjLLC2b (ORCPT ); Mon, 11 Dec 2023 21:28:31 -0500 Received: from mail-yb1-xb32.google.com (mail-yb1-xb32.google.com [IPv6:2607:f8b0:4864:20::b32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36768D2 for ; Mon, 11 Dec 2023 18:28:22 -0800 (PST) Received: by mail-yb1-xb32.google.com with SMTP id 3f1490d57ef6-db548cd1c45so4754297276.2 for ; Mon, 11 Dec 2023 18:28:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348100; x=1702952900; 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=cRG7J1XhtxmqjKk8mPyX2ntR1/BM7lRJBdNSI5UPjng=; b=dh7KC/SmTEaQFhWvABinw27Psg2pc37hmo3Ycxfyx9eXjx8h8ZNP3a02gFsiJFg1XD p8lBQCtqF86u/hsMdEXJwerT6zDx9Id6tarrxmKEhuygHmtPqUlth0W0lNgoLXQO3Reh vVxmxgsIqQgWZrEL6qfgt2LUZOfYXujFOJbV+ZGeetaRTY4+ePl11mpEJiyhIQI34+2X yDxyRuApXIDMIuYDsB9yAD35+lDXRIXtxGqL44yZnFYeKV3BHCzTdXakPtO/KME9Hf/b m2V2EYdr0CHGcttIl/kcOfLvJ8MNBdVqpZDCQi+61v785ocKk2/YeQMJDXfjrYtFEaAr MBNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348100; x=1702952900; 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=cRG7J1XhtxmqjKk8mPyX2ntR1/BM7lRJBdNSI5UPjng=; b=SLBcISXYwuTKPDncDcI4+ZJb5U+9QnzcVrLONtUiGn823ghY6lKZTiHlf/+KZQN2DD LRM4UHu8y0ohmaqEVGMBFxMzBGFMxMb8srO/kWA6+eW+f/uUKvLbvPLfyI2yPKDL4b7w Lcg6hJs+43hxiktqvvbh5dU4tluJ8wph4eR8esjs2LHTYSW+dTaCRLGzvkF+5nL9G9zR ue4MyLrvJxoPhHz5KHl+OSAxeVHD/IlT1RyK/Rlpwqxrka2zoL8FbsDSkqn8xAvT34Uw B+sbDTWMhWpayV8WllxbF1YXtBG//UajOP7Pp/Sa+pzl2IcyDQc4lT8kIlZtBxxtUp6y OAqw== X-Gm-Message-State: AOJu0YyatXtI11ZcY2Blz6PyC2vz6yf+BtMc/a58EiDh0ek5kUETTv+s trJI3o1CaAe3t/CW6kKe1QYqBBMTHqw+gw== X-Received: by 2002:a25:6b52:0:b0:dbc:af4d:e1a6 with SMTP id o18-20020a256b52000000b00dbcaf4de1a6mr1177824ybm.1.1702348100254; Mon, 11 Dec 2023 18:28:20 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id k15-20020a056902024f00b00d89679f6d22sm2865838ybs.64.2023.12.11.18.28.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:19 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 18/35] powerpc: optimize arch code by using atomic find_bit() API Date: Mon, 11 Dec 2023 18:27:32 -0800 Message-Id: <20231212022749.625238-19-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:29:03 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041410187899691 X-GMAIL-MSGID: 1785041410187899691 Use find_and_{set,clear}_bit() where appropriate and simplify the logic. 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 Tue Dec 12 02:27: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: 177031 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469633vqy; Mon, 11 Dec 2023 18:29:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IHtGfsjlRNRhp+JS4nwDkRvCPWCQs1IZImj00VZUGwA3mJzOmj0HQX3UNNcLr0pbOakkzlP X-Received: by 2002:a05:6870:d90:b0:1fb:102e:8fae with SMTP id mj16-20020a0568700d9000b001fb102e8faemr5624137oab.44.1702348146158; Mon, 11 Dec 2023 18:29:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348146; cv=none; d=google.com; s=arc-20160816; b=nvm0ucd8BxfieLINc9LcilPely4VtY6AiULEaautO0R0MDzJEWhZ8sbSriApGc7kDH n4eBvDePsKKhT2aBnxhlBXZ1C0vn26djQeD6PnqRz/zUAQFsHlxri2WZ3SqAKwXRQEzh X9HAERTyRB/lKFzyViEvem2Pogun7EeFWmlt8zhqsyrKCZjj+B7Jy3KbbSPJ0dBnMokF 0D1p/Z0KTxC/f0862Jz6B6/GeIctEIQu5CYUYM9nGuNPXr+in+fkUTw+drX6PWCzV/nx Gn9gImL/JwM65O7T+MMn4/7G8lVq+Hc2scgdgPn4Q3M+b5JEPm9s+MzFJ2jfKt2mfHHo VNQw== 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=GRgDjRdiQ3wMwyUy9FFnN6Mv3fA6CH+t16OZs0Rwzhk=; fh=BhmH+vGLqxMTOjZiZjVlP2VPA8f274kWn4HKEVZSZ8M=; b=j9QMKySpTAu3lRmEsU0QoYNn3PZgCr9QfaMsVq/KDkheUGrikhPjl7NbTvrmYX8vYq QBX5h16Bz+5i+BBCbY/8iMJuy/IphWL7P6T2caGMKmMmjhDj+wiuCvM3eyKSV0ZInyYw +lVsOzatQJde3pPyOvwuYUJAgyZ3lhdYIwVAo7T9bS2gLmELpvrNHDbPGbr0kwtByKl0 yp21TW1raC6UnU82QpzrQOblfQ+H8e3fcgjqoVk8nv2EteMz//++zSh6c/6HdZofsWu5 5eO+tAHaoVqwlli/33dha5ZgGa8bnk4CELg4RNvBKSKrzJyMKO/lb1GCj3FuwVWFYCAj M7Pg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=njGHFwOt; 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 s2-20020a63f042000000b005c6859735fbsi6706487pgj.770.2023.12.11.18.29.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:06 -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=njGHFwOt; 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 F0958804E7B3; Mon, 11 Dec 2023 18:29:04 -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 S1345840AbjLLC24 (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52270 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345735AbjLLC2c (ORCPT ); Mon, 11 Dec 2023 21:28:32 -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 9804A10A; Mon, 11 Dec 2023 18:28:23 -0800 (PST) Received: by mail-yw1-x112d.google.com with SMTP id 00721157ae682-5e1a2253045so6491137b3.2; Mon, 11 Dec 2023 18:28:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348102; x=1702952902; 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=GRgDjRdiQ3wMwyUy9FFnN6Mv3fA6CH+t16OZs0Rwzhk=; b=njGHFwOtcDU42X9C7bBuGmJbwSuGJhDrZkqPkOqBFbG6PPFGLe9QBiGaBn15QlYi8W jVjA5H367FKG7+ERQpZg3RsW2a8hvP9g/5/kFgNk3oAOGRP7MbTmwffPMUs41SIj/rBE F8xlM5uNC3dhHL/7ek0Cw3b6a+cRXg0HNIXtj5Fj45L1iPCuHFWqwVQ/qKnXLss41AhL ahrgvw0tZSFa0P/RMkrJ2wmvtwy/rvAQW8HY3M4OuW1bcpfji1Wb6vcieHzgjAMCBMb/ NNN7sHxDh8lPEu9dMBzo0GOEkDr5EqYVLwi9c54O2LrQfXiFyy3drfinIIzCVb13d+8W FX6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348102; x=1702952902; 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=GRgDjRdiQ3wMwyUy9FFnN6Mv3fA6CH+t16OZs0Rwzhk=; b=O3MDm5aAelhHdsp4jyWghMYO4ewkiW+/Mi/rhbfVkh9/wI5SBvYuKMOK+ypc6wXZIr HAUACqBEogR5H7k/SFGsPdF+tP6O7jdBK+FFZ7PzRyu8Z1+SLlVQxVKjCycDNPrFIrT/ uokqGASXUcoUs9XLNve/bfp5DTz2nUS+gy7cVKXBMdhMDA6qE+H1MR5SiwvvOl64GAn1 EfF7I0j6KkXYrIqZuQryvsTJDXEDl3nR9QKJx/tcGhVyuW8TWcHu6mD4xyKbRLxhz5Gq TlSVvaL3zwN/q3KUlm8s6McNE+cYL+lKK+0ZjVyzodvucxFnLTRzcPo87GGBoKchRCy0 CmCg== X-Gm-Message-State: AOJu0YwGZOlwEXnFsNXaEs1xOGwxdIS1lgzea2STdnQAI9MoqqfyWbQq Uo1SaVDI48R45TEoFY0wvl2/aDC/QaPKjA== X-Received: by 2002:a05:690c:2c0a:b0:5e1:8405:8b3e with SMTP id eo10-20020a05690c2c0a00b005e184058b3emr1116070ywb.44.1702348101890; Mon, 11 Dec 2023 18:28:21 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id ff9-20020a05690c320900b005e184771849sm519809ywb.93.2023.12.11.18.28.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:21 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 19/35] iommu: optimize subsystem by using atomic find_bit() API Date: Mon, 11 Dec 2023 18:27:33 -0800 Message-Id: <20231212022749.625238-20-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:29:05 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041409454788117 X-GMAIL-MSGID: 1785041409454788117 Simplify __arm_smmu_alloc_bitmap() and msm_iommu_alloc_ctx() by using a dedicated API, 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 Tue Dec 12 02:27: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: 177036 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469722vqy; Mon, 11 Dec 2023 18:29:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IE6ka8t9LmQLdvgeS5IFRP1c5skKRne1/J0leDeW7g4tw4SvxUG99Rq4pGXed3FGXLm1Viv X-Received: by 2002:a05:6a20:5523:b0:190:89fa:6b80 with SMTP id ko35-20020a056a20552300b0019089fa6b80mr5305206pzb.55.1702348162270; Mon, 11 Dec 2023 18:29:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348162; cv=none; d=google.com; s=arc-20160816; b=xE1nukH14HySqXPcuU+lt2Z43BtkVRB6mx6202jvxgv0PALr0xIVPyF1KoW7fw5R13 OLLHYxK+UUdDgg3AXXfr9smMTgzpe44O1pXsxObhls/GSt7IlM7lv2aM+jfW+5fsq2AU PZNpm2TXxeOIS0QlSnjjvWEn/7uMZIXv7lxQoQA4CLTEGHPol2gbr5kmlPctrpyz7CUr bTNBdS/+wrrKczoqbdox/GdAPkIp4la79XJa7BIBufaxNQVxU7OaRcax+gIwONBih6PA N0yVhHX9Goi5HSl49jmgKSXFmFMHJZBg1wJWeqImxoE/5m8m+lsbfve44nqDCVCxQN38 eW4Q== 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=va2vHLw3Ty5+9zMdFDg2qigI4FO7sF4QYmqp/MMfS60=; fh=DiOpxWsD+8RybWdwPw2SfcV/7EtFHxK9Nbm4qWXpyK8=; b=ocVsY56wrpkhRlI28k+TzMaCDdZy76wOH3qf264MTaHYHywUtgIt9evJ/wdtKg0bWv AmYhKnaztPvlyqkn4oEGrV8hxgd/80PrruC+u0ofGrMmqsDfd7aizjogPqH9eGIuJXMU SV6nCJQgedLvAUmibHjpq7Vy7CuuLaBHazpoaHDdC1nnOxP5AhwkU3N0IOMuijkfuT+G wLD/H8ovEv8TVSFu9+Vzefbj9ybiqJEeXaACC2ME9tjIU04mr5bL8wki2LmMiTrbECIp HG/Lwdd4fwWaVGi5sOaalED6TfRB6AEJpT0tjO4QdnW8X+xsPDtd9N3bH5idEfycVfXj LQmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=RE32qoJK; 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 19-20020a631253000000b005bdd7cadb98si7127314pgs.54.2023.12.11.18.29.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:22 -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=RE32qoJK; 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 ACF8C80A7769; Mon, 11 Dec 2023 18:29:18 -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 S1345860AbjLLC26 (ORCPT + 99 others); Mon, 11 Dec 2023 21:28:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43742 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345740AbjLLC2c (ORCPT ); Mon, 11 Dec 2023 21:28:32 -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 F3C5710D; Mon, 11 Dec 2023 18:28:24 -0800 (PST) Received: by mail-yw1-x112d.google.com with SMTP id 00721157ae682-5e190c4ce5cso7278907b3.0; Mon, 11 Dec 2023 18:28:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348103; x=1702952903; 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=va2vHLw3Ty5+9zMdFDg2qigI4FO7sF4QYmqp/MMfS60=; b=RE32qoJKos+jUKofbWoUByihuaOXfd8fS/GWiJmLeAilLLxvicnfmMP95bKgkpv0OE njergsGPHQQ1bJDG6NjZCtP8sbMZaeSv21rKqTUdhVtVfsQJVMempODuu3lr9p2NUebg awgllwTB7eMfCC5RCt6HRcCmmgjWxCjeNrI8pQl61eH5JDRNmDX0kQxQfNabh8L7r044 1NNfS7TIFqhNt946jEidL1gC+HCP6rd2SgA4nc8gG7ixMauz3GX+UnNQ5Qy2KTA9r80j 1B3JH+NsejlWPu9cpxQXhrApvCL9ZNwlBvMNoYTkt5MTsm7Jlx6+4aDLjXNhcMU+vkYk 6b4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348103; x=1702952903; 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=va2vHLw3Ty5+9zMdFDg2qigI4FO7sF4QYmqp/MMfS60=; b=ih+wKtDEX8GyvLC/CKWz7AH6EImF9MSVa+2eqPqbL+CZ8tRDyHHi8Slh7+miXSHL6Y XAVX5GBndRLKKpeuUZXKSVtbDoPLhpeXl5woDdUQJm4GFArXV2PHHiJFZCsGAqV0GlgL F3dqLN3FON/Kk9YS4pnyTBRx7OVXfPn5VovMRRd99Yflvv21/wkNBO+PKd9gQGOuSx5D Lm+vMGEmgmtvO/1RqwvDh7QECVUGlZjD/4zx1vnggU8yAtglUcgi0QZw7/LnuCpw5Vjo plFQnhhnpHW/F8IgdO/szKH3kYpfXi66EwNXhEme0Q2z5ub63Rg63ATzcJvBp4YikZul O/6g== X-Gm-Message-State: AOJu0YwG1CppKweHwbXfCkS5BlYsTfiXqkgPI7mWppn3854+KpJDuyCT mRYUrbh7gjk83fB4X8W5FHLIgOSJUwnLrg== X-Received: by 2002:a81:a190:0:b0:5e1:7f1f:c629 with SMTP id y138-20020a81a190000000b005e17f1fc629mr882344ywg.0.1702348103377; Mon, 11 Dec 2023 18:28:23 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id ee12-20020a05690c288c00b005e16c1c0bf9sm592682ywb.95.2023.12.11.18.28.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:22 -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 , Bart Van Assche , Sergey Shtylyov , Hans Verkuil Subject: [PATCH v3 20/35] media: radio-shark: optimize the driver by using atomic find_bit() API Date: Mon, 11 Dec 2023 18:27:34 -0800 Message-Id: <20231212022749.625238-21-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:29:18 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041426503475260 X-GMAIL-MSGID: 1785041426503475260 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 Acked-by: Hans Verkuil --- 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 Tue Dec 12 02:27: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: 177034 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469692vqy; Mon, 11 Dec 2023 18:29:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IF6KVEmqn1wvFRFNbSYrNKGuh/XD/tdq+sLMyJL7sUPgE61PW7Nzm1g9389NEDqU6R0InHp X-Received: by 2002:a05:6a20:bc88:b0:18f:97c:8a16 with SMTP id fx8-20020a056a20bc8800b0018f097c8a16mr5998869pzb.65.1702348157652; Mon, 11 Dec 2023 18:29:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348157; cv=none; d=google.com; s=arc-20160816; b=NekAkYZ5K5OJXkRzLHIegJ9DslO/eD7NEv0/Y3vqESWWvB9XcuYfabpfHHHlUfgUuG fQ+5BRxmAebIhvDwsCXJ+gQ6SXwQvRX0uUPAcZYFRw+DYLsb27xsf4CtilmddKLKpzQb oI7w1XLHZAteOQE9mLFfN3W5phGli6VDhu0RZh8lMsJKjyPN+SPrt79OsTVdEa/NDumi JMK4WV6Qtr+dLfGjXAAv6a1z3J23DO5alYFm99QeugAkoxblghCwMcHqC+2kRbjAS2Pm x70ee0TySxfNLytaW56WR3HyTeiPhoS4FuWfuEdjZ3er7wJoCJex5FTdBH8v/ob9R2BU 9g7w== 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=K5dLrjk8RGdEFK2IC/mT3GdPdKaiYDerbdLTf1ASMu8=; fh=UtnPb4XeZqkU0Je/ptq6S0s7ciEuDvSty02kVqximH0=; b=yi3aaGZ6O3fuXIjtY/+kZ+QyQAs3UjuB7+RVXRzTsvcSWf38m7UsL9KqPzHKlCXlKR 3iiYDOfitQgySio6TAzC9FNM0NnzFDj1hm9VhdMPXEwngrF8cgZckATwx509JFpnC2qP 36hR9CwnPLu4LgTjMroTeygC9cjxhidimVC5s6jTaSrwiKoAc6vud3QOCGR9zatXx1M/ vm46moEs3NioI26MJbHZOSqT1bTsk2UY5T68CLhiVz8BgmwD4RMOxEhOJaeRZ+qZPxIW xwYbwo0emJRRu9v9rfepSZ2MBjs/7oOeNvsxzuJ5sBW8niIsSVMqc5SVMNS4HvZRkuEu NypA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=div8NoT3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 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 pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id l68-20020a632547000000b005be00714949si7086020pgl.222.2023.12.11.18.29.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:17 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=div8NoT3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 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 pete.vger.email (Postfix) with ESMTP id 88B7A80BC10E; Mon, 11 Dec 2023 18:29:11 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345866AbjLLC3B (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52286 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231442AbjLLC2c (ORCPT ); Mon, 11 Dec 2023 21:28:32 -0500 Received: from mail-yb1-xb2b.google.com (mail-yb1-xb2b.google.com [IPv6:2607:f8b0:4864:20::b2b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1437114; Mon, 11 Dec 2023 18:28:25 -0800 (PST) Received: by mail-yb1-xb2b.google.com with SMTP id 3f1490d57ef6-dafe04717baso5072473276.1; Mon, 11 Dec 2023 18:28:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348104; x=1702952904; 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=K5dLrjk8RGdEFK2IC/mT3GdPdKaiYDerbdLTf1ASMu8=; b=div8NoT3hGC25kZssriOXiz4HMqfwc5EWDH2eeYR8CYshwy27Of7YnsHZsBHqUKGQD 7q7xr2LP6cXJ9mRdl6Vb9yXDKlyUSU2rz2UH3Tms2aGmdhD6Kog8v5nXp46bvQTppxvM LCEQFPOWrhBHxMrxbEbEJ1uF78OU8zTR66idqST6Ir2M+b/JHjWTKfPcXReXp02k3zHS w6GKxQ5xTBJz6OTOjzHdE5wJwX99JFVpxBu5hyo7shKnc58KkCW45QxsiPmm5Gn42a/G fMkGy7cC1mMgwGBAfVf6tZK/Q9hVEddiOlyOdJzgjGQjSZWRs/+O5uM+ze1hh2EIGHO5 nePg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348104; x=1702952904; 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=K5dLrjk8RGdEFK2IC/mT3GdPdKaiYDerbdLTf1ASMu8=; b=aA0Cwq3xj+JSItZXSxBt16hCmfrAFKaDwEnwDai3rqOgBKuVaNw6k6QOmnZJMkOd8o d5vjPXBJhAG7OOYbO1KGytiguuUfJOoIFjUcow52ddn/IHcgE1m06LgpVukvq71b3Dxt s6ZhKY4dfGVH3bUuwZYpVEuaH6ddLcBQ7QQiMIU2eoc4vX7CdOuRtLsg3MFvKzUmBgHI 5B4tumE0icbbLmp9O2fMGiB7Bit0tGUfLwX7v69QUXkKRGuPEoxLWNsLvrGFbDw7DE3Q NGCg6eVOY1VX05cD5OsUKpJ1O4Rixv1Sfd/f0cEljibRcSZxjXEk2P+b71CHwxrgbVY5 XRBw== X-Gm-Message-State: AOJu0YwUNdzjKEDCT1uXtbjHmN7y1vs+i2LLUyJwYTWSJivl9rHcOyLW nZAw/4O+QfjYmfrshiDW6vFt+uiLe8pLLw== X-Received: by 2002:a05:690c:2c01:b0:5df:5d59:6d71 with SMTP id eo1-20020a05690c2c0100b005df5d596d71mr3494936ywb.21.1702348104547; Mon, 11 Dec 2023 18:28:24 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id j62-20020a0dc741000000b005da626a84a2sm3445778ywd.30.2023.12.11.18.28.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:24 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 21/35] sfc: optimize the driver by using atomic find_bit() API Date: Mon, 11 Dec 2023 18:27:35 -0800 Message-Id: <20231212022749.625238-22-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.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 (pete.vger.email [0.0.0.0]); Mon, 11 Dec 2023 18:29:12 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041421723475590 X-GMAIL-MSGID: 1785041421723475590 SFC code traverses rps_slot_map and rxq_retry_mask bit by bit. Simplify it by using dedicated atomic find_bit() functions, as 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 Tue Dec 12 02:27: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: 177033 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469688vqy; Mon, 11 Dec 2023 18:29:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IG6Ez2ubCb0XAJsIygIPlw+sKIaIFK2czBawav9LoS2aWnUQkTkpMOub0/Y5Pd9hTdXDZ27 X-Received: by 2002:a05:6e02:1c02:b0:357:4a63:2ad2 with SMTP id l2-20020a056e021c0200b003574a632ad2mr8146794ilh.21.1702348157152; Mon, 11 Dec 2023 18:29:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348157; cv=none; d=google.com; s=arc-20160816; b=L9+kCVES6BEmWPAvwVHzT8q1rm0K9YXXnDTyu2/zsEB+r8Wro+fEWwhXzDDbMaE4J4 s4iVCaXLGPYwvgjvuICmxS9s+kSrCEOTeAHYVILjI95Gs+oBkGIOhwRNoajiAXiBtSxT Mi9CmzILL5/i/NXdP6k0pu7zXlF+Zu0Ubtf5gN6skC4sRALtKGwL/T19z9ape1jLahlB ZMkDMGxsQJtSUZFg3pJmsvbtMt2lePhhjqfmWOjbRcxl5csjtKfx3LWqqTl15PvAzGnT eCudBej9OLKvfdqgl+d2MkVGu4yew8G9q5cnZP0gStFjNzLm6dWjkZc6v1fXVr26EH8B exkA== 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=zknDDZPXO65EcmEriKlJmzs+43jcHB+zHIGvKah0pAA=; fh=G5dWC2vJMXu6F6SxSPBFE8SqSDfB2mMrwRUVoNx8NNc=; b=JUpnc58tbBMO0o8EeKhEfRqh8BEYtBgf6jGPIX4BZfxNA0tnpj0vzhLRD/KkFPvWzg vXKNETUre8Z76t1J1EsSIYcnenh0jw8jX6MWxGP5Wy747fj+VhRTSRvUSSXFW+PdqW54 Uyw2HC00ST4m5n59lZiHS6DFl2UeQG+vNLxpTY3HAL3KbLy0v7FuiCvJbTbBq8cNWwWy tbTHnoO3C9zc+rUhbDVhv2/Ms38E/e8KhmZsk/5UhS2L/1t8d0vqjC509LojeVqX5hyO ZkBDU7vSYwx2599OHK2cKSMs50gYUT8N9x06QuNoXJh97j0yVa4wUJeZmlvstXrtPGxs YIzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=MqZdTTGj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 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 morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id m10-20020a170902db0a00b001d0a57bb52csi7161313plx.480.2023.12.11.18.29.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:17 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=MqZdTTGj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 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 morse.vger.email (Postfix) with ESMTP id 5FE4980D2931; Mon, 11 Dec 2023 18:29:14 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345800AbjLLC3E (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345765AbjLLC2i (ORCPT ); Mon, 11 Dec 2023 21:28:38 -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 19DED121; Mon, 11 Dec 2023 18:28:28 -0800 (PST) Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-5cd81e76164so50640367b3.1; Mon, 11 Dec 2023 18:28:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348106; x=1702952906; 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=zknDDZPXO65EcmEriKlJmzs+43jcHB+zHIGvKah0pAA=; b=MqZdTTGjFZImNNR1KKtfga7ueam8z+QBLZXTmo2Xj+fGrcqxj72+38fbtfBUNU5czT NqewUCMbBAZE7hIOPp7ALiXUqSkD/ZQinVMgfzDwbazlI43IolsmWYPLcx+/DdDTkl4r 8jR+9IFHSEPqzfzFDKLDL3zkDPZgSHf9qHtck5i/yxlhlwBNbRCgVH0bqBCKBjt/bTs4 mJGCtgJmHK5aRX0Nr8jcsDv97Xd+iIOuAoMqOM6n9GpQRCT9zJt1xWdiUVhJ+ysIRxGk qoTsbngKxOzDoJvWZhVdAoDaASRVf3Dihvtb1jwzrm0tzHkymP9clxRlQvRd8FVXMQLY uANg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348106; x=1702952906; 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=zknDDZPXO65EcmEriKlJmzs+43jcHB+zHIGvKah0pAA=; b=oTrs9fEZJekGDyDiKMAqPo7jyajPaxEX2WB/PASAtLXbcdbEIOmXN4dony0U9OEHW4 pavDyt46i7Oak0J8gzVMzznZKcWGiGVxMYwnBjEfWRYBwgDBmOHTYeu7a+TaH/WxWUO7 BglUVUtFAe6eAjI6PqI4csFhJaBOo8fNSDgJMPC7IpeYBIk6CHT9o6XIW2mlJZoz3j2K 1gC7GF8+H6Vs1OjNlPzmXDXLmqutauttr0Rs2AV3zmsT0017i/nT1t8Cp6noB6ZsffGn YU38LDdWeqpL6RaXYdvnOZ81GnI80oCN2gBYsv1cNTquSx6zYNIv2GvwUWVyct6r1glC Kkdg== X-Gm-Message-State: AOJu0Yz21n6DVKYUiSEh6IPJvdMqIOt9JFUkbepCgv9stnBM80/MeUgj oZLSIRrkFYkXQ08v2wN9l8L7B9fHg+0xlg== X-Received: by 2002:a0d:c343:0:b0:5d7:1940:dd85 with SMTP id f64-20020a0dc343000000b005d71940dd85mr4712425ywd.91.1702348106198; Mon, 11 Dec 2023 18:28:26 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id t186-20020a0deac3000000b005ce039bf1ecsm3439166ywe.7.2023.12.11.18.28.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:25 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 22/35] tty: nozomi: optimize interrupt_handler() Date: Mon, 11 Dec 2023 18:27:36 -0800 Message-Id: <20231212022749.625238-23-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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 morse.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 (morse.vger.email [0.0.0.0]); Mon, 11 Dec 2023 18:29:14 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041421143564324 X-GMAIL-MSGID: 1785041421143564324 In the 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. Simplify it by using for_each_test_and_clear_bit(), as 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 Tue Dec 12 02:27: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: 177035 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469720vqy; Mon, 11 Dec 2023 18:29:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IFJOZKCGv9gLfGqvCSowDQYib2vvlvH0lg2Xi4YfWXWAeI+8/jQxLyAijFTRWl97sia7PlO X-Received: by 2002:a05:6808:208a:b0:3b8:4d71:6cd1 with SMTP id s10-20020a056808208a00b003b84d716cd1mr6234729oiw.8.1702348162076; Mon, 11 Dec 2023 18:29:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348162; cv=none; d=google.com; s=arc-20160816; b=qBKSfl18UXyd/5XbOYk1maXrnS0N59sHa45Ad8+ImnFnKnuJPc1G3vXJvSf96OJ+Ru blQijGxx/hU1sGh72N0tfMHMLqTx2e5Nuu/fipNga/nbqiad6MrAOa50tz+TG/10X0he ILjDV6gdYODdSFkH412rpPx3hSdxxXuFFiixVRzsI7mOFUkPl5xiUHPVw+5tvMLuLpFB BhHLzhvFrLR/Zn+TIZV2BAhSbGxTjKF/7OeZ7san9Z1S+iKB1NKTS0KEI8wjORcze15L 3Fb2TJjzbI5vjVgTfsv+TRAtpN4vpbarJj4+/foNfDUpPv4QdhYOJgvUqO+vNWdoTaA1 umWw== 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=C0haO+emVH9hQdnKbtmnO0lw12WWT0Jo1zjWRuqv+20=; fh=wDvMStDsLn69Fqu79GQ4BriEv69GDJDZgWYXLag3yZo=; b=DZhu7m25FNqGF2Q1NjS+26RImtzfRFYfK/9Lrirqq/wY4QLJvRTwiuMfxR1IHDmqe1 VxE9bDVrTBrjhXbiD+tAi6XSo1oKi1TG9kVpdPGZ6GeLvTDPgACgOpKWNZawVnjEhU6L B3KuRUyPYdHDwUjZAnuBLFj/dfVTg1yKN3kV1q9acfi79nl6YoNoDZSKX59lRCcjbNG8 kYGQYmCU5TwjznTgy4wJN0C1cvHSDX9uwH3L2ppqfTPRiUwc9AmJbKlGiE9BFdBUripZ HInX90JoLV2uJg0iReFwVIAHo/UzkHAnFC88x4lJFLv08brthRnhYXjNrbPYn/3jvDj4 CKCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=KyI8OnCw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 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 morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id w8-20020a17090aad4800b0028ac35ad2e5si69115pjv.183.2023.12.11.18.29.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:22 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=KyI8OnCw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 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 morse.vger.email (Postfix) with ESMTP id ED6CF80D2937; Mon, 11 Dec 2023 18:29:18 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345879AbjLLC3K (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43760 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345738AbjLLC2o (ORCPT ); Mon, 11 Dec 2023 21:28:44 -0500 Received: from mail-yw1-x112e.google.com (mail-yw1-x112e.google.com [IPv6:2607:f8b0:4864:20::112e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9089126; Mon, 11 Dec 2023 18:28:29 -0800 (PST) Received: by mail-yw1-x112e.google.com with SMTP id 00721157ae682-5de93b677f4so33478097b3.2; Mon, 11 Dec 2023 18:28:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348108; x=1702952908; 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=C0haO+emVH9hQdnKbtmnO0lw12WWT0Jo1zjWRuqv+20=; b=KyI8OnCwYyekN4o5CXCTLurABKpT1zBf3HmI8w14WJSILDTlgViOclRwxSkH7vJUri im00/LeOdcGiSeOB75suZ83qOMDor3mQa4gIfPFfi3n2nNFxrXTScLZREE6dmLudmr6/ ljNn49oCj8ipv+6Z9qZqskXG7zKKowIpIeF8aCg1X9BNpNLAEJvNOFq2+eV+MsyJe/re UM4vN+apO/TIJP7KagSxogIMR5EvYKLrG1K/nyQ4C7hzTGBtoMid6Lo/m2PWnD6elOxX EyeXoVhiTShf3AJXs8RtpSd47KSV1EpXhUjXcMKLUt4c4QeD1hT4lcqsFAKfNc9xIa3V CTZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348108; x=1702952908; 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=C0haO+emVH9hQdnKbtmnO0lw12WWT0Jo1zjWRuqv+20=; b=aK6u0yiQIqow0WMY4ivwVwkIUQpAloFWgM8a0pCe2j5qAkMyijKoy21Shlgz5esAsH TeUXmxmAkx+/6o2OozzW/N43Hn9zoj2tl4UF42/9y8TZ9c5YFldTrDk5EY/Z2B1bwTke MegAEqfhOTGHkSoMTV5Wpo+hKbtuyvfCgUNplHeyJetSQ1+ZHhYpW1f/vb4QM8nLKk5H dNWuLT5e7uy/Nli4nxU2/7+RkBuALWwTY/l3l7BH4UuZw5XH5oGQZuv3l9KmJUd6GkyZ 5GaFo+lRQfFSoPulv1XIqacVGL3e/akRze8I0hOIXY5ZwRU5ERu7IFPvfSL84TADPfu0 /gAw== X-Gm-Message-State: AOJu0YyKMLmpUeiDKfmCp+SnfkQa4nN4EFIbESv4x/+ZX7SRj2nUCg75 MlcQTMawF9csj3KLuC86GBK4SH6F2f1MjQ== X-Received: by 2002:a0d:f641:0:b0:5d7:1940:7d6c with SMTP id g62-20020a0df641000000b005d719407d6cmr4563496ywf.67.1702348107794; Mon, 11 Dec 2023 18:28:27 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id c127-20020a0dc185000000b005d4035e6135sm3435315ywd.74.2023.12.11.18.28.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:27 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 23/35] usb: cdc-acm: optimize acm_softint() Date: Mon, 11 Dec 2023 18:27:37 -0800 Message-Id: <20231212022749.625238-24-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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 morse.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 (morse.vger.email [0.0.0.0]); Mon, 11 Dec 2023 18:29:19 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041425979163128 X-GMAIL-MSGID: 1785041425979163128 acm_softint() uses for-loop to traverse urbs_in_error_delay bitmap bit by bit to find and clear set bits. Simplify it 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 Tue Dec 12 02:27: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: 177044 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469847vqy; Mon, 11 Dec 2023 18:29:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IFQN9KZJ6EpK9/N3aTgP/ZSLNIXmlANRTASkD/brUYF59flW4QHwXdOU+0w/g/cShWoFzXi X-Received: by 2002:a05:6358:c32a:b0:170:5d43:3888 with SMTP id fk42-20020a056358c32a00b001705d433888mr2729083rwb.47.1702348189349; Mon, 11 Dec 2023 18:29:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348189; cv=none; d=google.com; s=arc-20160816; b=X/m2HiR94HwfDIwFn6hbDhDnf076jkuJ9CJPLic+rAJ4MFGkcGUTI/GuLksziq86wA OlNdNj696zRUE5yibjY8eGkZ6EnwalMYMCfop3JpYBfdr5f75++9OllzCZMGN88Oicdb /yPJqlMoIVpySmCdZahev29uouB83vJP+X1blm36pM+bR+fRXhWAHW6l1ZmLNDSLHFxx f/zxR46azpvYku5ym4OG2I487A3GugchmDDh8gz+xqAkV/DlIhu1wsv683hsA3r4hzU8 sTOK/HsYDWebE85BQjDWQkgf76rG+5AnWUHMbIhBbayuALKATSCPJOzDhwIXt8B7QMlZ bp1g== 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=2naZtSkEf1NcPMGJshyYFtrlJjtShUpPX2HAHwMhtPE=; fh=hv3iqpMdHO6W1M6pRceemuYd1xn4mjvHm+q4POPI+5A=; b=XSrpPVEK+B9iXGGq1IJPfgGkbmSYAjKERpS1eDIkpq4CwUxTj4A2b5KkyMbPm89Sx/ cPy75uuZOwo6y4fJGvaPGfAPorx/BaIiEjjgXEns0teZVMGQRMAzMpmFAjkHHeS2V8+c wqhj3O7N6M2UEu83iQCov7oOx2aFtbUCDrk72uxl3aPVBiva/BXG4g0m5Sbl11+tXFlL ZLArMYXbsPWCUb2GjJvjWUW1/mYzLGn7V9PP16SMDwUW/UHBDMu2V0aQ0dMyjqCDJVd8 AYiNvQg/tTHKVyoiTXopZ9sM8eDK/T1ocxkU+fV4Di3VIiLsCkjh7fxwPSu49oCrWd4D D9rw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Ci6rj3Le; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 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 morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id lk4-20020a17090b33c400b00286e326a0b2si7315088pjb.32.2023.12.11.18.29.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Ci6rj3Le; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 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 morse.vger.email (Postfix) with ESMTP id D538D8023197; Mon, 11 Dec 2023 18:29:44 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345899AbjLLC3M (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41782 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345788AbjLLC2p (ORCPT ); Mon, 11 Dec 2023 21:28:45 -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 9629112A; Mon, 11 Dec 2023 18:28:30 -0800 (PST) Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-5e196c128fcso7854147b3.1; Mon, 11 Dec 2023 18:28:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348109; x=1702952909; 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=2naZtSkEf1NcPMGJshyYFtrlJjtShUpPX2HAHwMhtPE=; b=Ci6rj3LeDWNP6MoXDX8OdHwssAKHiA07o9+ThUiV9mRJ2ptrlnOOvizX9gFhIu5cM0 BogueEGjBDU4xlPVfPPKRbK5h0cvkhDRK8IWomtbF5rowcNrfsS+53wBecVaOEGwzwmX kGMOejEn2+CZXJqClQarnt9x/5TVta8PhiSgaHJGwOgAL6vLbbR3Rwjyps3rgFlQrGCu mBGOJEt6tNHfq9ZTT2CLkk73UwEPSa+JZq/KeVKuom0sIHaI63W5QRgsyeZB7mlzS1Wc bc4+a3gOzURBNi0r0qZb2qNbeDvLo+cnAajXF9ea0LOOyKEA7G4raEBBKvkDYxHIeq12 mfcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348109; x=1702952909; 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=2naZtSkEf1NcPMGJshyYFtrlJjtShUpPX2HAHwMhtPE=; b=Ev5hvb5GpU8kqSMlxq35m5Fz1ACYLooq5a+f89dvp8yob7iProO9NHqfWK7yMuBT/u s6NWw3JxHV4+LbZY6oik2TCaw9z4JcXKtoWTSTBj7Zez+rALE1+Y8UM+tWqLi9H9bXrJ VD5hFxRSqF8HBjje2Ql9IYO6CuFKvVj8AtRyaz4dcSZOs7fhn4DUtaBjHxSr33R3k1i6 nU5UHMFbyTGa4AOaEkn/GLFESPsHpxTy8sVOMOgGB15cZ6XSCgBjVhzw8Gj5WUOfHeL2 otdXLkMu/hDpwrEye3UcQ6X6HG1w4/TFIwLPT9v+Rerme4v/3BI/Lfh1LOCncpZTUViI 6Xrg== X-Gm-Message-State: AOJu0Yxj2QX7SBeEPaEMFrzdtGTlpnU0Lkq4n+vqISyeIsxjD/6V+GCq siyEaZ3vcbq+ELYqgDDg9lpRS//J0EThpg== X-Received: by 2002:a81:8395:0:b0:5ca:4db5:6962 with SMTP id t143-20020a818395000000b005ca4db56962mr4232765ywf.46.1702348109282; Mon, 11 Dec 2023 18:28:29 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id u13-20020a81a50d000000b005cc8b377fe9sm3395826ywg.121.2023.12.11.18.28.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:28 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 24/35] block: null_blk: replace get_tag() with a generic find_and_set_bit_lock() Date: Mon, 11 Dec 2023 18:27:38 -0800 Message-Id: <20231212022749.625238-25-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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 morse.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 (morse.vger.email [0.0.0.0]); Mon, 11 Dec 2023 18:29:45 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041455031492963 X-GMAIL-MSGID: 1785041455031492963 get_tag() opencodes find_and_set_bit(). Simplify the code by getting rid of it. Signed-off-by: Yury Norov Reviewed-by: Chengming Zhou Reviewed-by: Jan Kara --- 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 3021d58ca51c..671dbb9ab928 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 Tue Dec 12 02:27: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: 177038 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469754vqy; Mon, 11 Dec 2023 18:29:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IEvmN7zgbYbelLsUURON0XAzimmXhm6qqRGvngvMDzmmHh42yaSv3t5UQm6VnqaKxeSdJ/A X-Received: by 2002:a05:6870:d96:b0:1fb:33d:f52d with SMTP id mj22-20020a0568700d9600b001fb033df52dmr7204201oab.31.1702348169396; Mon, 11 Dec 2023 18:29:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348169; cv=none; d=google.com; s=arc-20160816; b=06ocklL5VzqEG/la5RINmFZ4DSx9Rw5fEab8/yijlh804/de0anybZ1AueYfLvjZaA WASkVUqiQ+Hg8FQwuHn92oitPOGBKilTIXauMnepR4daRlAWMRzqwLCLCTMc2C9c+Mq4 PKdABFB7dHdnIkFm8OO8faxVTsGpi4mCFa71y5MDnmFKsh0vzYFh7M0OG0dphGSK5h5L ApDT9W6cikW3iu4OZ5iLUdwOCNBqo1t6hxiMg7n7oI6ZR3hT7Hj7leNp6GzRq1ZXMO2D jXru9jWJGLW/BDm1VZX3GQ7YTOr9IEr/iJ+mukCxUE6OM92dkTPWn/kyq89onkVAM7bz nEEA== 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=xXHhxsG3/UhGgqamsfrlyZxDKNFN6ooaZwOKCcSTfsQ=; fh=0dBgNiZKqgWnjuNzsVOVoNRd51CGUnw9xRLtiM40R1Q=; b=kquooJbxU8DJBySFqQdz6BXzCXCSq0Kf5Jda5QoiWybPT7Fm2rWMd0sZpnitLnRWbP RoejRZO689TVcn36Oo94OHvB1xNv1/jJn6oSZYliCHTlh6rM/rlSEdyNfkey6ypxbXxV oDk9IU6FFT650N7JDCOOinV+OjN3c3hkFL2npYTwbYL2Ir/pMAW+6wAJoLoFbf/kVyQm BUyit+7wGk7zPhimyCJxaxMjZVlIffrvOKzfa3N6dbKTNcFVXXHrTWzNI3ItcgNg0uEe hkVwXtXxbBWNFJM6MAsg1TgVCNO/qIFe4+zvzU+O9ZsQZOZWRHi2DS4YKTWNmhB4YFV1 Vd0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=jp2Nz9P4; 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 r3-20020a6560c3000000b005ca186e0b6asi2138696pgv.117.2023.12.11.18.29.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:29 -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=jp2Nz9P4; 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 26186804E71E; Mon, 11 Dec 2023 18:29: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 S1345920AbjLLC3P (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41788 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345792AbjLLC2p (ORCPT ); Mon, 11 Dec 2023 21:28:45 -0500 Received: from mail-yw1-x112e.google.com (mail-yw1-x112e.google.com [IPv6:2607:f8b0:4864:20::112e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8326A135; Mon, 11 Dec 2023 18:28:32 -0800 (PST) Received: by mail-yw1-x112e.google.com with SMTP id 00721157ae682-5df49931b4eso28081517b3.0; Mon, 11 Dec 2023 18:28:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348110; x=1702952910; 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=xXHhxsG3/UhGgqamsfrlyZxDKNFN6ooaZwOKCcSTfsQ=; b=jp2Nz9P49zWcrnTotdEWzMcMYlaNUW3Iqrj1F4Lr1niQgy2JKLY9kFqZzAultqMUBr ZHokKXNSda1Q3xriJREOyA+qW3LPfwA2OE5TZoxSvnaoeuE8aR6wqXpqAQI6RxmkTvAF pYqiaCGXQ29IIBsZ8uxxkFeR0pvbrN4YxbS7sHUvnIWuk6w6Rq3cqijp9lBLvJsBVLiZ aa5qTtj+pIPkA0w0c6OmhTaqanANwIlM3O2gH2xh/GpEyxBSsvTZAjfu0B+4jQbaiwc+ t4WwcLk3ZKsIHV4pZnlQLuvb63G1o2ULmxkIizGDNA0zTJ1hH3TowJs4XewqcPHKNjFp ChzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348110; x=1702952910; 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=xXHhxsG3/UhGgqamsfrlyZxDKNFN6ooaZwOKCcSTfsQ=; b=xIfUdLzkmGrnaYCvmOS/23hjKA4tqcA1DJ2OTdrgTRs+LrL2Jxr7pISgJAbaHulsHt kn7gsSXKlwwNAb94Fpk6SznMIQbctlMYsVrXOpBpNhjuzZO9PNr3s9qpbiY1yvmfVXwW /F2KT0JV5PI5fQMLVXcF95MdXO4FHn7j67kpgPL8OsrMR7CaNTaQ5G2pZ6Uwn6hui4wZ VqAj1E5uMdUUr6yAK3B0V/VSWx4KSYJ8XgSzG1uk4ZP8+0HRmZ/JIjPKgpBD4Z5buzTW 7AABXKwPN4m1o7FEEuIl/7ldFY3LCScptH5Ahk3YLIYljwGlYzgGUFsA916hYmNue8ib siTw== X-Gm-Message-State: AOJu0YxE4uyH4ODJqaMG/IgDQCjH4fagOZpxS02HeEoDJ0qja259LjR2 uQcUpJq27oz9vPuMViMOO+x16KfAgb+hrA== X-Received: by 2002:a05:690c:4505:b0:5e1:9f39:b084 with SMTP id gt5-20020a05690c450500b005e19f39b084mr762715ywb.2.1702348110591; Mon, 11 Dec 2023 18:28:30 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id j72-20020a81924b000000b005d716572128sm3471268ywg.17.2023.12.11.18.28.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:30 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 25/35] RDMA/rtrs: optimize __rtrs_get_permit() by using find_and_set_bit_lock() Date: Mon, 11 Dec 2023 18:27:39 -0800 Message-Id: <20231212022749.625238-26-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:29:28 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041434038622487 X-GMAIL-MSGID: 1785041434038622487 The function opencodes find_and_set_bit_lock() with a while-loop polling on test_and_set_bit_lock(). Use the dedicated function 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 7f3167ce2972..9f1c612df392 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 Tue Dec 12 02:27: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: 177048 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7470073vqy; Mon, 11 Dec 2023 18:30:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IGF+Vy6dMD/WR5T2E2wInaNP709xL8+y6RMWbqaKZdtWgP9aO9qq7GKDaAJAPvnG/57FcVA X-Received: by 2002:a05:6e02:1c28:b0:35d:7002:87ca with SMTP id m8-20020a056e021c2800b0035d700287camr8669355ilh.31.1702348227858; Mon, 11 Dec 2023 18:30:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348227; cv=none; d=google.com; s=arc-20160816; b=seMDCw6WkwoPeeOXcJrH92wPNl1Khhzbc7QhLHjneUifdHc8Z6JQwRZC4+1AXGsBrs LSXF7w/fuRMjs4qigk+wxQqVFThvPgIYCbWxown/gJ3IRJser36G7Upd7pnbLMMEsqBP c44XwEbDHgDphwfWwOT25ieY0QU1tk88qvRcWMBahcDZn3B/dyAk0DKeVVDIMdUjBOcZ +2VWBKEljs5sN49406MeDRwkHiqFOIRVpnnFqNBW6tmcu3xbk2ReAF9v3rQiLnklHGIe NdOuArl1J0u3YXEKg56sgFNe4T8mffsuemzZBs/cmWUyBlABI+qmQQHJv0CYMJTMQFSL psXQ== 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=9k5eqiGBj5/5DwPtrpE4m/Ucis1bOkRyK/lvgWCjgQY=; fh=zfmcxyO8WPg+KtxYrIINhtbKkMNVahrHonml3pksTjQ=; b=KX+jNla4M++eF/yyBes5XfBQHNM/Wz5kemCaWwr62md6rtCIz2MP/MiwN7xjyxcMTh pdDyf73ROwRoyJNTfCDfnc6SxRACY/0Jw0/oVlGwSe+H8Nku++YDDwEp9TJNE7oEUJLP zqfttYML7Vkb5gxOeThjggp4DR3ymbuCu4BQVZLZBIRsVlPVJSWtJnrA4QQmaCvPb/RT W8UHM8n843+RINbdXNCCnaxG9RQUB3X7EycC3ZHVwqqllBCAD4AIcB2R3HG/P0wbzMfm W82+TcQHcllNRjCqxoUE+cGmVIOmwrZDHZoRCNL/a3rtja2Cf7Z4ZQlrC+b0XMN27koe ENQA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="MUXJt/Hu"; 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 b16-20020a170903229000b001d00ff4bf6csi7129264plh.466.2023.12.11.18.30.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:30:27 -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="MUXJt/Hu"; 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 0DBC78059889; Mon, 11 Dec 2023 18:30:02 -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 S1345928AbjLLC3R (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345794AbjLLC2p (ORCPT ); Mon, 11 Dec 2023 21:28:45 -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 7A426137; Mon, 11 Dec 2023 18:28:33 -0800 (PST) Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-5d2d0661a8dso51964567b3.2; Mon, 11 Dec 2023 18:28:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348112; x=1702952912; 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=9k5eqiGBj5/5DwPtrpE4m/Ucis1bOkRyK/lvgWCjgQY=; b=MUXJt/HuzQG0n1pJk75TJsqno0B2RvcwtJqS6p6vIJlgw1ENOKUWFBLtN9sECruBaA BT7mTAvsKZpNTqJqeoHviKjchN1kfYKsQ4ubVXQdE/KLdbzJ7cep2jg1k73GwscQIcqk gy0oFv+aixeijNbjGhyx6qDshbtGJg6ytqNbfI9Lf6Lv23VsIu4CEU9WU8kXTjsW+Etd 6BTxKdXV2xKa96TsV9wQTIBLNNQ3oszSQcw+k/V7NrruYlaDdYTwxPaAFySc/dgAanTo W/qi3vCWyxQhTRoO1FD8FNdfZ6XQCqv7HcCvZSj1X+4OvRJJ7aetyb+9aPX4gMnA6hCp cDRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348112; x=1702952912; 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=9k5eqiGBj5/5DwPtrpE4m/Ucis1bOkRyK/lvgWCjgQY=; b=ntA55nGPN+V0t5PPS9K4HGaTv8qFmHRbK0iflEpdbhW1vyrEtNLzU3b5YWSoSRStrB TrCHjjPqCNi4vjPIWwWO5Gy9D5x+9AxdIa9MsxXVIjySOkilODoYVhDUnlTc3P8iXlGl kE82tM/kl5+QYZJK17LNV/LLiUCppm/fcUcdqf3nopxM2ZqX86F4X5IdNXKkmAX23dNU JjeYMuKEwmmEdq0YD+8+NKDDbdNsWzuJwwoKHwkwBwvLRpiLBg7pg23gN7WAW5UeANs0 ktImQWH52cCyh7/PSynTxjZAlDBcDIEeKwWINbSpobwCtMcyoG7d0Mv/xFqgH/Le7t3z UqAQ== X-Gm-Message-State: AOJu0YwAeJhOXqdgraCkXo0Hg3mlJtbtt4s39pTb66cMQ0cZRdel/tpr 2HKobexFJ9HzZa3ehRy30cLb4S6NwSRiMg== X-Received: by 2002:a81:8245:0:b0:5d7:1940:b399 with SMTP id s66-20020a818245000000b005d71940b399mr4634837ywf.101.1702348112320; Mon, 11 Dec 2023 18:28:32 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id v6-20020a81a546000000b005ca4e49bb54sm3359875ywg.142.2023.12.11.18.28.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:32 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 26/35] mISDN: optimize get_free_devid() Date: Mon, 11 Dec 2023 18:27:40 -0800 Message-Id: <20231212022749.625238-27-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:30:02 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041495304756154 X-GMAIL-MSGID: 1785041495304756154 get_free_devid() traverses each bit in device_ids in an open-coded loop. Simplify it by using the 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..c829c4eac0e2 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; + 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 Tue Dec 12 02:27: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: 177039 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469758vqy; Mon, 11 Dec 2023 18:29:32 -0800 (PST) X-Google-Smtp-Source: AGHT+IEOMajhsw2cxwKo7OE09b3hwrzyPBMTsWEoNOdPZVxieVnr/qa+8ck6tpoHjb90NAfs3Jc+ X-Received: by 2002:a05:6808:124a:b0:3b8:b063:6bb1 with SMTP id o10-20020a056808124a00b003b8b0636bb1mr7319829oiv.96.1702348172003; Mon, 11 Dec 2023 18:29:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348171; cv=none; d=google.com; s=arc-20160816; b=0vcC6q9TPOuA02cNxohaKsb9baRaAAR5vhB/IKlPD0BpSjYfz/5KRBOER6+KXIMLYe OvqvLvq23MjUgeyQM7fZCB08EUvj5fs/6f+Fid1o4qKemuw5ypH61x8wODuT8d6jO9mI /Tisb/eL4//SazdQG3uJ/haQoOTuDKCINorzI5CUfu4S88iq+aK4YrmZ/8HXocEWJIkc ZbkSENnY4BRK5qPcwNgAi6yiBDO2WZP5YbzsjA/TCucc5tQE9W2Qh9182uzuTr/08+EO DOUkRrnAfwS2S8nWU60uT38EmjpcJNjWERk6tXinsKqULzGNX8inLUwoQD4QODbTsABy 8zSw== 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=yslUM+PF1IQcJgkd1RsA03l4wDu0gk1L5Ed7C72uTkM=; fh=DV5sKmHI4dZESeOY9m/UvrbVaC52AEIemHgufLWIC2k=; b=bcl3BVhjlHIG0452/owxkAuxCpeTkpMhA1JC07/JfoRTBYumE2V93o52VhYhMd/YR1 4U4uctGr+rurMLO/Uk5H6NrdyLvl+lqWDsnwr6rtAbQCnW1iNAPjUYJAVaYwaEpIzd3L lYgT5GsFm2EXjHTdyBa379oM6mnN65YFrK9w4y5JXJZcmWfQaQPjh9DOtvx7TfFKXdQx qlZF1efDYr5hSCA/GYZfhACkAnkFqP/bPmP0rIYXFmf3CGeyYdodrsfiQmqaKr9SEIsx YFibhWn9Tc9Ade4gxcBMyxvxMW8a8m1EhBk/spzVn0ol29gglW6XVkPXDnFmOdy4KB8i UcGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Cul4rVnG; 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 o13-20020a65614d000000b00565f0e9cfbbsi6892506pgv.382.2023.12.11.18.29.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:31 -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=Cul4rVnG; 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 04836804E726; Mon, 11 Dec 2023 18:29: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 S1345934AbjLLC3U (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345803AbjLLC2r (ORCPT ); Mon, 11 Dec 2023 21:28:47 -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 E8D72183; Mon, 11 Dec 2023 18:28:34 -0800 (PST) Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-5df49931b4eso28081757b3.0; Mon, 11 Dec 2023 18:28:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348114; x=1702952914; 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=yslUM+PF1IQcJgkd1RsA03l4wDu0gk1L5Ed7C72uTkM=; b=Cul4rVnG8r1L7CEwwHT3Nz1ZKSJ2+l40/L5QiO/XnH92O9RhZBKL0loqGg/Wqkwv1d Tem4mg2JD43Z9fE5nzuGG6TxYd/vqnOb4JfRkhVMRPNqkXmB75KNR5LHNBki2e8yQL5n CyaOB3mnMFP7e3ZkemokkJnxtHl0sE7qbmq4puexGCTpHOYAlIDaSwj87WGwRsvYeKfK N6u8zgQS2vSPP2ELQ2sBEkI/2O3BFk7MyzZsmFKYrLeISTAcN8VGcqDQ7Vd/8yBpo+D1 5WNGpdwszxGX/tRY1HA1b/2R3tE6LWABvUkWkXjJhUnUMZxGdQKLew1FTEbB07CnZbCE 9Zvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348114; x=1702952914; 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=yslUM+PF1IQcJgkd1RsA03l4wDu0gk1L5Ed7C72uTkM=; b=l/wfOzleAwvz+p5zph4o/dbsnQl6hcDEcu3v1ErsgfksrcUNOnzV4IQvgbfluCU/13 +GTFVZBiW5hNsEy+7TwJ4lHzbEREF0kVYpS+Yeiv/iV1NpxspaKn8ydrlyBNScgbv/V1 MELFcN62iD1rSpYucFSAvfKEq5ecd+K4zHSyHlr8gszVVHCTTFLxY15fvE2OAT6bW0cp UIeVWqcZDs9uSZEGaILtT2sjDR4XIsGJh2PI5GJA8+fxMpcXDfTQWMnvetbdOiYtW+Fy z5a66dKvCZZxT0iImKmSIbr3zBnYxcpa7FILyN8G/Bs2hUtFLMRIhDox14Bzi+6qT7pV PNQQ== X-Gm-Message-State: AOJu0YwprIJG0/4Buc3D7amlmcEx0N/NuTQT4BFlH8TZ+bO3byUagTR0 tpmjbM2laMu8NVf1O9rMuuryH6Fo0RjdMA== X-Received: by 2002:a0d:f881:0:b0:5d7:1940:b391 with SMTP id i123-20020a0df881000000b005d71940b391mr4788605ywf.93.1702348113647; Mon, 11 Dec 2023 18:28:33 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id a200-20020a0dd8d1000000b005d35a952324sm3449321ywe.56.2023.12.11.18.28.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:33 -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 , Bart Van Assche , Sergey Shtylyov , Hans Verkuil Subject: [PATCH v3 27/35] media: em28xx: cx231xx: optimize drivers by using find_and_set_bit() Date: Mon, 11 Dec 2023 18:27:41 -0800 Message-Id: <20231212022749.625238-28-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:29:31 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041437048707712 X-GMAIL-MSGID: 1785041437048707712 Functions in the media/usb drivers opencode find_and_set_bit(). Simplify them by using the function. Signed-off-by: Yury Norov Acked-by: Hans Verkuil --- 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 Tue Dec 12 02:27: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: 177040 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469790vqy; Mon, 11 Dec 2023 18:29:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IFFruJSH9jAXdi9O6a0LbrmiRNFR4uYiDX1Mlccl+Iz8Qy1Tmqiu99hFOmSTAw+JlOWH+ie X-Received: by 2002:a05:6a00:1412:b0:6ce:2731:47b9 with SMTP id l18-20020a056a00141200b006ce273147b9mr6970779pfu.25.1702348178305; Mon, 11 Dec 2023 18:29:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348178; cv=none; d=google.com; s=arc-20160816; b=0HqkhBXl0LfKOusDxrsUeBwY3OjJ4xe4oRVGruCF/KHdSoU6VN+oTJCLTtji0qfjRk QYeifD6Lt/yyYFfNJBPi3qLOcYyq8ztjhNg7q2AKygUjcmnxTbJ3csfrvyyeIeVmRwa9 xtqCWtwVbJ7WGRiaem1BmvDAdnccv93n5bfRsgHO+PTz1DbLxyqlyxGVThsZ8ihUrUA1 0OLSyID0YfQ90/qvk+lRhEi3+gUz24Kro8iRAx6W9s4CF8JWA508GnoC9cODvBTWzmGZ mpNSJsqqq8AP14upcIB+sh1ob0KbHKB/AQdzEGd7h3z64zxW+TxcujeuiXUOX1eF1uvW QXNw== 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=oOA21j87mR+yiywFqhw/n2ogDgEt85D4G/d7gO/inIA=; fh=uvrWrNKbU/NjDAajrDmVEA4JMNIJpajJY9yDC7a04fo=; b=c69my/Y02xHIj9fi+yZFSqYLAQho+zkm7A/AleArLA6LwpYTUzuLWHj7zVV58mcuY8 HD+B/7HvbGOke7IliWzY7fvi/UiMXvLs9etibCQXEVtQViVRNHe3nr6XyMdLe/ZNdR05 KXfUCHL0NIcJnxdwor5bEezX3M0yceexxPY90mLGe+v1kVVb7MdcOYldVmA7obb4dYUY mijU4HOP9tR21XiiBLy9TsuMuIdObHZigqci0smZQ4MUjXe1xD2dQyX+dDFivk1K0GYO z+l6YVpyz6dAH/7c1gdGoXKhvuQ2fjeaKIamUdZbG6D8uo7seEVMRjiubyLXiNvyS3ZI 9DWw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=QlclOvRa; 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 cj25-20020a056a00299900b006cd905021d4si7155748pfb.367.2023.12.11.18.29.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:38 -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=QlclOvRa; 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 0C5C080A777D; Mon, 11 Dec 2023 18:29: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 S1345939AbjLLC3W (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345807AbjLLC2r (ORCPT ); Mon, 11 Dec 2023 21:28:47 -0500 Received: from mail-yb1-xb32.google.com (mail-yb1-xb32.google.com [IPv6:2607:f8b0:4864:20::b32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3688E3; Mon, 11 Dec 2023 18:28:36 -0800 (PST) Received: by mail-yb1-xb32.google.com with SMTP id 3f1490d57ef6-db54ec0c7b8so4445108276.0; Mon, 11 Dec 2023 18:28:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348115; x=1702952915; 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=oOA21j87mR+yiywFqhw/n2ogDgEt85D4G/d7gO/inIA=; b=QlclOvRaQz6AziWYVY4AWjSy2mUfSLrWkjUBpdLcbmh4qdhHNCEMcQ1asJIklKcPsE tFAq0eElAeDofNVgWx5Hx2h9QLi2ViOOqlYiKUnIM2nbzTPsqkNPLYRNOfnCBRG7P06E 6CzXNy2h5YNq3Tp74FflwevvbLakN0JyqDczCr6+fGXDx49MAKYL8ObYA761okuvsWL3 QWJP5bmSa067TF4eGEmFCuS+G9pU8bMop7AUyyjZg9NHImAT8rYfpXeD14b+yGjiBVis Zct32D5ELuLI1wMXlKthdmmD5mVjcg9fCq2myi6yaEU7aRzG5xTHqmjiKzlnH2g/NoKN V1rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348115; x=1702952915; 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=oOA21j87mR+yiywFqhw/n2ogDgEt85D4G/d7gO/inIA=; b=hWq9Rk6FGOugdKlDX9bKoz+4/DdnaB3/DilTD/j1SN0i/BtRiob734X2NWvgAgqkwX FOtSWUKSsjc2YYLmo1L903KQbtnYbyeEY0eWjvOfQu0o6ntkyCfD3yvo8DOoUoYevFtx BvwNxDhvOkxtORpkIqkczYeeOQqldoRb/ChyAiPW5edsbmpfD7H8RAlEUHP5tSXWCvyR HMBjahL79U071FGW8o7HuI3ODXtgo7grB9GzuYfa3+ohrQTQjeQ1pB2WhiaJJBv0eyWF oXbDegSwWyTvjX7XXYpqug7ReSDVVHWidOKioLsd0oG1jpRNt5LSIYEejlhswIIRuyqO H1bg== X-Gm-Message-State: AOJu0YxMSEvIg2GxzcXqnxhNMnhC3wKcL5F1/S3qZakiJ01jghWmpq6n FbZgkFqsH5BbW+8JNF1buY5rmhuxf67nxA== X-Received: by 2002:a25:9391:0:b0:db7:d3f9:add7 with SMTP id a17-20020a259391000000b00db7d3f9add7mr3731570ybm.31.1702348114983; Mon, 11 Dec 2023 18:28:34 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id 205-20020a2500d6000000b00dbcafb31da2sm479007yba.31.2023.12.11.18.28.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:34 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 28/35] ethernet: rocker: optimize ofdpa_port_internal_vlan_id_get() Date: Mon, 11 Dec 2023 18:27:42 -0800 Message-Id: <20231212022749.625238-29-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Mon, 11 Dec 2023 18:29:33 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041443534293840 X-GMAIL-MSGID: 1785041443534293840 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 Tue Dec 12 02:27: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: 177047 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469915vqy; Mon, 11 Dec 2023 18:30:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IF1RIikFGaKbLtanVnoUdUJ8YQYorRKeRr2i4p1Yznq5GLwlKZtBTv3+cb0sJBqHFdxDYkK X-Received: by 2002:a05:6871:809:b0:1fa:f404:b94b with SMTP id q9-20020a056871080900b001faf404b94bmr6339819oap.58.1702348203325; Mon, 11 Dec 2023 18:30:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348203; cv=none; d=google.com; s=arc-20160816; b=tli/WnOOJ572Bt9NSrZKmZzezG7E3Lh3Tq6psGwOn1mvXBvMB8Qd5yt0se8A6rNVCK jdElIRSOJUwB3TMs0AP9Lroxo9fqGHy4W0T3FQlilx5equqhDdqaRONVLFztpmD2BxYA sxWyq7DY50FpMNRZOWoE5d7h3078KfyE0xbbvRlIP8UEobdHl/GYedQaJAB8CNynCq0Q VEac1//SLRNAbvhikz0v0pyvQPyV1ABrZvFdZ3oH02Y9IAIFyK44T7xz4545Vvh62SZW ZSDXAGn1w0RXwd+mbZ73ybnf+YBq+D9bJHTijGP+cotE5GXQwM9wwDw7WNmkryIHWd+b 6NbQ== 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=IQ2PLGJf5O/y/fYo5hj+s9entphd8dP6/+b2EP37z+g=; fh=7e2H77IM3z2gCwKTAIdEciVF1SZF3XPSU6oX6OdLElo=; b=WbDsQBFMcQFTWemusjE/EEAfdIgrhilfeg0QXRZXqGfFIfNWId6IobXaci0rgcPwEE OqsnV4qVh9GO7hoOonzhHhZmPWpQ1AG4Yd+ZxaLkr3Yeh6/BRct1ZPi+9y6cRjwL6KbU n0giDnyt9xSr4F+Cuq2gHS/O1zEN9YxDD6M0Te0skAkuILDCML9ivnnVv8Y6umuBtLeC o0iIuib9mgjD/Yrh4nbbpny18YmumfhuAy059XbHmWmRjni1dVDruEhlyOJXBvE7MWlu +HPphoJmQJazyJPgHjgd+7xNOmT7FYoHrLmkHOiD8Y+1TUnSvGHwziWxGeVaYlwan6cZ hCMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=fK45JuyV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 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 pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id bk6-20020a056a02028600b00577616e3ad9si7175994pgb.871.2023.12.11.18.30.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:30:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=fK45JuyV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 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 pete.vger.email (Postfix) with ESMTP id 7AC218034A54; Mon, 11 Dec 2023 18:29:51 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345951AbjLLC33 (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43720 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345727AbjLLC2s (ORCPT ); Mon, 11 Dec 2023 21:28:48 -0500 Received: from mail-yw1-x112e.google.com (mail-yw1-x112e.google.com [IPv6:2607:f8b0:4864:20::112e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1521CDC; Mon, 11 Dec 2023 18:28:38 -0800 (PST) Received: by mail-yw1-x112e.google.com with SMTP id 00721157ae682-5c85e8fdd2dso50587807b3.2; Mon, 11 Dec 2023 18:28:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348117; x=1702952917; 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=IQ2PLGJf5O/y/fYo5hj+s9entphd8dP6/+b2EP37z+g=; b=fK45JuyVji7HIaxL2jT7ItpOqf4xNYhdluBt1WippgC+8ltzMgx452lFW3unig98eM b4TBiySBb1nTJhwuVzodldo9a5gX8aC1+4MV0x8CMPatkgzdvaOcrCgqfhs+kh4igBEX 8p6orQwI3+zQ87U2xPfXSsWx77oPfJR5YusUtKHCFrLPKYfgFErm4jIyLxfV5lJwgYGA r2/NeVA6Fj3IoD6XWYQFHcsM8cZo001PXWch5ijWEtz1t7QbOpudZnxWKpwaTEuOsc8L 9m3yg37OGJb0COJ9WwZ0grxFrY4YQEGn2t2uUhw/CsVSFRZOyP1XSah/B26kNgXtLz9m 246Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348117; x=1702952917; 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=IQ2PLGJf5O/y/fYo5hj+s9entphd8dP6/+b2EP37z+g=; b=ka+10wyBpw247uio6rbsK6bycRN9M/0vmRKR1jvku2aInHLHG9Kixk0u0gDFe4Uj24 rGZaROmcHNCW3d9fPSbhoM3Ny7ib58yQWSZw595PX9hgSqqiZJkpRmPFww4UT8CzBhHx hjSZibUJZDvq3eYG9RriaF8VKvNGcOkRrL/gdWZAhwAYvwZLwk6Xf5dKNgskftizcKja als3DEw8EpJ+2fDXoaHxTEtpOb5aqEvij9kIoP7Do6bioMJ3N7VizcI2IkorB1NvgSZT IedmBxjU0QQgz1S3Fo6d0jJseVrgJrs52O70QcCv30dsiodxxqj79gpR0/hTuWcJLyrR o8mQ== X-Gm-Message-State: AOJu0Ywn7Cg619s3SgLTB9/I7wX4u3J2Vd4PjVRWMlOvfKh0yVbpoklS JMe4SWvN2QYZ/531F8Fn0ptzZkosayvgUA== X-Received: by 2002:a81:6cc4:0:b0:5e1:fc32:6f2b with SMTP id h187-20020a816cc4000000b005e1fc326f2bmr58743ywc.17.1702348116699; Mon, 11 Dec 2023 18:28:36 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id j2-20020a0dc702000000b005cf1ce8b96dsm3435640ywd.5.2023.12.11.18.28.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:35 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 29/35] serial: sc12is7xx: optimize sc16is7xx_alloc_line() Date: Mon, 11 Dec 2023 18:27:43 -0800 Message-Id: <20231212022749.625238-30-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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 pete.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 (pete.vger.email [0.0.0.0]); Mon, 11 Dec 2023 18:29:51 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041469769329171 X-GMAIL-MSGID: 1785041469769329171 Instead of polling every bit in sc16is7xx_lines, use 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 cf0c6120d30e..a7adb6ad0bbd 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 Tue Dec 12 02:27: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: 177041 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469805vqy; Mon, 11 Dec 2023 18:29:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IHJ+0B06UJ8lDK4jwASkYh3UYUu/S6Njb93ZzVJ5tw5LY3mdNt5LXnHsLqqp2yShlbn2F/u X-Received: by 2002:a05:6808:3090:b0:3b9:dc22:eaa0 with SMTP id bl16-20020a056808309000b003b9dc22eaa0mr7054833oib.59.1702348181924; Mon, 11 Dec 2023 18:29:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348181; cv=none; d=google.com; s=arc-20160816; b=fHYcD24GeQhYYWPK9zro4j2D40qAogl6uvjI2DUUYwDaA5Q9G5ulswot95FQo9/rPz uDxqs60Qiky5wFcPFFFD8dXSdwb710ER6pVCFSTPCnAbvUSJKrv+4q5xEVCtG5mvGkyZ UmLjHtfWoAJfIgAtwz0eXePj7FRQe4HOltaPVjz0UCIEYMFcEaGqBhwNhamE5/XBYnBu R7xR5qSVlabSVeRN/i+A+P3V+rMv6I79461bGb7Op3saRE32th30o0v6XWbL6kdYmSWB HvvHSBt9WnBlHXuiCd2mwN+8+VZUj8vWjvMXad/wsPbdIGyEBqv1s2h4gfrdCFOby4I7 C2Lw== 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=6wHqKQ4J5MWfkES8HBul/HTYQa0latLedvfZPgLN9zs=; fh=QYERXQp/tNW8x5SaIbpFlOegIaysaXtQwbaSdnDbaxo=; b=NVsHSZiU/xdih8a4/floNS054pBuAgSD0tgUrUKYE+htaGMUK7M+g2BQ+DPK0GAHBP 8eqfB2c/wLpskGvjPMBBW8jL4OHj2BUt7Ftboa1+OBriPsaVotFLwERkYElvFm+NnQyA BPP6z91g8jZ9oo6x65+AMBlD/8XJnoIUu0HZlJ37iXJNeOOGqEXRWiZN3L1LNV0AVbRN Z8/roUHYncFnNz4GJY/g2pEIYZRYGqkf2bMXal1eB0BtcUlT74Qw16FqrYFsiFmP14V6 mepCh7lCKz2/wsWxx1xtUFmS5U5J8m8jlNieOIkILC2+SImc5+UE152mWfH9FiUxyQnf 0nUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="CA+8/nLn"; 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 h13-20020a056a00218d00b006ceded50592si6336438pfi.277.2023.12.11.18.29.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:41 -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="CA+8/nLn"; 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 A8DC1804E6B9; Mon, 11 Dec 2023 18:29:40 -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 S1345807AbjLLC31 (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52270 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345810AbjLLC2s (ORCPT ); Mon, 11 Dec 2023 21:28:48 -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 9F797E5; Mon, 11 Dec 2023 18:28:39 -0800 (PST) Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-5c08c47c055so50953537b3.1; Mon, 11 Dec 2023 18:28:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348118; x=1702952918; 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=6wHqKQ4J5MWfkES8HBul/HTYQa0latLedvfZPgLN9zs=; b=CA+8/nLn7qwjjhRUs0p+i20R/fxU3WAFskgA0B5Hed7Fo+S0+u3Q2oZcjCgBoiU+wC gXBgADrZSr8NVvmzx6qXpUu8QRLiE0Fno2qg0dgykS6elyJBnmDmHX1/y3Aj/TMyLjEc wpdAhNSr0r7+VveEGAAf8Nn4+BKfvk9h3f/tN/9vkDprCVkkOP7F4tVVjPmxAv9mXiaT 6AJx+2Cl5hxwtfh6d92OATvzQWurimfbp7JmIMD5y4oCzA0huJEfaGkwZ+ockFJBkJdV mACRRAgG0tLN4Qg3Gt7pEIs2tD/g8yrnFm3PtO2hopoWuyaBYX5RJGzZLeND77q6gMIL oyrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348118; x=1702952918; 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=6wHqKQ4J5MWfkES8HBul/HTYQa0latLedvfZPgLN9zs=; b=HVUJaCQHf8U8eZIXUNS14i8rWKLCDph/5ChEuRTTFazHwdfV8cUkXe1RIAyNst4mEZ XjdbBwIB6wOFXx2olQ71e3ZY0gREE9yHx4xMBlvvh3IlakX4KSeB4kvHnST6pv6ldQwL LKB7zKu/ihzai4X/tA7aCMgxeT2k+kzdvFc6Bjh2p8UkgFL9wZXHj1MPDMTgsnE8X2rq 9AofpjHFuyXQZhJEmI+BnfdaXMQHqUh23iAfM5Rwvj+7DYhw4qZw2NgV/cXn2EoHubiQ 44ysm3f0OoAP86JCZK1QfMFDp4KG2wxVOt2hdFwmmOSDVfpPGAQXT0+kNMjmWFPnpsUc n9/g== X-Gm-Message-State: AOJu0YyXpigCPMJofzOcCetI4/bBbYoNEjQA2RZpQytHg7NwonimZe82 hrM3fws5N/WbehnGM02lEt4+kbKRAghogg== X-Received: by 2002:a05:690c:4605:b0:5e1:7129:7cc3 with SMTP id gw5-20020a05690c460500b005e171297cc3mr1173065ywb.26.1702348118353; Mon, 11 Dec 2023 18:28:38 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id b138-20020a0dd990000000b005e1ed51ea27sm89835ywe.98.2023.12.11.18.28.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:37 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 30/35] bluetooth: optimize cmtp_alloc_block_id() Date: Mon, 11 Dec 2023 18:27:44 -0800 Message-Id: <20231212022749.625238-31-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:29:40 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041447211706728 X-GMAIL-MSGID: 1785041447211706728 Instead of polling every bit in blockids, use 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 Tue Dec 12 02:27: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: 177042 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469822vqy; Mon, 11 Dec 2023 18:29:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IETagffye+3y0prDrTAed0EICN/l0i3A5cTTgKap5qGH/OvXcyV/sIsWFFGW1z/j3rN9FCZ X-Received: by 2002:a05:6a21:18d:b0:189:bde9:9cb0 with SMTP id le13-20020a056a21018d00b00189bde99cb0mr7947261pzb.27.1702348184745; Mon, 11 Dec 2023 18:29:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348184; cv=none; d=google.com; s=arc-20160816; b=kj+2vzIJvULqPATdZ1z5ItqLvgiTRyQ8qMlMPCDjHviHs8SlD7xa6ONKb55FsZe/28 OcZcxTf1g+yCgT2W0Gg2/7pCVpXwt25bDwWxi+5rASqaJVce9os7EJ2q+Bo5zdYf/jlB JaraPwdjIeQ/qrEcxhtte5XRoffdKPgx3nwobMSqjF5tKAl/p2Rj+VMqT+jfJlfbP5uz ng7j/+//IaHfZykPf1u9mkFx+rMrlGdJHzDeHfCq37yaqZuiDr5I8ld3QwCrtXAhCur7 HX0JB+3PdmwtBLc/BYb1MCe3Ri9/Ng1StsvEBxmvxAFLcoKNsilJeOrA2U/oC0bEQc4i xWNA== 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=uEOzzCmNkZ5d9Lsb5EU/wd0mwIpfakhGSYCXk0VOfrE=; fh=2pHdHUxcO7ue57p/hJA2Kf6YYxR87phhKQM9ajQbino=; b=w0JfgVWEfxjkUd/j0rSaUqqTIbB8dtcHNULRfJ4gWfeJPAXzU1oEzFWQprIrYEuwjT 6G+zbGTxe0TKOv1JY3/KQdR/Je2GbjclU3RoEbvQDSXvS2h6qbwjSQ5+V4iPYYLJHL3v kyWkYK3t8vmHL1Wg0IeuoNGxRWXo6m35lxGan8PRLLt+CHVbaiW8URKqaK5oufK0Dbal nTLb79cMw2TXCuEX8c1Fh3sW07N8uhdzW68zv0Nf9FKlFBjkCbqz5UzfbD/CF+L++o+d EnK9ievT4ETY9y3pI6pkRGGf8NeYFIURLBByVTXSAr2hp4pXRkBtu04xsXVbOxvrx7ad LZXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=hHYMCV1F; 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 o34-20020a635d62000000b005c688ff3462si7045884pgm.585.2023.12.11.18.29.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29: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=hHYMCV1F; 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 4649C804E6BA; Mon, 11 Dec 2023 18:29: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 S1345958AbjLLC3b (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41868 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345812AbjLLC2s (ORCPT ); Mon, 11 Dec 2023 21:28:48 -0500 Received: from mail-ot1-x32e.google.com (mail-ot1-x32e.google.com [IPv6:2607:f8b0:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7736EA; Mon, 11 Dec 2023 18:28:40 -0800 (PST) Received: by mail-ot1-x32e.google.com with SMTP id 46e09a7af769-6d7fa93afe9so3750358a34.2; Mon, 11 Dec 2023 18:28:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348119; x=1702952919; 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=uEOzzCmNkZ5d9Lsb5EU/wd0mwIpfakhGSYCXk0VOfrE=; b=hHYMCV1FcUGDHrfWKkeQiwL5Fab7+g5uLY651+dYZbJi70sHmQJ91SOk7DSESnuIoa vQV3L0YxxT2OT3MyOXFzLR3ah5SGAjxmJSc2oa3HRXnQAfriOL3pCZtXQAaZO7b+7sV5 WJXX26C+RwdjAevT9mmt9Go8DDJGziIA8xvK8jCCR6xbh7KaDxhKUn5e4HcwH1YlwKtH m+j9G/y10HvWOAZJdNoitlsRGjGXjCOmhVBDbTCR6ensUvaEGO6tD2hdxyJSEETZOwBh RFozTAbJ++dqRyKdbEnZGhArJhLERH9ntK6d3aPdzFXAO5mCqg62ms7TQdlGYUOjmObb E0Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348119; x=1702952919; 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=uEOzzCmNkZ5d9Lsb5EU/wd0mwIpfakhGSYCXk0VOfrE=; b=Y3BpQfskiIfVTej0K63BDCU8GcIQm+wCcgl5lSkA3UZUZItuqT/c9K7Tn59KJ9vNY9 1LwKSEhg/rrppBSPrAp7abYv4p0cofR2oCfH4/na2vcv9hyFGuUxDJIkQSxF3dyYW3yA +C2Nlhpu7dXMFdtcdVS2hPup8U5+LLgcxs1cV0N6rSKgfY05XoApPjHy+cHIKvbT2zag 63jItXwwDb/5HmLghPHkEtrPdIP5UXjHGfYPIbXnNO4LeLeU6BLV6Oe8V35gVQUUx6BR MNkXgss3nsNuPCdgYTPxiJlExuauSdIS1hgeNuBl28f1wuDLISnG8Zus81zl6+snhSJy Q3cw== X-Gm-Message-State: AOJu0Yxh40xz415i7fdwj3zpeNxS4xBKRfxKW+75NxM7WJeWxN4LBGHG 8dBLTlGaeWznMWR5J+4dbQfTWJSSGzcrCQ== X-Received: by 2002:a9d:7a57:0:b0:6d9:d6f9:359f with SMTP id z23-20020a9d7a57000000b006d9d6f9359fmr4288975otm.53.1702348119498; Mon, 11 Dec 2023 18:28:39 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id d64-20020a0df443000000b0059f766f9750sm3434546ywf.124.2023.12.11.18.28.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:39 -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 , Bart Van Assche , Sergey Shtylyov , Alexandra Winter Subject: [PATCH v3 31/35] net: smc: optimize smc_wr_tx_get_free_slot_index() Date: Mon, 11 Dec 2023 18:27:45 -0800 Message-Id: <20231212022749.625238-32-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:29:43 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041450068368266 X-GMAIL-MSGID: 1785041450068368266 Simplify the function by using find_and_set_bit() and make it a simple almost one-liner. While here, drop explicit initialization of *idx, because it's already initialized by the caller in case of ENOLINK, or set properly with ->wr_tx_mask, if nothing is found, in case of EBUSY. CC: Tony Lu Signed-off-by: Yury Norov Reviewed-by: Alexandra Winter Reviewed-by: Wen Gu --- 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 Tue Dec 12 02:27: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: 177043 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469831vqy; Mon, 11 Dec 2023 18:29:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IES73XRGmfLzkopJl6JU9Q4vDat//4xqFEelf6MM+iLI3MnV7HVIhqwxu19jDABOcMgTBH0 X-Received: by 2002:a17:902:7e82:b0:1d0:9416:efb7 with SMTP id z2-20020a1709027e8200b001d09416efb7mr5443284pla.108.1702348187054; Mon, 11 Dec 2023 18:29:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348187; cv=none; d=google.com; s=arc-20160816; b=OSvsSLZDPqce0GBhKJDjhO+TWV1frswFjPe89f9O8guwHUkV5uzPREMWV2v36LnowT RA4s3qoyGFnmxZFMw4JjnHx6zymcGV36YbyWy6ecTTu1Hi5Sxfg1N8Cfi9+q8lewsGpW HiYYopGMbLuBYpZydNCHI6ox0dH7YAE86FtPYMeEJ5OIUMrO0zo+nSe9nUQfakpobqCp dqwAi9QxBIcpQxeStTJDjWFIQGsczVaqfAz3XvX/0WMPOVYZP28xtgsAik/0+Ih/njlv CjR4n0PXOUpPES4PMKmtfHcnzJkVUjznuucDYh64Ze2xvLPdV4y/x0I4Df5LW3Go4j0S f+cw== 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=s1ziCHmUMRjRbO8uC0DQdJSiPRQP/fDCaegFJhzzCaw=; fh=/YRi9rAyKSONvUE85OGr1YRQiTBNCSXxP54DcQzc1+o=; b=ztaMgDUTblMbBUuG9QrVE+mgo3/jqXxovX6en22rVofnfloMwIihvqc4TLsS/Qrr/N aBrOcNQqKOjjfAl+Bl20WEe9Q6rwvyUCzm6jxZHK4yM8FKur5m46s6v2RmCkUqTfcyqR UKkohCfV7LtvmJOMp04tJ9KnabNEi2gSMNEn6URLRnB74b/v86XaPUWTdhoKrXe3Ij0a BoBz9U77E2EN3LR1QNpr/ipx23LbNcUbfMOMXCq8CpaHev5ixWqqKaBkQiJYtoz8Z+bS LPWi0q4LVRrOO7ctO9NEQYWHU+QeSjl7Xfda7gQerlHjpq+QMS51qIbOA3UMbvIHIJUO EWcQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="Wp1lG46/"; 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 c17-20020a170902d49100b001cfc2da926bsi7317215plg.378.2023.12.11.18.29.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:47 -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="Wp1lG46/"; 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 0B545804E688; Mon, 11 Dec 2023 18:29:46 -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 S232540AbjLLC3e (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43742 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345813AbjLLC2s (ORCPT ); Mon, 11 Dec 2023 21:28:48 -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 D3A39EB; Mon, 11 Dec 2023 18:28:42 -0800 (PST) Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-5d7a47d06eeso52156897b3.1; Mon, 11 Dec 2023 18:28:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348121; x=1702952921; 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=s1ziCHmUMRjRbO8uC0DQdJSiPRQP/fDCaegFJhzzCaw=; b=Wp1lG46/3S4h92lGr9FmU3vpqbCUWbjNtZfAfZLy1j+FwlaLb4wvIYWG+6axBfmpBi YrQbQTK1VTrruc/nqjLdoYQIG9QcxRxu4aZ66X5YaOzPYfTZogft+qVIeqUg3yEJUZX1 9DnFtHDfPW6hLWLv6gkaxBt6BL0aCDzLyU/v/Q21qMTEou0N36aigSR0X9+NXl1u+Lab YRkjWdEyeDnbGEKcI2wbZz8WvcKh5JTCugM4MwsMpll6XBYsTHyJQb11cSpgTy6Ob6nq 6Nn9HPzwRQvxMKenbUOqQXz1SliC3s9kW+3jLSCPoAIDxahdsvSlTWx/1BiaqRPzkQN9 hMRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348121; x=1702952921; 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=s1ziCHmUMRjRbO8uC0DQdJSiPRQP/fDCaegFJhzzCaw=; b=L8WBvz04Dy9BPO01cU1tcxpjXB6vgsQ4o+cJ+6vqEdFQSPlFU6ZthxY50shHIAJYFg W3BVZi2mCeQhPZ73vdvvt+OJ5I2jitNkiyrDVGP7igRevSKWeVVnASZcw4aUOL7aZ28L MbsQ3apEIIa/fmQtVOzKlPUUqba+KXgxMJyxRo9Us67F0LzcaSuX4nuZz6lrRZ13xAxX 34tBlU8mtc5Ic+/ZJwKGnQOtiG8afXGtGTRaHJ77HvuX00d1lzUDDhs3+Uv2Jd2/Eeye Q6ErOyU6rHPj5HQb318fNuFHgKxvdKNxlNS/xJKmzVgHxyL/ssY9VSwYl04jni/rE6iv jV8A== X-Gm-Message-State: AOJu0Yx9lGJyBDBBeHxFQ97df3F8fTbha/zFtYS7agVMTANKfMbAmGr/ gII3WcyG2m/pXy68/1X4ejufa8mjDY2ZDw== X-Received: by 2002:a0d:dbc5:0:b0:5cb:eac7:38aa with SMTP id d188-20020a0ddbc5000000b005cbeac738aamr4593499ywe.35.1702348120890; Mon, 11 Dec 2023 18:28:40 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id u11-20020a0deb0b000000b005af5bb5e840sm3454168ywe.34.2023.12.11.18.28.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:40 -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 , Bart Van Assche , Sergey Shtylyov , Takashi Iwai Subject: [PATCH v3 32/35] ALSA: use atomic find_bit() functions where applicable Date: Mon, 11 Dec 2023 18:27:46 -0800 Message-Id: <20231212022749.625238-33-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:29:46 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041452477228502 X-GMAIL-MSGID: 1785041452477228502 ALSA code tests each bit in bitmaps in a for() loop. Switch it to using 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 Tue Dec 12 02:27: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: 177049 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7470308vqy; Mon, 11 Dec 2023 18:31:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IF/CynYILCpuOh48EocLrP7+eFJl6OzlKyUItFd6I73TMQdh7CF7nvJei67AdCdMQHMeHpo X-Received: by 2002:a05:6e02:17cf:b0:35d:53e9:c15c with SMTP id z15-20020a056e0217cf00b0035d53e9c15cmr7283119ilu.18.1702348264564; Mon, 11 Dec 2023 18:31:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348264; cv=none; d=google.com; s=arc-20160816; b=Q6pC3vO8v6vdTOYBleAW1ElCsUBXydBaiUmPUEmu+m6GtUhxSuTUnwbLDJGTXzNWO1 pbIu4RXzsLBSrw0C47uPqQT+q6n6p6DQa1NUGA+4U5QsC01UG0RQ95ifpbhWMsziK+gE bMcJFZmqTxvcndt24ojvBUq+xSIuy5FvRAhHu0AHkn0TLvGIyLw4fk4XDOdwQVVT65TD grlMI8/MNhYzQEarhgfceyuhWZu37niQiPlMPHCwnln43S064p7bHuTQiv+Q+S1qgHh2 1gVkcuJCWU8hnJN/bzqzxlB0VlCF+dt1E0Cww8S8buOEGDqMg8KVuTIBvBm4gXEvA1Ny ARIg== 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=IDadoh3sC9nujQVrBPos5E8fmvZsF3sQWC418uY4Cbs=; fh=7CKtRTKIJQWky87pDsfZzHoo8TOWKn0Vo/v81eNSkgk=; b=FSmvUlM3gTKhcv9z+7v8U3joS7sDKbHHbUJ3AxvZGdpYZQOjsGszgZxY8i7DMK2uuG gDztTeUYJF1ZpOyjIw0Pkk010XCqKAQ1W/Y8lQqBnREsm+d/iKZ7qG+YppN88zS9HaRK iwhpih1C+m8ae7RuEtLY6reDntTRAvq/Qo6HpwwztpDZfJq5nStl8SIshc6GQHLcneDx PGkaPH4afCKr8fwUXKTvO2C8PLnO2JkYpxmXBlP58IWpTSvz4fe/ijbta5S+hvqMx+9c tJrYxGZ0LE0QuctIU4vNuL2W6taYTbHWTORduM8jWaXy7taed5vqpZrFM9uu2CR6bcsJ +yPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=dxdYWiQL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 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 howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id p3-20020a1709028a8300b001cfbd3f391bsi6766123plo.226.2023.12.11.18.31.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:31:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=dxdYWiQL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 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 howler.vger.email (Postfix) with ESMTP id 1F5BA80B2D71; Mon, 11 Dec 2023 18:30:52 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345969AbjLLC3g (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43724 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345816AbjLLC2s (ORCPT ); Mon, 11 Dec 2023 21:28:48 -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 AD458EE for ; Mon, 11 Dec 2023 18:28:43 -0800 (PST) Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-5d3758fdd2eso50362517b3.0 for ; Mon, 11 Dec 2023 18:28:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348122; x=1702952922; 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=IDadoh3sC9nujQVrBPos5E8fmvZsF3sQWC418uY4Cbs=; b=dxdYWiQLlx6CnU5kD0QxPoqDd7uG5ayj5M9sjT1If/KWFku9+Pp/Xb4neP7pFZIy9e QHE8OovC+4K/D2pTyeKES56IdDB7r1HN+9c5PsZ5hsr1xrZ+5S44ev33Tp6/UILyrtgr zUTf3GHBtt6eA4PdTsrgs35ies93gFMr/NNHBQAj878cdAzwBUO2X/Z9F24yIaMK5pHg NoZlwIwmilOyRTiFfjY9jlhA+O19D7tLg59bcqzGfwCCeEtAcljr0MJOZXD58SczdXzL eGEv/+SK3DCk/3Q95YOeijOUrmFgzfnGKcLigVf2u7PSHrh72JJUWzotlSlTbGi52GEn Mmpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348122; x=1702952922; 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=IDadoh3sC9nujQVrBPos5E8fmvZsF3sQWC418uY4Cbs=; b=WjPwH6iPTu/RCFf+nKwGFidWUWjLSL8NQbB0iovCnBuJ2ZGJOB4LWNlqys/iBnWMnG qod5+g1b2pxdFC0+vcXq1THbSfINfP/Ih6FzNWgzhdr/P+Gr9Tak1og44uFVOaOXqk9n gznrPNaamA5SCgPgiTJpM6ZK6TLG028lxPUGZTbFNLxIGSA0FPLwZgnvRJnQ7/rJH8Us iG3Dyr0AzAnvMyqwr9PROpIiAH2kst0iGhLzPg4N19La09g5Azd6dIJclK2dwBw5pjPs 2Ck0QXrGf5HgZ17LZltvW5LOKnKX81msP1Bhm7TmOyHH38007Ym+CUtkGcRH3+cZm001 Tc3g== X-Gm-Message-State: AOJu0YzRPIQyVMsprLvNc8F8n3azrQdYzKWB0SXxHc+GK2GhgNJk7xRm /Uu+SP04ZPb8D+vBcu33j2FQs8wqCBQ3Xg== X-Received: by 2002:a0d:cb83:0:b0:5ca:71fe:4dbc with SMTP id n125-20020a0dcb83000000b005ca71fe4dbcmr3774094ywd.49.1702348122349; Mon, 11 Dec 2023 18:28:42 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id s7-20020a815e07000000b005b34d8b33ffsm3432482ywb.119.2023.12.11.18.28.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:41 -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 , Bart Van Assche , Sergey Shtylyov , Greg Ungerer Subject: [PATCH v3 33/35] m68k: optimize get_mmu_context() Date: Mon, 11 Dec 2023 18:27:47 -0800 Message-Id: <20231212022749.625238-34-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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 howler.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 (howler.vger.email [0.0.0.0]); Mon, 11 Dec 2023 18:30:52 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041533820975096 X-GMAIL-MSGID: 1785041533820975096 get_mmu_context() opencodes atomic find_and_set_bit_wrap(). Simplify it by using find_and_set_bit_wrap(). CC: Geert Uytterhoeven 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 Tue Dec 12 02:27: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: 177046 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469876vqy; Mon, 11 Dec 2023 18:29:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IGkhnUa38CbhUnF4bQO8KDbNjjmlD+7pPLVbh/zpWZKtbpuKqNHwiiHnIuXOs5f7dsgGLUC X-Received: by 2002:a05:6a20:8c14:b0:18f:97c:384e with SMTP id j20-20020a056a208c1400b0018f097c384emr5410341pzh.40.1702348196384; Mon, 11 Dec 2023 18:29:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348196; cv=none; d=google.com; s=arc-20160816; b=061OPMv+3duBk/7cZu9qWCN/rBaJ5/Kw0CQ5Mnxon09Sf1ZiRuB4k9gJ6JLYkZCQHO qjCWC2oBI5gj4dqDZ8aHLCVheukncP5MVbkDYQozAPW7Usc9pGs+gTaa8xapI8q8KE7/ 1HfiASeRjAfEDIdUnlsPEufzuOlGqVmqwqGCmXbBl4xDOLLviHuGnCRqXXnfBXxaa2Ej 5Uuo6MiiyywtqszBWuehiDgbSb3vMCjh66uJrvz9Pmaua/eaMr+xFUOh3a0QaUimnV8b KBQ2LXtYbbWgkcjXBVb8iAJPcm1KwPVdcpEu3nqR2vFiZlacPiYVxr0AU4ayUqXvmnzJ IEEA== 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=2DMiRTxcwheUb+ZoNiPcJzLnCeEFZ24O/DBbvQYnX0M=; fh=oaFiI/9/t0BWUNJVeVa8zavLj2zk5LJLOn+hQcwJIQI=; b=RePPMd7xJFS1xWv6MaaHouTOFBbpn66OOTvV/XLSbwIGbMjJR9cx50rB0NFf6v7MDg XEXT4tb/FFeLWFF/ZLjcgewdgTHbF84I2bZnbpsh9uBnsdUx6UA26BSpq/qSCvg/KiZJ ciOOfiZpuUaE9dCydlzd5ZQTqmjsTK2CASTGPx5uepT9jmiKJkDfBxDO3c44Jt1bBJi8 fRKVA8Ruuir/l1G/D2vmSDA7am5O4mPUL+aFRWQEs2KTGvRoYJ/B3+zcq6qFUbOfZl2r 4SoW2Qr1PHSvCgO/SUCvQRbZ6X3OtGb0EVGxf6qWKvxAuxUuZ74CgBFVFPPZ7FWdrcaJ OA6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=l23L7lV4; 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 eb3-20020a056a004c8300b006ce97669ff7si7182071pfb.364.2023.12.11.18.29.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29: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=l23L7lV4; 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 C34DF809F3A1; Mon, 11 Dec 2023 18:29:48 -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 S1345825AbjLLC3j (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41882 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345818AbjLLC2s (ORCPT ); Mon, 11 Dec 2023 21:28:48 -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 3C425186 for ; Mon, 11 Dec 2023 18:28:45 -0800 (PST) Received: by mail-yb1-xb2c.google.com with SMTP id 3f1490d57ef6-db5e5647c24so5250866276.1 for ; Mon, 11 Dec 2023 18:28:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348124; x=1702952924; 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=2DMiRTxcwheUb+ZoNiPcJzLnCeEFZ24O/DBbvQYnX0M=; b=l23L7lV4hh5lDkKy8WpQFYTkMrVEnXHT/E2pRwalsa8qbdIEvEVMsGaLXjFt7SKj6F MIckE0oRdoU28fWjsRIX58BJ77jDx9wwLvmo9KI1x1XI1ej1BxQfczXzlEwfW0gWd0df 3Mcnqthhv4LOk4HgS1On0PlFnc40JY6Rj6JnLgzkdOWSiLQscS/VBiC+ulZa5hrR6nRI /1X9UnZDkmJc3eALd2QGnvD6WMCDr+HiaS4jRMVt/oiHk+Bunw3yz7VylvdFmMYccYsc ts7EDvMEXXinINQeNKo/paSVpSvxjIHzEB+YDAn+gCIlEmEzMOrCTqeTz0QtxbOUZm7r lIoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348124; x=1702952924; 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=2DMiRTxcwheUb+ZoNiPcJzLnCeEFZ24O/DBbvQYnX0M=; b=gOWs6WXK5GnAitVJPyIQ3CATxyec/J2LJLatPP2K9HwPSlLJ1gylBaTi58uMJZn6Ga NAJWiD5cItJqUpLIZVYx9SLPzRB+ekIXvQfKtKHGm57XT5EsigNhZdGWsju+Giq3HPl1 u9dF7yCXouTBM2JgxngcQtcA1G2aUQylI2EHw7nJp7AQNTb4yGl5xu/KMP+aRte+l+c2 z/PMAXq9JZuEREOr/i00N53UItaU9uJ7WeMh5rMl4M2/pSPME0kGUw3atJRAiQoXfnGU aiROJ7jZEOJrfGgRliF1soaOuNObcCP0DHJmlEL8iSNjImvx+XSDn5wyIKa18Mlbui4M KcsQ== X-Gm-Message-State: AOJu0YzPWbOlba0Swv7CgaLswSA/Iv2c8EZC1TQrcJovGT+SRLpEhM97 8BWfubKXrYRVWGMEiFmk6vznU1gv0BzsuA== X-Received: by 2002:a25:cc82:0:b0:dbc:b4dc:a8c9 with SMTP id l124-20020a25cc82000000b00dbcb4dca8c9mr687040ybf.15.1702348123771; Mon, 11 Dec 2023 18:28:43 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id x9-20020a25a009000000b00d9a36ded1besm2959103ybh.6.2023.12.11.18.28.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:43 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 34/35] microblaze: optimize get_mmu_context() Date: Mon, 11 Dec 2023 18:27:48 -0800 Message-Id: <20231212022749.625238-35-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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=ham 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]); Mon, 11 Dec 2023 18:29:48 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041462368991374 X-GMAIL-MSGID: 1785041462368991374 Simplify get_mmu_context() by using find_and_set_bit_wrap(). 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 Tue Dec 12 02:27: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: 177045 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7469864vqy; Mon, 11 Dec 2023 18:29:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IEts2+ZB06vQRyvl27QO4v1OxnElCPBdtgk/sN0S9V2W9uGjOSNhEuNNqIY5TUxNYSbClJt X-Received: by 2002:a05:6e02:216a:b0:35d:7a37:ddb9 with SMTP id s10-20020a056e02216a00b0035d7a37ddb9mr4607015ilv.16.1702348193397; Mon, 11 Dec 2023 18:29:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702348193; cv=none; d=google.com; s=arc-20160816; b=fcBT2PtpYWD1lxH16k8LoT/f4lwZtUCladkYudaZYHFJIRDqEQMorOn5/3UT5anCx3 PQKLC5FZrTDFKNTeL4yQpjcr2JJGxpGQOeKq/XuF1kRGXLuHwj0nwWl6OIsFH0GCBAR4 roIbKdO5fbhAcWzevDeuCQOj64nQ/svZrc5HQ4oo/2LZMH3wGSjZO5xFGiG7vurbbpHi fShkw+TsD/okP80+yQOAE1WwyAY5X4QAgQ8bBjlBpXs3DmRAGEQXISEXf9ZDWCyIdckn w4yioExelYeLHC/nTKHle60X+1LeuIzWML8qCAwhJhYqnIPmCeBqjPEFwKNY+cqSXNN/ VpUg== 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=Jo8m0hD4+F1htFRsuw+mgKqoUgBikXdLbdGdafmirjs=; fh=AyzTW+3J+uPNW6kdXqM/TkiWloUAkCO3K4lG/Q7SMbQ=; b=trHE3LdJV3S6xiEyviLUKSwb5W5+IOI5Nc0zjIaxlrZagizNsnJhBkpatD9lu3H6dZ +N1P8HzDdkTsRtrSvKrZWZsmTam7SDa7fEWx+6MpKsLMzDKq5LBKOleQqgjlXdlg5mGu eS7utmMM/b48d1RLB1FXjmDWQZdEEtqwDkYjPEGc2/qMInJxERCIPQDoE+44g3rMObbQ j2WW/DxKDvg3kPBSN59EKntF1IESuLQVQGrB4VNY2gIiu+55pJH/aNEP4/ycmTkrL+XQ VPGIEIQ58SSXOTrxqY35tKLPBNx7M66EKfivoYHwE3Nf+jivcfsmcKiFJx0y6dFoUqOK jYbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="QBRWLcq/"; 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 n12-20020a634d4c000000b005c66d14ab63si6939198pgl.407.2023.12.11.18.29.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:29:53 -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="QBRWLcq/"; 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 53D29804E6AC; Mon, 11 Dec 2023 18:29:52 -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 S1345957AbjLLC3m (ORCPT + 99 others); Mon, 11 Dec 2023 21:29:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41894 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345714AbjLLC2t (ORCPT ); Mon, 11 Dec 2023 21:28:49 -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 AC5BD189; Mon, 11 Dec 2023 18:28:46 -0800 (PST) Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-5e1f852cb46so172957b3.2; Mon, 11 Dec 2023 18:28:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702348125; x=1702952925; 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=Jo8m0hD4+F1htFRsuw+mgKqoUgBikXdLbdGdafmirjs=; b=QBRWLcq/d/tBqDLg7eCONqV2U2nIlxfcn0P+QF+Orfd/DZuiRUmMmr4c36SB7HAWj2 CnLJUFhLN2nXg+8eRvPWYaMl1fEtcKSabW/xW37UtOrjnc2sltLG+Vj77mXLpfXh+X4H kflNNzDLQ/DiNySHe00IfUjCGa7/2reyU3BEa+xxsXmWfhzPuWGgs9ygHjDspXHj3FAi nKpLgOjq64cLHwK5TrTZnAv5BAMHz9GscIJlgR3KtctuqzeAqFqCs2BOP75v76ZD3uJ2 fEcYzD/eirVtxCxEyTHqpdEGO+fjlXJlE90L9Cv04KSHxYf0O3i9m5pgqT/valunlxxj QA4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702348125; x=1702952925; 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=Jo8m0hD4+F1htFRsuw+mgKqoUgBikXdLbdGdafmirjs=; b=Or38kVKdRrI5USk9EFtanmHxsYvxkDxm9KQg3fdl3d2iBCHLkdGAMFvWcbHPM1H2MT uBBmXk66VUowdEvuKpo4gUlhWn8/Tu+m8hG485hB5v42Qv0rh5nJ83lwkI9U15rQap5i qCDmnkXHpKvsPShtxJqCWdXXCKB5ebbzGC+AUPREj5ysRQBfJ5EbFUwfrKoUVp4Ro+z4 OLe1y+9jqBylZVtTfed4cLkuaBTfHjf+4Vns+UFEkoKesDqs04BrJus/TwbYCLICgMsq 3MKW9FFe5SVLkCQFD9Fv7Cs3+jdNH0uLVZTKF14M/NJ/7IURpOz2nxx3AHT31qhdjb5O dUFg== X-Gm-Message-State: AOJu0YzMejRNfbh/B/FIsAkt4WtNJO4OBxdtzcB+AXoVw5QW69MUycV/ VpVSHcdgb8ijvLZl6NPmiioFEY0NLW3jzQ== X-Received: by 2002:a0d:dbd1:0:b0:5d7:1940:8dce with SMTP id d200-20020a0ddbd1000000b005d719408dcemr2626933ywe.53.1702348124999; Mon, 11 Dec 2023 18:28:44 -0800 (PST) Received: from localhost ([2601:344:8301:57f0:38aa:1c88:df05:9b73]) by smtp.gmail.com with ESMTPSA id x75-20020a81a04e000000b00576c727498dsm3462728ywg.92.2023.12.11.18.28.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 18:28:44 -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 , Bart Van Assche , Sergey Shtylyov Subject: [PATCH v3 35/35] sh: mach-x3proto: optimize ilsel_enable() Date: Mon, 11 Dec 2023 18:27:49 -0800 Message-Id: <20231212022749.625238-36-yury.norov@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231212022749.625238-1-yury.norov@gmail.com> References: <20231212022749.625238-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]); Mon, 11 Dec 2023 18:29:52 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785041459428691905 X-GMAIL-MSGID: 1785041459428691905 Simplify ilsel_enable() by using find_and_set_bit(). CC: John Paul Adrian Glaubitz 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);