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 8DC89EB64D7 for ; Fri, 23 Jun 2023 09:45:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2CE408D0003; Fri, 23 Jun 2023 05:45:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 27EB08D0001; Fri, 23 Jun 2023 05:45:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 146858D0003; Fri, 23 Jun 2023 05:45:50 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 026D38D0001 for ; Fri, 23 Jun 2023 05:45:50 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id BE971140E1A for ; Fri, 23 Jun 2023 09:45:49 +0000 (UTC) X-FDA: 80933530818.24.4A96355 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by imf22.hostedemail.com (Postfix) with ESMTP id E6463C0026 for ; Fri, 23 Jun 2023 09:45:47 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=linutronix.de header.s=2020 header.b="qkzJ03/d"; dkim=pass header.d=linutronix.de header.s=2020e header.b=sgEjDMsF; dmarc=pass (policy=none) header.from=linutronix.de; spf=pass (imf22.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=1687513548; 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=AHMTci1RJvL9ZiUUEvrxinI0u4QNGbEkTG9Kaq/r+Js=; b=pYbocGxgJwllF6itjwVdMCxAkoQ6Z73PIf7CKOcPWOVSV5NYN2vh3N7NdJXWJhl6UB1v9P g1yQHWkKoRzoSM3gp0QMrHzFp4C1GuWkDk7c+9V+4pHwtR1Aqh/9VO+GnG3WOoAeuPZ6pI EsXMqJJKtaENhO9mn6hMCMpSB5l+Lik= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=linutronix.de header.s=2020 header.b="qkzJ03/d"; dkim=pass header.d=linutronix.de header.s=2020e header.b=sgEjDMsF; dmarc=pass (policy=none) header.from=linutronix.de; spf=pass (imf22.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=1687513548; a=rsa-sha256; cv=none; b=OeKpKzOjzjEIxWfMwWMfReT1aLPr+JLIUY1qqsFCL4aIihkDXUTh0oTzHzCgpL/YNEgeSc u04g+7zI0fgIhs1Ffv55nQx3tYC9GeUOXu6oIWPgitu7vcXAb19ebcLsEsL5SSb3M6TJWJ sfj+OzhKxh1E+fFnqm2MocsMPsENl3o= Date: Fri, 23 Jun 2023 11:45:44 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1687513546; 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=AHMTci1RJvL9ZiUUEvrxinI0u4QNGbEkTG9Kaq/r+Js=; b=qkzJ03/dhy4byT20l1uJqwgJt3yBpAXgPazqH/WU7x5OL7NNDlI0NSYwjVWWUmoiX8dGNh M6qaEJ8zf923Hxwo7OhRnUduQqxBFnCz1D9ELZY9RQROff/v1VgmtuAR0HpDA0nbiCLw/W ZAnh+ZKy443cPGCGIcqkcLk/xvYYpCUNylH6npNlpld3ERag13npwzF8PlRJ/3Z6CBJBI0 UOdUEAWzsYxx5jCM9v0A/t4MUJ6vxJqnZA4wu7Q29Djf7K0vOjffI0MGE69m5K1TWlrJ7m zXe4jiYrQGOGabe/JqOYQFBLPvBr48oa7OXdeY1FZziZmTcvzVC8XB6TnALnrg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1687513546; 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=AHMTci1RJvL9ZiUUEvrxinI0u4QNGbEkTG9Kaq/r+Js=; b=sgEjDMsFZrWM3VtKSZ8UYwyOhMRmYl0CTOLlmU5HI5oafLYKB/PdXSQEeJPThfBLvGBkJC wVgriwru81nW/JAA== From: Sebastian Andrzej Siewior To: Tetsuo Handa Cc: Petr Mladek , 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: <20230623094544.RcLNdg6H@linutronix.de> References: <0e9fc992-8e05-2e63-b3b1-d8d3ce89fc16@I-love.SAKURA.ne.jp> <20230621130641.-5iueY1I@linutronix.de> <20230621143421.BgHjJklo@linutronix.de> <01031ffe-c81f-9cec-76fb-e70d548429cf@I-love.SAKURA.ne.jp> <8b6d3f39-c573-ca2b-957b-8c48c2fa68ad@I-love.SAKURA.ne.jp> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: E6463C0026 X-Stat-Signature: ptizco4n69rzfh5adwd7473k9peqngpd X-HE-Tag: 1687513547-836155 X-HE-Meta: U2FsdGVkX19rzqeysd5ab1e6SOw0ayD5HDpzNwSvN9mF9AJRvajVlXF6sAsfiR1yqYYpRhex0PTkc8oDqqZVHKiaolNF/M0Q+A4DRnojyz5QvxS3t0kc6Hb6+rCg45YOYaj+B548mFInz/n11ed3+mrgYDaJXmIJEPZ1mMGA2b4d8zaaOdpgEBXG4nnAmDfThbfdL8O/BJghj2+Iax+tdh1bWDB2QnDUx/cBBb/Is0ReDBuLnZJd/sdCQy7zBCS/oa7+IddjUW7sQMalnm3mofIusE3zHIwJwf0t8oL113MEiRbkJOo8cW2Jiz136Ya6RNwXxDwZZ+TY/sGH1jWCLh09ctntddc6BmhbHZRzlr1/gDg3uTw7YLG71JUpwrEUzOV9BzULW2ULfA5ABl0Q3EkzAcOf8b5opCWIwx41cFbxIHl4K1ApiEUYSHZLMWn9nzDXBcQiq5WHNpMuOcGpmh6M1p3oRNZGtaRIhjojezTRVCWh47Onm0fbeBw+yMK7cQuo5G/IM0lBbEhshD/MWq4bxAu9MbUoYJ6c8Io7hAZXnEX1lwrg0Hi9W8j8FAKvXSpEXArZSD5ogQKdO5/Ai25G2oABR0CVkBYg/TCl27VAFJ9SdWocFN9ueUHi5EbWv/Blwjd/K2ku5+mfTLphlz4eRkYTp5LiT8ne/L4q54dL7RipCevD5ca/sYbHw9m10RucUatju1LfdcyE0WzJUInCy7OfR2D382UTRoE9MjZ9cMD/XgWaVgCnpBGG2LVWCwCxcWyjXjF0qInKD2FL3s6g5tT5a/96MhTTvIXE2tQml/LNoWtUL81cRhjeniKCeOqNoXSoRvdLd8+kgdnVBpZvzd1/AsuDyA1HUQfSVUY4MJeV8FNTaV+AkNoSKectXxDrgknPXmZNMUZDFwb+jRjpDLVhNuL4+4LBbMJUrU3oxVevOI67Gg4/zcXdtZ/zM9GWGIkYVsTNhFMI45k 3itvvWW6 hXJvsMydgTjvtQ3Y/EKMNYXBw5Sb14GNusEWaRRXPih+2T8yNhjoLjYghuPCl3podzcBsliJcKxahfVLDnIMEznKLjtisjHCqTXuDLovq/XD0mbAA6DzxMg3rm8BexGl33yI2jfTSEvL5wT0= 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 00:43:00 [+0900], Tetsuo Handa wrote: > On 2023/06/23 0:04, Petr Mladek wrote: > > AFAIK, rt_spin_lock(lock) fulfills exactly the above requirements. > > The owner could schedule. The waiter could schedule as well so that > > they could be running on the same CPU. Also the current owner gets > > higher priority when the is a waiter with the higher priority to avoid > > the priority inversion. > > Excuse me, but that is about multiple threads trying to acquire the same lock, isn't it? > > Our case is that one thread which makes zonelist_update_seq.seqcount odd acquires > zonelist_update_seq.lock but threads spinning at > read_seqbegin(zonelist_update_seq.seqcount) from zonelist_iter_begin() do nothing but > cpu_relax() busy loop. There is no way to teach that these threads need to give > CPU to the thread which made zonelist_update_seq.seqcount odd... For !RT there is no spinning because interrupts are disabled. For RT there is no spinning because the reader blocks on lock owned by writer. > > The result would look like: > > > > in kernel/linux/printk.h: > > > > static inline void printk_deferred_enter(void) > > { > > if (!defined(CONFIG_PREEMPT_RT)) > > preempt_disable(); > > else > > migrate_disable(); > > > > __printk_safe_enter(); > > } > > > > in mm/page_alloc.c > > > > printk_deferred_enter(); > > write_seqlock_irqsafe(&zonelist_update_seq, flags); > > OK. But for stable, > > + if (defined(CONFIG_PREEMPT_RT)) > + migrate_disable(); > /* > * Explicitly disable this CPU's interrupts before taking seqlock > * to prevent any IRQ handler from calling into the page allocator > * (e.g. GFP_ATOMIC) that could hit zonelist_iter_begin and livelock. > */ > local_irq_save(flags); > /* > * Explicitly disable this CPU's synchronous printk() before taking > * seqlock to prevent any printk() from trying to hold port->lock, for > * tty_insert_flip_string_and_push_buffer() on other CPU might be > * calling kmalloc(GFP_ATOMIC | __GFP_NOWARN) with port->lock held. > */ > printk_deferred_enter(); > write_seqlock(&zonelist_update_seq); > > will be easier to apply. I would prefer not to worry about stable-RT but about upstream and then we backport what is needed into the stable-RT trees once we settled on something. This does not affect !RT. Sebastian