All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
To: "Yu, Fenghua" <fenghua.yu@intel.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>, Ingo Molnar <mingo@elte.hu>,
	Thomas Gleixner <tglx@linutronix.de>,
	H Peter Anvin <hpa@zytor.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Mallick, Asit K" <asit.k.mallick@intel.com>,
	"Luck, Tony" <tony.luck@intel.com>,
	Arjan Dan De Ven <arjan@linux.intel.com>,
	"Siddha, Suresh B" <suresh.b.siddha@intel.com>,
	"Brown, Len" <len.brown@intel.com>,
	Randy Dunlap <rdunlap@xenotime.net>,
	Chen Gong <gong.chen@linux.intel.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	linux-pm <linux-pm@vger.kernel.org>, x86 <x86@kernel.org>
Subject: Re: [PATCH v9 05/12] x86, hotplug, suspend: Online CPU0 for suspend or hibernate
Date: Thu, 18 Oct 2012 12:21:05 +0530	[thread overview]
Message-ID: <507FA6D9.7080800@linux.vnet.ibm.com> (raw)
In-Reply-To: <4821251.PVP3SGWCqy@vostro.rjw.lan>

On 10/18/2012 12:03 PM, Rafael J. Wysocki wrote:
> On Wednesday 17 of October 2012 17:39:48 Yu, Fenghua wrote:
>>>>> On Tuesday, October 16, 2012 10:19 PM Rafael J. Wysocki wrote:
>>> On Tuesday 16 of October 2012 22:12:27 Yu, Fenghua wrote:
>>>>> On 10/16/2012 09:47 PM, Rafael J. Wysocki wrote:
>>>>>> On Tuesday 16 of October 2012 11:05:18 Srivatsa S. Bhat wrote:
>>>>>>> On 10/16/2012 02:20 AM, Rafael J. Wysocki wrote:
>>>>>>>> On Friday 12 of October 2012 09:09:42 Fenghua Yu wrote:
>>>>>>>>> From: Fenghua Yu <fenghua.yu@intel.com>
>>>>> fix the bug I
>>>>> pointed out in my other mail.
>>> Because things like this are often overlooked by people trying to
>>> optimize
>>> stuff and the fact that you have to add a comment explaining that
>>> dependency
>>> only means that it is not exactly straightforward.
>>
>> If people try to optimize pm notifier, they really need to know
>> pm_notifier() API and its priority. If they ignore the priority, they will
>> screw up kernel no matter how many comments in it.
>>
>>>
>>> Moreover, you should also add a corresponding comment in the other
>>> notifier
>>> indicating that its priority should be higher than the priority of the
>>> new thing and explaining why.
>>
>> The comment in the patch explains this very clearly. I don't think it's
>> necessary to add comments in other notifiers.
>>
>> If adding comments in other notifiers each time when you add a new notifier,
>> will you add 10 more comments in all other notifiers if you add 10 new notifiers?
> 
> Well, if there are strict ordering requirements regarding them, then those
> requirements should be documented in both places.  Otherwise, if somebody looks
> at cpu_hotplug_pm_callback() alone, for example, he/she may not even realize
> that it has to be strictly ordered with respect to bsp_pm_callback().
> 

Right, either we could put comments at both places or set up #defines for
their priorities in a common header file or some such and comment about it there,
like what is done in include/linux/cpu.h for example. But atleast one of these
*has* to be done; just commenting at one place is too risky for code-maintenance.

> Of course, you can argue that people should know what they are doing, but
> then reality is that it's quite easy to overlook things like that.
>

Yep.
 
