All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Cc: Ingo Molnar <mingo@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>,
	Andi Kleen <andi.kleen@intel.com>,
	Ashok Raj <ashok.raj@intel.com>, Borislav Petkov <bp@suse.de>,
	Tony Luck <tony.luck@intel.com>,
	"Ravi V. Shankar" <ravi.v.shankar@intel.com>,
	x86@kernel.org, sparclinux@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	Jacob Pan <jacob.jun.pan@intel.com>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Don Zickus <dzickus@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Frederic Weisbecker <frederic@kernel.org>,
	Alexei Starovoitov <ast@kernel.org>,
	Babu Moger <babu.moger@oracle.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Philippe Ombredanne <pombredanne@nexb.com>,
	Colin Ian King <colin.king@canonical.com>,
	Byungchul Park <byungchul.park@lge.com>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	"Luis R. Rodriguez" <mcgrof@kernel.org>,
	Waiman Long <longman@redhat.com>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Randy Dunlap <rdunlap@infradead.org>,
	Davidlohr Bueso <dave@stgolabs.net>,
	Christoffer Dall <cdall@linaro.org>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Kai-Heng Feng <kai.heng.feng@canonical.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	David Rientjes <rientjes@google.com>,
	iommu@lists.linux-foundation.org
Subject: Re: [RFC PATCH 20/23] watchdog/hardlockup/hpet: Rotate interrupt among all monitored CPUs
Date: Fri, 15 Jun 2018 12:29:06 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.21.1806151122070.2079@nanos.tec.linutronix.de> (raw)
In-Reply-To: <20180615021629.GD11625@voyager>

On Thu, 14 Jun 2018, Ricardo Neri wrote:
> On Wed, Jun 13, 2018 at 11:48:09AM +0200, Thomas Gleixner wrote:
> > On Tue, 12 Jun 2018, Ricardo Neri wrote:
> > > +	/* There are no CPUs to monitor. */
> > > +	if (!cpumask_weight(&hdata->monitored_mask))
> > > +		return NMI_HANDLED;
> > > +
> > >  	inspect_for_hardlockups(regs);
> > >  
> > > +	/*
> > > +	 * Target a new CPU. Keep trying until we find a monitored CPU. CPUs
> > > +	 * are addded and removed to this mask at cpu_up() and cpu_down(),
> > > +	 * respectively. Thus, the interrupt should be able to be moved to
> > > +	 * the next monitored CPU.
> > > +	 */
> > > +	spin_lock(&hld_data->lock);
> > 
> > Yuck. Taking a spinlock from NMI ...
> 
> I am sorry. I will look into other options for locking. Do you think rcu_lock
> would help in this case? I need this locking because the CPUs being monitored
> changes as CPUs come online and offline.

Sure, but you _cannot_ take any locks in NMI context which are also taken
in !NMI context. And RCU will not help either. How so? The NMI can hit
exactly before the CPU bit is cleared and then the CPU goes down. So RCU
_cannot_ protect anything.

All you can do there is make sure that the TIMn_CONF is only ever accessed
in !NMI code. Then you can stop the timer _before_ a CPU goes down and make
sure that the eventually on the fly NMI is finished. After that you can
fiddle with the CPU mask and restart the timer. Be aware that this is going
to be more corner case handling that actual functionality.

> > > +	for_each_cpu_wrap(cpu, &hdata->monitored_mask, smp_processor_id() + 1) {
> > > +		if (!irq_set_affinity(hld_data->irq, cpumask_of(cpu)))
> > > +			break;
> > 
> > ... and then calling into generic interrupt code which will take even more
> > locks is completely broken.
> 
> I will into reworking how the destination of the interrupt is set.

You have to consider two cases:

 1) !remapped mode:

    That's reasonably simple because you just have to deal with the HPET
    TIMERn_PROCMSG_ROUT register. But then you need to do this directly and
    not through any of the existing interrupt facilities.

 2) remapped mode:

    That's way more complex as you _cannot_ ever do anything which touches
    the IOMMU and the related tables.

    So you'd need to reserve an IOMMU remapping entry for each CPU upfront,
    store the resulting value for the HPET TIMERn_PROCMSG_ROUT register in
    per cpu storage and just modify that one from NMI.

    Though there might be subtle side effects involved, which are related to
    the acknowledge part. You need to talk to the IOMMU wizards first.

