From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C9FE6EB64D7 for ; Fri, 23 Jun 2023 13:31:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 514818D0002; Fri, 23 Jun 2023 09:31:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4C3EC8D0001; Fri, 23 Jun 2023 09:31:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 364618D0002; Fri, 23 Jun 2023 09:31:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 272CB8D0001 for ; Fri, 23 Jun 2023 09:31:34 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D8DC416024B for ; Fri, 23 Jun 2023 13:31:33 +0000 (UTC) X-FDA: 80934099666.08.98B5C7D Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by imf17.hostedemail.com (Postfix) with ESMTP id 8B79C40024 for ; Fri, 23 Jun 2023 13:31:30 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=linutronix.de header.s=2020 header.b="E/DOYtEZ"; dkim=pass header.d=linutronix.de header.s=2020e header.b=j5u2pdy4; dmarc=pass (policy=none) header.from=linutronix.de; spf=pass (imf17.hostedemail.com: domain of bigeasy@linutronix.de designates 193.142.43.55 as permitted sender) smtp.mailfrom=bigeasy@linutronix.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687527091; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=TaYB0hIPxNDoSeIOs7vt8AD44X7gw9nLItDXTZZb8X4=; b=k3ko9TPKn8dt+AMbfmL8BRhkmiSCPqwClw0dqO5lQlvyDMuxalvebKN7QRdh/ufETVe6Yq fuNFy0Ja6Ow0vbJz6lFK6mBi4DUf1pGrAIyG6EJsUN8M08N90K+0Bh5kzM6gbd9GzeaJer prXbRNQCfcVwl6mEkNhZCjFKoU71f2w= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=linutronix.de header.s=2020 header.b="E/DOYtEZ"; dkim=pass header.d=linutronix.de header.s=2020e header.b=j5u2pdy4; dmarc=pass (policy=none) header.from=linutronix.de; spf=pass (imf17.hostedemail.com: domain of bigeasy@linutronix.de designates 193.142.43.55 as permitted sender) smtp.mailfrom=bigeasy@linutronix.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687527091; a=rsa-sha256; cv=none; b=RBB1ejJ5xzcr1TTiJqGXGOBtiqMA4q/vOqYWa8IMLv7QOqQAN09JHAK8Ca7leLBTQU/VT+ p9yf5JVfyTpcwq9t98XMqMOhwcMdbRJScu5Xm7vhk10QPGmFn3wQ4jHvKF7P+frbp5GOOE XmrxKKAO+vkNunAXeQ3iLpw76u0jXE4= Date: Fri, 23 Jun 2023 15:31:27 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1687527089; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=TaYB0hIPxNDoSeIOs7vt8AD44X7gw9nLItDXTZZb8X4=; b=E/DOYtEZSZ6vqp0ik3lKdp/fi5ozxic+Ep8z0hH6DT21E5oDnrJmDNYRzEhZB6AhMDLQ5B LZ5EpNEKTssiVLW3MDV3nennV9YDnW9q+Brbkq2LyA6EOZNEZbjfOIjyrsLNgwjCHArTf8 dD9ukKfnEbjqR/TRxAUqDCtwCR9miBjmFLzXgE/1EVtPoB5v21GbwuoiE5dKFRKqpHls0P W2pAQCAwyKh9k5lLwGPC+otb4JOC3LeC6gElAfEx0e9WY1fIR0X0rCKSONjDGHWW8O1wVc SkVZeCStJULOgEWeCWG8lTZcwdrdUIXCmcH4liUIM5H92Q/XNNF83IN/FcHlmQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1687527089; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=TaYB0hIPxNDoSeIOs7vt8AD44X7gw9nLItDXTZZb8X4=; b=j5u2pdy4bQ2Xp1T83fDjlz991Qv9yr+kf1fski6DlQv1iMjv3I+sph6YiUHRVZtQeJlP+N kBxjC0KsWnQqiSDg== From: Sebastian Andrzej Siewior To: Petr Mladek Cc: Tetsuo Handa , linux-mm@kvack.org, "Luis Claudio R. Goncalves" , Andrew Morton , Mel Gorman , Michal Hocko , Thomas Gleixner Subject: Re: [PATCH] mm/page_alloc: Use write_seqlock_irqsave() instead write_seqlock() + local_irq_save(). Message-ID: <20230623133127.fJ8Hf29t@linutronix.de> References: <01031ffe-c81f-9cec-76fb-e70d548429cf@I-love.SAKURA.ne.jp> <8b6d3f39-c573-ca2b-957b-8c48c2fa68ad@I-love.SAKURA.ne.jp> <20230623094544.RcLNdg6H@linutronix.de> <20230623101111.7tuAg5p5@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 8B79C40024 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: rzqq1m87476xdsopsk1j3sixc5ymts67 X-HE-Tag: 1687527090-130821 X-HE-Meta: U2FsdGVkX1/jc4UMs5DB77s6k+HCtHIPrLQfI/e50HCPkeOAK/lR6CL9oSIrmZya3mFwbFkKIm0nOHZXF8VFcDHzinvdxFBauwBxs/kWCBHyPJoqXjjsEuq4Mi+pzcWDk7B4pSvcWnhSPc1dDVrYtXmFE7TUIMFwlAIPkrSanWK9QfZTOyD58WFG+pSQGYuDNvz3HyPnPs4NiEQyfvjimwTvSSa23W2hhvHx+JcLl/Bc62c5CJVMHZcXcvJIj+SprfM3qZ1LBtsRXK72jUaOOnkrRJm0h2F6AAj8lEaUlsa2reIC07s3W4tjeF757iLeiPo6kIPQxhhD11svRfuDIubM9lOv5B7tJ52vxGMGYM1Aw5gcsdpVEgmBXmQIjL+VsaWkU/fYMuSVpMQGmoM+gnPIDnXKiqf8itXz2lv8rgvFdclXClh6J9D26UT+hpwVpEgqmXAS3disbCUSdMCHsZrlB/2ZPBje96PhWT2fPPFvq4Arl7kjsIm1s6RoP9+UQcL/ubn9miOP3BfxHQ5NpYtj1JqF9jw4Wn9Wucs/C0q35EiaibR/s8ngbI3pT/0T6aicGO1nXb7hP+slTn+rT8+FvY4YPSdkEnJA5oaP1cONjwifegXh3Hc8AB1ofv5G8IVl00uiiLQr1aDtyJmA8AeuoLELFtPekB04t2ON9F7B2Cw9lp3ZYTK9khwrCurHvtxUWKLkylIK7ZSUHtnJw7PVrEle3OgSrFe2COYxdWYUZj9yOm/p1+C+80YF6brO8qeFPh0mOLL8nl5gH7Fe7CA3ecAODBi7OFyrPbpo+Xxz0FrjZ2FDV2bQyYk+/DZThgef95jkIO17KVn5E+O+KBAGa6AdObMXSjsJ+NC9LZOU7lxA4Fb5ZNXm0qpR9pyfjgWoKoMS0clCk+iHvXGlnhI2pmWQ/bFTtPgdAxw6uOzxYV4MzYbXGm0tx6P03Pmb8WqK6P91tB8KK5zLpSL uuPJRNmu BuR8UiMXwO7AQinGWmNka1qltO5SBghhb4hfHIz4AP3nkC0jAJabdN8LTt4IXOk585WjY8qWHnyhenKYbKVCnZyFFFHKq+OPqRFwQ47i3goZOFXD0uHAzfkaJtXbNfpHqAJPL9QTrApNlcl8= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 2023-06-23 12:53:57 [+0200], Petr Mladek wrote: > BTW: I see a possible race in the below code. > > > | unsigned __seqprop_spinlock_sequence(const seqcount_spinlock_t *s) > > | { > > | unsigned seq = READ_ONCE(s->seqcount.sequence); > > | > > | if (unlikely(seq & 1)) { > > | spin_lock(s->lock); > > | spin_unlock(s->lock); > > This guarantees the reader waits for the writer. But does this > guarantee that another writer could not bump the sequence > before we read it below? A second writer can bump the seq after the first is done, correct. > > | seq = READ_ONCE(s->seqcount.sequence); > > IMHO, it should be: > > if (unlikely(seq & 1)) { > spin_lock(s->lock); > seq = READ_ONCE(s->seqcount.sequence); > spin_unlock(s->lock); > > IMHO, only this would guarantee that returned seq couldn't be odd. This doesn't buy us anything. If the writer increments the counter, after the reader unlocks, then the reader observers the odd seq number and locks immediately (within read_seqbegin()) on the lock without spending cycles within the read section (outside of read_seqbegin()) and learning about the seq increment in read_seqretry(). > Best Regards, > Petr Sebastian