2021-03-30 08:07:57

by Lecopzer Chen

[permalink] [raw]
Subject: Re: [PATCH v5] arm64: Enable perf events based hard lockup detector

> Hi Will, Mark,
>
> On Fri, 15 Jan 2021 at 17:32, Sumit Garg <[email protected]> wrote:
> >
> > With the recent feature added to enable perf events to use pseudo NMIs
> > as interrupts on platforms which support GICv3 or later, its now been
> > possible to enable hard lockup detector (or NMI watchdog) on arm64
> > platforms. So enable corresponding support.
> >
> > One thing to note here is that normally lockup detector is initialized
> > just after the early initcalls but PMU on arm64 comes up much later as
> > device_initcall(). So we need to re-initialize lockup detection once
> > PMU has been initialized.
> >
> > Signed-off-by: Sumit Garg <[email protected]>
> > ---
> >
> > Changes in v5:
> > - Fix lockup_detector_init() invocation to be rather invoked from CPU
> > binded context as it makes heavy use of per-cpu variables and shouldn't
> > be invoked from preemptible context.
> >
>
> Do you have any further comments on this?
>
> Lecopzer,
>
> Does this feature work fine for you now?

This really fixes the warning, I have a real hardware for testing this now.
but do we need to call lockup_detector_init() for each cpu?

In init/main.c, it's only called by cpu 0 for once.


BRs,
Lecopzer


2021-03-30 08:34:23

by Lecopzer Chen

[permalink] [raw]
Subject: Re: [PATCH v5] arm64: Enable perf events based hard lockup detector

> > Hi Will, Mark,
> >
> > On Fri, 15 Jan 2021 at 17:32, Sumit Garg <[email protected]> wrote:
> > >
> > > With the recent feature added to enable perf events to use pseudo NMIs
> > > as interrupts on platforms which support GICv3 or later, its now been
> > > possible to enable hard lockup detector (or NMI watchdog) on arm64
> > > platforms. So enable corresponding support.
> > >
> > > One thing to note here is that normally lockup detector is initialized
> > > just after the early initcalls but PMU on arm64 comes up much later as
> > > device_initcall(). So we need to re-initialize lockup detection once
> > > PMU has been initialized.
> > >
> > > Signed-off-by: Sumit Garg <[email protected]>
> > > ---
> > >
> > > Changes in v5:
> > > - Fix lockup_detector_init() invocation to be rather invoked from CPU
> > > binded context as it makes heavy use of per-cpu variables and shouldn't
> > > be invoked from preemptible context.
> > >
> >
> > Do you have any further comments on this?
> >
> > Lecopzer,
> >
> > Does this feature work fine for you now?
>
> This really fixes the warning, I have a real hardware for testing this now.
> but do we need to call lockup_detector_init() for each cpu?
>
> In init/main.c, it's only called by cpu 0 for once.

Oh sorry, I just misread the code, please ignore previous mail.


BRs,
Lecopzer

2021-03-30 12:34:44

by Sumit Garg

[permalink] [raw]
Subject: Re: [PATCH v5] arm64: Enable perf events based hard lockup detector

On Tue, 30 Mar 2021 at 14:07, Lecopzer Chen <[email protected]> wrote:
>
> > > Hi Will, Mark,
> > >
> > > On Fri, 15 Jan 2021 at 17:32, Sumit Garg <[email protected]> wrote:
> > > >
> > > > With the recent feature added to enable perf events to use pseudo NMIs
> > > > as interrupts on platforms which support GICv3 or later, its now been
> > > > possible to enable hard lockup detector (or NMI watchdog) on arm64
> > > > platforms. So enable corresponding support.
> > > >
> > > > One thing to note here is that normally lockup detector is initialized
> > > > just after the early initcalls but PMU on arm64 comes up much later as
> > > > device_initcall(). So we need to re-initialize lockup detection once
> > > > PMU has been initialized.
> > > >
> > > > Signed-off-by: Sumit Garg <[email protected]>
> > > > ---
> > > >
> > > > Changes in v5:
> > > > - Fix lockup_detector_init() invocation to be rather invoked from CPU
> > > > binded context as it makes heavy use of per-cpu variables and shouldn't
> > > > be invoked from preemptible context.
> > > >
> > >
> > > Do you have any further comments on this?
> > >
> > > Lecopzer,
> > >
> > > Does this feature work fine for you now?
> >
> > This really fixes the warning, I have a real hardware for testing this now.

