On Mon, Aug 21, 2023 at 03:32:41PM +0300, Andy Shevchenko wrote: > On Mon, Aug 21, 2023 at 05:02:20PM +0530, Kartik wrote: > > On Fri, 2023-08-18 at 16:21 +0300, Andy Shevchenko wrote: > > ... > > > >> void tegra_init_revision(void); > > >> void tegra_init_apbmisc(void); > > >> +void tegra_acpi_init_apbmisc(void); > > > > > >Why do you need a separate function? > > > > Function tegra_init_apbmisc() is called from tegra_init_fuse() which > > is invoked at early init and it also has `__init` keyword. If we use > > the same function for both ACPI/DT, then we will get init section > > mismatches when the Tegra Fuse driver probes using ACPI. > > > > We can use the same function by dropping the `init` keyword. But > > the way we are getting the resources for device-tree and on ACPI is > > slightly different. Hence, I kept a separate function for ACPI > > and move the common bits to a function shared between > > tegra_init_apbmisc() and tegra_acpi_init_apbmisc(). > > So, you mean that behaviour is different for ACPI and DT cases. > Then obvious question why DT case can't be delayed to not so early > stage to be run? This requires some explanations, more than given > in the commit message and here. We've done some experiments in the past to unify this and unfortunately we can't. The reason is that some of the old 32-bit ARM code needs some information from the APBMISC registers very early during boot (among other things for SMP support), so delaying this doesn't work. I agree that it would be good to put this into some comment for later reference. Thierry
Attachment:
signature.asc
Description: PGP signature