Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753107AbdCMN6P (ORCPT ); Mon, 13 Mar 2017 09:58:15 -0400 Received: from mail-io0-f196.google.com ([209.85.223.196]:34220 "EHLO mail-io0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752909AbdCMN6H (ORCPT ); Mon, 13 Mar 2017 09:58:07 -0400 From: Vince Weaver X-Google-Original-From: Vince Weaver Date: Mon, 13 Mar 2017 09:58:00 -0400 (EDT) X-X-Sender: vince@macbook-air To: linux-kernel@vger.kernel.org cc: luto@amacapital.net, Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo Subject: perf: race with automatic rdpmc() disabling Message-ID: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1230 Lines: 32 Hello I've been trying to track this issue down for a few days and haven't been able to isolate it. So maybe someone who understands low-level perf mmap reference counting can help here. As you might recall, 7911d3f7af14a614617e38245fedf98a724e46a9 introduced automatic disabling of userspace rdpmc when no perf_events were running. I've run into a problem with PAPI when using rdpmc. If you have PAPI measuring events in multiple pthread threads, sometimes (but not always) the program will GPF because CR4/rdpmc gets turned off while events are still active. I've been trying to put together a reproducible test case but haven't been able to manage. I have a PAPI test that will show the problem about 50% of the time but I can't seem to isolate the problem. Any ideas? If you really want to try to reproduce it, get the current git version of PAPI git clone https://bitbucket.org/icl/papi.git edit src/components/perf_event/perf_event.c so that #define PERF_USE_RDPMC 1 in src run ./configure , make then run the ./ctests/zero_pthreads test a few times. It will GPF and I'm relatively (though not entirely) sure it's not a PAPI issue. The problem does go away if you set /sys/devices/cpu/rdpmc to 2 Vince