All in all, the idea itself is interesting, but the envisioned approach of
round robin and no fast accessible NMI reason detection is going to create
more problems than it solves.

This all could have been avoided if Intel hadn't decided to reuse the APIC
timer registers for the TSC deadline timer. If both would be available we'd
have a CPU local fast accessible watchdog timer when TSC deadline is used
for general timer purposes. But why am I complaining? I've resigned to the
fact that timers are designed^Wcobbled together by janitors long ago.

Thanks,

	tglx

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Cc: Ingo Molnar <mingo@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>,
	Andi Kleen <andi.kleen@intel.com>,
	Ashok Raj <ashok.raj@intel.com>, Borislav Petkov <bp@suse.de>,
	Tony Luck <tony.luck@intel.com>,
	"Ravi V. Shankar" <ravi.v.shankar@intel.com>,
	x86@kernel.org, sparclinux@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	Jacob Pan <jacob.jun.pan@intel.com>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Don Zickus <dzickus@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Frederic Weisbecker <frederic@kernel.org>,
	Alexei Starovoitov <ast@kernel.org>,
	Babu Moger <babu.moger@oracle.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Masami Hiramatsu <mhiramat@kernel.org>
Subject: Re: [RFC PATCH 20/23] watchdog/hardlockup/hpet: Rotate interrupt among all monitored CPUs
Date: Fri, 15 Jun 2018 10:29:06 +0000	[thread overview]
Message-ID: <alpine.DEB.2.21.1806151122070.2079@nanos.tec.linutronix.de> (raw)
In-Reply-To: <20180615021629.GD11625@voyager>

On Thu, 14 Jun 2018, Ricardo Neri wrote:
> On Wed, Jun 13, 2018 at 11:48:09AM +0200, Thomas Gleixner wrote:
> > On Tue, 12 Jun 2018, Ricardo Neri wrote:
> > > +	/* There are no CPUs to monitor. */
> > > +	if (!cpumask_weight(&hdata->monitored_mask))
> > > +		return NMI_HANDLED;
> > > +
> > >  	inspect_for_hardlockups(regs);
> > >  
> > > +	/*
> > > +	 * Target a new CPU. Keep trying until we find a monitored CPU. CPUs
> > > +	 * are addded and removed to this mask at cpu_up() and cpu_down(),
> > > +	 * respectively. Thus, the interrupt should be able to be moved to
> > > +	 * the next monitored CPU.
> > > +	 */
> > > +	spin_lock(&hld_data->lock);
> > 
> > Yuck. Taking a spinlock from NMI ...
> 
> I am sorry. I will look into other options for locking. Do you think rcu_lock
> would help in this case? I need this locking because the CPUs being monitored
> changes as CPUs come online and offline.

Sure, but you _cannot_ take any locks in NMI context which are also taken
in !NMI context. And RCU will not help either. How so? The NMI can hit
exactly before the CPU bit is cleared and then the CPU goes down. So RCU
_cannot_ protect anything.

All you can do there is make sure that the TIMn_CONF is only ever accessed
in !NMI code. Then you can stop the timer _before_ a CPU goes down and make
sure that the eventually on the fly NMI is finished. After that you can
fiddle with the CPU mask and restart the timer. Be aware that this is going
to be more corner case handling that actual functionality.

> > > +	for_each_cpu_wrap(cpu, &hdata->monitored_mask, smp_processor_id() + 1) {
> > > +		if (!irq_set_affinity(hld_data->irq, cpumask_of(cpu)))
> > > +			break;
> > 
> > ... and then calling into generic interrupt code which will take even more
> > locks is completely broken.
> 
> I will into reworking how the destination of the interrupt is set.

You have to consider two cases:

 1) !remapped mode:

    That's reasonably simple because you just have to deal with the HPET
    TIMERn_PROCMSG_ROUT register. But then you need to do this directly and
    not through any of the existing interrupt facilities.

 2) remapped mode:

    That's way more complex as you _cannot_ ever do anything which touches
    the IOMMU and the related tables.

    So you'd need to reserve an IOMMU remapping entry for each CPU upfront,
    store the resulting value for the HPET TIMERn_PROCMSG_ROUT register in
    per cpu storage and just modify that one from NMI.

    Though there might be subtle side effects involved, which are related to
    the acknowledge part. You need to talk to the IOMMU wizards first.

