From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 EAF8A3E0C40 for ; Wed, 6 May 2026 09:06:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778058399; cv=none; b=ZjcWNtwBoePBPD1pORjcGn0ne65nhokMYsWhaeWEkCzWRa0iIRK4EaywvmRSf/JHagyXu96ET89CUSQi+7eGCseOMLWQlT6IkFrPv4ht8PgYyfF5vJPdkixRqo83E4hzc2KYnjwZ0KKjR8CWEvsIeFZsHTrx/f+aZ2hZ89RjtPM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778058399; c=relaxed/simple; bh=uicQrgnKI28gC3rixoOmtgo8K3oVRrRzq2jNYuif1ZA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y5TinyNWPhcnTNgQg27by3WEFKmr7k5LwGOEcXBFTyOaDEMQfmIqHl2BHcpaFgWy0WkMYUkbz9y33pPgPXJmTCSXREDBR0jIUaGE4Hv2u3SqngqiWXRaHp1MAIRtZkcV4JkCD8gjk6FQKFTlJqzUdz2q3AlBdmSbJTl15C1QGaw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=pBE9z69/; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="pBE9z69/" Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 645Jkh4a3254680; Wed, 6 May 2026 09:06:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=/OX0YmQ91ZbIkTbD/ 67h5JVJUVNat8e++/RtzSdSmVI=; b=pBE9z69/ryRd8l31HNoyCgtZzMk7rrAti QELE0LzqNG/EDjZzMbq47rnhQAZzYhw5cTKGhtTOpFhGO29nauIrojY7bO8BEY6j edqKVb1PkCv/ZUuwKv7uB5KKkk/IgLewzpaiPnXRd6yHRzly0rQWrkvDRZrJP65i a0zhGa3tV0c92lrPyjDC5lwh1ggKWKnqczHw7dmXYdQNvqHDlC6HxedqyCz2MKfN GEceHZADyC+DxZdCMayQFCkmTY7/CcqPS37z5Lz6s1g40XSPOyHAHU/ruZj9TrRp 1yrVhP3nXRCnDXCuLPnotzDntJXXiFaXv0iQ5UkUCk9qSeZfj6hwA== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4dw9w6f7cs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 06 May 2026 09:06:25 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 6468dZoH014266; Wed, 6 May 2026 09:06:25 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4dwvkjwghd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 06 May 2026 09:06:25 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64696Lwe56230376 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 6 May 2026 09:06:21 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 50C1920043; Wed, 6 May 2026 09:06:21 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EEC9620040; Wed, 6 May 2026 09:06:18 +0000 (GMT) Received: from li-3f69264c-2ce6-11b2-a85c-c3f414d24014.bl1-in.ibm.com (unknown [9.123.3.209]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 6 May 2026 09:06:18 +0000 (GMT) From: Sayali Patil To: linuxppc-dev@lists.ozlabs.org, maddy@linux.ibm.com Cc: linux-kernel@vger.kernel.org, Ritesh Harjani , Mahesh Salgaonkar , sshegde@linux.ibm.com, chleroy@kernel.org Subject: [PATCH 1/3] powerpc/time: remove preempt_disable/enable from arch_irq_work_raise() Date: Wed, 6 May 2026 14:36:12 +0530 Message-ID: X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=XPQAjwhE c=1 sm=1 tr=0 ts=69fb0491 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=ES_PRLIWHEyu4WWh1w8A:9 X-Proofpoint-ORIG-GUID: 3Wb57npoFTKTbM3wDPzFmvXjkmZgL2UQ X-Proofpoint-GUID: dLKAQyOrL7NW9a9Ui_QOPVs6EZvcGSny X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA2MDA4OCBTYWx0ZWRfXzktigx1BSbPZ IHtLBu/QItIlVMumA4Qy+w3rweontkKbf461YJiWTk6ylknOPLa11FEnwbcSZR3V9WXlkEasQaH Fem+F+v9P7C04YfrngaSvsJ8kYeig0nCjfR88B4lM2uoiyDx6SaY/COEYTkKye2STS8lzla5wq5 uD+kLosauHxIdpqPgdiVjhuIWs25QQx7pKJbOAg+m0YlMA9Sz8ovy3JNpQPhdN66OWkKtAv2Eqq NgJiD1HmrcI51L5pIHHWNGvyegTEKB+XzPqISi+Vws6qW5Mw6iFzjaN3cFtORhfDzUEX4juaB4a PmCn9AOVXcwm/ggx/tzxG6KV7K3xD128f2UI7gwYqhdLjBEn3ivo/FIUrWYpi2uhVEv/ul88OP8 hdSCg2GjD26PJ3QlWxNvRQ5hvbBnmFhWh3unFuJiOL+cKeZuBDo3RudQ16jlvj+vKbSSKxObKJS Lup+/C+sIIOL9WpBwuQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-05_03,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 spamscore=0 priorityscore=1501 impostorscore=0 phishscore=0 malwarescore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605060088 A kernel panic is observed when handling machine check exceptions from real mode. BUG: Unable to handle kernel data access on read at 0xc00000006be21300 Oops: Kernel access of bad area, sig: 11 [#1] NIP [c000000000029e40] arch_irq_work_raise+0x10/0x70 LR [c00000000003ffc8] machine_check_queue_event+0xa8/0x150 Call Trace: [c0000000179d3c70] [c00000000003ff64] machine_check_queue_event+0x44/0x150 [c0000000179d3d30] [c0000000000084e0] machine_check_early_common+0x1f0/0x2c0 The crash occurs because arch_irq_work_raise() calls preempt_disable() from machine check exception (MCE) handlers running in real mode. In this context, accessing the preempt_count can fault, leading to the panic. The preempt_disable()/preempt_enable() pair in arch_irq_work_raise() was originally added by commit 0fe1ac48bef0 ("powerpc/perf_event: Fix oops due to perf_event_do_pending call") to avoid races while raising irq work from exception context. Later, commit 471ba0e686cb ("irq_work: Do not raise an IPI when queueing work on the local CPU") added preemption protection in irq_work_queue() path, while commit 20b876918c06 ("irq_work: Use per cpu atomics instead of regular atomics") added equivalent protection in irq_work_queue_on() before reaching arch_irq_work_raise(): irq_work_queue() / irq_work_queue_on() -> preempt_disable() -> __irq_work_queue_local() -> irq_work_raise() -> arch_irq_work_raise() As a result, callers other than mce_irq_work_raise() already execute with preemption disabled, making the additional preempt_disable()/preempt_enable() pair in arch_irq_work_raise() redundant. Remove it to avoid accessing preempt_count from real mode context. Fixes: cc15ff327569 ("powerpc/mce: Avoid using irq_work_queue() in realmode") Suggested-by: Mahesh Salgaonkar Signed-off-by: Sayali Patil --- arch/powerpc/kernel/time.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index 4bbeb8644d3d..a99eb43f6ce9 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c @@ -471,10 +471,8 @@ void arch_irq_work_raise(void) * which could get tangled up if we're messing with the same state * here. */ - preempt_disable(); set_irq_work_pending_flag(); set_dec(1); - preempt_enable(); } static void set_dec_or_work(u64 val) -- 2.52.0