Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp217587ybl; Thu, 15 Aug 2019 16:00:51 -0700 (PDT) X-Google-Smtp-Source: APXvYqz4dL8EsBtLmVCnMpWecwUhVL3/WqCk7V5PEqyVxVgQw3ZfdAj3OPbpV8Rwe65i0bQDK7oC X-Received: by 2002:a17:902:8e8b:: with SMTP id bg11mr5321196plb.93.1565910051359; Thu, 15 Aug 2019 16:00:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565910051; cv=none; d=google.com; s=arc-20160816; b=fPbunXKWTi42P6ZphVlwug/ar7qVhDoKmUsDnKu4hKfQDpuj1OwGDgt1nlE7jUFFat mcji8fPxDfCxXZPzHziCUULMHIkYVESF36WkTFZnEhUU6GvG4ht/IAvarbmujmDD7g4b fxljCtkTOglCfxlCJ2bC1A/u4zBDUTixk7tbfhAt0lSPgWPdgBxXz4ojnBEjIdHS++JU G+fgsXar4d5ymNVlZWCeC9KXlxYiBngnA7d7eVgFhWWqOkBHIGbYXTMEyHOcxYtnvkQf QF1hWWaNqlcIy0A44uD/z03eI8Z2gsFrgLsAkX9YSQf9L9tzBzItXFHwsWd9Hu3PueJ1 Q0aQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=mio1xktEO9q23/NS5ON0GXRmSn9NHKr3YSBeJ7ROdYQ=; b=EuW08R6yqEbELA9DMEjTyIGuJcFPrWUDsJJOcMb36KG9EJXzbbNeur1Kl/ZgXbXLDl TKYO+xvXnHIBOLilF9xPDbjppft9ZD//sCuYkm42neGAO/O22E4kGNiEGNVXu4ob5mB1 L48ZeoGG5c8z2a1FOcUSSJYG3Qzox/+UD4TiSJMCpTgAWPl4Z/mk/Sd/q+myhX/+mOf3 QXaeu6kx7rscEkuBFOlrQmtnvmat9iOD49jySaQu+bx0waB5JWL7p0FM4Ds6me0ADjR1 531EaYLQc/t0U3p7YUS5GH5+D/NPnL54uL44uSJKWx2J4ramENntjb018mcMQRC9no8b MY6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ziepe.ca header.s=google header.b=S6sVqqeV; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ck9si2785642plb.141.2019.08.15.16.00.35; Thu, 15 Aug 2019 16:00:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ziepe.ca header.s=google header.b=S6sVqqeV; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730017AbfHOUN0 (ORCPT + 99 others); Thu, 15 Aug 2019 16:13:26 -0400 Received: from mail-qt1-f196.google.com ([209.85.160.196]:32799 "EHLO mail-qt1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726008AbfHOUN0 (ORCPT ); Thu, 15 Aug 2019 16:13:26 -0400 Received: by mail-qt1-f196.google.com with SMTP id v38so3733037qtb.0 for ; Thu, 15 Aug 2019 13:13:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=mio1xktEO9q23/NS5ON0GXRmSn9NHKr3YSBeJ7ROdYQ=; b=S6sVqqeV2cEhfAMUNUoWKW03ZmeT4Q8V2u1Ez10zAFGO4HA9huyr9rt0S2IIbugoLs BjKJPyVPythwQA+QLp5/dE1UTzcIF0mCZNp47DlRYMvNPdgDagPGR9fhK9+wYViWWFiu DhWdxuYxz7Jey2r3b862MWf/O0H7maCDrcaFhH/STgnhN9JyHUpSOSLrT7xT8Vzh3Rqr HyKeBKZuti7SrcbVz0vOnrmluJd5V1yWBGS9oJ7vaxu91B0sSFFBAjf5L/r5KC9Jp7N9 YPpv6NvCcrv+FDgt9FA1Ry71JAdHbSC+QSHwomxgiOmjWE2z/x/GgqHTXGh24YAUZy6Q a58w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=mio1xktEO9q23/NS5ON0GXRmSn9NHKr3YSBeJ7ROdYQ=; b=SgCSigUvPZ+JFbkYhRPZy80MS3hkbZqe2+FNvCxPIWaCsZaud8NJ+odkCHmBtsxkNC THFzwceVceafNH2crP32EbQxYUkczvABWH8BK+9/s1AO5ms3UWqTx+bHfgPv1M8oLXGT RHWk+zNgMlP+Urvs8cAgva7zWRJJ5WwM1l4EhiUoidE9czjbA7iRQtgcr3v7g2NLI5uG tioDSjIem0xsidSvSeMPCxsRqH1VpFF6MlV6ibAR70Rgg6C+rKXFOqoRV/3oGlC1UINM cmE4gmRc4DlJzfhC5sJyTskM+hRoHVJ5aqoFqmXI1cq8bl93VubiunrJMShIgVrr9Vbr lF4w== X-Gm-Message-State: APjAAAVomH759RpeUX7SSgbt6BaHp8bK2JyI7cmA2bYa5NY6fRBK+8vs PaOK3dJ66zTzljToRtcmOM6dEw== X-Received: by 2002:ac8:5491:: with SMTP id h17mr5522593qtq.227.1565900004931; Thu, 15 Aug 2019 13:13:24 -0700 (PDT) Received: from ziepe.ca (hlfxns017vw-156-34-55-100.dhcp-dynamic.fibreop.ns.bellaliant.net. [156.34.55.100]) by smtp.gmail.com with ESMTPSA id j66sm1870824qkf.86.2019.08.15.13.13.24 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 15 Aug 2019 13:13:24 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1hyM7f-0000Bx-WD; Thu, 15 Aug 2019 17:13:24 -0300 Date: Thu, 15 Aug 2019 17:13:23 -0300 From: Jason Gunthorpe To: Michal Hocko Cc: LKML , linux-mm@kvack.org, DRI Development , Intel Graphics Development , Peter Zijlstra , Ingo Molnar , Andrew Morton , David Rientjes , Christian =?utf-8?B?S8O2bmln?= , =?utf-8?B?SsOpcsO0bWU=?= Glisse , Masahiro Yamada , Wei Wang , Andy Shevchenko , Thomas Gleixner , Jann Horn , Feng Tang , Kees Cook , Randy Dunlap , Daniel Vetter Subject: Re: [PATCH 2/5] kernel.h: Add non_block_start/end() Message-ID: <20190815201323.GU21596@ziepe.ca> References: <20190815122344.GA21596@ziepe.ca> <20190815132127.GI9477@dhcp22.suse.cz> <20190815141219.GF21596@ziepe.ca> <20190815155950.GN9477@dhcp22.suse.cz> <20190815165631.GK21596@ziepe.ca> <20190815174207.GR9477@dhcp22.suse.cz> <20190815182448.GP21596@ziepe.ca> <20190815190525.GS9477@dhcp22.suse.cz> <20190815191810.GR21596@ziepe.ca> <20190815193526.GT9477@dhcp22.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190815193526.GT9477@dhcp22.suse.cz> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Aug 15, 2019 at 09:35:26PM +0200, Michal Hocko wrote: > > The last detail is I'm still unclear what a GFP flags a blockable > > invalidate_range_start() should use. Is GFP_KERNEL OK? > > I hope I will not make this muddy again ;) > invalidate_range_start in the blockable mode can use/depend on any sleepable > allocation allowed in the context it is called from. 'in the context is is called from' is the magic phrase, as invalidate_range_start is called while holding several different mm related locks. I know at least write mmap_sem and i_mmap_rwsem (write?) Can GFP_KERNEL be called while holding those locks? This is the question of indirect dependency on reclaim via locks you raised earlier. > So in other words it is no different from any other function in the > kernel that calls into allocator. As the API is missing gfp context > then I hope it is not called from any restricted contexts (except > from the oom which we have !blockable for). Yes, the callers are exactly my concern. > > Lockdep has > > complained on that in past due to fs_reclaim - how do you know if it > > is a false positive? > > I would have to see the specific lockdep splat. See below. I found it when trying to understand why the registration of the mmu notififer was so oddly coded. The situation was: down_write(&mm->mmap_sem); mm_take_all_locks(mm); kmalloc(GFP_KERNEL); <--- lockdep warning I understood Daniel said he saw this directly on a recent kernel when working with his lockdep patch? Checking myself, on todays kernel I see a call chain: shrink_all_memory fs_reclaim_acquire(sc.gfp_mask); [..] do_try_to_free_pages shrink_zones shrink_node shrink_node_memcg shrink_list shrink_active_list page_referenced rmap_walk rmap_walk_file i_mmap_lock_read down_read(i_mmap_rwsem) So it is possible that the down_read() above will block on i_mmap_rwsem being held in the caller of invalidate_range_start which is doing kmalloc(GPF_KERNEL). Is this OK? The lockdep annotation says no.. Jason commit 35cfa2b0b491c37e23527822bf365610dbb188e5 Author: Gavin Shan Date: Thu Oct 25 13:38:01 2012 -0700 mm/mmu_notifier: allocate mmu_notifier in advance While allocating mmu_notifier with parameter GFP_KERNEL, swap would start to work in case of tight available memory. Eventually, that would lead to a deadlock while the swap deamon swaps anonymous pages. It was caused by commit e0f3c3f78da29b ("mm/mmu_notifier: init notifier if necessary"). ================================= [ INFO: inconsistent lock state ] 3.7.0-rc1+ #518 Not tainted --------------------------------- inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-W} usage. kswapd0/35 [HC0[0]:SC0[0]:HE1:SE1] takes: (&mapping->i_mmap_mutex){+.+.?.}, at: page_referenced+0x9c/0x2e0 {RECLAIM_FS-ON-W} state was registered at: mark_held_locks+0x86/0x150 lockdep_trace_alloc+0x67/0xc0 kmem_cache_alloc_trace+0x33/0x230 do_mmu_notifier_register+0x87/0x180 mmu_notifier_register+0x13/0x20 kvm_dev_ioctl+0x428/0x510 do_vfs_ioctl+0x98/0x570 sys_ioctl+0x91/0xb0 system_call_fastpath+0x16/0x1b