From: Jonathan Cameron <jic23@kernel.org>
To: Jishnu Prakash <jishnu.prakash@oss.qualcomm.com>
Cc: "David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Andy Shevchenko" <andy@kernel.org>,
"Amit Kucheria" <amitk@kernel.org>,
"Thara Gopinath" <thara.gopinath@gmail.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
"Daniel Lezcano" <daniel.lezcano@kernel.org>,
"Zhang Rui" <rui.zhang@intel.com>,
"Lukasz Luba" <lukasz.luba@arm.com>,
linux-arm-msm@vger.kernel.org, linux-iio@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
"Kamal Wadhwa" <kamal.wadhwa@oss.qualcomm.com>,
"David Collins" <david.collins@oss.qualcomm.com>,
"Anjelique Melendez" <anjelique.melendez@oss.qualcomm.com>,
"Neil Armstrong" <neil.armstrong@linaro.org>,
"Stephan Gerhold" <stephan.gerhold@linaro.org>
Subject: Re: [PATCH v2 2/2] thermal: qcom: add support for PMIC5 Gen3 ADC thermal monitoring
Date: Sun, 14 Jun 2026 20:06:30 +0100 [thread overview]
Message-ID: <20260614200630.2ea04817@jic23-huawei> (raw)
In-Reply-To: <27631a0f-b5ba-4181-94f9-aa7726a4054b@oss.qualcomm.com>
> >> +static irqreturn_t adctm5_gen3_isr_thread(int irq, void *dev_id)
> >> +{
> >> + struct adc_tm5_gen3_chip *adc_tm5 = dev_id;
> >> + int sdam_index = -1;
> >> + u8 tm_status[2] = { };
> >> + u8 buf[16] = { };
> >> +
> >> + for (int i = 0; i < adc_tm5->nchannels; i++) {
> >> + struct adc_tm5_gen3_channel_props *chan_prop = &adc_tm5->chan_props[i];
> >> + int offset = chan_prop->tm_chan_index;
> >> + bool upper_set, lower_set;
> >> + int ret;
> >> +
> >> + scoped_guard(adc5_gen3, adc_tm5) {
> >> + if (chan_prop->sdam_index != sdam_index) {
> >> + sdam_index = chan_prop->sdam_index;
> >> + ret = adc5_gen3_tm_status_check(adc_tm5, sdam_index,
> >> + tm_status, buf);
> >
> > I think the clear of other sdam interrupt status that sashiko was pointing out
> > is here as somewhat unexpectedly a function called status_check clears as well.
> >
>
> This is the full comment from Sashiko at this point:
>
> > "Does the threaded handler clear statuses across all SDAMs indiscriminately?
>
> > Since this thread loops over all channels and clears the high status on any
> > SDAM with an active event, could it clear a pending event on a different SDAM
> > than the one that triggered the IRQ?
>
> > Because each SDAM has its own independent IRQ line, if the thread clears a
> > pending event on SDAM 1 while servicing SDAM 0, couldn't SDAM 1's subsequent
> > hardirq read a status of 0 and return IRQ_NONE? Could repeated IRQ_NONE
> > returns cause the IRQ subsystem to shut down SDAM 1's interrupt line as a
> > spurious interrupt storm?"
>
> This sequence of events can happen, but it should not be an issue.
>
> It is possible that the threaded handler is called for servicing an
> interrupt on SDAM0, and in the loop there is a violation detected on
> a TM channel on SDAM1, and the SDAM1 TM status is cleared. But in this
> case, this violation would also be handled after we notify the thermal
> framework at the end of the loop, by some threshold update or disablement.
>
> Even if the subsequent hardirq fires for SDAM1 and it returns IRQ_NONE
> as the TM status was cleared, the violation would have been handled
> by some threshold update, so the interrupt would not keep getting
> triggered afterwards for the same threshold's violation.
>
>
> I also checked the conditions from note_interrupt() in kernel/irq/spurious.c,
> for enough repeated IRQ_NONE returns to happen to cause a spurious interrupt
> disablement.
> It looks like there needs to be more than one interrupts returning IRQ_NONE
> within 0.1 second to increment the irqs_unhandled counter once, but there can be
> at most one TM interrupt in one second since we set the time period of
> recurring TM measurement as one second here in the probe:
>
> adc_tm5->chan_props[i].timer = MEAS_INT_1S;
>
> So a spurious interrupt storm is not possible here.
Whilst sounds valid, it's a convoluted argument given it relies
on us getting spurious interrupts reported, but not enough to trigger
the stuff to stop interrupt storms. The rules around that may change
in future given it's a heuristic to stop us seeing problems on dodgy
hardware.
Can we just avoid handling interrupts for SDAMs that weren't the one that
triggered this particular interrupt?
Thanks,
Jonathan
next prev parent reply other threads:[~2026-06-14 19:06 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-26 10:56 [PATCH v2 0/2] thermal: qcom: add support for PMIC5 Gen3 ADC thermal monitoring Jishnu Prakash
2026-05-26 10:56 ` [PATCH v2 1/2] iio: adc: qcom-spmi-adc5-gen3: Share SDAM0 IRQ with ADC_TM auxiliary driver Jishnu Prakash
2026-05-26 13:12 ` Daniel Lezcano
2026-05-27 11:26 ` Jonathan Cameron
2026-05-27 11:29 ` Jonathan Cameron
2026-06-02 23:35 ` Andy Shevchenko
2026-06-04 10:46 ` Jonathan Cameron
2026-06-04 14:44 ` Andy Shevchenko
2026-06-11 10:43 ` Jishnu Prakash
2026-06-11 18:53 ` Andy Shevchenko
2026-06-14 19:02 ` Jonathan Cameron
2026-05-26 10:56 ` [PATCH v2 2/2] thermal: qcom: add support for PMIC5 Gen3 ADC thermal monitoring Jishnu Prakash
2026-05-27 11:42 ` Jonathan Cameron
2026-06-11 10:42 ` Jishnu Prakash
2026-06-14 19:06 ` Jonathan Cameron [this message]
2026-06-02 23:44 ` Andy Shevchenko
2026-06-11 10:42 ` Jishnu Prakash
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=20260614200630.2ea04817@jic23-huawei \
--to=jic23@kernel.org \
--cc=amitk@kernel.org \
--cc=andy@kernel.org \
--cc=anjelique.melendez@oss.qualcomm.com \
--cc=daniel.lezcano@kernel.org \
--cc=david.collins@oss.qualcomm.com \
--cc=dlechner@baylibre.com \
--cc=jishnu.prakash@oss.qualcomm.com \
--cc=kamal.wadhwa@oss.qualcomm.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lukasz.luba@arm.com \
--cc=neil.armstrong@linaro.org \
--cc=nuno.sa@analog.com \
--cc=rafael@kernel.org \
--cc=rui.zhang@intel.com \
--cc=stephan.gerhold@linaro.org \
--cc=thara.gopinath@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox