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 826BFEB64D8 for ; Thu, 22 Jun 2023 15:43:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F38808D0002; Thu, 22 Jun 2023 11:43:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EE82A8D0001; Thu, 22 Jun 2023 11:43:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DB1B28D0002; Thu, 22 Jun 2023 11:43:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id CAE8D8D0001 for ; Thu, 22 Jun 2023 11:43:38 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 96DC01601D2 for ; Thu, 22 Jun 2023 15:43:38 +0000 (UTC) X-FDA: 80930803716.14.00A5041 Received: from www262.sakura.ne.jp (www262.sakura.ne.jp [202.181.97.72]) by imf16.hostedemail.com (Postfix) with ESMTP id AAB7A18000A for ; Thu, 22 Jun 2023 15:43:35 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=none; dmarc=none; spf=none (imf16.hostedemail.com: domain of penguin-kernel@I-love.SAKURA.ne.jp has no SPF policy when checking 202.181.97.72) smtp.mailfrom=penguin-kernel@I-love.SAKURA.ne.jp ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687448616; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sShBcFqOrb90mZe/fl4DEuFUNtYUN7XPBLK9pWVOOsA=; b=EPK1Gw3A3QuB1cpCjGwHhX9xMPgierF6y66fR7FJ3WR3UYBhp7wE4xyvZTT4YArCBdyKQg JsBgopL6ogCej3Y8KeMTXZxWquBWCFbFCjeiBFKG4eeDeZLzjJyX3DoQ+RTWj3TjrWWCTG F3ifzyHCo0s8ecfvSVFBDB3ZTNHYAVA= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=none; dmarc=none; spf=none (imf16.hostedemail.com: domain of penguin-kernel@I-love.SAKURA.ne.jp has no SPF policy when checking 202.181.97.72) smtp.mailfrom=penguin-kernel@I-love.SAKURA.ne.jp ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687448616; a=rsa-sha256; cv=none; b=2wM+F3UqhDmAZzj65wBHj2QJaw2H3LE7vCwtIoFberhGKLf2rtiScjg/pkuBiQ2VcgN4TO Jjm+9a+k4j1OuTVasV6FPlfXszMzdFBlkoQu2PYIQz3EvdPl6dvVga4sbaoK+3lR8GwjYd pVwvKAdp9ZPTV5L+VY+WZU8TL+du34U= Received: from fsav415.sakura.ne.jp (fsav415.sakura.ne.jp [133.242.250.114]) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTP id 35MFh4QG015600; Fri, 23 Jun 2023 00:43:05 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Received: from www262.sakura.ne.jp (202.181.97.72) by fsav415.sakura.ne.jp (F-Secure/fsigk_smtp/550/fsav415.sakura.ne.jp); Fri, 23 Jun 2023 00:43:04 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/550/fsav415.sakura.ne.jp) Received: from [192.168.1.6] (M106072142033.v4.enabler.ne.jp [106.72.142.33]) (authenticated bits=0) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTPSA id 35MFh4at015596 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NO); Fri, 23 Jun 2023 00:43:04 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Message-ID: Date: Fri, 23 Jun 2023 00:43:00 +0900 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH] mm/page_alloc: Use write_seqlock_irqsave() instead write_seqlock() + local_irq_save(). Content-Language: en-US To: Petr Mladek Cc: Sebastian Andrzej Siewior , linux-mm@kvack.org, "Luis Claudio R. Goncalves" , Andrew Morton , Mel Gorman , Michal Hocko , Thomas Gleixner References: <20230621104034.HT6QnNkQ@linutronix.de> <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> From: Tetsuo Handa In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: AAB7A18000A X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: tdzfg81i6a8hupwp7nbd54z5s9imxmp6 X-HE-Tag: 1687448615-69868 X-HE-Meta: U2FsdGVkX1+cwjVmuTzOgNNQgSZD3Uk4pPMar/NUJgCYjxRUPYF9q6L8rcY4rMP0uYcywN7XjNAdQgbfDR8V52IclFLBpTLrIvNPgcduloWyV39eFCOh5KwenAhDx8S5zx23+nth3T8YnWS6sykCPzepjy4L+gHomgJJHCXSxqqP1SuskVcA+2sdptvKZn2bzaz5YU7b5iSS+eujvIjc6T9POEp1o3MSr1RvCu/7377131c0WRz20As5ggaN9KFE35FXDGQ9U+2hM0wHVuWG7/+F3CGhzt2qSOS5y2NoNYYWriSZDy8coG/ZSU4WFhZ9jynEi3UD+knqUrjlmWFOnjApJSkkDNv5Ds4cWTIb9KqzMdhh5WTjGb8zFSYPvlRV1HlR87dlz2a+AAFGAX8RCWhI15YtRziX6Tn9XOb/bq3dpn/pRT4PF5+3IK5szo64kjn4GhH8ROOK+5EP24yMjBsWyB3SFEn4zPFNawjGCSUWJHc9W2qdqRC8hOIkP0twYjr1MaLP1gMetGHCG32di7YfCdQcU6vjlgcQiI/t8U4nO1ctjz2Q/5RE2BshUXcZfMqb+BxNvTzXaqyEDBB359Z37GdkKeG+fifT3oyWohGpo0hhKpbi5gUig3GB3SqMvqNFSQ02jpxz7j42rS3otkM4Uicb1N5Pqcqg3jGKMcYc6jhiomI9+M7LOrQlkSolXh11fP0D5RTWfyQRYfjGmPp1+zWKvUHZEXE8RNRfkpQgScH/Gp4B8VdwPjUjvPKp+SnqtcjBS4PtbWJnwfRCt0WHW5K/lHtMZD3bJiE4wHdBoULhdTpJhwUephjeYu2824qMP2ozY+BrIkogTT6ssbdA//Si8SD4TtTpiGq/L8NEdDZgdzCLNRKrdQp5ZnpWPY80qWonTclyldXPK3ovZkPUneo5P+u4znp8bDOqUKM1vBEqp3O+Pso1uJTWU1HjvkBay9DuJ1nxYhnT+Oh H+RUptHq J1eN3WEdK6vOcpj5Iu34hl+WmzVUtypyjPOpP0cSste8dqSs51NoQlvGQkicnVEt+uxW8QTf8Wo+qnTaDa/GENhmaca/B3M3YgOftSQvOMf2KmHAyQP83bAsMtbRZ6iasmrScuGdeK4cOwbXqx+Bshw3DWhzpFDEREdqK9zWqx+IbS6dMDSYAYWwSTTaxl3ekXgAGWewLkVmTNgHmq2lcPMywtcZ61H9Drts+y2btm0DoC7J45O9dCyTdKpnTi+A1Xf4IkCfTUvpdFAY= 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 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... > 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.