From nobody Mon Jun 8 14:36:11 2026 Received: from mail-yw1-f181.google.com (mail-yw1-f181.google.com [209.85.128.181]) (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 35430319857 for ; Thu, 28 May 2026 23:07:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780009678; cv=none; b=No8nNsrRl9pAfrrb/KRgf+6pmWG1f27rCMk89QaKO3P3T5nghv/y/PCTLcu1mCHYyIqCTWPteaxLmQASJKC2udNpN6/oC5FmDhKaHAIVGEOvz9aenLkpoFIvWItsvxKuvg97mSdtcoJWaQ9G8Y/nhF3aPOoHnaLBlM7htrfibZQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780009678; c=relaxed/simple; bh=+4t3Gs4dNBrwz9KCzJpmkQXSngU3pbblQPUNrZVuQ5s=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Tg6YWjEBSBjlsoQpa1Hdn4NYbmlYrWEhVeGJP5+xGmPWrvFThXJVxCDAyPHFDKM913Zw4nTzJsTCulc5nzDCdYvv9KiQOJu3IxpkjuWnmmnHZ9EgV3sjjen9mfgGAh27gEyeUV9yoqG95In6Paas2uAiGaIveFsw0q7a93bzz5U= 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=pfaItyyV; arc=none smtp.client-ip=209.85.128.181 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="pfaItyyV" Received: by mail-yw1-f181.google.com with SMTP id 00721157ae682-7dc73a56b5aso10781887b3.1 for ; Thu, 28 May 2026 16:07:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780009676; x=1780614476; 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; bh=EsmYLjdQXSnwyvW2KX4QOuwimq2GRxmHKitgrfKsf1E=; b=pfaItyyVQ3VRBPrEIMVRSoFwTEhToC5qo2g8rtcSBCqwxBqe5ymQ2M2P+SlUoR4wJ/ 3fukwAIYx7/XGalSMZSXV7Y8DB3XFwVkJBo5sJlEGc8PyQR5kH/vjLLICvxGXkVnfqKs Lx2O9ymxQFFKeVEY3PtgnPFC4DswO2XZ9EdJz64DKOYfGu3uFJmpM5P+y59642Sbzr+e HN0mTldDSYTY6qpg42/rIHE3c9HzLDCK7Zs6Yicp8egokRVi3NvcVV1MXMBb/Ire8nIu SpJJMfjtOfOG2xlGPx7Pb90iAZ/Bgwq1w5vF89oI05FPJUlAn+a4bVKoH2mJ9DeRqu2a YGyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780009676; x=1780614476; 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; bh=EsmYLjdQXSnwyvW2KX4QOuwimq2GRxmHKitgrfKsf1E=; b=K+XJOoIuwHctD+xulmffFyhVN1Fa8RXHyn2vXsOjux9oWJoGrd8smufTHklTliNkU+ LoMIyGaXeExvMJUbar/x57FFP2KGwph+8RSkQkKSceb0dqvsTkhvkiQElC0ixtPccCtZ ynsW4su9iEgM/h7WQFaCG3FSmt5GbqBJS34+6SlMIKfmu5ZKTO8p1qTK75LzM/zbcgap yW8G+e++Z+75oFSjCu4yt8IjUS+qTsqj8hlrBs3/XgvRq+qit5B3pjiROdYpeopam0ir 6xUvflbrwnnVasbwz4FeReiumRNsu9h8oH9259gE5vJzsHEfvklnY9cWH7U4OoUArj5v zGJw== X-Gm-Message-State: AOJu0YzY2/qO0TvCN0RnmV/N0W0S5Du7ng7hfdbiaEFDBTPTGKSyxnG8 CPkmCzkBTNzKJFx5TQSabVHoRR7T0Lk5CgitPF77XOzMlDwtCuJE5+ED X-Gm-Gg: Acq92OFw2UKj7xjRRo0aflC5ck1uHmH8xNCXsnoQeBJctmrW2NyF7HNeaQHkf/Pl8NH QoMCP3curZjHyywrIaFyROADcmWI6y0VZoZGu5jSX0fZmUX0u+YACHrM0swJF1w8hbwxBGpBors z7Fai8iJLVLYYXKWjYBlaixoEAtiPFbNOVh2oTgNuvcCqnXwmsnROhyFv5pp071r5lA8bTJSf4J eXAPlp4KFkRUu6LGPzVR+42h8nmoWSgtogarZJ2AzXI+AXOeR3VSAIwqPBCCxp82zzIarYAGMqD 14gc8m0zjEQnF7Qu4CKTKZmWhtYIb+/cyBBTLobxo4YNFzF9ILK+wTFXDw2cvOnk7tuuVvZMjkv EgJeICKNitwD4Xb0T6dUOAqnSSY9FVl5jSrdVXL7bF2lker3a7VTOj0AjsY7ojh2iT1h9Bl2RlB NLM6JTzx6QFkZDXvoJhJCdAsWsA/X4KtF3pkjGbPsuYSFbyGb8MieOWXXwaINUBOvzaFYETkhlK wX3c5h16Qn6AHAoUDLXZ/b2 X-Received: by 2002:a05:690c:e3f1:b0:7cf:a117:4ece with SMTP id 00721157ae682-7de43b55932mr3086127b3.10.1780009676141; Thu, 28 May 2026 16:07:56 -0700 (PDT) Received: from localhost (107-220-129-194.lightspeed.chrlnc.sbcglobal.net. [107.220.129.194]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7de6d1f3943sm69177b3.26.2026.05.28.16.07.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 May 2026 16:07:55 -0700 (PDT) From: Matt Turner To: linux-alpha@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Richard Henderson , Magnus Lindholm , Matt Turner , stable@vger.kernel.org Subject: [PATCH] alpha: Use work_on_cpu() for cross-CPU RTC access Date: Thu, 28 May 2026 19:07:50 -0400 Message-ID: <20260528230750.1840681-1-mattst88@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: quoted-printable Content-Type: text/plain; charset="utf-8" smp_call_function_single() runs its callback in IPI (hardirq) context. mc146818_set_time() and mc146818_get_time() take rtc_lock (spinlock_t), which is a sleeping lock on PREEMPT_RT, triggering a lockdep "Invalid wait context" splat on Marvel SMP. work_on_cpu() runs the callback in a kthread (process) context, which can acquire sleeping locks. Cc: stable@vger.kernel.org Assisted-by: Claude:claude-sonnet-4-6 Signed-off-by: Matt Turner --- arch/alpha/kernel/rtc.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git ./arch/alpha/kernel/rtc.c ./arch/alpha/kernel/rtc.c index cfdf90bc8b3f..4ad5846a1d71 100644 --- ./arch/alpha/kernel/rtc.c +++ ./arch/alpha/kernel/rtc.c @@ -15,6 +15,7 @@ #include #include #include +#include =20 #include "proto.h" =20 @@ -155,11 +156,12 @@ union remote_data { long retval; }; =20 -static void +static long do_remote_read(void *data) { union remote_data *x =3D data; x->retval =3D alpha_rtc_read_time(NULL, x->tm); + return 0; } =20 static int @@ -168,17 +170,18 @@ remote_read_time(struct device *dev, struct rtc_time = *tm) union remote_data x; if (smp_processor_id() !=3D boot_cpuid) { x.tm =3D tm; - smp_call_function_single(boot_cpuid, do_remote_read, &x, 1); + work_on_cpu(boot_cpuid, do_remote_read, &x); return x.retval; } return alpha_rtc_read_time(NULL, tm); } =20 -static void +static long do_remote_set(void *data) { union remote_data *x =3D data; x->retval =3D alpha_rtc_set_time(NULL, x->tm); + return 0; } =20 static int @@ -187,7 +190,7 @@ remote_set_time(struct device *dev, struct rtc_time *tm) union remote_data x; if (smp_processor_id() !=3D boot_cpuid) { x.tm =3D tm; - smp_call_function_single(boot_cpuid, do_remote_set, &x, 1); + work_on_cpu(boot_cpuid, do_remote_set, &x); return x.retval; } return alpha_rtc_set_time(NULL, tm); --=20 2.53.0