[U-Boot] [PATCH v2 00/15] ARM: tegra: Add NVIDIA Jetson Nano Developer Kit support

Thierry Reding thierry.reding at gmail.com
Tue Mar 26 16:00:39 UTC 2019


On Wed, Mar 20, 2019 at 11:22:44AM +0000, Peter Robinson wrote:
> Hi Thierry,
> 
> > This set of patches move some code from the Tegra186 SoC specific
> > directory to a common location so that it can be more easily shared.
> > Since the differences between Tegra186 and earlier generations are
> > now very small, the builds are unified to avoid duplication of code.
> >
> > We also add support for accessing the PMC on systems where it can only
> > be accessed from TrustZone.
> >
> > Finally, all of this is used to implement support for the recently
> > announced NVIDIA Jetson Nano Developer Kit.
> >
> > These patches, along with patches to enable network booting[0], can also
> > be found in the p3450 branch of the following repository:
> >
> >         https://github.com/thierryreding/u-boot
> 
> I've tested this on both the Jetson TX1 and TX2 and I've very pleased
> to see this series. Overall it works fine with the 28.x SDK I've
> tested with in the past. I have one problem, which I also saw with my
> previous hacked up version of the NV patches I had to boot the TX1
> with cboot, when booting with UEFI I get the early boot crash below
> (earlyprintk cmd line args need) but if I put a line in the grub.cfg
> for grub to load the devicetree it boots fine. I suspect, but aren't
> entirely sure, that the fdt_addr_r is getting stomped on somewhere, or
> is inaccessible, when booted with UEFI where it's fine with extlinux
> booting.

I'm not sure I understand exactly how UEFI boot works in conjunction
with U-Boot. Where does the FDT come from in that set up? Does U-Boot
already load it from somewhere and pass it to Linux via UEFI? Or does
U-Boot pass on its builtin FDT? If the latter, that's not something
that we currently support, so I'm not surprised that it doesn't work.

Given the error message before the crash, I think you might get a little
further if you copy the "timer" node from Linux's tegra186.dtsi to that
in U-Boot.

Thierry

