Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3466616imu; Mon, 10 Dec 2018 02:42:17 -0800 (PST) X-Google-Smtp-Source: AFSGD/XiPc5Yjxo077bO/TVTnbTKg+Wnsqy5bZ4OTYqCKzncbRcySAwr5SH5ojZq2B8VDDGw/h1E X-Received: by 2002:a63:f241:: with SMTP id d1mr10474436pgk.2.1544438537599; Mon, 10 Dec 2018 02:42:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544438537; cv=none; d=google.com; s=arc-20160816; b=oYljWU2YxH8uK0rZ4cBWDIcpfAmhNt68g6xWadMSBNNxieuIOJs2jZGFnvd1JwJ6mn 4PdpXNnYtboqiUS7g75Cicb8O+0dhAW7hbhg8xeB0AGKyoeYLz7ZKGaa/4+fM1RkUJ6f RE1yCxeH5GUOzFCpMzpGLxOVJb6r2vqDpe02yo523uFPJ4MdNNfBBPprMmKzWda3iuCT Oml99VfDi6Ee3RuzTn/ojem5S35BwnciqQCzAXM2fkWibWV78gdgLQj9xoYunluilZ9i BRi/1RPKfGnVTNN5kjn1r30qrkz3VY6D38gert7I1+PWvNCMLVNR+fwDvGWs7KrPQ8+8 DY6A== 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=MS4TiUW3mXcW2vxlt2KruqWF3duOJRQUhvXcb4QfQyg=; b=I/QbHNXYrKnGpkD4Gkh2TvaCaYLuI8d6f5suI+RJEMjuT0g9kTyEtZ1SMTp+2LNecK vG3MaFLS4Ju+XWDdXcJC0iPqbr5F1szM8/GBa30ZRBfnkM5swq7UjBBhU2mOyPqxwZ0Y Ex3hpUkU4UfuMsYDkHo4eOhRZUTDIsD+eNmsNI8OalRS+0W6TKqc7t9kCzWsTosv9bM7 Gic2Ok8za7jWwq4tWMIf5leKEXHia+LDPRdOj/V1iz/WHA3CUhZIRdbeMgIYBKnIL7Rw WEJzMbOcKYM4+Rl8yE8BJi72Go6dxtsORjtQQS2KGgv0Y5HJ07iRTRF1ix8vn6pQhYMe 0iZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=HYF4p+0j; 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 r7si10031856ple.281.2018.12.10.02.42.01; Mon, 10 Dec 2018 02:42:17 -0800 (PST) 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=HYF4p+0j; 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 S1727299AbeLJKgy (ORCPT + 99 others); Mon, 10 Dec 2018 05:36:54 -0500 Received: from mail-ed1-f66.google.com ([209.85.208.66]:45233 "EHLO mail-ed1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727273AbeLJKgx (ORCPT ); Mon, 10 Dec 2018 05:36:53 -0500 Received: by mail-ed1-f66.google.com with SMTP id d39so8996246edb.12 for ; Mon, 10 Dec 2018 02:36:52 -0800 (PST) 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=MS4TiUW3mXcW2vxlt2KruqWF3duOJRQUhvXcb4QfQyg=; b=HYF4p+0jjNwvgALG0WqPWvZt57NTN7mpz//Q7uyw8ZbSBmUCm7mHWB/5s4pj1VFEMy ByPViZ5WgGL+zSMjdQAro1toiOQcRJPPxi97KSxApGHXEVPsqDDxLnPVROccHhPH/8pk UaeBWOVd1ijco7dZr6+9+DYyrYSj7I3NnwoFI= 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=MS4TiUW3mXcW2vxlt2KruqWF3duOJRQUhvXcb4QfQyg=; b=konYLvt6VB30XWK9qw4duPhxiVc3QmCWu9Hf3z7OC3ApJQxkzaIcefF64QwQgvsNkT 1+/lSS3ZnMvguL1HVzcNlANTWDFg9AQLTFdqKzfp5+uvKD463CwURDxxw0Iq7CdZRr3y kVMI9VmjX64uQ2EGUaL1KiHfmHdPy3mS4ZLXgKpoCxXn1QqvY22IE0QQJoTMF/RSPeX8 5WVbH3s3zKE0DG4QY4Eec56jgkQKOw+odQDCIEUOZYIuUdrX+xJuqf9nR8+/EUtO97u/ 503SUkSp35CcvXf2mKOKCm8fx67TfrwTzSL0t/GRlA4V5dXDwygh4/X5DNzG5SF6Ri+j j+qA== X-Gm-Message-State: AA+aEWZkGlofuUz+J0yea91LXcdpfca9GJx9vd9axVeP1XGlRZtTCqx5 y90hY/Js2rY9ANSqLYhAOBunHw== X-Received: by 2002:a17:906:59d6:: with SMTP id m22-v6mr9293378ejs.20.1544438212050; Mon, 10 Dec 2018 02:36:52 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id q50sm3223862edd.66.2018.12.10.02.36.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Dec 2018 02:36:51 -0800 (PST) From: Daniel Vetter To: Intel Graphics Development Cc: DRI Development , LKML , linux-mm@kvack.org, Daniel Vetter , 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/4] mm, notifier: Catch sleeping/blocking for !blockable Date: Mon, 10 Dec 2018 11:36:40 +0100 Message-Id: <20181210103641.31259-4-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.20.0.rc1 In-Reply-To: <20181210103641.31259-1-daniel.vetter@ffwll.ch> References: <20181210103641.31259-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. 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 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 ccc22f21b735..a50ed7d1ecef 100644 --- a/mm/mmu_notifier.c +++ b/mm/mmu_notifier.c @@ -185,7 +185,13 @@ int __mmu_notifier_invalidate_range_start(struct mm_struct *mm, id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->invalidate_range_start) { - int _ret = mn->ops->invalidate_range_start(mn, mm, start, end, blockable); + int _ret; + + if (!blockable) + non_block_start(); + _ret = mn->ops->invalidate_range_start(mn, mm, start, end, blockable); + if (!blockable) + non_block_end(); if (_ret) { pr_info("%pS callback failed with %d in %sblockable context.\n", mn->ops->invalidate_range_start, _ret, -- 2.20.0.rc1