From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 744F047F3A5 for ; Tue, 13 Oct 2026 04:23:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791865398; cv=none; b=cmO1XuUMiog57vQRUnMvSlYKb/PGk75jrQImGqvLy1c6W1KJX7m/P+z6nP8iUUpV5eSVfJ+UXYVZ9rAlIZv49iiQhLlO5Yso+Zh0HVfTU5AWN+fWGPivB7F9M/m5UF4zN7a9IsUVkYomKpHS7l/4vx7acWMya85stuzi5d1dlVU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791865398; c=relaxed/simple; bh=0xkcXtEYaB9KYHNXsnL5BpaXh6cLF1hHL7akJ1DFKGA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=D/il23QKfCQ9vfQjwp+x57UJX9cpjqq21Ss+K/Glk5bl1pNXD2PSX+XSsn+pTDycFvtT6nNbqaP5ZMg5ZiD5nwMuqazYJPse241mPz0ANsW3ldVynY6ZwBnJROkeM22XT9CPKIOVTTNZxxlZ+2Rqi7RPsraSyYNxFSeF1QaMwgI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=YHpQvQCP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RE7yheHl; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="YHpQvQCP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RE7yheHl" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 69D211Wl4071792 for ; Tue, 13 Oct 2026 04:23:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=qcppdkim1; bh=tIWfgspxx4yLynby3ZQs1PnM reRTHqVlMg0z9Olk6BY=; b=YHpQvQCPqfZF1nBZx8vPKI+1i3dzN09Aillf0/C2 aXW/AkCeJBshshO3wyeKJZx/WnpZNxOP88LUoGfPopp0/1IDO/NaKADVq6HC3msQ m0b/T3DpxLTE83HIloKjnaUgj16ORMSyT/P6omuoqnbv/14nUGtCbtCsrB4VIISE yLmerKoUcLvsnSEDlmoehOB6+xIdQecm7VkRQYSWP3nUyVVUVZOPDpr/5DyVem5C 4HycyzpFEvjOWLwlzl4HHifH7WUl/SRQrXHIkUgsCdBwwp06csA0eqpyi31xD6WL Bj1FVDMIqdCgZnju841EMUSxRsO9yUUdouAKumM4Umesqg== Received: from mail-dy1-f198.google.com (mail-dy1-f198.google.com [74.125.82.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4h92jjtky2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 13 Oct 2026 04:23:16 +0000 (GMT) Received: by mail-dy1-f198.google.com with SMTP id 5a478bee46e88-33c35f5ca6cso6189548eec.1 for ; Mon, 12 Oct 2026 21:23:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1791865391; x=1792470191; darn=vger.kernel.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=tIWfgspxx4yLynby3ZQs1PnMreRTHqVlMg0z9Olk6BY=; b=RE7yheHlV9fKa7D7okSiO3j+iQHQ8nj2BTujDy5OFZwokKeJaGqQ7QUw5pA6xzP+29 HU8z59IV7A94JHlOthcEr1VA0yipVrURCGxPD3rCL82jjeZC4nNsBOjTGzcljqYhqvIb WwpVXFU+95nNVtdNL5fFxhreKv9B9TVfAywSgC2WAiDCERHBd2sLB0u73hE0WRdopcas hwa0bsCs/Y/mPY6SNKCM60sOWnhAhSeemGPCKMtjmQAsoy6c2JK8e3s1S3ajwlrqnU/K r8Yhi1/zoDt7HX0atb115VRDa5gv9vlGd4ZINnqkqaTmV+tiyqDyAwJu8N6sn38rL8Y3 xFLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791865391; x=1792470191; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=tIWfgspxx4yLynby3ZQs1PnMreRTHqVlMg0z9Olk6BY=; b=l+u3KJz5om1EHaHFNhX+hh2hpQGRMfLGgXrqXy9dQ1a/5D2s0rwrseKX6gcj8zAqe8 psZIIqjIi3NCmIQWtuTuZiviFLU0xOuh3JJtyRX4Yy+p70OOEHZvoIel0yJu7ASSk0hT 1r18z0vuKFjqLcsRHPDRFbylvTELG/4cX8Yfxw2Ft/gevGgGdsXo/Tf8KCFRbDK/b3BE xFZJtpi1ZqAb0H4RXBPB7rm/daaFEF+D6fbFYzV7H7pzKdzogCOSLWu4+H3Mrqf29Cp/ RDe4ZRDsnM43t8+UzgHFKiPtkmcdHODWf4NXa+c/xJTnQASmry7akJc0OOUd60WKunHW napw== X-Forwarded-Encrypted: i=1; AKwUvBxJd8fi6xlVCJTHuQtyGx8/MNiffFDpWvYnWasjvh6ZKLcoRA9k9vX1REilI45h1mDqksPrcyDQ4J3DVAo=@vger.kernel.org X-Gm-Message-State: AFq9FYL0vSmQs/BvNrdkQm9AyUYcAWLftrhh2aeBGZyYQdnsNweqVUaE 28iWZMWvvX+efD1ZGJQ/vB5OrK4sWYQvDis8G9zKyxdFPjsiVhnRvZJCN2i9k9GHeLQigYEBodA NOTSZVVSJBc/zwXFrAN4N2old3U7k9syIv2rIEQdUH5I3BMAgMq+pnM3ULpFEEHs86Fc= X-Gm-Gg: AYBFou1mgz1snCrYma4hG+gZUTjM3Ig7bvrIC7qozzcQeDU0BoTQL66X6BE5p+PvnIx /myONI7odI2tv+MjUfYkN+oi4kVWHqCKG6Xt87h5VF/9UD84Vx2ziRe2UT4NL7cHHm9SlSb0KDb nqqRKuom+0USVIB6HXKaZHMpZ438X6J+zTNWs6z1jA73JEFoZe6APBKO0TSndSq0obNEDFPePsR KsouhXesOM/A5ejChFMCmjZSanActj314ZgjwrbOblH3fPg5vaGr2zLTx46NORRYLVSYjDWKh7A H4Li2bucyLb2GfCzp1TFgLbrBkV8zyHH061s4iwmV6BJMnzLqY5NREZTEvVa1DcBnYREmCJWx8e pID1NvPd/vv5QOIB4s5jwWoIDUUNDI3Pzqjwx1eQ8r8Tsi/f55gOmYJyrew/JOpG/tQZZRQhv7w C9RlgGhOK+FE0dtwVWPf45r1k= X-Received: by 2002:a05:7301:a27:b0:35b:e6a7:f925 with SMTP id 5a478bee46e88-35be6a7fd77mr2695278eec.11.1791865390843; Mon, 12 Oct 2026 21:23:10 -0700 (PDT) X-Received: by 2002:a05:7301:a27:b0:35b:e6a7:f925 with SMTP id 5a478bee46e88-35be6a7fd77mr2695237eec.11.1791865390214; Mon, 12 Oct 2026 21:23:10 -0700 (PDT) Received: from hu-himchau-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-35c89429484sm1999530eec.23.2026.10.12.21.23.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Oct 2026 21:23:09 -0700 (PDT) Date: Tue, 13 Oct 2026 09:52:57 +0530 From: Himanshu Chauhan To: Zhanpeng Zhang Cc: Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Conor Dooley , Anup Patel , =?iso-8859-1?Q?Cl=E9ment_L=E9ger?= , Yunhui Cui , Atish Patra , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Will Deacon , Thomas Gleixner , Jonathan Corbet , Randy Dunlap , Shuah Khan , Shuah Khan , Yuanzhu , Yicong Yang , Susheng Yang , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v10 RESEND 3/9] riscv: sse: mask events during shutdown and kexec Message-ID: References: <03472b45125793a768f3e5bbc168f167e673d4cc.1789974241.git.zhangzhanpeng.jasper@bytedance.com> 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=us-ascii Content-Disposition: inline In-Reply-To: <03472b45125793a768f3e5bbc168f167e673d4cc.1789974241.git.zhangzhanpeng.jasper@bytedance.com> X-Proofpoint-GUID: 9h44KTzfS-hyjuUbodkNPRJx_tpVnXq9 X-Proofpoint-Spam-Info: AW1haW4tMjYxMDEzMDAxNyBTYWx0ZWRfX5FMeImMn3+ty oxhbR7flcfGWouZBBWdIeyCmPMvyaxXXWFx/cyiVOqTmc8HtqWdFvFhhlM89tnks1lpBsTALrxZ GntaMm1XIhlKrWkzh1U08roNRlKthzI= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMDEzMDAxNyBTYWx0ZWRfX3RDMAr90ti5k N8nBbZATAOMiQxVY5fnYVtuovJ+jEGS4fof5yhA80DFYLO4jNjGSLo0fME1HvGMHESxIbAEkH2P mT7h2hBM1k0Iye1X1E9yhdJychL+3xKqeEjSUdQZsKhpvm68DHFy+a904jsvOHCHpoiEyPQnNum gTuwBe3ZHhnYHApC24zlTlTofGnBl6JY3qOo+xQQaLfnTYvbCQgy+JLNP4v7ktsa2v8J8gtzYWl n6r+t+YxVFmz4XwaOL3yTJqNFwQ3BGQ2s8o/yFuqbUoHSmzDbCtYCqy+45egKW/ZxvukjRxcveP 2TTMLVmYOplxAfz/DrECIgnPSMUfviyqd7uMBhpk1RNhqhPl6vGqIGfW/1cZ5NIG43h7zeZQpxP Gu1zWJYvKBOM0zlbqq2ugRejtuN4Lkr11kOgUm5kHAE8sGrrNRn+TDe+PUwn7DjXhU2VNwtgcyQ OuwEJcnG2SWVbdxCWGg== X-Authority-Analysis: v=2.4 cv=GfKCDgXL c=1 sm=1 tr=0 ts=6acdb234 cx=c_pps a=wEP8DlPgTf/vqF+yE6f9lg==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=kj9zAlcOel0A:10 a=660iZSQnnn4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=968KyxNXAAAA:8 a=EUspDBNiAAAA:8 a=a_nq2awA8k5mFBtTUooA:9 a=CjuIK1q_8ugA:10 a=bBxd6f-gb0O0v-kibOvt:22 X-Proofpoint-ORIG-GUID: 9h44KTzfS-hyjuUbodkNPRJx_tpVnXq9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-10-13_01,2026-10-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 bulkscore=0 impostorscore=0 spamscore=0 adultscore=0 suspectscore=0 priorityscore=1501 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610080000 definitions=main-2610130017 On Mon, Sep 21, 2026 at 07:15:00PM +0800, Zhanpeng Zhang wrote: > SSE delivery is independent of normal S-mode interrupts. Firmware may also > retain an event registration until Linux explicitly unregisters it. A hart > must therefore stop accepting SSE events before Linux stops servicing the > registered handler. > > Mask SSE on the local hart before panic stop, CPU stop, restart, poweroff, > and crash shutdown paths. This prevents firmware from entering Linux-owned > handler state after the corresponding CPU or kernel context is no longer > valid. > > A crash kernel cannot identify or take ownership of registrations > inherited from the crashed kernel. Reject a later normal kexec while such > SSE state may still exist, rather than transferring unknown firmware state > to another kernel. > > Signed-off-by: Zhanpeng Zhang > --- > arch/riscv/kernel/machine_kexec.c | 11 +++++++++++ > arch/riscv/kernel/reset.c | 18 ++++++++++++++++++ > arch/riscv/kernel/smp.c | 17 +++++++++++++++++ > 3 files changed, 46 insertions(+) > > diff --git a/arch/riscv/kernel/machine_kexec.c b/arch/riscv/kernel/machine_kexec.c > index 738df176ff6f..24e7affae70b 100644 > --- a/arch/riscv/kernel/machine_kexec.c > +++ b/arch/riscv/kernel/machine_kexec.c > @@ -14,10 +14,13 @@ > #include /* For set_memory_x() */ > #include /* For unreachable() */ > #include /* For cpu_down() */ > +#include > #include > #include > #include > > +#include > + > /* > * machine_kexec_prepare - Initialize kexec > * > @@ -36,6 +39,13 @@ machine_kexec_prepare(struct kimage *image) > unsigned int control_code_buffer_sz = 0; > int i = 0; > > + /* A crash kernel cannot tear down registrations inherited from firmware. */ > + if (is_kdump_kernel() && image->type != KEXEC_TYPE_CRASH && > + riscv_sse_available()) { > + pr_err("Normal kexec from a crash kernel is unsupported with SSE\n"); > + return -EOPNOTSUPP; > + } > + > /* Find the Flattened Device Tree and save its physical address */ > for (i = 0; i < image->nr_segments; i++) { > if (image->segment[i].memsz <= sizeof(fdt)) > @@ -127,6 +137,7 @@ void > machine_crash_shutdown(struct pt_regs *regs) > { > local_irq_disable(); > + riscv_sse_mask_current_hart(); > > /* shutdown non-crashing cpus */ > crash_smp_send_stop(); > diff --git a/arch/riscv/kernel/reset.c b/arch/riscv/kernel/reset.c > index 14eb08a6db85..fdab37e7ae52 100644 > --- a/arch/riscv/kernel/reset.c > +++ b/arch/riscv/kernel/reset.c > @@ -6,6 +6,20 @@ > #include > #include > #include > +#include > + > +#include > + > +#ifndef CONFIG_SMP > +void __noreturn panic_smp_self_stop(void) > +{ > + riscv_sse_mask_current_hart(); > + local_irq_disable(); > + > + for (;;) > + cpu_relax(); > +} > +#endif > > static void __noreturn default_power_off(void) > { > @@ -18,6 +32,8 @@ EXPORT_SYMBOL(pm_power_off); > > void machine_restart(char *cmd) > { > + riscv_sse_mask_current_hart(); > + > /* > * UpdateCapsule() depends on the system being reset via ResetSystem(). > */ > @@ -30,12 +46,14 @@ void machine_restart(char *cmd) > > void machine_halt(void) > { > + riscv_sse_mask_current_hart(); > do_kernel_power_off(); > default_power_off(); > } > > void machine_power_off(void) > { > + riscv_sse_mask_current_hart(); > do_kernel_power_off(); > default_power_off(); > } > diff --git a/arch/riscv/kernel/smp.c b/arch/riscv/kernel/smp.c > index fa66f9c97d74..7f0d4e7332f1 100644 > --- a/arch/riscv/kernel/smp.c > +++ b/arch/riscv/kernel/smp.c > @@ -23,10 +23,13 @@ > #include > #include > #include > +#include > > #include > #include > #include > +#include > +#include > > enum ipi_message_type { > IPI_RESCHEDULE, > @@ -79,8 +82,18 @@ int riscv_hartid_to_cpuid(unsigned long hartid) > return -ENOENT; > } > > +void __noreturn panic_smp_self_stop(void) > +{ > + riscv_sse_mask_current_hart(); > + local_irq_disable(); > + > + for (;;) > + cpu_relax(); > +} > + > static void ipi_stop(void) > { > + riscv_sse_mask_current_hart(); > set_cpu_online(smp_processor_id(), false); > while (1) > wait_for_interrupt(); > @@ -91,6 +104,7 @@ static atomic_t waiting_for_crash_ipi = ATOMIC_INIT(0); > > static inline void ipi_cpu_crash_stop(unsigned int cpu, struct pt_regs *regs) > { > + riscv_sse_mask_current_hart(); > crash_save_cpu(regs, cpu); > > atomic_dec(&waiting_for_crash_ipi); > @@ -254,6 +268,8 @@ void smp_send_stop(void) > { > unsigned long timeout; > > + riscv_sse_mask_current_hart(); > + > if (num_online_cpus() > 1) { > cpumask_t mask; > > @@ -301,6 +317,7 @@ void crash_smp_send_stop(void) > return; > > cpus_stopped = 1; > + riscv_sse_mask_current_hart(); > > /* > * If this cpu is the only one alive at this point in time, online or Reviewed-by: Himanshu Chauhan > -- > 2.50.1 (Apple Git-155) >