Re: [PATCH v10 12/15] memory: tegra: Introduce Tegra30 EMC driver

From: Dmitry Osipenko
Date: Fri Nov 15 2019 - 08:17:50 EST


15.11.2019 15:54, Jon Hunter ÐÐÑÐÑ:
>
> On 11/08/2019 22:00, Dmitry Osipenko wrote:
>> Introduce driver for the External Memory Controller (EMC) found on Tegra30
>> chips, it controls the external DRAM on the board. The purpose of this
>> driver is to program memory timing for external memory on the EMC clock
>> rate change.
>>
>> Acked-by: Peter De Schrijver <pdeschrijver@xxxxxxxxxx>
>> Signed-off-by: Dmitry Osipenko <digetx@xxxxxxxxx>
>> ---
>> drivers/memory/tegra/Kconfig | 10 +
>> drivers/memory/tegra/Makefile | 1 +
>> drivers/memory/tegra/mc.c | 9 +-
>> drivers/memory/tegra/mc.h | 30 +-
>> drivers/memory/tegra/tegra30-emc.c | 1232 ++++++++++++++++++++++++++++
>> drivers/memory/tegra/tegra30.c | 42 +
>> include/soc/tegra/mc.h | 2 +-
>> 7 files changed, 1311 insertions(+), 15 deletions(-)
>> create mode 100644 drivers/memory/tegra/tegra30-emc.c
>
> This patch is causing the following crash on Tegra30-cardhu-a04 on
> entering suspend ...
>
> [ 58.320034] 8<--- cut here ---
> [ 58.323166] Unable to handle kernel NULL pointer dereference at virtual address 0000004c
> [ 58.331262] pgd = 62bca252
> [ 58.334028] [0000004c] *pgd=00000000
> [ 58.337615] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
> [ 58.342927] Modules linked in: brcmfmac brcmutil
> [ 58.347559] CPU: 1 PID: 689 Comm: rtcwake Tainted: G W 5.4.0-rc6-next-20191108 #1
> [ 58.356343] Hardware name: NVIDIA Tegra SoC (Flattened Device Tree)
> [ 58.362620] PC is at tegra_emc_suspend+0x4/0x50
> [ 58.367161] LR is at dpm_run_callback+0x38/0x1d4
> [ 58.371778] pc : [<c07a9ce0>] lr : [<c05c2a2c>] psr: a0000113
> [ 58.378042] sp : ee3afd98 ip : 00000000 fp : 00000000
> [ 58.383265] r10: c1077e1c r9 : ef254c54 r8 : c1077de4
> [ 58.388488] r7 : c0d1d3e4 r6 : ef254c10 r5 : 00000002 r4 : c05b5e28
> [ 58.395013] r3 : c07a9cdc r2 : 00000000 r1 : c0bbadc4 r0 : ef254c10
> [ 58.401542] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
> [ 58.408677] Control: 10c5387d Table: adcf804a DAC: 00000051
> [ 58.414423] Process rtcwake (pid: 689, stack limit = 0x8afb9f6f)
> [ 58.420429] Stack: (0xee3afd98 to 0xee3b0000)
> [ 58.424787] fd80: ef254c10 c110c438
> [ 58.432969] fda0: 00000000 00000002 c1077de4 ef254c54 c1077e1c c05c30fc 00000000 ef254ca8
> [ 58.441150] fdc0: ef254c10 c1077de4 c110c438 c1077de4 c05c3560 c1077e1c 00000000 c05c5730
> [ 58.449330] fde0: 00000002 c10c3648 c10d3df0 00000000 00000002 00000003 c1004e48 00000004
> [ 58.457511] fe00: ede68100 edf50210 00475228 c05c6030 c10d3dbc 00000000 00000003 c017d16c
> [ 58.465693] fe20: c10c889c 00000004 ede68100 edf50210 00475228 c0181404 c0cbbba4 ee3afe5c
> [ 58.473873] fe40: c10c889c e8e19516 ee3afe5c c1004e48 00000000 00000003 c10c889c 00000004
> [ 58.482054] fe60: ede68100 edf50210 00475228 c017dd18 00000008 e8e19516 00000cc0 00000003
> [ 58.490234] fe80: c0cbeff4 00000003 c10d3dd0 c017c088 00000004 edf50200 00000000 00000000
> [ 58.498415] fea0: ede68100 ee3aff78 edf50210 c02fcfe4 00000000 00000000 c1004e48 c02fceec
> [ 58.506602] fec0: 00476438 ee3aff78 00000000 00476438 00000004 c027a3f0 00000055 00000cc0
> [ 58.514791] fee0: 00000477 00477000 edcf8010 edcf8010 00000000 00000000 00000000 00000000
> [ 58.522981] ff00: ffefe1dc eff2b394 00000000 e8e19516 00000001 ee3affb0 ef2bb700 edf2a200
> [ 58.531166] ff20: 0047743c 00000817 eddd5ad0 e8e19516 edf2a240 00000004 edc53e40 00476438
> [ 58.539352] ff40: ee3aff78 00000000 00476438 00000004 00475228 c027b99c 00000000 00000000
> [ 58.547542] ff60: c1004e48 edc53e40 00000000 00000000 edc53e40 c027bc3c 00000000 00000000
> [ 58.555732] ff80: 00001008 e8e19516 0000006c 00476438 00475228 00000004 c0101204 ee3ae000
> [ 58.563922] ffa0: 00000004 c0101000 0000006c 00476438 00000004 00476438 00000004 00000000
> [ 58.572107] ffc0: 0000006c 00476438 00475228 00000004 00000004 00000004 0046278c 00475228
> [ 58.580294] ffe0: 00000004 be9db9b8 b6eb3c0b b6e3e206 600f0030 00000004 00000000 00000000
> [ 58.588491] [<c07a9ce0>] (tegra_emc_suspend) from [<c110c438>] (0xc110c438)
> [ 58.595466] Code: e7c4321f e5c4304c e8bd8010 e5902040 (e5d2304c)
> [ 58.601656] ---[ end trace 8d7d1a7fb898a1d0 ]---
> [ 88.142888] ------------[ cut here ]------------

Oh, right. I never tried to suspend without memory timings being defined
in DT.

Jon, thank you very much for the report. I'll make a patch to fix that
problem.