From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761569AbcJSUTW (ORCPT ); Wed, 19 Oct 2016 16:19:22 -0400 Received: from mx5-phx2.redhat.com ([209.132.183.37]:58968 "EHLO mx5-phx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755994AbcJSUTT (ORCPT ); Wed, 19 Oct 2016 16:19:19 -0400 Date: Wed, 19 Oct 2016 16:18:51 -0400 (EDT) From: CAI Qian To: Jiri Olsa Cc: Rob Herring , Peter Zijlstra , Kan Liang , Greg Kroah-Hartman , linux-kernel , Ingo Molnar Message-ID: <1344131855.709493.1476908331635.JavaMail.zimbra@redhat.com> In-Reply-To: <20161019191943.GA7951@krava> References: <907882571.66590.1476113724660.JavaMail.zimbra@redhat.com> <1219480016.67057.1476113847440.JavaMail.zimbra@redhat.com> <20161010172023.GA7148@kroah.com> <1035662571.647973.1476888331396.JavaMail.zimbra@redhat.com> <20161019191943.GA7951@krava> Subject: Re: [4.9-rc1+] intel_uncore builtin + CONFIG_DEBUG_TEST_DRIVER_REMOVE kernel panic MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.18.41.13] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - GC45 (Linux)/8.0.6_GA_5922) Thread-Topic: intel_uncore builtin + CONFIG_DEBUG_TEST_DRIVER_REMOVE kernel panic Thread-Index: 9MmjPkMbttLJKzoCS6gDk9HQCHRygg== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > I think the reason here is that presume pmu devices are always added, > but we add them only if pmu_bus_running (in perf_event_sysfs_init) > is set which might happen after uncore initcall > > attached patch fixes the issue for me Tested-by: CAI Qian > > jirka > > > --- > diff --git a/kernel/events/core.c b/kernel/events/core.c > index c6e47e97b33f..c2099b799d16 100644 > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -8871,8 +8871,10 @@ void perf_pmu_unregister(struct pmu *pmu) > idr_remove(&pmu_idr, pmu->type); > if (pmu->nr_addr_filters) > device_remove_file(pmu->dev, &dev_attr_nr_addr_filters); > - device_del(pmu->dev); > - put_device(pmu->dev); > + if (pmu_bus_running) { > + device_del(pmu->dev); > + put_device(pmu->dev); > + } > free_pmu_context(pmu); > } > EXPORT_SYMBOL_GPL(perf_pmu_unregister); >