From nobody Sun Feb 8 20:32:53 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A56EC7EE25 for ; Fri, 9 Jun 2023 02:23:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237765AbjFICW6 (ORCPT ); Thu, 8 Jun 2023 22:22:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229506AbjFICW4 (ORCPT ); Thu, 8 Jun 2023 22:22:56 -0400 Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 57D772722 for ; Thu, 8 Jun 2023 19:22:55 -0700 (PDT) Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-1b038064d97so2597465ad.0 for ; Thu, 08 Jun 2023 19:22:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686277374; x=1688869374; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aZNQ2dwun9ILIVzofEMrA4Cmr+QYtV0Q1ZZ8saKo7xw=; b=WkDwkn1/WB5jnSlCxQ4wkHE9sI0ZarvkXYG1ZCyFEDDaYxLP8JNBxejq113NJeo2Lk NOCHF+B/xT4QnJQhPwvxpW3bEXoEyjZGFjDbNOy3wJMoFuxNrBgx3Pnq/szGIq2mxUA0 i9FMVWC+tyQQ8Co47k0gKlO28s/VtvPxZpHOLdDag0vxKEEVgRunAZY87UngMjK4QIbs hOJ4BHCkSzanrNFHjoncETCv6/jll9CTbZMtyLLHKAJsErlfysr1BF6Js9kGZn/I2+vw 3/p/fISchG41ic2iKqtaMxpql6H7IQ/PgZ2BfRJZ9ki4E+PNKkbyxIhdj5mzG8iJnpjc dovA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686277374; x=1688869374; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aZNQ2dwun9ILIVzofEMrA4Cmr+QYtV0Q1ZZ8saKo7xw=; b=XiXEB4lZ5wtct658L6aWm6XrDK1IGaqD19nOaaUGBsrZhSqVCQwvo6UsAo0MxfVV1W zUf4/EnCNI2PGs9RzQHTO5idFF55G2Pksrkl1jqCCbkfP0Rb/saf0vazMv4WZVofcoEZ kvnBIrj4JrcwBFqU/dzllATfZWjrLPuTXLyuQlk2sip9MqvrImpdSrv+4amAG5ef+2Cg zc/lDtUWIKNPdbppJHkI2mpso8sZ7Iaw4TaVaTSdxc5kbYJ1XJCt7cYDoJURTS3aZpC6 RJ16anjuoKDv2pVOPkjytlLGhgS5vBV7arAQEGPArISpNGQuZBkbqsyR6h2/4m/RcirO rg6Q== X-Gm-Message-State: AC+VfDyJBrDNthQRJJEuFlKTP+zU900K6zQzXowQCH3t1Z9IE4QHOX53 bZP0f2E7HdwREqk4gsgWOBSZgjrIGmM= X-Google-Smtp-Source: ACHHUZ7S8PzzT3ZCK9MYwEDpXDs4cPLrK5FLl+ipxNczZtfOlmbG2FpYQHm8fOb/XZNrE61ZG2G6yQ== X-Received: by 2002:a17:903:2444:b0:1ac:a88a:70b6 with SMTP id l4-20020a170903244400b001aca88a70b6mr4458110pls.31.1686277374452; Thu, 08 Jun 2023 19:22:54 -0700 (PDT) Received: from octofox.hsd1.ca.comcast.net ([2601:641:401:1d20:3aa3:2af1:e3f1:5039]) by smtp.gmail.com with ESMTPSA id w22-20020a1709027b9600b001ac95be5081sm2014846pll.307.2023.06.08.19.22.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Jun 2023 19:22:53 -0700 (PDT) From: Max Filippov To: linux-kernel@vger.kernel.org Cc: Chris Zankel , Max Filippov Subject: [PATCH 1/5] xtensa: xt2000: drop empty platform_init Date: Thu, 8 Jun 2023 19:22:36 -0700 Message-Id: <20230609022240.1694244-2-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230609022240.1694244-1-jcmvbkbc@gmail.com> References: <20230609022240.1694244-1-jcmvbkbc@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" platform_init doesn't do anything for xt2000, drop it. Signed-off-by: Max Filippov --- arch/xtensa/platforms/xt2000/setup.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/arch/xtensa/platforms/xt2000/setup.c b/arch/xtensa/platforms/x= t2000/setup.c index 0dc22c371614..08bc9b0ede3e 100644 --- a/arch/xtensa/platforms/xt2000/setup.c +++ b/arch/xtensa/platforms/xt2000/setup.c @@ -68,12 +68,6 @@ void __init platform_setup(char** cmdline) led_print (0, "LINUX "); } =20 -/* early initialization */ - -void __init platform_init(bp_tag_t *first) -{ -} - /* Heartbeat. Let the LED blink. */ =20 void platform_heartbeat(void) --=20 2.30.2 From nobody Sun Feb 8 20:32:53 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4DBAC7EE25 for ; Fri, 9 Jun 2023 02:23:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238209AbjFICXG (ORCPT ); Thu, 8 Jun 2023 22:23:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237455AbjFICW5 (ORCPT ); Thu, 8 Jun 2023 22:22:57 -0400 Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com [IPv6:2607:f8b0:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8EB3A2D4B for ; Thu, 8 Jun 2023 19:22:56 -0700 (PDT) Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-653f9c7b3e4so1008313b3a.2 for ; Thu, 08 Jun 2023 19:22:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686277376; x=1688869376; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9eV2XvsxLQ0E9qrsqopG7ODwdkJbzczV5YNgpOsdmco=; b=DG7GdmfBqWct0Fj+1gBvLY2unB5NKJdFqCL67rIJb/Yp3nXPbYwQfT+Iu5j7dWK6qo DyWqXUZXEmLcScuEbSTjhJf02gnORCpcru1kYgMdNaZY6BYS978lYXCzlgerMzYJBDdh eGeXNP0CsIuGf5y9q/TjL6mCcseiXlhF6RGIumeLC82e/CiMcDlPsCPJtAC/U44oi+Hw BEMboGBo5VcFesVHponWoLh+XSPmKRUKqgHGBQ44hGHLBeeUeo7/JHAjd6OsULIggfwq Ds3EF+5dyTnwMCKudaz0fv0pebk3rveZCWCft0nbpcdBmZC3KsRriEa67+IFTnNXv7l4 mawg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686277376; x=1688869376; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9eV2XvsxLQ0E9qrsqopG7ODwdkJbzczV5YNgpOsdmco=; b=Yi9q6bUE8BnK7vKN1ULl3KDX88Kgq/wzA2YIGuTRaktlA8F/nsJmVeKK8iu3SZ2Mnu meXPQxUxdsus7FkELp/DlzQVMBaYPPF23yCg0arGmBZ5lCwyOdTtCObuB5V/Nn9EqCJC F6UnbdrJHQ5at2MkQh/LAg+FAtgnvBDKG6lmxj8AA3q9JKUI1yirp3oH3178wnSJ+2Gk had2WavGtuwBdC0VPZbxv7wcgTXjcYyhziEtfrQ+N/MznMwYpnEn6kGHbFbPB6YTI2tK yU/J6baA7rYfMUwYQ985vM3czDjeVZOqfzCMgf309Urg7WO5F6lzCNsgWm0B7LpDZzNm fFKQ== X-Gm-Message-State: AC+VfDz/VA9yg1e73xIjQki3Z9AEgDPouba6ivEHvdeFxQR/Q+ii8ASB rRrutOJXxowlB8bM8rBWOobej9IJJPY= X-Google-Smtp-Source: ACHHUZ6v1ZB2HtC7nRUGyzlhdPOvF4nd4Zc2Vqp29+vhJ6sTXpFOhznRDe0LuCrjbTrsvcUJhDAodg== X-Received: by 2002:a05:6a20:c183:b0:10c:7c72:bdf9 with SMTP id bg3-20020a056a20c18300b0010c7c72bdf9mr12833pzb.29.1686277375755; Thu, 08 Jun 2023 19:22:55 -0700 (PDT) Received: from octofox.hsd1.ca.comcast.net ([2601:641:401:1d20:3aa3:2af1:e3f1:5039]) by smtp.gmail.com with ESMTPSA id w22-20020a1709027b9600b001ac95be5081sm2014846pll.307.2023.06.08.19.22.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Jun 2023 19:22:54 -0700 (PDT) From: Max Filippov To: linux-kernel@vger.kernel.org Cc: Chris Zankel , Max Filippov Subject: [PATCH 2/5] xtensa: drop platform_heartbeat Date: Thu, 8 Jun 2023 19:22:37 -0700 Message-Id: <20230609022240.1694244-3-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230609022240.1694244-1-jcmvbkbc@gmail.com> References: <20230609022240.1694244-1-jcmvbkbc@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" platform_heartbeat is called from the timer interrupt handler, but there may be no periodic timer interrupts on xtensa, so the frequency of platform_heartbeat calls may be unrelated to HZ. Drop the callback and reimplement its only user with a timer. Signed-off-by: Max Filippov --- arch/xtensa/include/asm/platform.h | 5 ----- arch/xtensa/kernel/platform.c | 1 - arch/xtensa/kernel/time.c | 4 ---- arch/xtensa/platforms/xt2000/setup.c | 20 +++++++++++--------- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/arch/xtensa/include/asm/platform.h b/arch/xtensa/include/asm/p= latform.h index 354ca942de40..3be6b4bf9763 100644 --- a/arch/xtensa/include/asm/platform.h +++ b/arch/xtensa/include/asm/platform.h @@ -47,11 +47,6 @@ extern void platform_power_off (void); */ extern void platform_idle (void); =20 -/* - * platform_heartbeat is called every HZ - */ -extern void platform_heartbeat (void); - /* * platform_calibrate_ccount calibrates cpu clock freq (CONFIG_XTENSA_CALI= BRATE) */ diff --git a/arch/xtensa/kernel/platform.c b/arch/xtensa/kernel/platform.c index ac1e0e566995..bb4d426ebb44 100644 --- a/arch/xtensa/kernel/platform.c +++ b/arch/xtensa/kernel/platform.c @@ -32,7 +32,6 @@ _F(void, restart, (void), { while(1); }); _F(void, halt, (void), { while(1); }); _F(void, power_off, (void), { while(1); }); _F(void, idle, (void), { __asm__ __volatile__ ("waiti 0" ::: "memory"); }); -_F(void, heartbeat, (void), { }); =20 #ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT _F(void, calibrate_ccount, (void), diff --git a/arch/xtensa/kernel/time.c b/arch/xtensa/kernel/time.c index 16b8a6273772..1c3dfea843ec 100644 --- a/arch/xtensa/kernel/time.c +++ b/arch/xtensa/kernel/time.c @@ -121,10 +121,6 @@ static irqreturn_t timer_interrupt(int irq, void *dev_= id) =20 set_linux_timer(get_linux_timer()); evt->event_handler(evt); - - /* Allow platform to do something useful (Wdog). */ - platform_heartbeat(); - return IRQ_HANDLED; } =20 diff --git a/arch/xtensa/platforms/xt2000/setup.c b/arch/xtensa/platforms/x= t2000/setup.c index 08bc9b0ede3e..dc187684203b 100644 --- a/arch/xtensa/platforms/xt2000/setup.c +++ b/arch/xtensa/platforms/xt2000/setup.c @@ -23,6 +23,7 @@ #include #include #include +#include =20 #include #include @@ -70,16 +71,17 @@ void __init platform_setup(char** cmdline) =20 /* Heartbeat. Let the LED blink. */ =20 -void platform_heartbeat(void) +static void xt2000_heartbeat(struct timer_list *unused); + +static DEFINE_TIMER(heartbeat_timer, xt2000_heartbeat); + +static void xt2000_heartbeat(struct timer_list *unused) { - static int i, t; + static int i; =20 - if (--t < 0) - { - t =3D 59; - led_print(7, i ? ".": " "); - i ^=3D 1; - } + led_print(7, i ? "." : " "); + i ^=3D 1; + mod_timer(&heartbeat_timer, jiffies + HZ / 2); } =20 //#define RS_TABLE_SIZE 2 @@ -137,7 +139,7 @@ static int __init xt2000_setup_devinit(void) { platform_device_register(&xt2000_serial8250_device); platform_device_register(&xt2000_sonic_device); - + mod_timer(&heartbeat_timer, jiffies + HZ / 2); return 0; } =20 --=20 2.30.2 From nobody Sun Feb 8 20:32:53 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DFFDDC7EE29 for ; Fri, 9 Jun 2023 02:23:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237975AbjFICXK (ORCPT ); Thu, 8 Jun 2023 22:23:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237785AbjFICW6 (ORCPT ); Thu, 8 Jun 2023 22:22:58 -0400 Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9E4062722 for ; Thu, 8 Jun 2023 19:22:57 -0700 (PDT) Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-1b0201d9a9eso2624475ad.0 for ; Thu, 08 Jun 2023 19:22:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686277377; x=1688869377; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TCtYwAZA3V/mmKNvKuucQTbNEzv8gSVajwtWxzirv6E=; b=XSfUX99qrk64VZR9SPQM0V4bTRmc6dyG6OrJMZ1LJbVCt4UlAalzVlY6G6Dvo+WEme HJGwIRe3wQ9HCRzzhaanhNgI5aqOGa+1Eblt6Vdv8AqROmG6WWwgr4KKzPViLeY7Rlwb 4cak8//B0AqPF6Fz00TrpYj42kZWk2BDL+9CejDRaQ2rGDEYLPocRJ3sgFK1Vxn6heNF 2VZusDDvR00WsgJx5+p5dCIkR62b4+x+olCcSOjdK7iM2nZ5W+RH0X/u/dHNy2kCQvOa XFo1rja69FSOKGZWJ47yNhoDS2zuUr3MetXJgMlE+t8rl1WomAVytrWPZjcOb5fsZsss bTjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686277377; x=1688869377; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TCtYwAZA3V/mmKNvKuucQTbNEzv8gSVajwtWxzirv6E=; b=IEaWzGxbrrnOr6iIoCKVbL+d0Ggvk2L13dWXK61iq2oJYp7MEDErLHoim+0VNPLMDW fIU6cIRuHrLyf2NpKeGkV+JrM+TKZDhzEBK4YIRrNg3gZ8OFXpb4YzW1QmygvWp6/HPK LC8kiNqLX6jqjjjPP8gSoNSv7owpRVkZNLd1OWaiJujozWe7z309qJJUr6paF+/857sp Zz8+QRvBiCnWW/nryGaM5mykNOySBvIdQu1tBsuhUHbsCBmmKuqnTovHEYsgbz8RDyWv SJmKdCH4roQckW+66G+aIhLT7cG7sVnHh2oUN0/bSxXXVMWx1sgQLQlGlFNmRa91TYEy 0v/Q== X-Gm-Message-State: AC+VfDyyPW0lZIHSTlJT20m1ZRLriRaPRq/Qbw0DdwZGQuOj8qDaMYDi jsraTvzaO9hXvzOoaeKm8sljUc3Skt4= X-Google-Smtp-Source: ACHHUZ5h5CkVrX+TUvOKHsLHsjR+XHhn0FWlL1eg7VmGUEQZ8dE07qE9IK2HOyb7vO0Lwmo18JXg1w== X-Received: by 2002:a17:902:d2c9:b0:1b2:3e9f:69d1 with SMTP id n9-20020a170902d2c900b001b23e9f69d1mr4632603plc.18.1686277376822; Thu, 08 Jun 2023 19:22:56 -0700 (PDT) Received: from octofox.hsd1.ca.comcast.net ([2601:641:401:1d20:3aa3:2af1:e3f1:5039]) by smtp.gmail.com with ESMTPSA id w22-20020a1709027b9600b001ac95be5081sm2014846pll.307.2023.06.08.19.22.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Jun 2023 19:22:56 -0700 (PDT) From: Max Filippov To: linux-kernel@vger.kernel.org Cc: Chris Zankel , Max Filippov Subject: [PATCH 3/5] xtensa: drop platform_restart Date: Thu, 8 Jun 2023 19:22:38 -0700 Message-Id: <20230609022240.1694244-4-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230609022240.1694244-1-jcmvbkbc@gmail.com> References: <20230609022240.1694244-1-jcmvbkbc@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Instead of using xtensa-specific platform_restart callback use do_kernel_restart in the machine_restart implementation and reimplement existing platform_restart users with register_restart_handler. Drop platform_restart declaration and default implementation. Signed-off-by: Max Filippov --- arch/xtensa/include/asm/platform.h | 5 ----- arch/xtensa/kernel/platform.c | 1 - arch/xtensa/kernel/setup.c | 8 +++++++- arch/xtensa/platforms/iss/setup.c | 12 ++++++++++-- arch/xtensa/platforms/xt2000/setup.c | 11 +++++++++-- arch/xtensa/platforms/xtfpga/setup.c | 20 ++++++++++++++++++-- 6 files changed, 44 insertions(+), 13 deletions(-) diff --git a/arch/xtensa/include/asm/platform.h b/arch/xtensa/include/asm/p= latform.h index 3be6b4bf9763..5b3c1f96f7b5 100644 --- a/arch/xtensa/include/asm/platform.h +++ b/arch/xtensa/include/asm/platform.h @@ -27,11 +27,6 @@ extern void platform_init(bp_tag_t*); */ extern void platform_setup (char **); =20 -/* - * platform_restart is called to restart the system. - */ -extern void platform_restart (void); - /* * platform_halt is called to stop the system and halt. */ diff --git a/arch/xtensa/kernel/platform.c b/arch/xtensa/kernel/platform.c index bb4d426ebb44..526ab744271f 100644 --- a/arch/xtensa/kernel/platform.c +++ b/arch/xtensa/kernel/platform.c @@ -28,7 +28,6 @@ =20 _F(void, init, (bp_tag_t *first), { }); _F(void, setup, (char** cmd), { }); -_F(void, restart, (void), { while(1); }); _F(void, halt, (void), { while(1); }); _F(void, power_off, (void), { while(1); }); _F(void, idle, (void), { __asm__ __volatile__ ("waiti 0" ::: "memory"); }); diff --git a/arch/xtensa/kernel/setup.c b/arch/xtensa/kernel/setup.c index 9191738f9941..8f72039335c2 100644 --- a/arch/xtensa/kernel/setup.c +++ b/arch/xtensa/kernel/setup.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -522,7 +523,12 @@ void cpu_reset(void) =20 void machine_restart(char * cmd) { - platform_restart(); + local_irq_disable(); + smp_send_stop(); + do_kernel_restart(cmd); + pr_err("Reboot failed -- System halted\n"); + while (1) + cpu_relax(); } =20 void machine_halt(void) diff --git a/arch/xtensa/platforms/iss/setup.c b/arch/xtensa/platforms/iss/= setup.c index d3433e1bb94e..a7009f223ef2 100644 --- a/arch/xtensa/platforms/iss/setup.c +++ b/arch/xtensa/platforms/iss/setup.c @@ -16,6 +16,7 @@ #include #include #include +#include #include =20 #include @@ -36,14 +37,20 @@ void platform_power_off(void) simc_exit(0); } =20 -void platform_restart(void) +static int iss_restart(struct notifier_block *this, + unsigned long event, void *ptr) { /* Flush and reset the mmu, simulate a processor reset, and * jump to the reset vector. */ cpu_reset(); - /* control never gets here */ + + return NOTIFY_DONE; } =20 +static struct notifier_block iss_restart_block =3D { + .notifier_call =3D iss_restart, +}; + static int iss_panic_event(struct notifier_block *this, unsigned long event, void *pt= r) { @@ -82,4 +89,5 @@ void __init platform_setup(char **p_cmdline) } =20 atomic_notifier_chain_register(&panic_notifier_list, &iss_panic_block); + register_restart_handler(&iss_restart_block); } diff --git a/arch/xtensa/platforms/xt2000/setup.c b/arch/xtensa/platforms/x= t2000/setup.c index dc187684203b..71b57ab50599 100644 --- a/arch/xtensa/platforms/xt2000/setup.c +++ b/arch/xtensa/platforms/xt2000/setup.c @@ -56,14 +56,20 @@ void platform_power_off(void) while (1); } =20 -void platform_restart(void) +static int xt2000_restart(struct notifier_block *this, + unsigned long event, void *ptr) { /* Flush and reset the mmu, simulate a processor reset, and * jump to the reset vector. */ cpu_reset(); - /* control never gets here */ + + return NOTIFY_DONE; } =20 +static struct notifier_block xt2000_restart_block =3D { + .notifier_call =3D xt2000_restart, +}; + void __init platform_setup(char** cmdline) { led_print (0, "LINUX "); @@ -140,6 +146,7 @@ static int __init xt2000_setup_devinit(void) platform_device_register(&xt2000_serial8250_device); platform_device_register(&xt2000_sonic_device); mod_timer(&heartbeat_timer, jiffies + HZ / 2); + register_restart_handler(&xt2000_restart_block); return 0; } =20 diff --git a/arch/xtensa/platforms/xtfpga/setup.c b/arch/xtensa/platforms/x= tfpga/setup.c index c79c1d09ea86..1690232c003e 100644 --- a/arch/xtensa/platforms/xtfpga/setup.c +++ b/arch/xtensa/platforms/xtfpga/setup.c @@ -49,7 +49,8 @@ void platform_power_off(void) cpu_relax(); } =20 -void platform_restart(void) +static int xtfpga_restart(struct notifier_block *this, + unsigned long event, void *ptr) { /* Try software reset first. */ WRITE_ONCE(*(u32 *)XTFPGA_SWRST_VADDR, 0xdead); @@ -58,9 +59,14 @@ void platform_restart(void) * simulate a processor reset, and jump to the reset vector. */ cpu_reset(); - /* control never gets here */ + + return NOTIFY_DONE; } =20 +static struct notifier_block xtfpga_restart_block =3D { + .notifier_call =3D xtfpga_restart, +}; + #ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT =20 void __init platform_calibrate_ccount(void) @@ -70,6 +76,11 @@ void __init platform_calibrate_ccount(void) =20 #endif =20 +static void __init xtfpga_register_handlers(void) +{ + register_restart_handler(&xtfpga_restart_block); +} + #ifdef CONFIG_USE_OF =20 static void __init xtfpga_clk_setup(struct device_node *np) @@ -134,6 +145,9 @@ static int __init machine_setup(void) if ((eth =3D of_find_compatible_node(eth, NULL, "opencores,ethoc"))) update_local_mac(eth); of_node_put(eth); + + xtfpga_register_handlers(); + return 0; } arch_initcall(machine_setup); @@ -281,6 +295,8 @@ static int __init xtavnet_init(void) pr_info("XTFPGA: Ethernet MAC %pM\n", ethoc_pdata.hwaddr); ethoc_pdata.eth_clkfreq =3D *(long *)XTFPGA_CLKFRQ_VADDR; =20 + xtfpga_register_handlers(); + return 0; } =20 --=20 2.30.2 From nobody Sun Feb 8 20:32:53 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 593AFC7EE29 for ; Fri, 9 Jun 2023 02:23:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230011AbjFICXN (ORCPT ); Thu, 8 Jun 2023 22:23:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40018 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237810AbjFICW7 (ORCPT ); Thu, 8 Jun 2023 22:22:59 -0400 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC0272D52 for ; Thu, 8 Jun 2023 19:22:58 -0700 (PDT) Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1b026657a6fso3661305ad.0 for ; Thu, 08 Jun 2023 19:22:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686277378; x=1688869378; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Wsq4vyLCQ78cbT52QEssPn3hTsohPnCqXULhgza1F5o=; b=r/aT+JTdcg6U2SJ15bsZSU1aaTesZMypDzlMc7FudyPsr61Y7mH0EyKAg2GUGKOW6K EZ1t82xBTMqYrwW5udk3T+e3LvnKXY9STVBnpeW0O5l6TrPUj2eCbdIUs5SbUhCHwQfj xHVOZNnPjitny9J6XOx4AxfRGSlKhuRGG1EraddMKFJPanZ8+brWK/ZltgncpI5xeOAb rkxKixVCXUlYa04c3fbmczbh5o1UNcnKLc9MP9NcpEjTe8vOhjTFEO5bImAmWhIrxX4x GhTyUJOmElphSIrVyphzebRQA3ACshV/eTx/t1wNZclmmWMppVSVBvZ8q3295/qhDWEf +m5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686277378; x=1688869378; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Wsq4vyLCQ78cbT52QEssPn3hTsohPnCqXULhgza1F5o=; b=ACD/JGh6GyK3ty1hCWifb/3FCctsiN67fjIS/UfrRp7VCWuPPJWYvOTAs8KfCxj/gl FhBuJlncR4Cp0FrI5zLALM/yek0134UuqMf0pUvKZnUGvLScR8ubVoOtGeBJPDMPZbXQ 0xIXkb/37UGlYMGWHMJNSECTewoVcqj1LUZ/a2DZwErEeagESXrHIupnte4vKITliDXl djWMiCGuZHvxaDvTD6jO4AABnfsuOOUekAndz2xmDCGHKRwMXToYKpaFzREd77LspySf i7l+/BzuLGDSK9IcKEh/IiTulvaw9rQNJx23H9HD8pPW6VZUlPuId0PZ95/7wLcJ50py dZJg== X-Gm-Message-State: AC+VfDxyQcJJbMILw/4hvIdUD78JfjzCNqSYYR8F3NVzmD9nZkdEpPhe r0giVPvmkbwYJTRXEFnDWzfm3hypYCw= X-Google-Smtp-Source: ACHHUZ6jQGs1L8FVzz1znL+Fa1YXrWzTJaRbvDGUgk2UHGYp1JGZRe0xA6L7k9JhPFeZuPyeN405Ug== X-Received: by 2002:a17:903:2350:b0:1ad:f138:b2f6 with SMTP id c16-20020a170903235000b001adf138b2f6mr196154plh.16.1686277377931; Thu, 08 Jun 2023 19:22:57 -0700 (PDT) Received: from octofox.hsd1.ca.comcast.net ([2601:641:401:1d20:3aa3:2af1:e3f1:5039]) by smtp.gmail.com with ESMTPSA id w22-20020a1709027b9600b001ac95be5081sm2014846pll.307.2023.06.08.19.22.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Jun 2023 19:22:57 -0700 (PDT) From: Max Filippov To: linux-kernel@vger.kernel.org Cc: Chris Zankel , Max Filippov Subject: [PATCH 4/5] xtensa: drop platform_halt and platform_power_off Date: Thu, 8 Jun 2023 19:22:39 -0700 Message-Id: <20230609022240.1694244-5-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230609022240.1694244-1-jcmvbkbc@gmail.com> References: <20230609022240.1694244-1-jcmvbkbc@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Instead of using xtensa-specific platform_halt and platform_power_off callbacks use do_kernel_power_off in the machine_halt and machine_power_off and reimplement existing platform_halt and platform_power_off users with register_sys_off_handler. Drop platform_halt and platform_power_off declarations and default implementations. Signed-off-by: Max Filippov --- arch/xtensa/include/asm/platform.h | 10 ---------- arch/xtensa/kernel/platform.c | 2 -- arch/xtensa/kernel/setup.c | 14 ++++++++++---- arch/xtensa/platforms/iss/setup.c | 12 +++++------- arch/xtensa/platforms/xt2000/setup.c | 13 +++++-------- arch/xtensa/platforms/xtfpga/setup.c | 14 +++++--------- 6 files changed, 25 insertions(+), 40 deletions(-) diff --git a/arch/xtensa/include/asm/platform.h b/arch/xtensa/include/asm/p= latform.h index 5b3c1f96f7b5..94f13fabf7cd 100644 --- a/arch/xtensa/include/asm/platform.h +++ b/arch/xtensa/include/asm/platform.h @@ -27,16 +27,6 @@ extern void platform_init(bp_tag_t*); */ extern void platform_setup (char **); =20 -/* - * platform_halt is called to stop the system and halt. - */ -extern void platform_halt (void); - -/* - * platform_power_off is called to stop the system and power it off. - */ -extern void platform_power_off (void); - /* * platform_idle is called from the idle function. */ diff --git a/arch/xtensa/kernel/platform.c b/arch/xtensa/kernel/platform.c index 526ab744271f..29fa5d659274 100644 --- a/arch/xtensa/kernel/platform.c +++ b/arch/xtensa/kernel/platform.c @@ -28,8 +28,6 @@ =20 _F(void, init, (bp_tag_t *first), { }); _F(void, setup, (char** cmd), { }); -_F(void, halt, (void), { while(1); }); -_F(void, power_off, (void), { while(1); }); _F(void, idle, (void), { __asm__ __volatile__ ("waiti 0" ::: "memory"); }); =20 #ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT diff --git a/arch/xtensa/kernel/setup.c b/arch/xtensa/kernel/setup.c index 8f72039335c2..5680391d7e35 100644 --- a/arch/xtensa/kernel/setup.c +++ b/arch/xtensa/kernel/setup.c @@ -533,14 +533,20 @@ void machine_restart(char * cmd) =20 void machine_halt(void) { - platform_halt(); - while (1); + local_irq_disable(); + smp_send_stop(); + do_kernel_power_off(); + while (1) + cpu_relax(); } =20 void machine_power_off(void) { - platform_power_off(); - while (1); + local_irq_disable(); + smp_send_stop(); + do_kernel_power_off(); + while (1) + cpu_relax(); } #ifdef CONFIG_PROC_FS =20 diff --git a/arch/xtensa/platforms/iss/setup.c b/arch/xtensa/platforms/iss/= setup.c index a7009f223ef2..0f1fe132691e 100644 --- a/arch/xtensa/platforms/iss/setup.c +++ b/arch/xtensa/platforms/iss/setup.c @@ -25,16 +25,11 @@ #include =20 =20 -void platform_halt(void) -{ - pr_info(" ** Called platform_halt() **\n"); - simc_exit(0); -} - -void platform_power_off(void) +static int iss_power_off(struct sys_off_data *unused) { pr_info(" ** Called platform_power_off() **\n"); simc_exit(0); + return NOTIFY_DONE; } =20 static int iss_restart(struct notifier_block *this, @@ -90,4 +85,7 @@ void __init platform_setup(char **p_cmdline) =20 atomic_notifier_chain_register(&panic_notifier_list, &iss_panic_block); register_restart_handler(&iss_restart_block); + register_sys_off_handler(SYS_OFF_MODE_POWER_OFF, + SYS_OFF_PRIO_PLATFORM, + iss_power_off, NULL); } diff --git a/arch/xtensa/platforms/xt2000/setup.c b/arch/xtensa/platforms/x= t2000/setup.c index 71b57ab50599..258e01a51fd8 100644 --- a/arch/xtensa/platforms/xt2000/setup.c +++ b/arch/xtensa/platforms/xt2000/setup.c @@ -42,18 +42,12 @@ static void led_print (int f, char *s) break; } =20 -void platform_halt(void) -{ - led_print (0, " HALT "); - local_irq_disable(); - while (1); -} - -void platform_power_off(void) +static int xt2000_power_off(struct sys_off_data *unused) { led_print (0, "POWEROFF"); local_irq_disable(); while (1); + return NOTIFY_DONE; } =20 static int xt2000_restart(struct notifier_block *this, @@ -147,6 +141,9 @@ static int __init xt2000_setup_devinit(void) platform_device_register(&xt2000_sonic_device); mod_timer(&heartbeat_timer, jiffies + HZ / 2); register_restart_handler(&xt2000_restart_block); + register_sys_off_handler(SYS_OFF_MODE_POWER_OFF, + SYS_OFF_PRIO_DEFAULT, + xt2000_power_off, NULL); return 0; } =20 diff --git a/arch/xtensa/platforms/xtfpga/setup.c b/arch/xtensa/platforms/x= tfpga/setup.c index 1690232c003e..a2432f081710 100644 --- a/arch/xtensa/platforms/xtfpga/setup.c +++ b/arch/xtensa/platforms/xtfpga/setup.c @@ -33,20 +33,13 @@ #include #include =20 -void platform_halt(void) -{ - lcd_disp_at_pos(" HALT ", 0); - local_irq_disable(); - while (1) - cpu_relax(); -} - -void platform_power_off(void) +static int xtfpga_power_off(struct sys_off_data *unused) { lcd_disp_at_pos("POWEROFF", 0); local_irq_disable(); while (1) cpu_relax(); + return NOTIFY_DONE; } =20 static int xtfpga_restart(struct notifier_block *this, @@ -79,6 +72,9 @@ void __init platform_calibrate_ccount(void) static void __init xtfpga_register_handlers(void) { register_restart_handler(&xtfpga_restart_block); + register_sys_off_handler(SYS_OFF_MODE_POWER_OFF, + SYS_OFF_PRIO_DEFAULT, + xtfpga_power_off, NULL); } =20 #ifdef CONFIG_USE_OF --=20 2.30.2 From nobody Sun Feb 8 20:32:53 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A0275C7EE25 for ; Fri, 9 Jun 2023 02:23:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237810AbjFICXR (ORCPT ); Thu, 8 Jun 2023 22:23:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40032 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237950AbjFICXA (ORCPT ); Thu, 8 Jun 2023 22:23:00 -0400 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BA0BF2722 for ; Thu, 8 Jun 2023 19:22:59 -0700 (PDT) Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-1b02085bf8dso2812735ad.0 for ; Thu, 08 Jun 2023 19:22:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686277379; x=1688869379; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sUVBNCQGyo+QN3Hkp2oJ23QwW9HMZGUB1INfMEzS56M=; b=Y0jCoIRR5kFIDJcevgzt8JSOfThfEoJvqWgsx8u5RCINmYkEv1RaaahRM+BGYjjbzx aMQmwhh0D8AvW2vCjnnbcLus8Z5LDuIRiZJ1eDm626ySuiBCXz2KrkFlPr0E8AOHWhlE RLlVsVrGUpFeRwHlIOzcCI2RYaS1PlGWPqOfIoNTi+0gWFB8E6mnKoeE1DEFeaemqstz JAwaf+w3Y6qIgfNDAjFoIt5mJX81iQ8v8kkJz4leGuPpIGMJeS3nTfhakl5/ikEEZOtO S16Fn/AipROSuAmmHEtzSICyC/g5dAUn9vUYJaeARVweZf7TPndrBoeXJ1cSr6vQy0z5 5Xkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686277379; x=1688869379; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sUVBNCQGyo+QN3Hkp2oJ23QwW9HMZGUB1INfMEzS56M=; b=e6dO1t7NHANR2+7ZgAWMZtNBiK5dE/OsHM+gYBn83hQ0smahUuN1PzctTxcxIxSJXb jbLsjhhHCI36hAM1lF6f+kSunhNUGk5Tq6Ly2AjlTnvZnUk3wlpWP1MLUPpEVL6Tlman NWe3V+5vhl0IsCRJ9JRt6b4msyPmA7m6Go+Lnn6+Qv+t54iF/1ynog9jRDNKi6X0l/80 vqRXwTD6V9ynDPmRVvRUKrO50Pi0O/XS9vF1JKoU00YC8gQwSNFbL2xVoHHVMmTYd1ew xaIJezS8L3JqE+kZd4uEt8MrvKoaO0285or4vNkmwpUKNfHZP5qoe+/JftY0WXvHfWcg nk6Q== X-Gm-Message-State: AC+VfDyrNEV4G79NU4CCPPSf7RsVAbJ3UUVqwmuZ2LQo3NhXIkxXTuP1 prunzNXY/DAVckSvNcTsfqnbdVpqrsU= X-Google-Smtp-Source: ACHHUZ6oY/eQvf+W4ubAqcV6Laky7bKYH0/gMvowwHHoaoiuZq7+d4kirGr+OJ74EZPk8ap7JDkAuw== X-Received: by 2002:a17:902:bc46:b0:1b1:8730:8d9f with SMTP id t6-20020a170902bc4600b001b187308d9fmr71673plz.14.1686277378987; Thu, 08 Jun 2023 19:22:58 -0700 (PDT) Received: from octofox.hsd1.ca.comcast.net ([2601:641:401:1d20:3aa3:2af1:e3f1:5039]) by smtp.gmail.com with ESMTPSA id w22-20020a1709027b9600b001ac95be5081sm2014846pll.307.2023.06.08.19.22.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Jun 2023 19:22:58 -0700 (PDT) From: Max Filippov To: linux-kernel@vger.kernel.org Cc: Chris Zankel , Max Filippov Subject: [PATCH 5/5] xtensa: clean up default platform functions Date: Thu, 8 Jun 2023 19:22:40 -0700 Message-Id: <20230609022240.1694244-6-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230609022240.1694244-1-jcmvbkbc@gmail.com> References: <20230609022240.1694244-1-jcmvbkbc@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Drop _F macro used to define default platform functions and rewrite definitions as normal functions. Don't define separate __platform_* function and platform_* weak alias, just define a weak function. Signed-off-by: Max Filippov --- arch/xtensa/kernel/platform.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/arch/xtensa/kernel/platform.c b/arch/xtensa/kernel/platform.c index 29fa5d659274..926b8bf0f14c 100644 --- a/arch/xtensa/kernel/platform.c +++ b/arch/xtensa/kernel/platform.c @@ -17,23 +17,28 @@ #include #include =20 -#define _F(r,f,a,b) \ - r __platform_##f a b; \ - r platform_##f a __attribute__((weak, alias("__platform_"#f))) - /* * Default functions that are used if no platform specific function is def= ined. - * (Please, refer to include/asm-xtensa/platform.h for more information) + * (Please, refer to arch/xtensa/include/asm/platform.h for more informati= on) */ =20 -_F(void, init, (bp_tag_t *first), { }); -_F(void, setup, (char** cmd), { }); -_F(void, idle, (void), { __asm__ __volatile__ ("waiti 0" ::: "memory"); }); +void __weak __init platform_init(bp_tag_t *first) +{ +} + +void __weak __init platform_setup(char **cmd) +{ +} + +void __weak platform_idle(void) +{ + __asm__ __volatile__ ("waiti 0" ::: "memory"); +} =20 #ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT -_F(void, calibrate_ccount, (void), +void __weak platform_calibrate_ccount(void) { pr_err("ERROR: Cannot calibrate cpu frequency! Assuming 10MHz.\n"); ccount_freq =3D 10 * 1000000UL; -}); +} #endif --=20 2.30.2