From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f170.google.com (mail-dy1-f170.google.com [74.125.82.170]) (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 CD9C93A8F7 for ; Mon, 4 May 2026 06:05:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.170 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777874707; cv=none; b=MlgB5Age+WtI+QNYksCDEyzgBIvqr2QukYvbWZiU3Z7Zvw/65ggQQnr2Y0zg4DB5BdN4aGgNOQzW/jCNjtEtoyi9q73I1VLBIHrzxM2++l3nbCTszOKQjPHWhurFVz4tMeRilDVx5V0tJkFRADm4iVikBTX9+8TVlA4L+9TpFdc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777874707; c=relaxed/simple; bh=1wr8R18V/LbF9lTOXmO69mFRRFEAOKuZ/GLakvvENPo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=qsJ8J16O6wXmhMnPahtwWzW5q9cAEntRMvuFc6CNSPh4AsmSHuKfkFa1WVsAwYhRF3mD1K9pE4fe+uZqPYshWXYgNb723i/KbupTklZm/MTvQPI1WTvdviq6TXCmeHPIOp6fn5jvElS/PC/WykE/oyWSQ5oFWPSIPPIES+CRJJI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com; spf=pass smtp.mailfrom=sifive.com; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b=LNmXU3VJ; arc=none smtp.client-ip=74.125.82.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sifive.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="LNmXU3VJ" Received: by mail-dy1-f170.google.com with SMTP id 5a478bee46e88-2c15849aa2cso4819981eec.0 for ; Sun, 03 May 2026 23:05:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1777874705; x=1778479505; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=1zmVfG2IQ8fhzC+19hTIfCnvMAmFzh0OmJHIQbemgdw=; b=LNmXU3VJg0ZbVK4v2ljDCej4tTjCuHzY7u7REofsXw8lzUSdt+R4DQ2TwMDEFnTj1Q gNrRh26/jJNqhTm31AvdgmZqYpOmAsZO1807Q2rTbObs/qXzRhgdOkdr1kSZBzaOc11v eA0YGVQR3wkBgTXE7qWR2pxaMHGJsQAPxIpTnaSx2RFp0Nor9O4Yq/X3HfHnt6cWl8jl TeVv5vC97w3dvEmL75WFG+Rfl3r35JO1VMF1YRXJSmOwYceYQKuUvEjHY8MMUk2tfgSq DirGwaX7zmt84XLEhPnyFvSlTbsCfpzvN8Tv1pA6ZP4FoWUB7kv8BdJk05/h2igxCHjA sp6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777874705; x=1778479505; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1zmVfG2IQ8fhzC+19hTIfCnvMAmFzh0OmJHIQbemgdw=; b=QnOtn6pedSJzhqzBxvF1jGVQv8uEEAmN4Aot9i+OOd/4WAmY3LZ6qnBu80G5zfSn9v xypm8z+Z2ffqwGbXAwjkBgCGsZ1pS7bmKUGGDvAjPzP7TZ3UsbYOEUR8BoiL+8OtKUWj /u37z6iVvP9eyAtQbik2JhgGs9RPhIPCeEj+DJgzuyGJtIjAVv98AYBGFIoai+rMyeS0 CevI2/0iUg7hrtK8vP1L+KlybGBROwELrSSNhoA+VNOizt8LIV9/kk38uQbwq0uttGb2 a80Cs/lMQMINKnODZk7qTkwUNbwgh/h8LSxjTY68OmjAJ1b3SPhpBUwZwf3hJ1DRHAmQ GsMw== X-Forwarded-Encrypted: i=1; AFNElJ8kUOLBzFw6/C4T/CCr4/nxO4HSap1LNNL2VVkTu/0My9BoRj3ey8CgwEo/3rOO45oy93ZvtFtq4vR42tY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx8BWgrKgZnMjW1+rN6SRfDXWPqV2/IV1q/CAK/quOnDJvNaEyr MblXQwk1eoW7zK7hJJiLzy0AXrkC5k48GsO42VBVU+RZUqF+dudfjddr6cdw0YJWd5qiYa+CKaN QQtV/fOc= X-Gm-Gg: AeBDieubL6NVyWoqSuIvBDCX4d5nmMTieDRh4OBV7p8vxFMjwDwyJ0kbgiLqlyrokDL IEZq5zE/6RDn/6gH8mH4Q/3rof3/YWJ2vBzTxbmrxb0mxqiITkJGjuN4HMSLFyw1gEgRbcXva8M DqildcdBCa3IPisY9EsPOhy0FbT7xrwZE57YvdRNTxSHyaFCck/8C1oC3CKjkVi6w4Pk9XocjdE +UsJHRcqbuvY1hSzSb+qRakGfng9txmk8qlRkgP9um/Ndy206EaQHoQ9OWY4SK2VHM63WuAC6e7 qb2sCUXV5eG1nwsJBFJRfXMf8MLcykg/LkuNcIi+Fc2oLXwbu6Xs7Y49ZjwAP4vwXjmto/o/uQo fmwH1C1OprA1lbEiC86zSFUb4WT5SdZhc2cQ1y7GLT29txLPU9Xegwkfsa+tC/ptY3gDPHAi0NV FjKYxynBSiCVXS/h6Mn1IFoffUvNx6j8826Xr4vkF4fJfdqGzMQX50sA== X-Received: by 2002:a05:7300:570b:b0:2ea:5057:a2f9 with SMTP id 5a478bee46e88-2efb9b8dea1mr3518098eec.16.1777874704516; Sun, 03 May 2026 23:05:04 -0700 (PDT) Received: from sw07.internal.sifive.com ([4.53.31.132]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3537d300sm17872381eec.0.2026.05.03.23.05.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 May 2026 23:05:04 -0700 (PDT) From: Yong-Xuan Wang Date: Sun, 03 May 2026 23:05:02 -0700 Subject: [PATCH] irqchip/riscv-imsic: sync-up state before CPU offline Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260503-imsic-v1-1-aa8330bd1c34@sifive.com> X-B4-Tracking: v=1; b=H4sIAA43+GkC/yXM2wpAUBCF4VfRXNs1zuVV5MIeg1EO7UFK3t3G5 Vf/WhcoO2GFMrjA8SEqy+wRhQHQ0Mw9G2m9IcY4xwwTI5MKmbZAirKcbJEi+HZ13Mn5/VT1b93 tyLS9Y7jvB06AsShpAAAA X-Change-ID: 20260503-imsic-d70c156cb740 To: Anup Patel , Thomas Gleixner , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, greentime.hu@sifive.com, vincent.chen@sifive.com, zong.li@sifive.com, Yong-Xuan Wang X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1777874703; l=1308; i=yongxuan.wang@sifive.com; s=20260424; h=from:subject:message-id; bh=1wr8R18V/LbF9lTOXmO69mFRRFEAOKuZ/GLakvvENPo=; b=qZoikSdhaw1KQSELCXgn/JlJwNbDt9VRJbUPs1QNENElrEQGT1lnePB/suojw0HFXs48FirOU 9LkflcRHONHB+iAtJ85aSmU8bdTrrxFr/pL1EhL9i96LMlD7q7/pt12 X-Developer-Key: i=yongxuan.wang@sifive.com; a=ed25519; pk=+8NCHB1ZJvZthQAmZspOAaqjo+/snaW8mFSiDx45HxY= The "move_prev" pointer in struct imsic_vector on the new CPU is cleared only after the old CPU has cleared "move_next". But when migrating all the interrupts out from an offling CPU, since the CPU is already marked as "offlined", the IMSIC driver skip to sync-up the interrupt vector in __imsic_remote_sync(). The "move_pre" pointer of these interrupts can only be cleared after the old CPU backs to online. Therefore the affinity of an interrupt that are orignally target an offlined CPU can't be changed. This patch force to clear the "move_pre" pointers before the CPU goes offline. Signed-off-by: Yong-Xuan Wang --- drivers/irqchip/irq-riscv-imsic-early.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/irqchip/irq-riscv-imsic-early.c b/drivers/irqchip/irq-riscv-imsic-early.c index ba903fa689bd..a7a1852b548c 100644 --- a/drivers/irqchip/irq-riscv-imsic-early.c +++ b/drivers/irqchip/irq-riscv-imsic-early.c @@ -158,6 +158,8 @@ static int imsic_dying_cpu(unsigned int cpu) /* Cleanup IPIs */ imsic_ipi_dying_cpu(); + imsic_local_sync_all(false); + /* Mark per-CPU IMSIC state as offline */ imsic_state_offline(); --- base-commit: 9b3a2be84803cf18c4b4d1efc695991f0daa153c change-id: 20260503-imsic-d70c156cb740