All in all, the idea itself is interesting, but the envisioned approach of
round robin and no fast accessible NMI reason detection is going to create
more problems than it solves.

This all could have been avoided if Intel hadn't decided to reuse the APIC
timer registers for the TSC deadline timer. If both would be available we'd
have a CPU local fast accessible watchdog timer when TSC deadline is used
for general timer purposes. But why am I complaining? I've resigned to the
fact that timers are designed^Wcobbled together by janitors long ago.

Thanks,

	tglx

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Cc: Ingo Molnar <mingo@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>,
	Andi Kleen <andi.kleen@intel.com>,
	Ashok Raj <ashok.raj@intel.com>, Borislav Petkov <bp@suse.de>,
	Tony Luck <tony.luck@intel.com>,
	"Ravi V. Shankar" <ravi.v.shankar@intel.com>,
	x86@kernel.org, sparclinux@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	Jacob Pan <jacob.jun.pan@intel.com>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Don Zickus <dzickus@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Frederic Weisbecker <frederic@kernel.org>,
	Alexei Starovoitov <ast@kernel.org>,
	Babu Moger <babu.moger@oracle.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Masami Hiramatsu <mhiramat@kernel.org>
Subject: Re: [RFC PATCH 20/23] watchdog/hardlockup/hpet: Rotate interrupt among all monitored CPUs
Date: Fri, 15 Jun 2018 12:29:06 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.21.1806151122070.2079@nanos.tec.linutronix.de> (raw)
In-Reply-To: <20180615021629.GD11625@voyager>

On Thu, 14 Jun 2018, Ricardo Neri wrote:
> On Wed, Jun 13, 2018 at 11:48:09AM +0200, Thomas Gleixner wrote:
> > On Tue, 12 Jun 2018, Ricardo Neri wrote:
> > > +	/* There are no CPUs to monitor. */
> > > +	if (!cpumask_weight(&hdata->monitored_mask))
> > > +		return NMI_HANDLED;
> > > +
> > >  	inspect_for_hardlockups(regs);
> > >  
> > > +	/*
> > > +	 * Target a new CPU. Keep trying until we find a monitored CPU. CPUs
> > > +	 * are addded and removed to this mask at cpu_up() and cpu_down(),
> > > +	 * respectively. Thus, the interrupt should be able to be moved to
> > > +	 * the next monitored CPU.
> > > +	 */
> > > +	spin_lock(&hld_data->lock);
> > 
> > Yuck. Taking a spinlock from NMI ...
> 
> I am sorry. I will look into other options for locking. Do you think rcu_lock
> would help in this case? I need this locking because the CPUs being monitored
> changes as CPUs come online and offline.

Sure, but you _cannot_ take any locks in NMI context which are also taken
in !NMI context. And RCU will not help either. How so? The NMI can hit
exactly before the CPU bit is cleared and then the CPU goes down. So RCU
_cannot_ protect anything.

All you can do there is make sure that the TIMn_CONF is only ever accessed
in !NMI code. Then you can stop the timer _before_ a CPU goes down and make
sure that the eventually on the fly NMI is finished. After that you can
fiddle with the CPU mask and restart the timer. Be aware that this is going
to be more corner case handling that actual functionality.

