Thread (7 messages) 7 messages, 3 authors, 2017-08-23
DORMANTno replies

[PATCH] soc/tegra: Register SoC device

From: arnd@arndb.de (Arnd Bergmann)
Date: 2017-08-23 09:21:02
Also in: linux-tegra

On Wed, Aug 23, 2017 at 11:11 AM, Thierry Reding
[off-list ref] wrote:
On Wed, Aug 23, 2017 at 10:49:36AM +0200, Arnd Bergmann wrote:
quoted
On Tue, Aug 22, 2017 at 1:19 PM, Thierry Reding
[off-list ref] wrote:
quoted
On Tue, Aug 22, 2017 at 11:15:21AM +0100, Sudeep Holla wrote:
quoted

On 17/08/17 15:42, Thierry Reding wrote:
quoted
From: Thierry Reding <redacted>

Move this code from arch/arm/mach-tegra and make it common among 32-bit
and 64-bit Tegra SoCs. This is slightly complicated by the fact that on
32-bit Tegra, the SoC device is used as the parent for all devices that
are instantiated from device tree.
This seem to be in linux-next and causing the below splat on my platform
which is not Tegra :)

WARNING: .... at drivers/soc/tegra/fuse/tegra-apbmisc.c:48
tegra_get_chip_id+0x30/0x40
Modules linked in:
CPU: 2 PID: 1 Comm: swapper/0 Not tainted
4.13.0-rc6-next-20170822-00008-g52a8e57512ae #13
task: ffff8009768a0000 task.stack: ffff000008038000
PC is at tegra_get_chip_id+0x30/0x40
LR is at tegra_get_chip_id+0x30/0x40
 tegra_get_chip_id+0x30/0x40
 tegra_soc_device_register+0x68/0xd0
 tegra_init_soc+0x10/0x44
 do_one_initcall+0x38/0x120
 kernel_init_freeable+0x184/0x224
 kernel_init+0x10/0x100
 ret_from_fork+0x10/0x18
Indeed. Does the below patch fix this?

Thierry
--- >8 ---
From 5706cacc2af5e4ef138d1cd9e1269ca4947a447f Mon Sep 17 00:00:00 2001
From: Thierry Reding <redacted>
Date: Tue, 22 Aug 2017 13:15:18 +0200
Subject: [PATCH] soc/tegra: Restrict SoC device registration to Tegra

Commit 8a46828e623c ("soc/tegra: Register SoC device") added an initcall
to register the SoC device on Tegra. However, that code is unrestricted
and will run on all platforms, causing unwanted warnings.

Fix this by first checking that we're running on hardware that supports
the fuses block that we use to provide SoC information.

Fixes: 8a46828e623c ("soc/tegra: Register SoC device")
Signed-off-by: Thierry Reding <redacted>
I just found the same thing by inspection after running into

drivers/soc/tegra/fuse/fuse-tegra.c:360:0: error: expected ';' at end of input

Please fix that as well.
Done, though it's strange that I didn't see those errors. Are those
compiler errors or sparse errors?
It's from the compiler. I just upgraded to gcc-8, which might explain
it, or it could be configuration (module/built-in) dependent.
I'll be sending out both patches right away.
Thanks!
quoted
Lastly, I believe that tegra_init_fuse() has the same bug, it just doesn't lead
to an Oops, just to a harmless warning message, but please add another
check there, or combine the two checks in some form.
I don't think that's the case. The of_find_matching_node_and_match()
should catch all non-Tegra cases, and the backward-compatibility
fallback has an extra check on the SoC compatible. See the comment on
lines 295-298.

That code is fairly old and I haven't seen anybody bring up any errors
on non-Tegra platforms for that particular piece.
My mistake, I see how it works now. Thanks for checking.

     Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help