All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Don Zickus <dzickus@redhat.com>
Cc: Babu Moger <babu.moger@oracle.com>,
	mingo@kernel.org, ak@linux.intel.com, jkosina@suse.cz,
	baiyaowei@cmss.chinamobile.com, atomlin@redhat.com,
	uobergfe@redhat.com, tj@kernel.org,
	hidehiro.kawai.ez@hitachi.com, johunt@akamai.com,
	davem@davemloft.net, sparclinux@vger.kernel.org,
	linux-kernel@vger.kernel.org, sam@ravnborg.org
Subject: Re: [PATCH v2 1/2] watchdog: Introduce arch_watchdog_nmi_enable and arch_watchdog_nmi_disable
Date: Thu, 20 Oct 2016 20:25:27 -0700	[thread overview]
Message-ID: <20161020202527.b01839356c6d34ed0cba3569@linux-foundation.org> (raw)
In-Reply-To: <20161020161414.GE35881@redhat.com>

On Thu, 20 Oct 2016 12:14:14 -0400 Don Zickus <dzickus@redhat.com> wrote:

> > > -static int watchdog_nmi_enable(unsigned int cpu) { return 0; }
> > > -static void watchdog_nmi_disable(unsigned int cpu) { return; }
> > > +/*
> > > + * These two functions are mostly architecture specific
> > > + * defining them as weak here.
> > > + */
> > > +int __weak arch_watchdog_nmi_enable(unsigned int cpu) { return 0; }
> > > +void __weak arch_watchdog_nmi_disable(unsigned int cpu) { return; }
> > > +
> > >  #endif /* CONFIG_HARDLOCKUP_DETECTOR */
> > 
> > This is a strange way of using __weak.
> > 
> > Take a look at (one of many examples) kernel/module.c:module_alloc(). 
> > We simply provide a default implementation and some other compilation
> > unit can override (actually replace) that at link time.  No strange
> > ifdeffing needed.
> 
> Yeah, this is mostly because of how we enable the hardlockup detector.
> 
> Some arches use the perf hw and enable CONFIG_HARDLOCKUP_DETECTOR.  Other
> arches just use their own variant of nmi and set CONFIG_HAVE_NMI_WATCHDOG and
> the rest of the arches do not use this.
> 
> So the thought was if CONFIG_HARDLOCKUP_DETECTOR use that implementation,
> everyone else use the __weak version.  Then the arches like sparc can override
> the weak version with their own nmi enablement.
> 
> I don't know how to represent those 3 states correctly and the above is what
> we end up with.

<head spins>

Is there a suitable site where we could capture these considerations in
a code comment?

WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Don Zickus <dzickus@redhat.com>
Cc: Babu Moger <babu.moger@oracle.com>,
	mingo@kernel.org, ak@linux.intel.com, jkosina@suse.cz,
	baiyaowei@cmss.chinamobile.com, atomlin@redhat.com,
	uobergfe@redhat.com, tj@kernel.org,
	hidehiro.kawai.ez@hitachi.com, johunt@akamai.com,
	davem@davemloft.net, sparclinux@vger.kernel.org,
	linux-kernel@vger.kernel.org, sam@ravnborg.org
Subject: Re: [PATCH v2 1/2] watchdog: Introduce arch_watchdog_nmi_enable and arch_watchdog_nmi_disable
Date: Fri, 21 Oct 2016 03:25:27 +0000	[thread overview]
Message-ID: <20161020202527.b01839356c6d34ed0cba3569@linux-foundation.org> (raw)
In-Reply-To: <20161020161414.GE35881@redhat.com>

On Thu, 20 Oct 2016 12:14:14 -0400 Don Zickus <dzickus@redhat.com> wrote:

> > > -static int watchdog_nmi_enable(unsigned int cpu) { return 0; }
> > > -static void watchdog_nmi_disable(unsigned int cpu) { return; }
> > > +/*
> > > + * These two functions are mostly architecture specific
> > > + * defining them as weak here.
> > > + */
> > > +int __weak arch_watchdog_nmi_enable(unsigned int cpu) { return 0; }
> > > +void __weak arch_watchdog_nmi_disable(unsigned int cpu) { return; }
> > > +
> > >  #endif /* CONFIG_HARDLOCKUP_DETECTOR */
> > 
> > This is a strange way of using __weak.
> > 
> > Take a look at (one of many examples) kernel/module.c:module_alloc(). 
> > We simply provide a default implementation and some other compilation
> > unit can override (actually replace) that at link time.  No strange
> > ifdeffing needed.
> 
> Yeah, this is mostly because of how we enable the hardlockup detector.
> 
> Some arches use the perf hw and enable CONFIG_HARDLOCKUP_DETECTOR.  Other
> arches just use their own variant of nmi and set CONFIG_HAVE_NMI_WATCHDOG and
> the rest of the arches do not use this.
> 
> So the thought was if CONFIG_HARDLOCKUP_DETECTOR use that implementation,
> everyone else use the __weak version.  Then the arches like sparc can override
> the weak version with their own nmi enablement.
> 
> I don't know how to represent those 3 states correctly and the above is what
> we end up with.

<head spins>

Is there a suitable site where we could capture these considerations in
a code comment?

  reply	other threads:[~2016-10-21  3:25 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-13 20:38 [PATCH v2 0/2] Introduce arch specific nmi enable, disable handlers Babu Moger
2016-10-13 20:38 ` Babu Moger
2016-10-13 20:38 ` [PATCH v2 1/2] watchdog: Introduce arch_watchdog_nmi_enable and arch_watchdog_nmi_disable Babu Moger
2016-10-13 20:38   ` Babu Moger
2016-10-17 17:31   ` Don Zickus
2016-10-17 17:31     ` Don Zickus
2016-10-18  2:46     ` Babu Moger
2016-10-18  2:46       ` Babu Moger
2016-10-20  0:00   ` Andrew Morton
2016-10-20  0:00     ` Andrew Morton
2016-10-20 16:14     ` Don Zickus
2016-10-20 16:14       ` Don Zickus
2016-10-21  3:25       ` Andrew Morton [this message]
2016-10-21  3:25         ` Andrew Morton
2016-10-21 15:11         ` Don Zickus
2016-10-21 15:11           ` Don Zickus
2016-10-21 19:19           ` Andrew Morton
2016-10-21 19:19             ` Andrew Morton
2016-10-21 21:50             ` Babu Moger
2016-10-21 21:50               ` Babu Moger
2016-10-24 15:19               ` Don Zickus
2016-10-24 15:19                 ` Don Zickus
2016-10-25  0:55                 ` Babu Moger
2016-10-25  0:55                   ` Babu Moger
2016-10-13 20:38 ` [PATCH v2 2/2] sparc: Implement " Babu Moger
2016-10-13 20:38   ` Babu Moger
2016-10-17 14:25 ` [PATCH v2 0/2] Introduce arch specific nmi enable, disable handlers Don Zickus
2016-10-17 14:25   ` Don Zickus

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=20161020202527.b01839356c6d34ed0cba3569@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=ak@linux.intel.com \
    --cc=atomlin@redhat.com \
    --cc=babu.moger@oracle.com \
    --cc=baiyaowei@cmss.chinamobile.com \
    --cc=davem@davemloft.net \
    --cc=dzickus@redhat.com \
    --cc=hidehiro.kawai.ez@hitachi.com \
    --cc=jkosina@suse.cz \
    --cc=johunt@akamai.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=sam@ravnborg.org \
    --cc=sparclinux@vger.kernel.org \
    --cc=tj@kernel.org \
    --cc=uobergfe@redhat.com \
    /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.