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.