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 B2904C433EF for ; Thu, 10 Mar 2022 02:48:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B220B8D0002; Wed, 9 Mar 2022 21:48:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AA7138D0001; Wed, 9 Mar 2022 21:48:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9486E8D0002; Wed, 9 Mar 2022 21:48:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.25]) by kanga.kvack.org (Postfix) with ESMTP id 818D18D0001 for ; Wed, 9 Mar 2022 21:48:47 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay12.hostedemail.com (Postfix) with ESMTP id 623A012035E for ; Thu, 10 Mar 2022 02:48:47 +0000 (UTC) X-FDA: 79226943894.10.4C18B56 Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by imf26.hostedemail.com (Postfix) with ESMTP id 9BB7A140011 for ; Thu, 10 Mar 2022 02:48:45 +0000 (UTC) Received: from localhost.localdomain (unknown [10.20.42.95]) by mail.loongson.cn (Coremail) with SMTP id AQAAf9Dx7xMJZyliUCUGAA--.1221S3; Thu, 10 Mar 2022 10:48:42 +0800 (CST) Subject: Re: [PATCH 1/1] mm/page_alloc: add scheduling point to free_unref_page_list To: Andrew Morton , Matthew Wilcox Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, vbabka@suse.cz References: <20220302013825.2290315-1-wangjianxing@loongson.cn> <20220309170517.05facf4a2d183cc9aac9196d@linux-foundation.org> From: wangjianxing Message-ID: <3713cb82-9596-9916-9830-c2827d6a6fe4@loongson.cn> Date: Thu, 10 Mar 2022 10:48:41 +0800 User-Agent: Mozilla/5.0 (X11; Linux mips64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20220309170517.05facf4a2d183cc9aac9196d@linux-foundation.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-CM-TRANSID:AQAAf9Dx7xMJZyliUCUGAA--.1221S3 X-Coremail-Antispam: 1UD129KBjvJXoW7Cr4UtryrKw4DCr43tr1fZwb_yoW8Xr1xpF WkJasayF1UWw1rJanrZ3W09Fn7Cwn0gFWxCrWkCr1rJr1akr9xKrnayrya9F1Y9r40yrna yrs0gFyfZF1jyaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUv2b7Iv0xC_Kw4lb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Cr0_Gr1UM28EF7xvwVC2z280aVAFwI0_Gr1j6F4UJwA2z4x0Y4 vEx4A2jsIEc7CjxVAFwI0_Cr1j6rxdM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVAC Y4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJV W8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07AlzVAYIcxG 8wCY02Avz4vE-syl42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxV Aqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r12 6r1DMIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6x kF7I0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWrZr1j6s0DMIIF0xvEx4A2jsIE 14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa 7IU5PpnJUUUUU== X-CM-SenderInfo: pzdqwyxldq5xtqj6z05rqj20fqof0/ X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 9BB7A140011 X-Stat-Signature: sspy3d8gxy1r3ned8imnhw5sfmeebray Authentication-Results: imf26.hostedemail.com; dkim=none; spf=pass (imf26.hostedemail.com: domain of wangjianxing@loongson.cn designates 114.242.206.163 as permitted sender) smtp.mailfrom=wangjianxing@loongson.cn; dmarc=none X-HE-Tag: 1646880525-525883 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: spin_lock will preempt_disable(), interrupt context will __irq_enter/local_bh_disable and also add preempt count with offset. cond_resched check whether if preempt_count == 0 in first and won't schedule in previous context. Is this right? With another way, could we add some condition to avoid call cond_resched in interrupt context or spin_lock()? + if (preemptible()) +       cond_resched(); On 03/10/2022 09:05 AM, Andrew Morton wrote: > On Tue, 8 Mar 2022 16:19:33 +0000 Matthew Wilcox wrote: > >> On Tue, Mar 01, 2022 at 08:38:25PM -0500, wangjianxing wrote: >>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c >>> index 3589febc6..1b96421c8 100644 >>> --- a/mm/page_alloc.c >>> +++ b/mm/page_alloc.c >>> @@ -3479,6 +3479,9 @@ void free_unref_page_list(struct list_head *list) >>> */ >>> if (++batch_count == SWAP_CLUSTER_MAX) { >>> local_unlock_irqrestore(&pagesets.lock, flags); >>> + >>> + cond_resched(); >> This isn't safe. This path can be called from interrupt context >> (otherwise we'd be using local_unlock_irq() instead of irqrestore()). > What a shame it is that we don't document our interfaces :( > > I can't immediately find such callers, but I could imagine > put_pages_list() (which didn't document its interface this way either) > being called from IRQ. > > And drivers/iommu/dma-iommu.c:fq_ring_free() calls put_pages_list() > from inside spin_lock().