From patchwork Wed Dec 6 12:35:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 120828 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp7000936qgn; Wed, 6 Dec 2017 04:37:45 -0800 (PST) X-Google-Smtp-Source: AGs4zMZC9Ym+yrjYgkHvGRMnQZyk4XcWw0/rF+II6WTWrD7Edp8oAQXxTWhKY8Y/EYfLu4/prpqs X-Received: by 10.99.112.89 with SMTP id a25mr20833280pgn.2.1512563865564; Wed, 06 Dec 2017 04:37:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512563865; cv=none; d=google.com; s=arc-20160816; b=NhuYBIWeFG0yIya/K/zcbH6F3QUSogGD93uwCBMCoxsCPlElv0DDMWQpUOkokh7Yr4 t3ofQlNOoYUijFdMmH25MjLDUWNbeBBVA2+FyYv5BJPVEudtIkCV6vjIhHUWJO3oB/9Y 2T/s91MFdWPyNFM5Y6sm/rjYAVWXrmAsK9oblihaojT8rei3THrkVECyH/36ntqo9Ixj 7Z+0RxwtwbUaLkL4GDSjTp+u2+mMohEcY1qED4K3okOF00sUb3UPJn0GJMb/OdgqBfh2 BP5iaH2ONWPMy5caheFTNZ1UD8swU0HMMhTbDMnGQHeVXXJIal6JBQ+ifrENkcnfsPWB IGcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=0qMMbJH30m15OASqcqOi/r8r8+WR8yt+DuXw63sGUJY=; b=P1Os6tZ5/bNpf0rDZ2YJY4GRqizv4y/6XXNYuK8Wv8CfA2LYfC1i7z/arhFTRhB3ol Sxu3WQ0EtGeD67gvSNC6ra0ZB4d3uMZpy+JyiSIdaoS9Spmlo4tLth652DEccHIE7tDX dyfvEsPWvD4oyaCj3xwQiLba47Jd7KC+9IaSqQp5kt5qZX9MgPareoRyYOlgdsrxSHHP Z0ku0C6krA1/BSpalz9KwwKaKLAYz9JwFHnO48Iwv1lmqyO8GDQqQvQlRM1vXCZ/l/ZW 8wb4C7JY+pcaeokORdQzL9a6fELcNJWiEhTmgZSOd9TL40aVnU6JHVVqqz7VDkHhabZ8 QkVg== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w3si1841951pge.245.2017.12.06.04.37.45; Wed, 06 Dec 2017 04:37:45 -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; 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 S1752595AbdLFMho (ORCPT + 28 others); Wed, 6 Dec 2017 07:37:44 -0500 Received: from foss.arm.com ([217.140.101.70]:34830 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752189AbdLFMgN (ORCPT ); Wed, 6 Dec 2017 07:36:13 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4D9401A09; Wed, 6 Dec 2017 04:36:12 -0800 (PST) Received: from edgewater-inn.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 1F3B63F53E; Wed, 6 Dec 2017 04:36:12 -0800 (PST) Received: by edgewater-inn.cambridge.arm.com (Postfix, from userid 1000) id 21F6F1AE3603; Wed, 6 Dec 2017 12:36:17 +0000 (GMT) From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, catalin.marinas@arm.com, mark.rutland@arm.com, ard.biesheuvel@linaro.org, sboyd@codeaurora.org, dave.hansen@linux.intel.com, keescook@chromium.org, msalter@redhat.com, labbott@redhat.com, tglx@linutronix.de, Will Deacon Subject: [PATCH v3 18/20] perf: arm_spe: Fail device probe when arm64_kernel_unmapped_at_el0() Date: Wed, 6 Dec 2017 12:35:37 +0000 Message-Id: <1512563739-25239-19-git-send-email-will.deacon@arm.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1512563739-25239-1-git-send-email-will.deacon@arm.com> References: <1512563739-25239-1-git-send-email-will.deacon@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When running with the kernel unmapped whilst at EL0, the virtually-addressed SPE buffer is also unmapped, which can lead to buffer faults if userspace profiling is enabled and potentially also when writing back kernel samples unless an expensive drain operation is performed on exception return. For now, fail the SPE driver probe when arm64_kernel_unmapped_at_el0(). Signed-off-by: Will Deacon --- drivers/perf/arm_spe_pmu.c | 9 +++++++++ 1 file changed, 9 insertions(+) -- 2.1.4 Reviewed-by: Mark Rutland diff --git a/drivers/perf/arm_spe_pmu.c b/drivers/perf/arm_spe_pmu.c index 8ce262fc2561..51b40aecb776 100644 --- a/drivers/perf/arm_spe_pmu.c +++ b/drivers/perf/arm_spe_pmu.c @@ -1164,6 +1164,15 @@ static int arm_spe_pmu_device_dt_probe(struct platform_device *pdev) struct arm_spe_pmu *spe_pmu; struct device *dev = &pdev->dev; + /* + * If kernelspace is unmapped when running at EL0, then the SPE + * buffer will fault and prematurely terminate the AUX session. + */ + if (arm64_kernel_unmapped_at_el0()) { + dev_warn_once(dev, "profiling buffer inaccessible. Try passing \"kpti=off\" on the kernel command line\n"); + return -EPERM; + } + spe_pmu = devm_kzalloc(dev, sizeof(*spe_pmu), GFP_KERNEL); if (!spe_pmu) { dev_err(dev, "failed to allocate spe_pmu\n");