> > > +	for_each_cpu_wrap(cpu, &hdata->monitored_mask, smp_processor_id() + 1) {
> > > +		if (!irq_set_affinity(hld_data->irq, cpumask_of(cpu)))
> > > +			break;
> > 
> > ... and then calling into generic interrupt code which will take even more
> > locks is completely broken.
> 
> I will into reworking how the destination of the interrupt is set.

You have to consider two cases:

 1) !remapped mode:

    That's reasonably simple because you just have to deal with the HPET
    TIMERn_PROCMSG_ROUT register. But then you need to do this directly and
    not through any of the existing interrupt facilities.

 2) remapped mode:

    That's way more complex as you _cannot_ ever do anything which touches
    the IOMMU and the related tables.

    So you'd need to reserve an IOMMU remapping entry for each CPU upfront,
    store the resulting value for the HPET TIMERn_PROCMSG_ROUT register in
    per cpu storage and just modify that one from NMI.

    Though there might be subtle side effects involved, which are related to
    the acknowledge part. You need to talk to the IOMMU wizards first.

All in all, the idea itself is interesting, but the envisioned approach of
round robin and no fast accessible NMI reason detection is going to create
more problems than it solves.

This all could have been avoided if Intel hadn't decided to reuse the APIC
timer registers for the TSC deadline timer. If both would be available we'd
have a CPU local fast accessible watchdog timer when TSC deadline is used
for general timer purposes. But why am I complaining? I've resigned to the
fact that timers are designed^Wcobbled together by janitors long ago.

Thanks,

	tglx

  reply	other threads:[~2018-06-15 10:29 UTC|newest]

