From patchwork Tue Dec 22 06:22:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pragnesh Patel X-Patchwork-Id: 1419258 X-Patchwork-Delegate: uboot@andestech.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=sifive.com header.i=@sifive.com header.a=rsa-sha256 header.s=google header.b=f4qskugl; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4D0R9H1j9wz9sWP for ; Tue, 22 Dec 2020 17:23:15 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8031D829DB; Tue, 22 Dec 2020 07:23:09 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=sifive.com header.i=@sifive.com header.b="f4qskugl"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 018E382A08; Tue, 22 Dec 2020 07:23:07 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-qt1-x82a.google.com (mail-qt1-x82a.google.com [IPv6:2607:f8b0:4864:20::82a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id EFF738277D for ; Tue, 22 Dec 2020 07:23:03 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=pragnesh.patel@sifive.com Received: by mail-qt1-x82a.google.com with SMTP id z20so8355309qtq.3 for ; Mon, 21 Dec 2020 22:23:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id; bh=g3HYQu0X4QrN5rxClwxa+JW3QzOviWsS8mSRmu1JT9I=; b=f4qskuglObXIHZFQX4FHOr0R0XxfqOQr4TeaqrSkYSK+wf5RUWl/44I055ot2nIYjB i5Vo91+Ud+OqC3jN2/AZZJ4VLHGwTkx0v7JmI7HtJHuvI/EZGkUyCZzfjmr18372XGbg D2ISLXrzicC3chbEAYOh4BD/p+ESQbCWLpobwJ6GjJtiwhyG3Tf6MsOCthxQI1Cb8wxt 8w3lYo38nXUteI8tQKiAWSrdTMELcB6jmF5XYARBAq/RWG1Ew8FK1nJNerxJbAZqMa73 DZYpwYBhoLtSpXpLMGa+rIkno9mjCzOSKuuXo0jltYeokEKBA6lIHLoFA/TtJxh5GXRR H+eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=g3HYQu0X4QrN5rxClwxa+JW3QzOviWsS8mSRmu1JT9I=; b=Uj2cwKVj13+OmEcyXp0vtG555NPxb3e0eH2c16T1sUi22ENWJjAqnHlgvc9mTVltmQ JNpfGN1xV+4jmNdESGclNuQ+o7aap8PPul9D9371o74xMO+Zn3xm48nhOUpSQkDpmHXl z8fIitSbvqTiEYv+RpdzD8U2I7j6dbGFFzXYqHaVJOOADeIfmSRKsFL50x+RR9lb3WIy rgvVl71inCDerPRBRnaXYKbjLrLzyG/vg8+Ay0dE5oO5CYGFsbPdXXgcnuQ8b4EfC1Pl SFpkknsQ+bztVlYIXITBt7QqMKqNA/yaZlREskDGLKG4fpB+Zz0aQFZl30RxII/dUkVU iOmg== X-Gm-Message-State: AOAM5311p22igJ5pXf2P0Qnni1Odv/dPk8oPgSnubsiecGx3OyFWF/JF fJGzNAjvwpEN7uGzeLSlTbT0gptskupB7mjkBgk= X-Google-Smtp-Source: ABdhPJyeod+GtFunB6TK4BqjbDSOqMJNbj75kU5QHOono2bFC6Po7lefjOdFaRP65lKjK2qCzjMbeg== X-Received: by 2002:ac8:5bc9:: with SMTP id b9mr20156940qtb.195.1608618182395; Mon, 21 Dec 2020 22:23:02 -0800 (PST) Received: from sachinj2-OptiPlex-7010.open-silicon.com ([114.143.65.226]) by smtp.gmail.com with ESMTPSA id n3sm11837023qtp.72.2020.12.21.22.22.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Dec 2020 22:23:01 -0800 (PST) From: Pragnesh Patel To: u-boot@lists.denx.de Cc: atish.patra@wdc.com, palmerdabbelt@google.com, bmeng.cn@gmail.com, paul.walmsley@sifive.com, anup.patel@wdc.com, sagar.kadam@sifive.com, rick@andestech.com, pragnesh.patel@openfive.com, Pragnesh Patel , Simon Glass , Stefan Roese , Joao Marcos Costa , Reuben Dowle , Weijie Gao , Marcin Juszkiewicz , Michael Walle , Marek Szyprowski , Keerthy Subject: [PATCH v2 1/2] trace: select TIMER_EARLY to avoid infinite recursion Date: Tue, 22 Dec 2020 11:52:35 +0530 Message-Id: <20201222062236.27372-1-pragnesh.patel@sifive.com> X-Mailer: git-send-email 2.17.1 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean When tracing functions is enabled this adds calls to __cyg_profile_func_enter() and __cyg_profile_func_exit() to the traced functions. __cyg_profile_func_enter() and __cyg_profile_func_exit() invoke timer_get_us() to record the entry and exit time. initr_dm() will make gd->dm_root = NULL and gd->timer = NULL, so timer_get_us() -> get_ticks() -> dm_timer_init() will lead to an indefinite recursion. So select TIMER_EARLY when tracing got enabled. Signed-off-by: Pragnesh Patel Reviewed-by: Simon Glass Reviewed-by: Rick Chen --- Changes in v2: - new patch lib/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/Kconfig b/lib/Kconfig index 7673d2e4e0..671386963a 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -210,6 +210,7 @@ config BITREVERSE config TRACE bool "Support for tracing of function calls and timing" imply CMD_TRACE + select TIMER_EARLY help Enables function tracing within U-Boot. This allows recording of call traces including timing information. The command can write data to From patchwork Tue Dec 22 06:22:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pragnesh Patel X-Patchwork-Id: 1419259 X-Patchwork-Delegate: uboot@andestech.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=sifive.com header.i=@sifive.com header.a=rsa-sha256 header.s=google header.b=jyR4gmNQ; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4D0R9S42M2z9sWP for ; Tue, 22 Dec 2020 17:23:24 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 2FB3382A14; Tue, 22 Dec 2020 07:23:20 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=sifive.com header.i=@sifive.com header.b="jyR4gmNQ"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4D31982A16; Tue, 22 Dec 2020 07:23:17 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-qt1-x832.google.com (mail-qt1-x832.google.com [IPv6:2607:f8b0:4864:20::832]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id B246082A11 for ; Tue, 22 Dec 2020 07:23:13 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=pragnesh.patel@sifive.com Received: by mail-qt1-x832.google.com with SMTP id 2so8332181qtt.10 for ; Mon, 21 Dec 2020 22:23:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9HDb9ZOuIoHf92VnB3EvTCzCdk4m+YlEsl7aNJoP3Pg=; b=jyR4gmNQ3+VJbOi5mf7QldXpXqyCBUAyIt0q/re0Vh/eNPQeFj3nutVmYd1KkFDRL/ hLslks2xB0LJaIAXPniVBs1v84B8TCStFsvKj8/LfvH7oDya3WTr1Cv9uA1OABGLtAAt ZU5gHBJd4CuzPYMBXEpSIsNV5KM/Yvfi3kVs74mSWfA+5bIyeYb/rnE1Blx3XbLOeNa3 fR6yaDBs9Wzkiz6qjKrCcdEBtovaKbxeMtSc7N5x3v139nTT9AdfFDb/yV0gIVldHlER hMItSGX01IMbUI3IDXemscS0T2o9B0eGA77+unkS8alxGmh63nvkdWHCz8VAMPjLkbGi Lsjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9HDb9ZOuIoHf92VnB3EvTCzCdk4m+YlEsl7aNJoP3Pg=; b=CJ+X8Rr20BRyj1YfGfyn5nJT0CowxZU9xFSWIorgY5EgV0K453q0e+vkDlkli4b9nU CzYBiFZFqz/bZC/VhV9uM8aOubY8+nwA/7a30ZetRcuP97/yUTUejeBa4MjQeJWfVGq3 gakmlRfs5uIFD0PCWvBi8yV9OOnwPuDUJ/NjplBbRXjC/1BkhuuCiX7EM58z7fG1+ce5 YN9EU3rI9VnmG3J7PROvDxTgthH7YDBYWOI6p3GuXBv3mtO+Zt4sEAdN8nXvZivs7CxD 4H81dX+5Y7p5kEke1FfVRzToh7rSi5lN6WcJ1NdLVo0+2Oszcj5/aEJq6HVuA/N5mOOM IEiw== X-Gm-Message-State: AOAM531msEuQiF9r99flbQNk9YQHywd+asgnbotN+4I3Ol9jgvBXlrGO k7ZsShYsvd3Zw0FRCixt2azInLaxdrAPekA2mkY= X-Google-Smtp-Source: ABdhPJwD326HpppdLLK7MbcZdXNXxccczvlDbv61/UiGMLNfav50RFp7VF5vWly+KkUJw6J9F4R7Ow== X-Received: by 2002:aed:29c2:: with SMTP id o60mr19775186qtd.253.1608618192289; Mon, 21 Dec 2020 22:23:12 -0800 (PST) Received: from sachinj2-OptiPlex-7010.open-silicon.com ([114.143.65.226]) by smtp.gmail.com with ESMTPSA id n3sm11837023qtp.72.2020.12.21.22.23.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Dec 2020 22:23:11 -0800 (PST) From: Pragnesh Patel To: u-boot@lists.denx.de Cc: atish.patra@wdc.com, palmerdabbelt@google.com, bmeng.cn@gmail.com, paul.walmsley@sifive.com, anup.patel@wdc.com, sagar.kadam@sifive.com, rick@andestech.com, pragnesh.patel@openfive.com, Pragnesh Patel , Palmer Dabbelt , Sean Anderson , Claudiu Beznea , Simon Glass Subject: [PATCH v2 2/2] riscv: timer: Add support for an early timer Date: Tue, 22 Dec 2020 11:52:36 +0530 Message-Id: <20201222062236.27372-2-pragnesh.patel@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201222062236.27372-1-pragnesh.patel@sifive.com> References: <20201222062236.27372-1-pragnesh.patel@sifive.com> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean Added support for timer_early_get_count() and timer_early_get_rate() This is mostly useful in tracing. Signed-off-by: Pragnesh Patel Reviewed-by: Rick Chen --- Changes in v2: - make u-boot compile for qemu (include/configs/qemu-riscv.h) drivers/timer/andes_plmt_timer.c | 21 ++++++++++++++++++++- drivers/timer/riscv_timer.c | 21 ++++++++++++++++++++- drivers/timer/sifive_clint_timer.c | 21 ++++++++++++++++++++- include/configs/ax25-ae350.h | 5 +++++ include/configs/qemu-riscv.h | 5 +++++ include/configs/sifive-fu540.h | 5 +++++ 6 files changed, 75 insertions(+), 3 deletions(-) diff --git a/drivers/timer/andes_plmt_timer.c b/drivers/timer/andes_plmt_timer.c index cec86718c7..74b795c97a 100644 --- a/drivers/timer/andes_plmt_timer.c +++ b/drivers/timer/andes_plmt_timer.c @@ -17,11 +17,30 @@ /* mtime register */ #define MTIME_REG(base) ((ulong)(base)) -static u64 andes_plmt_get_count(struct udevice *dev) +static u64 notrace andes_plmt_get_count(struct udevice *dev) { return readq((void __iomem *)MTIME_REG(dev->priv)); } +#if CONFIG_IS_ENABLED(RISCV_MMODE) +/** + * timer_early_get_rate() - Get the timer rate before driver model + */ +unsigned long notrace timer_early_get_rate(void) +{ + return RISCV_MMODE_TIMER_FREQ; +} + +/** + * timer_early_get_count() - Get the timer count before driver model + * + */ +u64 notrace timer_early_get_count(void) +{ + return readq((void __iomem *)MTIME_REG(RISCV_MMODE_TIMERBASE)); +} +#endif + static const struct timer_ops andes_plmt_ops = { .get_count = andes_plmt_get_count, }; diff --git a/drivers/timer/riscv_timer.c b/drivers/timer/riscv_timer.c index 21ae184057..a0f71ca897 100644 --- a/drivers/timer/riscv_timer.c +++ b/drivers/timer/riscv_timer.c @@ -16,7 +16,7 @@ #include #include -static u64 riscv_timer_get_count(struct udevice *dev) +static u64 notrace riscv_timer_get_count(struct udevice *dev) { __maybe_unused u32 hi, lo; @@ -31,6 +31,25 @@ static u64 riscv_timer_get_count(struct udevice *dev) return ((u64)hi << 32) | lo; } +#if CONFIG_IS_ENABLED(RISCV_SMODE) +/** + * timer_early_get_rate() - Get the timer rate before driver model + */ +unsigned long notrace timer_early_get_rate(void) +{ + return RISCV_SMODE_TIMER_FREQ; +} + +/** + * timer_early_get_count() - Get the timer count before driver model + * + */ +u64 notrace timer_early_get_count(void) +{ + return riscv_timer_get_count(NULL); +} +#endif + static int riscv_timer_probe(struct udevice *dev) { struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev); diff --git a/drivers/timer/sifive_clint_timer.c b/drivers/timer/sifive_clint_timer.c index 00ce0f08d6..9ae05a0e7e 100644 --- a/drivers/timer/sifive_clint_timer.c +++ b/drivers/timer/sifive_clint_timer.c @@ -14,11 +14,30 @@ /* mtime register */ #define MTIME_REG(base) ((ulong)(base) + 0xbff8) -static u64 sifive_clint_get_count(struct udevice *dev) +static u64 notrace sifive_clint_get_count(struct udevice *dev) { return readq((void __iomem *)MTIME_REG(dev->priv)); } +#if CONFIG_IS_ENABLED(RISCV_MMODE) +/** + * timer_early_get_rate() - Get the timer rate before driver model + */ +unsigned long notrace timer_early_get_rate(void) +{ + return RISCV_MMODE_TIMER_FREQ; +} + +/** + * timer_early_get_count() - Get the timer count before driver model + * + */ +u64 notrace timer_early_get_count(void) +{ + return readq((void __iomem *)MTIME_REG(RISCV_MMODE_TIMERBASE)); +} +#endif + static const struct timer_ops sifive_clint_ops = { .get_count = sifive_clint_get_count, }; diff --git a/include/configs/ax25-ae350.h b/include/configs/ax25-ae350.h index b2606e794d..bd9c371f83 100644 --- a/include/configs/ax25-ae350.h +++ b/include/configs/ax25-ae350.h @@ -17,6 +17,11 @@ #endif #endif +#define RISCV_MMODE_TIMERBASE 0xe6000000 +#define RISCV_MMODE_TIMER_FREQ 60000000 + +#define RISCV_SMODE_TIMER_FREQ 60000000 + /* * CPU and Board Configuration Options */ diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h index a2f33587c2..5291de83f8 100644 --- a/include/configs/qemu-riscv.h +++ b/include/configs/qemu-riscv.h @@ -29,6 +29,11 @@ #define CONFIG_STANDALONE_LOAD_ADDR 0x80200000 +#define RISCV_MMODE_TIMERBASE 0x2000000 +#define RISCV_MMODE_TIMER_FREQ 1000000 + +#define RISCV_SMODE_TIMER_FREQ 1000000 + /* Environment options */ #ifndef CONFIG_SPL_BUILD diff --git a/include/configs/sifive-fu540.h b/include/configs/sifive-fu540.h index c1c79db147..0d69d1c548 100644 --- a/include/configs/sifive-fu540.h +++ b/include/configs/sifive-fu540.h @@ -36,6 +36,11 @@ #define CONFIG_STANDALONE_LOAD_ADDR 0x80200000 +#define RISCV_MMODE_TIMERBASE 0x2000000 +#define RISCV_MMODE_TIMER_FREQ 1000000 + +#define RISCV_SMODE_TIMER_FREQ 1000000 + /* Environment options */ #ifndef CONFIG_SPL_BUILD