Thanks for the testing. I assume it as an implicit Tested-by.

> > but do we need to call lockup_detector_init() for each cpu?
> >
> > In init/main.c, it's only called by cpu 0 for once.
>
> Oh sorry, I just misread the code, please ignore previous mail.
>

No worries.

-Sumit

>
> BRs,
> Lecopzer

2021-04-13 01:34:28

by Sumit Garg

[permalink] [raw]
Subject: Re: [PATCH v5] arm64: Enable perf events based hard lockup detector

Hi Will,

On Tue, 30 Mar 2021 at 18:00, Sumit Garg <[email protected]> wrote:
>
> On Tue, 30 Mar 2021 at 14:07, Lecopzer Chen <[email protected]> wrote:
> >
> > > > Hi Will, Mark,
> > > >
> > > > On Fri, 15 Jan 2021 at 17:32, Sumit Garg <[email protected]> wrote:
> > > > >
> > > > > With the recent feature added to enable perf events to use pseudo NMIs
> > > > > as interrupts on platforms which support GICv3 or later, its now been
> > > > > possible to enable hard lockup detector (or NMI watchdog) on arm64
> > > > > platforms. So enable corresponding support.
> > > > >
> > > > > One thing to note here is that normally lockup detector is initialized
> > > > > just after the early initcalls but PMU on arm64 comes up much later as
> > > > > device_initcall(). So we need to re-initialize lockup detection once
> > > > > PMU has been initialized.
> > > > >
> > > > > Signed-off-by: Sumit Garg <[email protected]>
> > > > > ---
> > > > >
> > > > > Changes in v5:
> > > > > - Fix lockup_detector_init() invocation to be rather invoked from CPU
> > > > > binded context as it makes heavy use of per-cpu variables and shouldn't
> > > > > be invoked from preemptible context.
> > > > >
> > > >
> > > > Do you have any further comments on this?
> > > >

Since there aren't any further comments, can you re-pick this feature for 5.13?

-Sumit

> > > > Lecopzer,
> > > >
> > > > Does this feature work fine for you now?
> > >
> > > This really fixes the warning, I have a real hardware for testing this now.
>
> Thanks for the testing. I assume it as an implicit Tested-by.
>
> > > but do we need to call lockup_detector_init() for each cpu?
> > >
> > > In init/main.c, it's only called by cpu 0 for once.
> >
> > Oh sorry, I just misread the code, please ignore previous mail.
> >
>
> No worries.
>
> -Sumit
>
> >
> > BRs,
> > Lecopzer

2021-04-19 17:05:18

by Will Deacon

[permalink] [raw]
Subject: Re: [PATCH v5] arm64: Enable perf events based hard lockup detector

On Mon, Apr 12, 2021 at 05:31:13PM +0530, Sumit Garg wrote:
> On Tue, 30 Mar 2021 at 18:00, Sumit Garg <[email protected]> wrote:
> > On Tue, 30 Mar 2021 at 14:07, Lecopzer Chen <[email protected]> wrote:
> > > > > On Fri, 15 Jan 2021 at 17:32, Sumit Garg <[email protected]> wrote:
> > > > > >
> > > > > > With the recent feature added to enable perf events to use pseudo NMIs
> > > > > > as interrupts on platforms which support GICv3 or later, its now been
> > > > > > possible to enable hard lockup detector (or NMI watchdog) on arm64
> > > > > > platforms. So enable corresponding support.
> > > > > >
> > > > > > One thing to note here is that normally lockup detector is initialized
> > > > > > just after the early initcalls but PMU on arm64 comes up much later as
> > > > > > device_initcall(). So we need to re-initialize lockup detection once
> > > > > > PMU has been initialized.
> > > > > >
> > > > > > Signed-off-by: Sumit Garg <[email protected]>
> > > > > > ---
> > > > > >
> > > > > > Changes in v5:
> > > > > > - Fix lockup_detector_init() invocation to be rather invoked from CPU
> > > > > > binded context as it makes heavy use of per-cpu variables and shouldn't
> > > > > > be invoked from preemptible context.
> > > > > >
> > > > >
> > > > > Do you have any further comments on this?
> > > > >
>
> Since there aren't any further comments, can you re-pick this feature for 5.13?

I'd still like Mark's Ack on this, as the approach you have taken doesn't
really sit with what he was suggesting.

I also don't understand how all the CPUs get initialised with your patch,
since the PMU driver will be initialised after SMP is up and running.

Will