Thread overview: 200+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-13  0:57 [RFC PATCH 00/23] Implement an HPET-based hardlockup detector Ricardo Neri
2018-06-13  0:57 ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 01/23] x86/apic: Add a parameter for the APIC delivery mode Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 02/23] genirq: Introduce IRQD_DELIVER_AS_NMI Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 03/23] genirq: Introduce IRQF_DELIVER_AS_NMI Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  8:34   ` Peter Zijlstra
2018-06-13  8:34     ` Peter Zijlstra
2018-06-13  8:34     ` Peter Zijlstra
2018-06-13  8:59     ` Julien Thierry
2018-06-13  8:59       ` Julien Thierry
2018-06-13  8:59       ` Julien Thierry
2018-06-13  9:20       ` Thomas Gleixner
2018-06-13  9:20         ` Thomas Gleixner
2018-06-13  9:20         ` Thomas Gleixner
2018-06-13  9:36         ` Julien Thierry
2018-06-13  9:36           ` Julien Thierry
2018-06-13  9:36           ` Julien Thierry
2018-06-13  9:49           ` Julien Thierry
2018-06-13  9:49             ` Julien Thierry
2018-06-13  9:49             ` Julien Thierry
2018-06-13  9:57           ` Thomas Gleixner
2018-06-13  9:57             ` Thomas Gleixner
2018-06-13  9:57             ` Thomas Gleixner
2018-06-13 10:25             ` Julien Thierry
2018-06-13 10:25               ` Julien Thierry
2018-06-13 10:25               ` Julien Thierry
2018-06-13 10:06         ` Marc Zyngier
2018-06-13 10:06           ` Marc Zyngier
2018-06-13 10:06           ` Marc Zyngier
2018-06-15  2:12           ` Ricardo Neri
2018-06-15  2:12             ` Ricardo Neri
2018-06-15  2:12             ` Ricardo Neri
2018-06-15  8:01             ` Julien Thierry
2018-06-15  8:01               ` Julien Thierry
2018-06-15  8:01               ` Julien Thierry
2018-06-16  0:39               ` Ricardo Neri
2018-06-16  0:39                 ` Ricardo Neri
2018-06-16  0:39                 ` Ricardo Neri
2018-06-16 13:36                 ` Thomas Gleixner
2018-06-16 13:36                   ` Thomas Gleixner
2018-06-16 13:36                   ` Thomas Gleixner
2018-06-13  0:57 ` [RFC PATCH 04/23] iommu/vt-d/irq_remapping: Add support for IRQCHIP_CAN_DELIVER_AS_NMI Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 05/23] x86/msi: " Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 06/23] x86/ioapic: Add support for IRQCHIP_CAN_DELIVER_AS_NMI with interrupt remapping Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 07/23] x86/hpet: Expose more functions to read and write registers Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 08/23] x86/hpet: Calculate ticks-per-second in a separate function Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 09/23] x86/hpet: Reserve timer for the HPET hardlockup detector Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 10/23] x86/hpet: Relocate flag definitions to a header file Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 11/23] x86/hpet: Configure the timer used by the hardlockup detector Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 12/23] kernel/watchdog: Introduce a struct for NMI watchdog operations Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  7:41   ` Nicholas Piggin
2018-06-13  7:41     ` Nicholas Piggin
2018-06-13  7:41     ` Nicholas Piggin
2018-06-13  8:42     ` Peter Zijlstra
2018-06-13  8:42       ` Peter Zijlstra
2018-06-13  8:42       ` Peter Zijlstra
2018-06-13  9:26       ` Thomas Gleixner
2018-06-13  9:26         ` Thomas Gleixner
2018-06-13  9:26         ` Thomas Gleixner
2018-06-13 11:52         ` Nicholas Piggin
2018-06-13 11:52           ` Nicholas Piggin
2018-06-13 11:52           ` Nicholas Piggin
2018-06-14  1:31           ` Ricardo Neri
2018-06-14  1:31             ` Ricardo Neri
2018-06-14  1:31             ` Ricardo Neri
2018-06-14  2:32             ` Nicholas Piggin
2018-06-14  2:32               ` Nicholas Piggin
2018-06-14  2:32               ` Nicholas Piggin
2018-06-14  8:32               ` Thomas Gleixner
2018-06-14  8:32                 ` Thomas Gleixner
2018-06-14  8:32                 ` Thomas Gleixner
2018-06-15  2:21               ` Ricardo Neri
2018-06-15  2:21                 ` Ricardo Neri
2018-06-15  2:21                 ` Ricardo Neri
2018-06-14  1:26       ` Ricardo Neri
2018-06-14  1:26         ` Ricardo Neri
2018-06-14  1:26         ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 13/23] watchdog/hardlockup: Define a generic function to detect hardlockups Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 14/23] watchdog/hardlockup: Decouple the hardlockup detector from perf Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  8:43   ` Peter Zijlstra
2018-06-13  8:43     ` Peter Zijlstra
2018-06-13  8:43     ` Peter Zijlstra
2018-06-14  1:19     ` Ricardo Neri
2018-06-14  1:19       ` Ricardo Neri
2018-06-14  1:19       ` Ricardo Neri
2018-06-14  1:41       ` Nicholas Piggin
2018-06-14  1:41         ` Nicholas Piggin
2018-06-14  1:41         ` Nicholas Piggin
2018-06-15  2:23         ` Ricardo Neri
2018-06-15  2:23           ` Ricardo Neri
2018-06-15  2:23           ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 15/23] kernel/watchdog: Add a function to obtain the watchdog_allowed_mask Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 16/23] watchdog/hardlockup: Add an HPET-based hardlockup detector Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  5:23   ` Randy Dunlap
2018-06-13  5:23     ` Randy Dunlap
2018-06-13  5:23     ` Randy Dunlap
2018-06-14  1:00     ` Ricardo Neri
2018-06-14  1:00       ` Ricardo Neri
2018-06-14  1:00       ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 17/23] watchdog/hardlockup/hpet: Convert the timer's interrupt to NMI Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  9:07   ` Peter Zijlstra
2018-06-13  9:07     ` Peter Zijlstra
2018-06-13  9:07     ` Peter Zijlstra
2018-06-15  2:07     ` Ricardo Neri
2018-06-15  2:07       ` Ricardo Neri
2018-06-15  2:07       ` Ricardo Neri
2018-06-13  9:40   ` Thomas Gleixner
2018-06-13  9:40     ` Thomas Gleixner
2018-06-13  9:40     ` Thomas Gleixner
2018-06-15  2:03     ` Ricardo Neri
2018-06-15  2:03       ` Ricardo Neri
2018-06-15  2:03       ` Ricardo Neri
2018-06-15  9:19       ` Thomas Gleixner
2018-06-15  9:19         ` Thomas Gleixner
2018-06-15  9:19         ` Thomas Gleixner
2018-06-16  0:51         ` Ricardo Neri
2018-06-16  0:51           ` Ricardo Neri
2018-06-16  0:51           ` Ricardo Neri
2018-06-16 13:24           ` Thomas Gleixner
2018-06-16 13:24             ` Thomas Gleixner
2018-06-16 13:24             ` Thomas Gleixner
2018-06-20  0:15             ` Ricardo Neri
2018-06-20  0:15               ` Ricardo Neri
2018-06-20  0:15               ` Ricardo Neri
2018-06-20  0:25               ` Randy Dunlap
2018-06-20  0:25                 ` Randy Dunlap
2018-06-20  0:25                 ` Randy Dunlap
2018-06-21  0:25                 ` Ricardo Neri
2018-06-21  0:25                   ` Ricardo Neri
2018-06-21  0:25                   ` Ricardo Neri
2018-06-20  7:47               ` Thomas Gleixner
2018-06-20  7:47                 ` Thomas Gleixner
2018-06-20  7:47                 ` Thomas Gleixner
2018-06-13  0:57 ` [RFC PATCH 18/23] watchdog/hardlockup/hpet: Add the NMI watchdog operations Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 19/23] watchdog/hardlockup: Make arch_touch_nmi_watchdog() to hpet-based implementation Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 20/23] watchdog/hardlockup/hpet: Rotate interrupt among all monitored CPUs Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  9:48   ` Thomas Gleixner
2018-06-13  9:48     ` Thomas Gleixner
2018-06-13  9:48     ` Thomas Gleixner
2018-06-15  2:16     ` Ricardo Neri
2018-06-15  2:16       ` Ricardo Neri
2018-06-15  2:16       ` Ricardo Neri
2018-06-15 10:29       ` Thomas Gleixner [this message]
2018-06-15 10:29         ` Thomas Gleixner
2018-06-15 10:29         ` Thomas Gleixner
2018-06-16  0:46         ` Ricardo Neri
2018-06-16  0:46           ` Ricardo Neri
2018-06-16  0:46           ` Ricardo Neri
2018-06-16 13:27           ` Thomas Gleixner
2018-06-16 13:27             ` Thomas Gleixner
2018-06-16 13:27             ` Thomas Gleixner
2018-06-13  0:57 ` [RFC PATCH 21/23] watchdog/hardlockup/hpet: Adjust timer expiration on the number of " Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57 ` [RFC PATCH 22/23] watchdog/hardlockup/hpet: Only enable the HPET watchdog via a boot parameter Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  5:26   ` Randy Dunlap
2018-06-13  5:26     ` Randy Dunlap
2018-06-13  5:26     ` Randy Dunlap
2018-06-14  0:58     ` Ricardo Neri
2018-06-14  0:58       ` Ricardo Neri
2018-06-14  0:58       ` Ricardo Neri
2018-06-14  3:30       ` Randy Dunlap
2018-06-14  3:30         ` Randy Dunlap
2018-06-14  3:30         ` Randy Dunlap
2018-06-13  0:57 ` [RFC PATCH 23/23] watchdog/hardlockup: Activate the HPET-based lockup detector Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri
2018-06-13  0:57   ` Ricardo Neri

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=alpine.DEB.2.21.1806151122070.2079@nanos.tec.linutronix.de \
    --to=tglx@linutronix.de \
    --cc=akpm@linux-foundation.org \
    --cc=andi.kleen@intel.com \
    --cc=ashok.raj@intel.com \
    --cc=ast@kernel.org \
    --cc=babu.moger@oracle.com \
    --cc=bp@suse.de \
    --cc=byungchul.park@lge.com \
    --cc=cdall@linaro.org \
    --cc=colin.king@canonical.com \
    --cc=dave@stgolabs.net \
    --cc=dzickus@redhat.com \
    --cc=frederic@kernel.org \
    --cc=hpa@zytor.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@intel.com \
    --cc=jpoimboe@redhat.com \
    --cc=kai.heng.feng@canonical.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=longman@redhat.com \
    --cc=marc.zyngier@arm.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mcgrof@kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=mingo@kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=pombredanne@nexb.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=ravi.v.shankar@intel.com \
    --cc=rdunlap@infradead.org \
    --cc=ricardo.neri-calderon@linux.intel.com \
    --cc=rientjes@google.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=tony.luck@intel.com \
    --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.