Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp2793863imm; Fri, 24 Aug 2018 05:35:12 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZRWf5rLgRsFR0SoKzs9P0bsXBvqlvkvgAojlvbT43JTembMrN0PpQZvaCr1EtDqeFFlr2T X-Received: by 2002:a65:6086:: with SMTP id t6-v6mr1574356pgu.424.1535114112391; Fri, 24 Aug 2018 05:35:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535114112; cv=none; d=google.com; s=arc-20160816; b=OY+x+Fgp9htwH8oRUizjVNT79vo7WHhwVgSw/RZLX2iVAxu9FdRgha1tecLALfTUB1 8c4nfNiM2oZn1mYGVoMMjhH7c59gscyog43I8N/OU6gb1iQUw4T7jpqkHAP8eeZCoDBl XUPVLZeDNrlamYuGmXk1KUJz74JVmpJ2TLVk0z7cqDzpiC0EcpmOYPnDjXLMf1NcgEXH mYn8b2FKzaJ38RXg6gR8kBDH1B+j5eKWpDU+WICZCi0cGaXVKVczJdHyVEDAk57MrZ6F nierV6d4xmTonNKnXB5cv0htHBChY/P4BZrsamdc5kCyFwF97Bd7VlNVK1gGJEzEZHCm Whzw== 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-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date :arc-authentication-results; bh=1gCUm2ypqbbigdY+V+1eRUE4Q6LShO8pzvVa2ZSS+os=; b=o8Z8GJQt+0hoNK07y0IsqanjUGaOM1eGI79g5Q8rePrH0wq2vbcpyI3wdOs+fgg+jm jFkJTufr+avLn2BLUoYwqNr6Duw9KE63GeRVngD/HKd8PptqU9++YDUMOw8FdPOn4Nwi dvdf68WPS/PDx2bl3cfTV6zc31fzsIicZbPOGNUlg4hN3t7yPRJ+QTSjqKkN52MbdIUC eJYYz2rvOXk2SsNeArl3vg9v4E2tX9tt68bNarGJru5vdejiljyJ4tWP5pHYmWDMPitn kyeY4rc9eDPu/e+BrXwfouWBErj3uPkW/Zvp7F9fw6L0q7PAdJGPcwHYc0cUQaOYzdsL dIqA== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a75-v6si7851867pfc.106.2018.08.24.05.34.54; Fri, 24 Aug 2018 05:35:12 -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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726649AbeHXQIO (ORCPT + 99 others); Fri, 24 Aug 2018 12:08:14 -0400 Received: from mx2.suse.de ([195.135.220.15]:43432 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726243AbeHXQIO (ORCPT ); Fri, 24 Aug 2018 12:08:14 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 7E9D2ADEF; Fri, 24 Aug 2018 12:33:43 +0000 (UTC) Date: Fri, 24 Aug 2018 14:33:41 +0200 From: Michal Hocko To: Christian =?iso-8859-1?Q?K=F6nig?= , =?iso-8859-1?B?Suly9G1l?= Glisse Cc: kvm@vger.kernel.org, Radim =?utf-8?B?S3LEjW3DocWZ?= , Tetsuo Handa , Joonas Lahtinen , Sudeep Dutt , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, Andrea Arcangeli , "David (ChunMing) Zhou" , Dimitri Sivanich , Jason Gunthorpe , linux-rdma@vger.kernel.org, amd-gfx@lists.freedesktop.org, David Airlie , Doug Ledford , David Rientjes , xen-devel@lists.xenproject.org, intel-gfx@lists.freedesktop.org, Jani Nikula , Leon Romanovsky , Rodrigo Vivi , Boris Ostrovsky , Juergen Gross , Mike Marciniszyn , Dennis Dalessandro , LKML , Ashutosh Dixit , Alex Deucher , Paolo Bonzini , Andrew Morton , Felix Kuehling Subject: Re: [PATCH] mm, oom: distinguish blockable mode for mmu notifiers Message-ID: <20180824123341.GN29735@dhcp22.suse.cz> References: <20180716115058.5559-1-mhocko@kernel.org> <8cbfb09f-0c5a-8d43-1f5e-f3ff7612e289@I-love.SAKURA.ne.jp> <20180824113248.GH29735@dhcp22.suse.cz> <20180824115226.GK29735@dhcp22.suse.cz> <20180824120339.GL29735@dhcp22.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri 24-08-18 14:18:44, Christian K?nig wrote: > Am 24.08.2018 um 14:03 schrieb Michal Hocko: > > On Fri 24-08-18 13:57:52, Christian K?nig wrote: > > > Am 24.08.2018 um 13:52 schrieb Michal Hocko: > > > > On Fri 24-08-18 13:43:16, Christian K?nig wrote: > > [...] > > > > > That won't work like this there might be multiple > > > > > invalidate_range_start()/invalidate_range_end() pairs open at the same time. > > > > > E.g. the lock might be taken recursively and that is illegal for a > > > > > rw_semaphore. > > > > I am not sure I follow. Are you saying that one invalidate_range might > > > > trigger another one from the same path? > > > No, but what can happen is: > > > > > > invalidate_range_start(A,B); > > > invalidate_range_start(C,D); > > > ... > > > invalidate_range_end(C,D); > > > invalidate_range_end(A,B); > > > > > > Grabbing the read lock twice would be illegal in this case. > > I am sorry but I still do not follow. What is the context the two are > > called from? > > I don't have the slightest idea. > > > Can you give me an example. I simply do not see it in the > > code, mostly because I am not familiar with it. > > I'm neither. > > We stumbled over that by pure observation and after discussing the problem > with Jerome came up with this solution. > > No idea where exactly that case comes from, but I can confirm that it indeed > happens. Thiking about it some more, I can imagine that a notifier callback which performs an allocation might trigger a memory reclaim and that in turn might trigger a notifier to be invoked and recurse. But notifier shouldn't really allocate memory. They are called from deep MM code paths and this would be extremely deadlock prone. Maybe Jerome can come up some more realistic scenario. If not then I would propose to simplify the locking here. We have lockdep to catch self deadlocks and it is always better to handle a specific issue rather than having a code without a clear indication how it can recurse. -- Michal Hocko SUSE Labs