>> I would think when people try to change notifier priority, they should
>> know what they are going to do and search the notifiers and see the comments.
>>
>> BTW, the other notifier is in generic code. Adding a paranoid comment in
>> it doesn't seem to be worth. The comment in this patch code is very clear
>> already.
> 
> The problem is that it is generally difficult to find all subsystems that
> have registered notifiers in a given chain and figuring out dependencies
> between them is highly problematic.  That's why I'm saying this is a fragile
> design - because it is so easy to break accidentally (and that's already
> happened in CPU hotplug, so I'm not making that up).

True..
 
Regards,
Srivatsa S. Bhat

> 
>>> I really think that notifiers are fragile in general and this
>>> particular
>>> one is no exception.
>>
>> If we think pm_notifier API is fragile, we need to fix the API instead of
>> leaving it there and not allowing people to use it because it's suspected
>> fragile.
> 
> Because it is use by the existing code which generally works and may be
> broken while attempting to "fix" the API.
> 
>> It's simply not realistic to tell people not to use the API each
>> time in code review while in the meantime the API and its priority are staying
>> in kernel to allow people to use it.
> 
> I don't quite agree.  It sometimes is not worth changing code that's been
> around for a while already, because it's been tested in multiple configurations
> and changing it may cause things to break, although we may not like the APIs
> used by that code.  That doesn't necessarily mean, however, that adding new
> code using those APIs is always a good idea.
> 
> In this particular case I just wondered if we could avoid adding more code
> that would use an API having known problems.  The answer seems to be that
> it would cost some additional complexity that might not be worth it.  This
> is a good answer, but you might have given it to me directly. :-)
> 


  reply	other threads:[~2012-10-18  6:52 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-12 16:09 [PATCH v9 0/12] x86: Arbitrary CPU hot(un)plug support Fenghua Yu
2012-10-12 16:09 ` [PATCH v9 01/12] doc: Add x86 CPU0 online/offline feature Fenghua Yu
2012-10-12 16:09 ` [PATCH v9 02/12] x86, Kconfig: Add config switch for CPU0 hotplug Fenghua Yu
2012-10-12 16:09 ` [PATCH v9 03/12] x86, topology: Don't offline CPU0 if any PIC irq can not be migrated out of it Fenghua Yu
2012-10-16 17:03   ` Borislav Petkov
2012-10-16 18:43     ` Yu, Fenghua
2012-10-16 19:40       ` Borislav Petkov
2012-10-12 16:09 ` [PATCH v9 04/12] x86, hotplug: Support functions for CPU0 online/offline Fenghua Yu
2012-10-12 16:09 ` [PATCH v9 05/12] x86, hotplug, suspend: Online CPU0 for suspend or hibernate Fenghua Yu
2012-10-15 20:50   ` Rafael J. Wysocki
2012-10-16  5:35     ` Srivatsa S. Bhat
2012-10-16 16:17       ` Rafael J. Wysocki
2012-10-16 16:30         ` Srivatsa S. Bhat
2012-10-16 22:12           ` Yu, Fenghua
2012-10-17  5:18             ` Rafael J. Wysocki
2012-10-17 17:39               ` Yu, Fenghua
2012-10-18  6:33                 ` Rafael J. Wysocki
2012-10-18  6:51                   ` Srivatsa S. Bhat [this message]
2012-10-17 18:29       ` Yu, Fenghua
2012-10-12 16:09 ` [PATCH v9 06/12] x86-64, hotplug: Add start_cpu0() entry point to head_64.S Fenghua Yu
2012-10-16 16:50   ` Borislav Petkov
2012-10-12 16:09 ` [PATCH v9 07/12] x86-32, hotplug: Add start_cpu0() entry point to head_32.S Fenghua Yu
2012-10-12 16:09 ` [PATCH v9 08/12] x86, hotplug: Wake up CPU0 via NMI instead of INIT, SIPI, SIPI Fenghua Yu
2012-10-16  4:43   ` HATAYAMA Daisuke
2012-10-16 16:57   ` Borislav Petkov
2012-10-12 16:09 ` [PATCH v9 09/12] x86, hotplug: During CPU0 online, enable x2apic, set_numa_node Fenghua Yu
2012-10-12 16:09 ` [PATCH v9 10/12] x86, hotplug: The first online processor saves the MTRR state Fenghua Yu
2012-10-12 16:09 ` [PATCH v9 11/12] x86/i387.c: Initialize thread xstate only on CPU0 only once Fenghua Yu
2012-10-12 16:09 ` [PATCH v9 12/12] x86, topology: Debug CPU00 hotplug Fenghua Yu
2012-10-16  8:47   ` Srivatsa S. Bhat
2012-10-17  0:06     ` Yu, Fenghua
2012-10-18  6:42       ` Srivatsa S. Bhat
2012-10-19  1:07         ` Yu, Fenghua

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=507FA6D9.7080800@linux.vnet.ibm.com \
    --to=srivatsa.bhat@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@linux.intel.com \
    --cc=asit.k.mallick@intel.com \
    --cc=fenghua.yu@intel.com \
    --cc=gong.chen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rdunlap@xenotime.net \
    --cc=rjw@sisk.pl \
    --cc=suresh.b.siddha@intel.com \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.