Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752666AbbBYFrp (ORCPT ); Wed, 25 Feb 2015 00:47:45 -0500 Received: from mail-ig0-f173.google.com ([209.85.213.173]:50629 "EHLO mail-ig0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752583AbbBYFrn (ORCPT ); Wed, 25 Feb 2015 00:47:43 -0500 MIME-Version: 1.0 In-Reply-To: <54ED50F5.5080603@linaro.org> References: <54CEECF7.7020504@oracle.com> <54CEF123.5050106@oracle.com> <54CEF574.6040404@oracle.com> <54CEF7AA.80401@oracle.com> <54CEFA23.7040705@oracle.com> <54CF0106.5050601@oracle.com> <54CF9209.1050403@oracle.com> <54ED50F5.5080603@linaro.org> Date: Wed, 25 Feb 2015 13:47:42 +0800 Message-ID: Subject: Re: [PATCH Resend] cpufreq: Set cpufreq_cpu_data to NULL before putting kobject From: Ethan Zhao To: viresh kumar Cc: ethan zhao , Rafael Wysocki , santosh shilimkar , Linaro Kernel Mailman List , "linux-pm@vger.kernel.org" , linux-kernel , guangyu.sun@oracle.com, "sriharsha.devdas@oracle.com" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4629 Lines: 99 Viresh, Will do that when I get the test box. Thanks, Ethan On Wed, Feb 25, 2015 at 12:35 PM, viresh kumar wrote: > On Wednesday 25 February 2015 08:54 AM, Ethan Zhao wrote: >> Viresh, >> With this patch applied, still got the following warning and panic, >> seems it needs more care. >> >> 54.474618] ------------[ cut here ]------------ >> [ 54.545816] WARNING: CPU: 0 PID: 213 at include/linux/kref.h:47 >> kobject_get+0x41/0x50() >> [ 54.642595] Modules linked in: i2c_i801(+) mfd_core shpchp(+) >> acpi_cpufreq(+) edac_core ioatdma(+) xfs libcrc32c ast syscopyarea ixgbe >> sysfillrect sysimgblt sr_mod sd_mod drm_kms_helper igb mdio cdrom e1000e ahci >> dca ttm libahci uas drm i2c_algo_bit ptp megaraid_sas libata usb_storage >> i2c_core pps_core dm_mirror dm_region_hash dm_log dm_mod >> [ 55.007264] CPU: 0 PID: 213 Comm: kworker/0:2 Not tainted >> 3.18.5 >> [ 55.099970] Hardware name: Oracle Corporation SUN FIRE X4170 M2 SERVER >> /ASSY,MOTHERBOARD,X4170, BIOS 08120104 05/08/2012 >> [ 55.239736] Workqueue: kacpi_notify acpi_os_execute_deferred >> [ 55.308598] 0000000000000000 00000000bd730b61 ffff88046742baf8 >> ffffffff816b7edb >> [ 55.398305] 0000000000000000 0000000000000000 ffff88046742bb38 >> ffffffff81078ae1 >> [ 55.488040] ffff88046742bbd8 ffff8806706b3000 0000000000000292 >> 0000000000000000 >> [ 55.577776] Call Trace: >> [ 55.608228] [] dump_stack+0x46/0x58 >> [ 55.670895] [] warn_slowpath_common+0x81/0xa0 >> [ 55.743952] [] warn_slowpath_null+0x1a/0x20 >> [ 55.814929] [] kobject_get+0x41/0x50 >> [ 55.878654] [] cpufreq_cpu_get+0x75/0xc0 >> [ 55.946528] [] cpufreq_update_policy+0x2e/0x1f0 >> [ 56.021682] [] ? up+0x32/0x50 >> [ 56.078126] [] ? acpi_ns_get_node+0xcb/0xf2 >> [ 56.148974] [] ? acpi_evaluate_object+0x22c/0x252 >> [ 56.226066] [] ? acpi_get_handle+0x95/0xc0 >> [ 56.295871] [] ? acpi_has_method+0x25/0x40 >> [ 56.365661] [] acpi_processor_ppc_has_changed+0x77/0x82 >> [ 56.448956] [] ? move_linked_works+0x66/0x90 >> [ 56.520842] [] acpi_processor_notify+0x58/0xe7 >> [ 56.594807] [] acpi_ev_notify_dispatch+0x44/0x5c >> [ 56.670859] [] acpi_os_execute_deferred+0x15/0x22 >> [ 56.747936] [] process_one_work+0x14e/0x3f0 >> [ 56.818766] [] worker_thread+0x11b/0x4d0 >> [ 56.886486] [] ? rescuer_thread+0x350/0x350 >> [ 56.957316] [] kthread+0xe1/0x100 >> [ 57.017742] [] ? kthread_create_on_node+0x1b0/0x1b0 >> [ 57.096903] [] ret_from_fork+0x7c/0xb0 >> [ 57.162534] [] ? kthread_create_on_node+0x1b0/0x1b0 >> [ 57.241680] ---[ end trace dce06bb76f547de5 ]--- >> >> >> Any idea ? > > No. Santosh reported this to me few days back, I asked him to perform some > testing but don't know what happened after that.. > > Can you give me full kernel logs along with the crash after this patch. > You will be required to do some testing this time as I don't have any clue > about the problem.. > > > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c > index b4375021238f..230a59d2e0d7 100644 > --- a/drivers/cpufreq/cpufreq.c > +++ b/drivers/cpufreq/cpufreq.c > @@ -214,8 +214,10 @@ struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu) > if (cpufreq_driver) { > /* get the CPU */ > policy = per_cpu(cpufreq_cpu_data, cpu); > - if (policy) > + if (policy) { > kobject_get(&policy->kobj); > + pr_info("%s: %d", __func__, atomic_read(&policy->kobj.kref.refcount)); > + } > } > > read_unlock_irqrestore(&cpufreq_driver_lock, flags); > @@ -233,6 +235,7 @@ void cpufreq_cpu_put(struct cpufreq_policy *policy) > return; > > kobject_put(&policy->kobj); > + pr_info("%s: %d", __func__, atomic_read(&policy->kobj.kref.refcount)); > up_read(&cpufreq_rwsem); > } > EXPORT_SYMBOL_GPL(cpufreq_cpu_put); > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/