Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1248916ybl; Wed, 14 Aug 2019 13:21:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqxd//CUI6mrzUOF+J0lx62SmH2BtYBVmB3XtAy4qcdlpu9uQ2H8tlv5oRGQNvRh7h0IO64l X-Received: by 2002:a17:902:b582:: with SMTP id a2mr1080499pls.199.1565814095592; Wed, 14 Aug 2019 13:21:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565814095; cv=none; d=google.com; s=arc-20160816; b=QMYBLplb0iH+c3SZx6d5uopgThKiIoYWhXlAhW7/GPFxr3kx03dt0YoJf/wHjKm4B/ UixOSRHR7qtxwhYgTwO/YgLnrLDI5ZTbOej5+AZLmNg/o+nsets9KUn9U0n2IgqFUmkq JJ2u9AXgIHP/HRWi0sZSioPSkUtUCl5xv5wHYHLzjLBJ1wV+bk1pwo9llwAtB+BfqpUh KRYZqgmCO9QysfZ/4mzvqAa3WzGR2scUdyIIqjbhUpvmNRcMBExfyscDa7iAQ69dxKWX uVQ4YfnFLLirzYcBfFvGLJN26W5D/odxu/iPyVm0GzXy1zLdpb669wKA6YZvrMSNf9rC 8GGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=dDjwUmcwSXAq578UY4c9Vj0FS6SCgLfjeiZG1PLwBhc=; b=XJxIE2GuTSM6BTSp9DrOikPBb0cbEZuQVkQdVwC1OqH+HaV1kQlQXyBZnaarPJz2v9 EEDcMbCODX/pPo72gkJOkRUPVmIGWphD1z0MaWemUm8ZyE4HlByiYuDiRmp9Aeg9WMJ7 Boz/sNV2X53hdVXFedO8zuyZPgwvnBqVmkbmjv+fc0wHyTKa1UK+hvsIRukjdehLasHC eby7V23K0erki9gaHdei6UNEz14e9mFUdaLRXrz+P05yEOEQbcWo/HrAHh+NooJ8/FU/ uAFDUEkjHuCAvGVNtsTQNPoGtkB/NjOGbxN3AA+gboSXL9zettfx7esnc05/luWkODhR 5xiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=QQneGltV; 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 o1si464066pja.67.2019.08.14.13.21.19; Wed, 14 Aug 2019 13:21:35 -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=@ffwll.ch header.s=google header.b=QQneGltV; 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 S1729449AbfHNUUm (ORCPT + 99 others); Wed, 14 Aug 2019 16:20:42 -0400 Received: from mail-ed1-f65.google.com ([209.85.208.65]:38821 "EHLO mail-ed1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729385AbfHNUUj (ORCPT ); Wed, 14 Aug 2019 16:20:39 -0400 Received: by mail-ed1-f65.google.com with SMTP id r12so363924edo.5 for ; Wed, 14 Aug 2019 13:20:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dDjwUmcwSXAq578UY4c9Vj0FS6SCgLfjeiZG1PLwBhc=; b=QQneGltVZyDVKndymgf/V07Lz/mVu4xKZlufq/IsuBlC5+1QN4bp7NWpobW8CC1rIF qIF8ZHgfa3ZzNQCa9U+7EASFdi6fg9QrXsipXLij2jwCn91t6FCHDSnO4dCluu2ktfVm 26tp0nC+Bvb3QHNr2PBbwL8HmhMnTo4N7ChVI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dDjwUmcwSXAq578UY4c9Vj0FS6SCgLfjeiZG1PLwBhc=; b=XpTWyUoqycsdM/AHaBZopF07WJscY9jdJMo2J0B8Wo8JJfa0WMt5C4CEx2e4UBJoPh ygGRhpVk1eRgreT4hduirnPdxw9OrNr6U+4RS1bvAIew6QbLzEJDQNFDZyHVzSkx38W1 CoAH7cyqBhOgZPtgDbbe3pL0MJzkqu3iCyGfLgk28sju5M3DUHcosluuHtZkv0VzuC2f X9qhHsIPfmquVDfMZI1PqVic6ET1HSalExACVCTVdAlZxCK4iRbkH3ueSka9Ib672fM6 jCkIwMvbcYAawlfNqqtkjnR/RC91sBflvGUw0LZuprCMOD/mejrAIEBOjl0NaTxpspo1 mD9Q== X-Gm-Message-State: APjAAAV4io5NlqcdnRoH9wTgkJPu5ABYX00dIvVDQg76I5FWqN1+8guO v1wHv8ZK2zoQsd5jxLiF5/5tNJozO3neWA== X-Received: by 2002:a17:906:81cb:: with SMTP id e11mr1305807ejx.37.1565814037763; Wed, 14 Aug 2019 13:20:37 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id ns22sm84342ejb.9.2019.08.14.13.20.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Aug 2019 13:20:37 -0700 (PDT) From: Daniel Vetter To: LKML Cc: linux-mm@kvack.org, DRI Development , Intel Graphics Development , Daniel Vetter , Jason Gunthorpe , Andrew Morton , Michal Hocko , David Rientjes , =?UTF-8?q?Christian=20K=C3=B6nig?= , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Daniel Vetter Subject: [PATCH 3/5] mm, notifier: Catch sleeping/blocking for !blockable Date: Wed, 14 Aug 2019 22:20:25 +0200 Message-Id: <20190814202027.18735-4-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190814202027.18735-1-daniel.vetter@ffwll.ch> References: <20190814202027.18735-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We need to make sure implementations don't cheat and don't have a possible schedule/blocking point deeply burried where review can't catch it. I'm not sure whether this is the best way to make sure all the might_sleep() callsites trigger, and it's a bit ugly in the code flow. But it gets the job done. Inspired by an i915 patch series which did exactly that, because the rules haven't been entirely clear to us. v2: Use the shiny new non_block_start/end annotations instead of abusing preempt_disable/enable. v3: Rebase on top of Glisse's arg rework. v4: Rebase on top of more Glisse rework. Cc: Jason Gunthorpe Cc: Andrew Morton Cc: Michal Hocko Cc: David Rientjes Cc: "Christian König" Cc: Daniel Vetter Cc: "Jérôme Glisse" Cc: linux-mm@kvack.org Reviewed-by: Christian König Reviewed-by: Jérôme Glisse Signed-off-by: Daniel Vetter --- mm/mmu_notifier.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mm/mmu_notifier.c b/mm/mmu_notifier.c index 16f1cbc775d0..43a76d030164 100644 --- a/mm/mmu_notifier.c +++ b/mm/mmu_notifier.c @@ -174,7 +174,13 @@ int __mmu_notifier_invalidate_range_start(struct mmu_notifier_range *range) id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, &range->mm->mmu_notifier_mm->list, hlist) { if (mn->ops->invalidate_range_start) { - int _ret = mn->ops->invalidate_range_start(mn, range); + int _ret; + + if (!mmu_notifier_range_blockable(range)) + non_block_start(); + _ret = mn->ops->invalidate_range_start(mn, range); + if (!mmu_notifier_range_blockable(range)) + non_block_end(); if (_ret) { pr_info("%pS callback failed with %d in %sblockable context.\n", mn->ops->invalidate_range_start, _ret, -- 2.22.0