From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 82BBF32C8B for ; Wed, 6 May 2026 04:48:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778042906; cv=none; b=VufwIer0f05R3Vh1NWsaDM1oJOk10kndQ2ytC3iwYg5kWZRqMLpHUgMl3T5ArpBc3VPkiUy/wkebMB6HI0sF6r+Bd2YPymAjcbtGJm7aTjWBmcdG9svLtbAgGtY6B+dUkS+NcLdS3smtEVzidhpCdD2i1ozDw0cyefb+3EmWgEU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778042906; c=relaxed/simple; bh=q6MCnjjiiAA6XEBjXoX7t110UPkBrtsvcKObX5TlmwE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=odVuHuTgZ1ssFo/0EFK6yItjGsJfdHgxS03cERYihOyQYk0rKwd/2xgj548v/eNK6giDX0JoTuKYrcxHHWkQjmJ2AYOzVWYL+hBYN8g2aKZhmbS0f1C6hykvfTSMA3nE0Tom8I3aVIEK3T84px7DVNurZzHBC9bIKUYR4iDKYFc= 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=LgROnDw9; arc=none smtp.client-ip=209.85.128.42 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="LgROnDw9" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-488af96f6b2so75405085e9.0 for ; Tue, 05 May 2026 21:48:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778042904; x=1778647704; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=7WpJ1AVTNAxUwDumuBHKlCo6q9UU+vYNT76TcKLCKYI=; b=LgROnDw9JbVdxNi+WQW4T1Pox6N9bpwx9R2DzW3onf7jCDPI1bOQKaQZAVK1SBiKRn Zl80AbiwEuzfNDJ4BadoknyTpAd3JbuVo/WEV6HHgcAZIV17ZflGKUzlmZnp1AoZnH22 WEfjN0Y7dgNp61XAiCqWv5bj1MosH1A+wd0FwriKl/2smwErZaM0EOZVJQEajhX4OBbD tQ5xF7qme52/WIX/n+hipDxCSn4StzfyuSDEhtOC6tZV9+VMYiUBOXDAZ8/r+hJ5qnOw LrFZZ1ppI2fuDeYA8f+xpaL1x9YTAKO/qb52zbmqu6Zpi/Iy4MTYgKS7acapVhB72hBa pGOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778042904; x=1778647704; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=7WpJ1AVTNAxUwDumuBHKlCo6q9UU+vYNT76TcKLCKYI=; b=KUL8DZDDAKjMB/8hmEE7m1iMhJbVa6wEtH4cUtz6c0EGny6gU38orG7RmU3F++znJ4 0iai9GDdWfRi6Kv88VbZ2ivITRwA3TGvMzAAUWBtZ3wUhqyyciKqspNWfpBs2vmqc+Fs RJpnznyxwmfMIH2SrG8T2GvPWNT4BSeyCPhYDPuhfdrmBita94PXF/ljuVetHa/7wUql 8KmkB+Z2Rk4Czcq+uLlCOKNIXFOO88CUyhOpmzdO8M5vvulYO1gVU18dukc+dzMoQ9F6 S/VJqkY75llNj1019911I7Uj/hB8FbiF6ZgJwXYJxB437VPtnqtBk8iiR8gb3sXzVmCw ZPSQ== X-Forwarded-Encrypted: i=1; AFNElJ9Hf7GYPahI/j56Ldsa5CwDi8OFPMIIebfeFnOQthRl61K2tw4/VRAg3qd4U4pvhAGxH/ylXScOL26z2cA=@vger.kernel.org X-Gm-Message-State: AOJu0YwFGMzhqgPa26HffmulxL2ISRcmSKfdcnPc88XrXYSzs/QpkFns yZuqlBtNeY89u/6qdED5BXq5wN+VTG9Nhp2jhfEGGXnsmk0KfSvfVWHoD3hGyiac X-Gm-Gg: AeBDietKU6LpawYAXdiJcYufDbJGPvzKQQq85jLc4iIj0n27sfzeq+GY0Iog2fUmu98 98Rovp6R+BY00wWwf89xbLLaNzaIkDeUw0syViveuKzbDQgE+y8CWyHWX5B2O8wG7m8AoCvUj4V u8J5m+xTWW3yiuJrDnpli1ldFXn7JhiE1Jh9Z4Gh85VeS3VozNC+TyadJLfbAUf2eV7/lNP9L2a puXwDxXarSy4nmaW4SRwOEOCEh7Ac6UwdRdz8cwwSvKbhkwBpRYS/TrLIeVDaFU9TiNx2Yr8IV6 lPXhrjwi8eWz3qd7RDoARo7cPwUOhTtTpXx3hCpwCFciCPmsxBGtaxoBGcgBaizLJNXcD96ePg3 8cEOqg33otmRrN2P//8WICVtK6qC0dh/T/QAGxlh6KvwCFXLxzPHeHTpENA0HKKIctOyEbltCp2 2+TdMiZo14X5Yw8azAa0TqnDEB6LIKzdz6+oi2eYr7KNg0EPWHCvv6TXI4ISI1IX6vMW4qKRM2w SKJ3ln5PrYoJS2Jq5H7OA== X-Received: by 2002:a05:600c:3b17:b0:489:5022:39a4 with SMTP id 5b1f17b1804b1-48e51e20705mr26763075e9.9.1778042903769; Tue, 05 May 2026 21:48:23 -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 5b1f17b1804b1-48e538a547bsm18974335e9.5.2026.05.05.21.48.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 21:48:22 -0700 (PDT) From: David Carlier To: Andi Shyti , Binbin Zhou Cc: Huacai Chen , Andy Shevchenko , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, David Carlier Subject: [PATCH] i2c: ls2x-v2: return IRQ_HANDLED after servicing an error Date: Wed, 6 May 2026 05:48:18 +0100 Message-ID: <20260506044818.19842-1-devnexen@gmail.com> X-Mailer: git-send-email 2.53.0 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") Signed-off-by: David Carlier --- 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