From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from fout-b6-smtp.messagingengine.com (fout-b6-smtp.messagingengine.com [202.12.124.149]) (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 9FE50384CD8 for ; Wed, 17 Jun 2026 19:20:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.149 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781724019; cv=none; b=q4czP77Pdf9VrH+iGtwj8Y0sJ5NX1acBsJ9H6p6xkGaQpemif9vJKJAHGKOwQOLTbqyRMDD+U/uudxLqpW8+dm40u4J3+MRA+O84IoKBH8X0KlOxWZBzzf9dpnJQ9vltLs3ozZvnqDGdGijkJ73m7s02vJcfCsIlT5fLzge3wvc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781724019; c=relaxed/simple; bh=2ybtfi5YVuQTMAo6DucNBm9UhlZPyvN8mPUIlWu3Ofc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gqbc3RSCkhrO856sMQKk0DllrUIBraHFKy8VlpNGubYFcXP23i6RArMY4+zetsXoAwcSBECxbSB1afdqs154qlYbCjwe/ZcWAeZL+WG67fo9CVGT2/thNeDaAqJJukUVb0M3j14lIVOB6Uy77oRaoO47hBHbuX4GEtF7qxQUnkM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=shutemov.name; spf=pass smtp.mailfrom=shutemov.name; dkim=pass (2048-bit key) header.d=shutemov.name header.i=@shutemov.name header.b=g1Gn/USL; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=X1VjRLxi; arc=none smtp.client-ip=202.12.124.149 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=shutemov.name Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=shutemov.name Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=shutemov.name header.i=@shutemov.name header.b="g1Gn/USL"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="X1VjRLxi" Received: from phl-compute-12.internal (phl-compute-12.internal [10.202.2.52]) by mailfout.stl.internal (Postfix) with ESMTP id 8A66B1D00028; Wed, 17 Jun 2026 15:20:17 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-12.internal (MEProxy); Wed, 17 Jun 2026 15:20:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shutemov.name; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1781724017; x= 1781810417; bh=S7RS03/MmaY3cdQXKqXgtr66oQZe2dlZd/HdIJVZjY8=; b=g 1Gn/USLuUvDbrD75+Mu6huFWndN+ouuBKgzWyolom0kbV6lBIrLkdwaePhyco5Tk di0nh4f1kWEgIYGrX07L4uVAw+Vue0fbylcQJiTf0LX5FgnUgzeCdiI1o8tWEUYM HyMaRquKqOIs1fBjn3+kTrpWnbW4EJMK2j3tvFA9glmdGWwiv+PZp0e+c9Fuwzan tq4sIAGBX6qkRNVLUOvbc/wpclZfBAi9cFD3MfIlZs1n3RXhhOovuFTdq3LN0Oy2 E0L1kyp7+YfOm9MX9YEqTFp/Lo75hT1Tsc65G8Ny6l3zpFFJeAsoRQswzwzo0nvw ZabS5YXP0FfRoN/vB+RKQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1781724017; x=1781810417; bh=S 7RS03/MmaY3cdQXKqXgtr66oQZe2dlZd/HdIJVZjY8=; b=X1VjRLxircwA2mPO5 mKUoSK0OFA5px7m6sZ4N0bEf3Jeo4jCaKpIWBzK/kuf2hbgkZ/K+qN37Kkzeq09N 2UJ8EDzstJnIFnPZV932m+KFZ2gVhm2U6AtEZgrM2G2IcRaZ8jmQGy27LM2QWJvi NcvOZlbBrN63AfTwlUqt/lRwbejM8QDz/XiIEIV2dwDqQqQj6XmAbmgDC+IDOhJd Z6h1mrWWYXk+9HwPxfsU3SiRFqT1zYT87LACeVDa7svSAFAImAw6BRBotkaSo7gY zkEYr+TgrpPhFdhysUt7DaEH/MzYOSQiE2BRVyIYHliWji+JOj7K0/sn+MSJZM0K FZutA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEGc1cCggI/FTMXCThQMoUsi+STagEgvDbTiaOx8lidkfShu9CsgNhNtxybperlSh wYaeV61DjWKAW2ZDUDqHrbShp9jqKB6/x0skOmcC8DEJ3f/o2eC9W6bOIrSc/INaK22aIk IbflIhJuf03G1llb3yUJ0Nxxv1o0P97QmqJfK8swgT5Kv4JfH1KHqzf5nUMZRkmudlGTXj +dUDb1Ng5eMd5XdZ+EIP9BjvMkuOGaArezM30dBLvwSBZlBigLMmcDp+96Lrfrt1P5uaa+ axRUvc/FMxejiroOZbXEvIo66OfTMIX7BLDCfqbV1pUgnY23e+uL1L42S5XHrJoFp2Uwf2 Mh/wMeKNo2LvDGkdzd8R5jKUkPO5Pb/tL9QRZLm9i4f6JWpWqFk+YL80nk5VySrnXmmO05 DSjsJjShBq7XCiJPdpnW5e3hpQbbEcumwnTLyvr6YMiDZpEndphv7+fADDORkoe88tYAee YBcBGQExrOOEnaNKeMjVTNPcrKhsvfmx7E370SIDjSKQk0WofxkQQm0qgGwWylEDbIs7Oq uSJltFxbvU8fSHpf8xovObAI/I6x5EMB1T4HXmKKHO24OKQELf1iK/HxNR0ILMYy7qCk1a sIrXBc/HfsuYOOSHxptNSHELhNZFXj+8EA7sbJGJQH5OSrtH8gdAqzKdzWLw X-ME-Proxy: Feedback-ID: ie3994620:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 17 Jun 2026 15:20:16 -0400 (EDT) From: Kiryl Shutsemau To: Catalin Marinas , Will Deacon , James Morse Cc: Mark Rutland , Marc Zyngier , Doug Anderson , Petr Mladek , Thomas Gleixner , Andrew Morton , Baoquan He , Puranjay Mohan , Usama Arif , Breno Leitao , Julien Thierry , Lecopzer Chen , Sumit Garg , kernel-team@meta.com, kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, "Kiryl Shutsemau (Meta)" Subject: [PATCH v4 2/4] firmware: arm_sdei: add SDEI_EVENT_SIGNAL support Date: Wed, 17 Jun 2026 20:20:03 +0100 Message-ID: X-Mailer: git-send-email 2.54.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 From: "Kiryl Shutsemau (Meta)" Add sdei_event_signal(), a thin wrapper over the SDEI_EVENT_SIGNAL call (DEN0054) that makes the software-signalled event (event 0) pending on a target PE -- delivered NMI-like even when that PE has interrupts masked. It takes no locks, so it is safe to call from NMI / crash context. Signed-off-by: Kiryl Shutsemau (Meta) Reviewed-by: Douglas Anderson --- drivers/firmware/arm_sdei.c | 12 ++++++++++++ include/linux/arm_sdei.h | 6 ++++++ include/uapi/linux/arm_sdei.h | 1 + 3 files changed, 19 insertions(+) diff --git a/drivers/firmware/arm_sdei.c b/drivers/firmware/arm_sdei.c index c161cf263547..e8dd2f0f3919 100644 --- a/drivers/firmware/arm_sdei.c +++ b/drivers/firmware/arm_sdei.c @@ -339,6 +339,18 @@ static void _ipi_unmask_cpu(void *ignored) sdei_unmask_local_cpu(); } +/* + * Signal the software-signalled event (event 0) to @mpidr. Does nothing + * but the SMC -- no locks, no event lookup -- so it is safe from NMI / + * crash context (e.g. the cross-CPU NMI service). + */ +int sdei_event_signal(u32 event_num, u64 mpidr) +{ + return invoke_sdei_fn(SDEI_1_0_FN_SDEI_EVENT_SIGNAL, event_num, + mpidr, 0, 0, 0, NULL); +} +NOKPROBE_SYMBOL(sdei_event_signal); + /* * Was SDEI firmware probed and is it usable? Lets optional consumers skip * registering an event -- and the warning a failed registration emits -- on diff --git a/include/linux/arm_sdei.h b/include/linux/arm_sdei.h index b07113eeeff7..b9dc21c241be 100644 --- a/include/linux/arm_sdei.h +++ b/include/linux/arm_sdei.h @@ -37,6 +37,12 @@ int sdei_event_unregister(u32 event_num); int sdei_event_enable(u32 event_num); int sdei_event_disable(u32 event_num); +/* + * Signal the software-signalled event (event 0) to another PE, NMI-like. + * @mpidr is the target's MPIDR affinity. + */ +int sdei_event_signal(u32 event_num, u64 mpidr); + /* Was SDEI firmware probed and usable? */ bool sdei_is_present(void); diff --git a/include/uapi/linux/arm_sdei.h b/include/uapi/linux/arm_sdei.h index af0630ba5437..22eb61612673 100644 --- a/include/uapi/linux/arm_sdei.h +++ b/include/uapi/linux/arm_sdei.h @@ -22,6 +22,7 @@ #define SDEI_1_0_FN_SDEI_PE_UNMASK SDEI_1_0_FN(0x0C) #define SDEI_1_0_FN_SDEI_INTERRUPT_BIND SDEI_1_0_FN(0x0D) #define SDEI_1_0_FN_SDEI_INTERRUPT_RELEASE SDEI_1_0_FN(0x0E) +#define SDEI_1_0_FN_SDEI_EVENT_SIGNAL SDEI_1_0_FN(0x0F) #define SDEI_1_0_FN_SDEI_PRIVATE_RESET SDEI_1_0_FN(0x11) #define SDEI_1_0_FN_SDEI_SHARED_RESET SDEI_1_0_FN(0x12) -- 2.54.0