From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D5EF481AB0 for ; Wed, 6 May 2026 15:40:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778082026; cv=none; b=in6PhrUjd7D4cLdswm056OLVR1pAPKKiX2n0JGdRH8hCdnDF7mRLs8I6DtR+XqeVgZM9FZqvpUnjw7JkzZrFNr49dqZmucqBATxJO9WS/qqPu75FZ7e6gPLMLNjRYBwFPzQaq4sGuIs9cpOF4nZE661qFCSjqph+UDaO+fpKgQQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778082026; c=relaxed/simple; bh=Iy6xIoZJS/4rNve+6RpwCwCKlBFAVTlcXJRyE7jwUdE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qU1J5+v0N3p4Yq6WqTaJNSvba4PmB7eUF2oJ4b1dqBqkJOzT31vWWRMZz4WGWTYDvJSY+IYnVHV0MnHc+f7d5fUiNmyS0up5dOuSn/Hi+8rb7gxce4cn31m9d2rekM6tFSNxOctvBp4CTgm8tFeRjTHeTlfFhUHnfpQGzb1JFk4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ar0qceqr; arc=none smtp.client-ip=209.85.221.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ar0qceqr" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-44a044cb827so4780914f8f.0 for ; Wed, 06 May 2026 08:40:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778082019; x=1778686819; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=neJP9/VPuuvU9YGwwVGKB/vSqGk8DVOZs8jLqr4GjWc=; b=Ar0qceqrZL3nSJd6ph9HT4KDHb1HjBV3gonD4NCynCsisjDndMzuHOAjz8Zd357Bi/ ZyWVrCwXIJbH9oOzsnZGcmEnq0XtWn7S+UoTz8CrL2ptKvTU0Qm1GVM7Z/ozDIoZJynF DurEClLXJ1vDZRgcP/DNIoqCNtZkFudykdSABh0qWog9gegrh1s2yPZh2sE9/wb/1ccj SahWuvDBUi4MTmss08g+qubufP/+B2v68slD1TI0DorXjH2GTq2cRk888tSDpR3MxVp1 vievxN9QXoctBUpX/A3Xm1Z0+0bM3arAc62QJOt4hSrgJaRI5YuxRt5dkxYUJoAB7U8+ ymAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778082019; x=1778686819; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=neJP9/VPuuvU9YGwwVGKB/vSqGk8DVOZs8jLqr4GjWc=; b=bpJmP/OeMbMqDppP4F84fdIjlfoBV1QOt0eq+mnOaS5+CfKvSQ0ZnMDkLKMogxEbTo uhRW6ej7qz6jYYbk1eHUzGGD3Zwuxyb+caCvbXA059ii67Xrt81Z0ip9XmTGeWJxIuOO R4rBxNt5VUEY4zyh/RdWjVCT2HuAv4g58ibZmFbHPY88JtOcHV4U4fiIlXnK328YrAWb WFDy4pO18kO/SjMi3aM1thLPxppEr+0QvICV1kugZUacEvv21fZaZw0XXDN5FOivrXGh gYUYuFTtxjVptlTk2j4QrbS+hbmrA1aXyJvAtx549RFrhFR0XRyiJOURbofV+n5B65GH 7NlQ== X-Forwarded-Encrypted: i=1; AFNElJ/sqE7jqAQW5hNNU59GRyadq/CQGqYqNmamnFrtE0EZCO9//hCiR+7JKZ3V3vX14dy1pMuhX1CJuUMTJJQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyGdrGcnUqe8kYSS//iS7LtxLaSyXooRVcfiBuiaML9fAjyG9X6 ANAISX9mwG7BqcNy01P/L469u5xIG5aUxze0jDVZBiJND3YuHbIZqwoo X-Gm-Gg: AeBDieuXOrwsbDdfSC4tZBDKkAJtdEfC47q/TwAGWZaJBXiwDVrQZXzeMYU1c/6rr5y sN/gqz2IHfLo/p8tmGj7S4C4NsM0fmcdJHDkBvzMyMH0FfZijLScgvdyyUtkmVW4bjX6XET1irh UdGVDZ3Pfh1u/pJoCAB7lKlE80ELE36dzLGROMcWMsHzuKNqF0oJZf07FL0MSxB/4dgHRS1qXxJ MWOTsdQiBYUSGI5WniiDQ46nO1F1P9HCtRMJP9IG76cuAT98ukD22ky2+Lmnbc01ST1GFDawW4z Pwal7VroXOzqA41Z5tyLh5Ss5Regt0GU7HML6UspJAgOfK20vC9yERPuhslKik+oAdo62GSGNIL nB3lByk3QEs5QkK/NB0Z+YUAqGXCfFhMWWs5ZhW8wH/qDfg982BFSdpkjcl6emuNKuhWmpAOp+D z43BB4tVQZVHJq0aipeUg+xhAQd76GsmxE6sOoeLM7sDiQt34pBtCQ1p+vqH8KIf3TqdRloJwqL Zyd4HsJeH46IYzwaKBnFA== X-Received: by 2002:a05:6000:2c05:b0:43d:7868:21f0 with SMTP id ffacd0b85a97d-4515b056a7dmr7290655f8f.9.1778082018952; Wed, 06 May 2026 08:40:18 -0700 (PDT) Received: from dohko.chello.ie (188-141-5-72.dynamic.upc.ie. [188.141.5.72]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4511d8cd160sm8696929f8f.8.2026.05.06.08.40.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 May 2026 08:40:18 -0700 (PDT) From: David Carlier To: zhoubinbin@loongson.cn Cc: andi.shyti@kernel.org, chenhuacai@kernel.org, andriy.shevchenko@linux.intel.com, linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, David Carlier Subject: [PATCH v2] i2c: ls2x-v2: return IRQ_HANDLED after servicing an error Date: Wed, 6 May 2026 16:40:15 +0100 Message-ID: <20260506154015.94815-1-devnexen@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260506044818.19842-1-devnexen@gmail.com> References: <20260506044818.19842-1-devnexen@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The event ISR reads SR1 and, when an error flag (ARLO/AF/BERR) is set, calls loongson2_i2c_isr_error() which clears the offending flag, issues STOP for the AF case, records msg->result, masks every CR2 interrupt enable and completes the waiter. The handler then returns IRQ_NONE, declaring to the IRQ core that the device did not interrupt. That report is wrong. The device did interrupt and the handler fully serviced it. Because the IRQ is requested with IRQF_SHARED, the genirq spurious-IRQ tracker counts each error as unhandled. A bus that emits sporadic NACKs, arbitration losses or bus errors will therefore march toward the spurious-IRQ threshold and the line can end up disabled, wedging the controller. Return IRQ_HANDLED on this path. The other IRQ_NONE site, taken when neither an event nor an error bit is set, remains correct. Fixes: 6d1b0785f6d5 ("i2c: ls2x-v2: Add driver for Loongson-2K0300 I2C controller") Assisted-by: Codex:GPT-5.5 Signed-off-by: David Carlier --- v2: - Add Assisted-by: Codex:GPT-5.5 trailer (no code change). drivers/i2c/busses/i2c-ls2x-v2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-ls2x-v2.c b/drivers/i2c/busses/i2c-ls2x-v2.c index 517760d70169..9df73557ecc4 100644 --- a/drivers/i2c/busses/i2c-ls2x-v2.c +++ b/drivers/i2c/busses/i2c-ls2x-v2.c @@ -304,7 +304,7 @@ static irqreturn_t loongson2_i2c_isr_event(int irq, void *data) regmap_read(priv->regmap, LOONGSON2_I2C_SR1, &status); if (status & LOONGSON2_I2C_SR1_ITERREN_MASK) { loongson2_i2c_isr_error(status, data); - return IRQ_NONE; + return IRQ_HANDLED; } regmap_read(priv->regmap, LOONGSON2_I2C_CR2, &cr2); -- 2.53.0