From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 3CA9141A559 for ; Wed, 5 Aug 2026 10:01:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785924106; cv=none; b=V1oVA+l6QpwyG/3k9TRzhWtsKMhU92Z1IAQr4323rL8I4flcXqQuvN9ryo57D4LfLU0aJund1CVuF8mL0cSADoTWwysPv/w284U6YcSjHt2zGx5W+ucSG3XsxxXoAPESKRI9v4nZ0cKLEBGXkqf3vUbbnRABCOaW69og+aomcKs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785924106; c=relaxed/simple; bh=7GT3cFMblh8d4JT4vpM1PGuCKQLpDo4D1LyV7c5pVCo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=lTWg4p9a8huE6KUb9t3NAJkZzFWgvIzxzmuNqzZhRWemYa/VZFuupuVRRJscZynn9dO3ehnVvrrDzG04pVNcPatZBzz65lWYpDfVxTXJ9yQyvr+vg7xDRxLlz2bphJMT2AllUwCqd0ks2PpF+Gibd6BX9G+6IXNBNMZlj80dGXs= 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=ZHy7TLxq; arc=none smtp.client-ip=209.85.221.54 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="ZHy7TLxq" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-4720f3bf164so1241956f8f.1 for ; Wed, 05 Aug 2026 03:01:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785924103; x=1786528903; 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:content-type; bh=ZvfYSf2Y/ppNSh+MrXHyeNORXj9DnMxf1Ar7j3eDWYw=; b=ZHy7TLxqRClm/6txomPKbzOT0CTdf7Z9rhC3pKmvhhjhGoMX8J5fgze+Gxs0LRsl9A ah259S38N7EB83EGzy5hSGd8jR3RnOjbgcRBxD68Bt1Fg2BtH0Q2oeQZ/Eng/U6+iei2 Buh+Jt96LLa9VqqZegUUsu4UCXNRUsTHtFqg7zs6BWU/cnVzMXPnzJPCS3q2GYrXoNi5 YfP1OfBtrr8X4ay6ScOjKsO35DwLD8HVviDkZ193F1Kn939vteIEQpG4DrLMUvt16TI6 ivaXFcY2P9EZGB1+5TjHZnmiJLMv70RC8AZYFemFG3oTKI6SO5gpG+QhAvRJK3aOgRKl U8ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785924103; x=1786528903; 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:content-type; bh=ZvfYSf2Y/ppNSh+MrXHyeNORXj9DnMxf1Ar7j3eDWYw=; b=EqMPAhiJ0j4ZPISkMb0MU+q6sXpHf67g/NP9X+cV4ZJ++Zk1jS3VuMj9NfEiFf8Y9Z yBaO8GF8PYQSCY0RwGFtI+NnYPUvG9UODqsGrn94ESwhbvflcNYwMKmn3bwg+nvxWGEU kJB56fo2wEZ+19oFv9c8NI3ehMC8NdRLu69l/vscE9tgY5k7ZJGY/3JO4BaNRQjk3frH XC4tOXydJteuWQtyhCimGGXXbHCJTofNFwdkgG9B/Rni2GaT8rbPbAQURy2SL8Fute5d TST3zkVaNDcARGpN3ZNSNOLw0Qb8q4hbjXSo3QadfFGp6CMMmqtPGqrzozi1AYr7aPON itgg== X-Gm-Message-State: AOJu0YxXBUlJmfwvI18GJ4ySGjhM5Oibja8BTpdN13zIdkXoyDJdavfu UAWovlu5G7CvzSusLwNOZUzLOkXW1SP+OUd4hvXiQ6+CBSEZmamY9UUa X-Gm-Gg: AR+sD12IxE5sRLlTMo1H217HtWhZVy9kdCf7CNm47t34i2kGZKFt5mDV4NQOoiecNOT j/8/38ivdVcGS2fX7cBcMcxfGDrrcHr1cAhBitN73nT4kArW74cflnj5W2YdmGuUnEzRuPw2M33 DBzZyu/9YNMcWvJBONNxSbcy+skrI3zMQkA0d6Q2z3TPlqnLjUc03CZaryu+gXwz2BNZ00ao0rz Hb2OiYxJ+bqLBRKMGXk1krReSvqEVygbeI1Yhf/XsJpmjEJ9rdVlmoGYcGhALofZ9q69AyXwa4n vJwN/lF0RwFjwjv65Y0PS/RtRPJRSfpzy8FSuAXOHNzswNmndaxWJtWaKdu6UDnpC1tMsRIE2Kx tGxCjycqrd546rwaAP2xqAsgwV3ZFk6Bs2uGJabsd+iRrPO+rvMbNbTpMT9PtLQjHCpT2sccSW5 /GEAaDXQQi3t9Yk9CApFxKnoZNOnwQuBLNEUNSZcWpSTfMktl7zAVBWhFzfU4BMbTj5CkVZlp/K qU2 X-Received: by 2002:a5d:5f4a:0:b0:475:da0e:744d with SMTP id ffacd0b85a97d-47fec50b902mr8977646f8f.8.1785924103060; Wed, 05 Aug 2026 03:01:43 -0700 (PDT) Received: from arbab-X395.dbs.corp ([110.93.227.54]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47fec249a5fsm7344776f8f.33.2026.08.05.03.01.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Aug 2026 03:01:42 -0700 (PDT) From: Arbab Haider To: stable@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Yun Zhou , Sebastian Andrzej Siewior , Jakub Kicinski Subject: [PATCH 7.0.y 1/5] net: mvneta: re-enable percpu interrupt on resume Date: Wed, 5 Aug 2026 15:01:32 +0500 Message-ID: <20260805100136.59101-1-arbabhaider649@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 From: Yun Zhou On Marvell MPIC platforms (Armada 370/XP/38x), mvneta uses a percpu IRQ disable/enable scheme for NAPI: the ISR (mvneta_percpu_isr) calls disable_percpu_irq() to mask the MPIC per-CPU interrupt and schedules NAPI poll, which calls enable_percpu_irq() on completion to unmask. If suspend occurs while NAPI poll is pending (between disable_percpu_irq in the ISR and enable_percpu_irq in poll completion), the interrupt is never re-enabled: 1. mvneta_percpu_isr: disable_percpu_irq() + napi_schedule() => MPIC masked, percpu_enabled cpumask bit cleared 2. NAPI poll does not complete before suspend proceeds (on PREEMPT_RT this is highly likely since softirqs run in ksoftirqd which gets frozen; on non-RT it can happen when softirq processing is deferred to ksoftirqd) 3. mvneta_stop_dev => napi_disable(): cancels the pending poll without executing the completion path 4. suspend_device_irqs => IRQCHIP_MASK_ON_SUSPEND: masks MPIC (already masked, but records IRQS_SUSPENDED) 5. Resume: mpic_resume checks irq_percpu_is_enabled() => false (bit was cleared in step 1) => skips unmask 6. mvneta_start_dev only restores device-level INTR_NEW_MASK, does not touch the MPIC per-CPU mask Result: MPIC per-CPU interrupt stays masked permanently. The NIC generates interrupts (INTR_NEW_CAUSE != 0) but the CPU never receives them, causing complete loss of network connectivity. Fix by calling on_each_cpu(mvneta_percpu_enable) in the resume path to unconditionally unmask the MPIC per-CPU interrupt regardless of pre-suspend state. Fixes: 12bb03b436da ("net: mvneta: Handle per-cpu interrupts") Signed-off-by: Yun Zhou Reviewed-by: Sebastian Andrzej Siewior Link: https://patch.msgid.link/20260622074350.1666290-1-yun.zhou@windriver.com Signed-off-by: Jakub Kicinski [ Upstream commit fd398d6480987e4c84fff0aaab6b9d6642a93343 ] --- drivers/net/ethernet/marvell/mvneta.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index 9ba4aef7080c..22da95d46bef 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c @@ -5897,6 +5897,9 @@ static int mvneta_resume(struct device *device) rtnl_unlock(); mvneta_set_rx_mode(dev); + if (!pp->neta_armada3700) + on_each_cpu(mvneta_percpu_enable, pp, true); + return 0; } #endif -- 2.53.0