From: Harald Seiler <hws@denx.de>
To: u-boot@lists.denx.de
Subject: [PATCH 0/4] Remove addr parameter from reset_cpu()
Date: Tue, 15 Dec 2020 16:47:48 +0100 [thread overview]
Message-ID: <cover.1608045173.git.hws@denx.de> (raw)
Hi,
this is something I had on my mind for a longer time but never got
around to actually do until now ... A while back, while working on the
patchset that led to commit c5635a032a4b ("ARM: imx8m: Don't use the
addr parameter of reset_cpu()"), I noticed that the `addr` parameter of
reset_cpu() seems to not actually hold any meaningful value. All
call-sites in the current tree just pass 0 and the vast majority of
reset_cpu() implementations actually ignore the parameter.
I dug a bit deeper to find out why this `addr` parameter exists in the
first place and found out that it's mostly a legacy artifact:
Historically, the reset_cpu() function had this `addr` parameter to
pass an address of a reset vector location, where the CPU should
reset to.
The times where this was used are long gone and the only trace it left
is some (dead) code for the NDS32 arch. The `addr` parameter lived on
and it looks like it was sometimes used as a way to indicate different
types of resets (e.g. COLD vs WARM).
Today, however, reset_cpu() is only ever called with `addr` 0 in the
mainline tree and as such, any code that gives a meaning to the `addr`
value will only ever follow the `addr == 0` branch. This is probably
not what the authors intended and as it seems quite unobvious to me,
I think the best way forward is to remove the `addr` parameter entirely.
This removes any ambiguity in the "contract" of reset_cpu() and thus
hopefully prevents more code being added which wrongly assumes that the
parameter can be used for any meaningful purpose. Instead, code which
wants to properly support multiple reset types needs to be implemented
as a sysreset driver.
I did this API change via a coccinelle patch, see "reset: Remove addr
parameter from reset_cpu()" for details. I also ran buildman for all
boards I could, to verify that everything still compiles. One notable
exception is NDS32 because I couldn't get the compiler to work there ...
Regards,
Harald
Harald Seiler (4):
nds32: Remove dead reset_cpu() implementation
board: ns3: Remove superfluous reset logic
Revert "lpc32xx: cpu: add support for soft reset"
reset: Remove addr parameter from reset_cpu()
arch/arc/lib/reset.c | 4 ++--
arch/arm/cpu/arm920t/ep93xx/cpu.c | 2 +-
arch/arm/cpu/arm920t/imx/timer.c | 2 +-
arch/arm/cpu/arm926ejs/armada100/timer.c | 2 +-
arch/arm/cpu/arm926ejs/mx25/reset.c | 2 +-
arch/arm/cpu/arm926ejs/mx27/reset.c | 2 +-
arch/arm/cpu/arm926ejs/mxs/mxs.c | 4 ++--
arch/arm/cpu/arm926ejs/spear/reset.c | 2 +-
arch/arm/cpu/arm946es/cpu.c | 2 +-
arch/arm/cpu/armv7/bcm281xx/reset.c | 2 +-
arch/arm/cpu/armv7/bcmcygnus/reset.c | 2 +-
arch/arm/cpu/armv7/bcmnsp/reset.c | 2 +-
arch/arm/cpu/armv7/ls102xa/cpu.c | 2 +-
arch/arm/cpu/armv7/s5p4418/cpu.c | 2 +-
arch/arm/cpu/armv7/stv0991/reset.c | 2 +-
arch/arm/cpu/armv7m/cpu.c | 2 +-
arch/arm/cpu/armv8/fsl-layerscape/cpu.c | 4 ++--
arch/arm/cpu/armv8/s32v234/generic.c | 2 +-
arch/arm/cpu/pxa/pxa2xx.c | 4 ++--
arch/arm/cpu/sa1100/cpu.c | 2 +-
arch/arm/lib/interrupts.c | 2 +-
arch/arm/lib/interrupts_m.c | 2 +-
arch/arm/lib/reset.c | 2 +-
arch/arm/mach-at91/arm920t/reset.c | 2 +-
arch/arm/mach-at91/arm926ejs/reset.c | 2 +-
arch/arm/mach-at91/armv7/reset.c | 2 +-
arch/arm/mach-bcm283x/reset.c | 2 +-
arch/arm/mach-davinci/reset.c | 2 +-
arch/arm/mach-exynos/soc.c | 2 +-
arch/arm/mach-imx/imx8m/soc.c | 2 +-
arch/arm/mach-imx/mx7ulp/soc.c | 2 +-
arch/arm/mach-k3/common.c | 2 +-
arch/arm/mach-keystone/ddr3.c | 4 ++--
arch/arm/mach-keystone/init.c | 2 +-
arch/arm/mach-kirkwood/cpu.c | 2 +-
arch/arm/mach-lpc32xx/cpu.c | 23 +++++-------------
arch/arm/mach-mediatek/mt7622/init.c | 2 +-
arch/arm/mach-mediatek/mt8512/init.c | 2 +-
arch/arm/mach-mediatek/mt8516/init.c | 2 +-
arch/arm/mach-mediatek/mt8518/init.c | 2 +-
arch/arm/mach-meson/board-common.c | 4 ++--
arch/arm/mach-mvebu/armada3700/cpu.c | 2 +-
arch/arm/mach-mvebu/armada8k/cpu.c | 2 +-
arch/arm/mach-mvebu/cpu.c | 2 +-
arch/arm/mach-octeontx/cpu.c | 2 +-
arch/arm/mach-octeontx2/cpu.c | 2 +-
arch/arm/mach-omap2/omap5/hwinit.c | 2 +-
arch/arm/mach-omap2/reset.c | 2 +-
arch/arm/mach-orion5x/cpu.c | 2 +-
arch/arm/mach-owl/soc.c | 2 +-
.../mach-socfpga/include/mach/reset_manager.h | 2 +-
arch/arm/mach-sunxi/board.c | 2 +-
arch/arm/mach-tegra/cmd_enterrcm.c | 2 +-
arch/arm/mach-tegra/pmc.c | 2 +-
arch/arm/mach-uniphier/arm32/psci.c | 2 +-
arch/arm/mach-uniphier/reset.c | 2 +-
arch/arm/mach-zynq/cpu.c | 2 +-
arch/arm/mach-zynqmp-r5/cpu.c | 2 +-
arch/nds32/cpu/n1213/ag101/cpu.c | 2 +-
arch/nds32/cpu/n1213/start.S | 22 -----------------
arch/nds32/lib/interrupts.c | 2 +-
arch/sandbox/cpu/sdl.c | 4 ++--
arch/sh/cpu/sh4/cpu.c | 2 +-
arch/sh/cpu/sh4/watchdog.c | 2 +-
arch/x86/cpu/ivybridge/cpu.c | 2 +-
board/BuR/brppt2/board.c | 2 +-
board/abilis/tb100/tb100.c | 2 +-
.../imx8qm_rom7720_a1/imx8qm_rom7720_a1.c | 2 +-
board/armltd/total_compute/total_compute.c | 2 +-
board/armltd/vexpress/vexpress_common.c | 2 +-
board/armltd/vexpress64/vexpress64.c | 2 +-
.../armadillo-800eva/armadillo-800eva.c | 2 +-
board/beacon/beacon-rzg2m/beacon-rzg2m.c | 2 +-
board/bosch/shc/board.c | 2 +-
board/broadcom/bcmns2/northstar2.c | 2 +-
board/broadcom/bcmns3/ns3.c | 24 +++----------------
board/broadcom/bcmstb/bcmstb.c | 2 +-
board/cavium/thunderx/thunderx.c | 2 +-
board/compulab/cm_t335/spl.c | 2 +-
board/cortina/presidio-asic/presidio.c | 2 +-
board/freescale/imx8qm_mek/imx8qm_mek.c | 2 +-
board/freescale/imx8qxp_mek/imx8qxp_mek.c | 2 +-
board/freescale/mx6memcal/spl.c | 2 +-
board/ge/b1x5v2/spl.c | 2 +-
board/highbank/highbank.c | 2 +-
board/hisilicon/hikey/hikey.c | 2 +-
board/hisilicon/hikey960/hikey960.c | 2 +-
board/hisilicon/poplar/poplar.c | 2 +-
board/kmc/kzm9g/kzm9g.c | 2 +-
board/liebherr/display5/spl.c | 2 +-
board/phytium/durian/durian.c | 2 +-
.../dragonboard410c/dragonboard410c.c | 2 +-
.../dragonboard820c/dragonboard820c.c | 2 +-
board/renesas/alt/alt.c | 2 +-
board/renesas/alt/alt_spl.c | 2 +-
board/renesas/blanche/blanche.c | 2 +-
board/renesas/condor/condor.c | 2 +-
board/renesas/draak/draak.c | 2 +-
board/renesas/eagle/eagle.c | 2 +-
board/renesas/ebisu/ebisu.c | 2 +-
board/renesas/gose/gose.c | 2 +-
board/renesas/gose/gose_spl.c | 2 +-
board/renesas/grpeach/grpeach.c | 2 +-
board/renesas/koelsch/koelsch.c | 2 +-
board/renesas/koelsch/koelsch_spl.c | 2 +-
board/renesas/lager/lager.c | 2 +-
board/renesas/lager/lager_spl.c | 2 +-
board/renesas/porter/porter.c | 2 +-
board/renesas/porter/porter_spl.c | 2 +-
board/renesas/rcar-common/gen3-spl.c | 2 +-
board/renesas/salvator-x/salvator-x.c | 2 +-
board/renesas/silk/silk.c | 2 +-
board/renesas/silk/silk_spl.c | 2 +-
board/renesas/stout/cpld.c | 2 +-
board/renesas/stout/stout_spl.c | 2 +-
board/siemens/capricorn/board.c | 2 +-
board/synopsys/emsdp/emsdp.c | 2 +-
board/synopsys/iot_devkit/iot_devkit.c | 2 +-
board/technexion/pico-imx6ul/spl.c | 2 +-
board/technexion/pico-imx7d/spl.c | 2 +-
board/toradex/apalis-imx8/apalis-imx8.c | 2 +-
board/toradex/apalis-imx8x/apalis-imx8x.c | 2 +-
board/toradex/apalis_imx6/apalis_imx6.c | 2 +-
board/toradex/colibri-imx8x/colibri-imx8x.c | 2 +-
board/toradex/colibri_imx6/colibri_imx6.c | 2 +-
board/toradex/colibri_imx7/colibri_imx7.c | 2 +-
board/xen/xenguest_arm64/xenguest_arm64.c | 2 +-
board/xilinx/versal/board.c | 2 +-
board/xilinx/zynqmp/zynqmp.c | 2 +-
cmd/tpm_test.c | 2 +-
drivers/sysreset/sysreset-uclass.c | 2 +-
drivers/watchdog/imx_watchdog.c | 2 +-
drivers/watchdog/ulp_wdog.c | 2 +-
include/cpu_func.h | 4 ++--
include/sysreset.h | 2 +-
135 files changed, 149 insertions(+), 200 deletions(-)
--
2.26.2
next reply other threads:[~2020-12-15 15:47 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-15 15:47 Harald Seiler [this message]
2020-12-15 15:47 ` [PATCH 1/4] nds32: Remove dead reset_cpu() implementation Harald Seiler
2020-12-19 2:28 ` Simon Glass
[not found] ` <752D002CFF5D0F4FA35C0100F1D73F3FB28D18D9@ATCPCS16.andestech.com>
2020-12-21 0:33 ` Rick Chen
2021-03-03 19:07 ` Tom Rini
2020-12-15 15:47 ` [PATCH 2/4] board: ns3: Remove superfluous reset logic Harald Seiler
2020-12-19 2:28 ` Simon Glass
2021-03-03 19:08 ` Tom Rini
2020-12-15 15:47 ` [PATCH 3/4] Revert "lpc32xx: cpu: add support for soft reset" Harald Seiler
2020-12-15 17:29 ` Sylvain Lemieux
2020-12-17 10:09 ` Harald Seiler
2020-12-17 14:33 ` Sylvain Lemieux
2021-03-03 19:08 ` Tom Rini
2020-12-15 15:47 ` [PATCH 4/4] reset: Remove addr parameter from reset_cpu() Harald Seiler
2020-12-19 2:28 ` Simon Glass
2021-03-03 19:08 ` Tom Rini
2021-03-02 11:35 ` [PATCH 0/4] " Harald Seiler
2021-03-05 4:08 ` Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1608045173.git.hws@denx.de \
--to=hws@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox