Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2010054imu; Fri, 14 Dec 2018 04:27:41 -0800 (PST) X-Google-Smtp-Source: AFSGD/V7MC7OVOIcA/F83YE8qhbiNUZu7QZm6vwAmMoNW4lA2Xn7qeSBigSQeifDWONL0/TNK4KR X-Received: by 2002:a62:69c4:: with SMTP id e187mr2717928pfc.50.1544790461503; Fri, 14 Dec 2018 04:27:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544790461; cv=none; d=google.com; s=arc-20160816; b=eAeW4iS3ENLh13wZp2vc94Q3gey+4GoYxGmL9Z1BpOQB3UtGzAQV+UwRZIhsLDlJnX yERDtgruhEnUSDaBeE1zU4JiQ9J9qD+cmiDSQIN6GK251Bz1h+fg3XuyoVl8XZxXVEko 2k1biMg4qi2FMy1ETQRfkyqbnh5YDqRYbUqoSQEIeXpI4m/lkxTt7lKd4aFdhA/uXAj3 bgzRFF7uJn8uRNjcn2XMdoDNFjranJESfGF2l3b5upooPvehvYAKQjBG0wtE/ov8ivQZ 1ZqcF0q75MeV4/AHm5ZpXdPVOdVUgPnCcq84I1oNTAMOeBlk3rhNfy36281s87R0KGka ZxDw== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=x9ZqjIWEWntLf/OeP9f5YJvJWPJyXnz56KWIBBkdpbY=; b=cHZd9/J55S3VLGLqvlKGW5ZLkmol4yeoPGgaUFQJBdv1CP4wAb5WiICrt8vCGsQ/m6 gQ2945SayfChiOkWKtl7+7Xqr/IocqO5h4RIN2jVujBLM5FcNRrySVvlN0a5VzdISy0e 0kB4+p7Deo+WL23uWT4WpyEa700+POc7ICNi2SuJSnHCIOeRAisT2eZuBvZJ6WmCru1H waHFNzTcYYfn23gyTRggUtQnExhVgtROeWHjgv3JGjVjcXmkxwb2jyib97kCGkjqCcR/ Jnh+02aNW+Gj6LIBJbzCpocX5Y+gMnLppQgN61a3WnYP37nXvj/cDciM6Jh1lb2AyE7z 6COw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bWtx1va8; 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 o124si4010660pfb.256.2018.12.14.04.27.27; Fri, 14 Dec 2018 04:27:41 -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=@kernel.org header.s=default header.b=bWtx1va8; 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 S1731932AbeLNMZZ (ORCPT + 99 others); Fri, 14 Dec 2018 07:25:25 -0500 Received: from mail.kernel.org ([198.145.29.99]:59544 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731931AbeLNMMY (ORCPT ); Fri, 14 Dec 2018 07:12:24 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 16DF2214F1; Fri, 14 Dec 2018 12:12:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1544789543; bh=4gx8j7b6hdsQ6qKgTo5WvSMFrYX2ppNu81gp7e9UBWo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bWtx1va8NYRVmv/V4U2UFyXKdsnA8A3FqqqAGJaoybHCLbBbHDoaAfw+lRQGJ/nV8 3JLGi6PYIjYsVHugRPoIvB9heefj688PKaj206XMw0a9WzfSDLONV1HhwbWo9X1Ggy zFM54O0iV/nfsD8rVlj8T7HTJ6vZZsxP8QdD7Rwk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Thomas Richter , Hendrik Brueckner , Martin Schwidefsky , Sasha Levin Subject: [PATCH 4.9 16/51] s390/cpum_cf: Reject request for sampling in event initialization Date: Fri, 14 Dec 2018 13:00:18 +0100 Message-Id: <20181214115714.850743029@linuxfoundation.org> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20181214115713.244259772@linuxfoundation.org> References: <20181214115713.244259772@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 613a41b0d16e617f46776a93b975a1eeea96417c ] On s390 command perf top fails [root@s35lp76 perf] # ./perf top -F100000 --stdio Error: cycles: PMU Hardware doesn't support sampling/overflow-interrupts. Try 'perf stat' [root@s35lp76 perf] # Using event -e rb0000 works as designed. Event rb0000 is the event number of the sampling facility for basic sampling. During system start up the following PMUs are installed in the kernel's PMU list (from head to tail): cpum_cf --> s390 PMU counter facility device driver cpum_sf --> s390 PMU sampling facility device driver uprobe kprobe tracepoint task_clock cpu_clock Perf top executes following functions and calls perf_event_open(2) system call with different parameters many times: cmd_top --> __cmd_top --> perf_evlist__add_default --> __perf_evlist__add_default --> perf_evlist__new_cycles (creates event type:0 (HW) config 0 (CPU_CYCLES) --> perf_event_attr__set_max_precise_ip Uses perf_event_open(2) to detect correct precise_ip level. Fails 3 times on s390 which is ok. Then functions cmd_top --> __cmd_top --> perf_top__start_counters -->perf_evlist__config --> perf_can_comm_exec --> perf_probe_api This functions test support for the following events: "cycles:u", "instructions:u", "cpu-clock:u" using --> perf_do_probe_api --> perf_event_open_cloexec Test the close on exec flag support with perf_event_open(2). perf_do_probe_api returns true if the event is supported. The function returns true because event cpu-clock is supported by the PMU cpu_clock. This is achieved by many calls to perf_event_open(2). Function perf_top__start_counters now calls perf_evsel__open() for every event, which is the default event cpu_cycles (config:0) and type HARDWARE (type:0) which a predfined frequence of 4000. Given the above order of the PMU list, the PMU cpum_cf gets called first and returns 0, which indicates support for this sampling. The event is fully allocated in the function perf_event_open (file kernel/event/core.c near line 10521 and the following check fails: event = perf_event_alloc(&attr, cpu, task, group_leader, NULL, NULL, NULL, cgroup_fd); if (IS_ERR(event)) { err = PTR_ERR(event); goto err_cred; } if (is_sampling_event(event)) { if (event->pmu->capabilities & PERF_PMU_CAP_NO_INTERRUPT) { err = -EOPNOTSUPP; goto err_alloc; } } The check for the interrupt capabilities fails and the system call perf_event_open() returns -EOPNOTSUPP (-95). Add a check to return -ENODEV when sampling is requested in PMU cpum_cf. This allows common kernel code in the perf_event_open() system call to test the next PMU in above list. Fixes: 97b1198fece0 (" "s390, perf: Use common PMU interrupt disabled code") Signed-off-by: Thomas Richter Reviewed-by: Hendrik Brueckner Signed-off-by: Martin Schwidefsky Signed-off-by: Sasha Levin --- arch/s390/kernel/perf_cpum_cf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/s390/kernel/perf_cpum_cf.c b/arch/s390/kernel/perf_cpum_cf.c index 037c2a253ae4..1238e7ef1170 100644 --- a/arch/s390/kernel/perf_cpum_cf.c +++ b/arch/s390/kernel/perf_cpum_cf.c @@ -344,6 +344,8 @@ static int __hw_perf_event_init(struct perf_event *event) break; case PERF_TYPE_HARDWARE: + if (is_sampling_event(event)) /* No sampling support */ + return -ENOENT; ev = attr->config; /* Count user space (problem-state) only */ if (!attr->exclude_user && attr->exclude_kernel) { -- 2.19.1