From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Jinhui Guo <guojinhui.liam@bytedance.com>
Cc: andriy.shevchenko@linux.intel.com, jsd@semihalf.com,
andi.shyti@kernel.org, linux-i2c@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/1] i2c: designware: Disable SMBus interrupts to prevent storms from mis-configured firmware
Date: Mon, 20 Oct 2025 12:29:58 +0200 [thread overview]
Message-ID: <20251020102958.GL2912318@black.igk.intel.com> (raw)
In-Reply-To: <20251011073057.2959-2-guojinhui.liam@bytedance.com>
Hi,
On Sat, Oct 11, 2025 at 03:30:57PM +0800, Jinhui Guo wrote:
> When probing the I2C master, disable SMBus interrupts to prevent
> storms caused by broken firmware mis-configuring IC_SMBUS=1; the
> handler never services them and a mis-configured SMBUS Master
> extend-clock timeout can flood the CPU.
>
> Signed-off-by: Jinhui Guo <guojinhui.liam@bytedance.com>
> ---
> drivers/i2c/busses/i2c-designware-core.h | 1 +
> drivers/i2c/busses/i2c-designware-master.c | 11 +++++++++++
> 2 files changed, 12 insertions(+)
>
> diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
> index 347843b4f5dd..d1122ff0a1b7 100644
> --- a/drivers/i2c/busses/i2c-designware-core.h
> +++ b/drivers/i2c/busses/i2c-designware-core.h
> @@ -78,6 +78,7 @@
> #define DW_IC_TX_ABRT_SOURCE 0x80
> #define DW_IC_ENABLE_STATUS 0x9c
> #define DW_IC_CLR_RESTART_DET 0xa8
> +#define DW_IC_SMBUS_INTR_MASK 0xcc
> #define DW_IC_COMP_PARAM_1 0xf4
> #define DW_IC_COMP_VERSION 0xf8
> #define DW_IC_SDA_HOLD_MIN_VERS 0x3131312A /* "111*" == v1.11* */
> diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
> index c7a72c28786c..eeb60536da32 100644
> --- a/drivers/i2c/busses/i2c-designware-master.c
> +++ b/drivers/i2c/busses/i2c-designware-master.c
> @@ -997,6 +997,11 @@ static int i2c_dw_init_recovery_info(struct dw_i2c_dev *dev)
> return 0;
> }
>
> +static inline void i2c_dw_disable_smbus_intr(struct dw_i2c_dev *dev)
> +{
> + regmap_write(dev->map, DW_IC_SMBUS_INTR_MASK, 0);
> +}
I wonder instead of this wrapper, can you just do this in
i2c_dw_init_master() right after the adapter has been disabled?
> +
> int i2c_dw_probe_master(struct dw_i2c_dev *dev)
> {
> struct i2c_adapter *adap = &dev->adapter;
> @@ -1063,6 +1068,12 @@ int i2c_dw_probe_master(struct dw_i2c_dev *dev)
> return ret;
>
> __i2c_dw_write_intr_mask(dev, 0);
> + /*
> + * Mask SMBus interrupts to block storms from broken
> + * firmware that leaves IC_SMBUS=1; the handler never
> + * services them.
> + */
> + i2c_dw_disable_smbus_intr(dev);
> i2c_dw_release_lock(dev);
>
> if (!(dev->flags & ACCESS_POLLING)) {
> --
> 2.20.1
next prev parent reply other threads:[~2025-10-20 10:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-11 7:30 [PATCH 0/1] i2c: designware: Fix SMBUS Master interrupts storms Jinhui Guo
2025-10-11 7:30 ` [PATCH 1/1] i2c: designware: Disable SMBus interrupts to prevent storms from mis-configured firmware Jinhui Guo
2025-10-14 7:15 ` Andy Shevchenko
2025-10-20 10:29 ` Mika Westerberg [this message]
2025-10-21 7:46 ` Jinhui Guo
-- strict thread matches above, loose matches on Subject: below --
2025-10-18 19:22 Andy Shevchenko
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=20251020102958.GL2912318@black.igk.intel.com \
--to=mika.westerberg@linux.intel.com \
--cc=andi.shyti@kernel.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=guojinhui.liam@bytedance.com \
--cc=jsd@semihalf.com \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.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.