> EFI stub: Booting Linux Kernel...
> EFI stub: EFI_RNG_PROTOCOL unavailable, no randomness supplied
> EFI stub: Using DTB from configuration table
> EFI stub: Exiting boot services and installing virtual address map...
> [    0.000000] Booting Linux on physical CPU 0x0000000100 [0x411fd073]
> [    0.000000] Linux version 5.1.0-0.rc1.git0.1.fc29.aarch64
> (perobins at morpheus.roving-it.com) (gcc version 8.1.1 20180626 (Red Hat
> Cross 8.1.1-3) (GCC)) #1 SMP Tue Mar 19 16:05:25 GMT 2019
> [    0.000000] Machine model: NVIDIA P2771-0000-500
> [    0.000000] efi: Getting EFI parameters from FDT:
> [    0.000000] efi: EFI v2.70 by Das U-Boot
> [    0.000000] efi:  SMBIOS=0xefffb000  MEMRESERVE=0xd0915040
> [    0.000000] cma: Reserved 64 MiB at 0x00000000fc000000
> [    0.000000] earlycon: uart0 at MMIO 0x0000000003100000 (options '')
> [    0.000000] printk: bootconsole [uart0] enabled
> [    0.000000] NUMA: No NUMA configuration found
> [    0.000000] NUMA: Faking a node at [mem
> 0x0000000080000000-0x00000002767fffff]
> [    0.000000] NUMA: NODE_DATA [mem 0x2751f1780-0x2751fefff]
> [    0.000000] Zone ranges:
> [    0.000000]   DMA32    [mem 0x0000000080000000-0x00000000ffffffff]
> [    0.000000]   Normal   [mem 0x0000000100000000-0x00000002767fffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000080000000-0x0000000087efafff]
> [    0.000000]   node   0: [mem 0x0000000087efb000-0x0000000087f04fff]
> [    0.000000]   node   0: [mem 0x0000000087f05000-0x00000000efff7fff]
> [    0.000000]   node   0: [mem 0x00000000efff8000-0x00000000efffffff]
> [    0.000000]   node   0: [mem 0x00000000f0200000-0x0000000275ffffff]
> [    0.000000]   node   0: [mem 0x0000000276600000-0x00000002767fffff]
> [    0.000000] Zeroed struct page in unavailable ranges: 18 pages
> [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000002767fffff]
> [    0.000000] On node 0 totalpages: 2056192
> [    0.000000]   DMA32 zone: 8192 pages used for memmap
> [    0.000000]   DMA32 zone: 0 pages reserved
> [    0.000000]   DMA32 zone: 523776 pages, LIFO batch:63
> [    0.000000]   Normal zone: 23968 pages used for memmap
> [    0.000000]   Normal zone: 1532416 pages, LIFO batch:63
> [    0.000000] Failed to find device node for boot cpu
> [    0.000000] missing boot CPU MPIDR, not enabling secondaries
> [    0.000000] percpu: Embedded 23 pages/cpu @(____ptrval____) s55064
> r8192 d30952 u94208
> [    0.000000] pcpu-alloc: s55064 r8192 d30952 u94208 alloc=23*4096
> [    0.000000] pcpu-alloc: [0] 0
> [    0.000000] Detected PIPT I-cache on CPU0
> [    0.000000] CPU features: detected: EL2 vector hardening
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 2024032
> [    0.000000] Policy zone: Normal
> [    0.000000] Kernel command line:
> BOOT_IMAGE=(hd0,msdos2)/vmlinuz-5.1.0-0.rc1.git0.1.fc29.aarch64
> root=UUID=fe563825-bdab-461d-9cbf-e340a971fa61 ro console=ttyS0,115200
> earlycon uefi_debug earlyprintk=serial,ttyS0,115200 debug
> [    0.000000] software IO TLB: mapped [mem 0xf7fff000-0xfbfff000] (64MB)
> [    0.000000] Memory: 7889768K/8224768K available (11068K kernel
> code, 2032K rwdata, 4808K rodata, 5952K init, 935K bss, 269464K
> reserved, 65536K cma-reserved)
> [    0.000000] random: get_random_u64 called from
> kmem_cache_open+0x3c/0x4c0 with crng_init=0
> [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
> [    0.000000] ftrace: allocating 40204 entries in 158 pages
> [    0.000000] rcu: Hierarchical RCU implementation.
> [    0.000000] rcu:RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=1.
> [    0.000000]  Tasks RCU enabled.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay
> is 10 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] GIC: Using split EOI/Deactivate mode
> [    0.000000] timer_probe: no matching timers found
> [    0.000000] Kernel panic - not syncing: Unable to initialise
> architected timer.
> [    0.000000] CPU: 0 PID: 0 Comm: swapper/0 Not tainted
> 5.1.0-0.rc1.git0.1.fc29.aarch64 #1
> [    0.000000] Hardware name: NVIDIA P2771-0000-500 (DT)
> [    0.000000] Call trace:
> [    0.000000]  dump_backtrace+0x0/0x128
> [    0.000000]  show_stack+0x24/0x30
> [    0.000000]  dump_stack+0xa8/0xcc
> [    0.000000]  panic+0x12c/0x2dc
> [    0.000000]  time_init+0x34/0x4c
> [    0.000000]  start_kernel+0x354/0x4c0
> [    0.000000] ---[ end Kernel panic - not syncing: Unable to
> initialise architected timer. ]---
> 
> 
> > Thanks,
> > Thierry
> >
> > [0]: http://patchwork.ozlabs.org/project/uboot/list/?series=96153
> >
> > Thierry Reding (15):
> >   ARM: tegra: Use common header for PMU declarations
> >   ARM: tegra: Guard clock code with a Kconfig symbol
> >   ARM: tegra: Guard GP pad control code with a Kconfig symbol
> >   ARM: tegra: Guard memory controller code with a Kconfig symbol
> >   ARM: tegra: Guard pin controller code with a Kconfig symbol
> >   ARM: tegra: Guard powergate code with a Kconfig symbol
> >   ARM: tegra: Fix save_boot_params() prototype
> >   ARM: tegra: Allow boards to override boot target devices
> >   ARM: tegra: Support TZ-only access to PMC
> >   ARM: tegra: Workaround UDC boot issues only if necessary
> >   ARM: tegra: Restore DRAM bank count
> >   ARM: tegra: Unify Tegra186 builds
> >   ARM: tegra: Implement cboot_save_boot_params() in C
> >   ARM: tegra: Implement cboot_get_ethaddr()
> >   ARM: tegra: Add NVIDIA Jetson Nano Developer Kit support
> >
> >  arch/arm/dts/tegra210-p3450-0000.dts          | 130 ++++++++
> >  arch/arm/include/asm/arch-tegra/cboot.h       |  45 +++
> >  arch/arm/include/asm/arch-tegra/pmc.h         |  20 +-
> >  .../asm/{arch-tegra20 => arch-tegra}/pmu.h    |   6 +-
> >  arch/arm/include/asm/arch-tegra/tegra.h       |   6 +
> >  arch/arm/include/asm/arch-tegra114/pmu.h      |  12 -
> >  arch/arm/include/asm/arch-tegra124/pmu.h      |  13 -
> >  arch/arm/include/asm/arch-tegra210/pmu.h      |  13 -
> >  arch/arm/include/asm/arch-tegra30/pmu.h       |  12 -
> >  arch/arm/mach-tegra/Kconfig                   |  31 ++
> >  arch/arm/mach-tegra/Makefile                  |  16 +-
> >  arch/arm/mach-tegra/board.c                   |  41 ++-
> >  arch/arm/mach-tegra/board186.c                |  32 --
> >  arch/arm/mach-tegra/board2.c                  |  37 ++-
> >  arch/arm/mach-tegra/cache.c                   |   2 +
> >  .../{tegra186/nvtboot_board.c => cboot.c}     | 280 ++++++++++++++++--
> >  arch/arm/mach-tegra/clock.c                   |  13 +-
> >  arch/arm/mach-tegra/cmd_enterrcm.c            |   6 +-
> >  arch/arm/mach-tegra/cpu.c                     |  20 +-
> >  arch/arm/mach-tegra/emc.c                     |   2 +-
> >  arch/arm/mach-tegra/lowlevel_init.S           |  39 ---
> >  arch/arm/mach-tegra/pmc.c                     |  92 ++++++
> >  arch/arm/mach-tegra/powergate.c               |  11 +-
> >  arch/arm/mach-tegra/tegra186/Makefile         |   4 -
> >  arch/arm/mach-tegra/tegra186/nvtboot_ll.S     |  20 --
> >  arch/arm/mach-tegra/tegra186/nvtboot_mem.c    | 172 -----------
> >  arch/arm/mach-tegra/tegra210/Kconfig          |   7 +
> >  board/nvidia/p2771-0000/p2771-0000.c          |  10 +-
> >  board/nvidia/p3450-0000/Kconfig               |  12 +
> >  board/nvidia/p3450-0000/MAINTAINERS           |   6 +
> >  board/nvidia/p3450-0000/Makefile              |   8 +
> >  board/nvidia/p3450-0000/p3450-0000.c          | 143 +++++++++
> >  .../p3450-0000/pinmux-config-p3450-0000.h     | 257 ++++++++++++++++
> >  configs/p2771-0000-000_defconfig              |   2 +-
> >  configs/p2771-0000-500_defconfig              |   2 +-
> >  configs/p3450-0000_defconfig                  |  54 ++++
> >  include/configs/p3450-0000.h                  |  44 +++
> >  include/configs/tegra-common-post.h           |   2 +
> >  38 files changed, 1230 insertions(+), 392 deletions(-)
> >  create mode 100644 arch/arm/dts/tegra210-p3450-0000.dts
> >  create mode 100644 arch/arm/include/asm/arch-tegra/cboot.h
> >  rename arch/arm/include/asm/{arch-tegra20 => arch-tegra}/pmu.h (73%)
> >  delete mode 100644 arch/arm/include/asm/arch-tegra114/pmu.h
> >  delete mode 100644 arch/arm/include/asm/arch-tegra124/pmu.h
> >  delete mode 100644 arch/arm/include/asm/arch-tegra210/pmu.h
> >  delete mode 100644 arch/arm/include/asm/arch-tegra30/pmu.h
> >  delete mode 100644 arch/arm/mach-tegra/board186.c
> >  rename arch/arm/mach-tegra/{tegra186/nvtboot_board.c => cboot.c} (50%)
> >  delete mode 100644 arch/arm/mach-tegra/lowlevel_init.S
> >  create mode 100644 arch/arm/mach-tegra/pmc.c
> >  delete mode 100644 arch/arm/mach-tegra/tegra186/nvtboot_ll.S
> >  delete mode 100644 arch/arm/mach-tegra/tegra186/nvtboot_mem.c
> >  create mode 100644 board/nvidia/p3450-0000/Kconfig
> >  create mode 100644 board/nvidia/p3450-0000/MAINTAINERS
> >  create mode 100644 board/nvidia/p3450-0000/Makefile
> >  create mode 100644 board/nvidia/p3450-0000/p3450-0000.c
> >  create mode 100644 board/nvidia/p3450-0000/pinmux-config-p3450-0000.h
> >  create mode 100644 configs/p3450-0000_defconfig
> >  create mode 100644 include/configs/p3450-0000.h
> >
> > --
> > 2.21.0
> >
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > https://lists.denx.de/listinfo/u-boot
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190326/ea407e30/attachment.sig>


More information about the U-Boot mailing list