All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Robinson <pbrobinson@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 00/15] ARM: tegra: Add NVIDIA Jetson Nano Developer Kit support
Date: Tue, 26 Mar 2019 16:06:46 +0000	[thread overview]
Message-ID: <CALeDE9MnHWsHDEPysb_jvtREOZ6KYPia9+euB5OFMMSFoNvg6g@mail.gmail.com> (raw)
In-Reply-To: <20190326160039.GA19180@ulmo>

> > > 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

It's similar to the extlinux support in that it loads it off the disk
if it can find it from the kernel. In my case I tried loading it from
one provided by the kernel on the U-Boot cmd line and running it
manually:

load mmc 1:1 ${kernel_addr_r} efi/fedora/grubaa64.efi
load mmc 1:2 ${fdt_addr_r} /dtb/nvidia/tegra186-p2771-0000.dtb
bootefi ${kernel_addr_r} ${fdt_addr_r}

The above crashed with the one below, if I load it by adding the line
below to the grub config it boots fine.
devicetree ($root)/dtb/nvidia/tegra186-p2771-0000.dtb

> 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.

So if U-Boot can't fine it on disk it will fail back to the one
provided by U-Boot but in the above that's not the case.

> 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.

Possibly but I don't believe it's using the U-Boot DT, at least based
on my experience from all the other platforms we support it should be
loading the kernel provided one off disk, unless the U-Boot it
stomping on that one some how later in the process.

Peter

> 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

  reply	other threads:[~2019-03-26 16:06 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-18 23:24 [U-Boot] [PATCH v2 00/15] ARM: tegra: Add NVIDIA Jetson Nano Developer Kit support Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 01/15] ARM: tegra: Use common header for PMU declarations Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 02/15] ARM: tegra: Guard clock code with a Kconfig symbol Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 03/15] ARM: tegra: Guard GP pad control " Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 04/15] ARM: tegra: Guard memory controller " Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 05/15] ARM: tegra: Guard pin " Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 06/15] ARM: tegra: Guard powergate " Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 07/15] ARM: tegra: Fix save_boot_params() prototype Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 08/15] ARM: tegra: Allow boards to override boot target devices Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 09/15] ARM: tegra: Support TZ-only access to PMC Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 10/15] ARM: tegra: Workaround UDC boot issues only if necessary Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 11/15] ARM: tegra: Restore DRAM bank count Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 12/15] ARM: tegra: Unify Tegra186 builds Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 13/15] ARM: tegra: Implement cboot_save_boot_params() in C Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 14/15] ARM: tegra: Implement cboot_get_ethaddr() Thierry Reding
2019-03-18 23:24 ` [U-Boot] [PATCH v2 15/15] ARM: tegra: Add NVIDIA Jetson Nano Developer Kit support Thierry Reding
2019-03-19 17:18   ` Stephen Warren
2019-03-20 10:37     ` Thierry Reding
2019-03-20 11:22 ` [U-Boot] [PATCH v2 00/15] " Peter Robinson
2019-03-26 16:00   ` Thierry Reding
2019-03-26 16:06     ` Peter Robinson [this message]
2019-03-26 17:19       ` Thierry Reding

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CALeDE9MnHWsHDEPysb_jvtREOZ6KYPia9+euB5OFMMSFoNvg6g@mail.gmail.com \
    --to=pbrobinson@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.