[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Porting Xen to Jetson Nano



On Wed, 29 Jul 2020, srini@xxxxxxxxxx wrote:
> Hi Julien,
> 
> On 2020-07-24 17:25, Julien Grall wrote:
> > On 24/07/2020 16:01, Srinivas Bangalore wrote:
> > 
> > I struggled to find your comment inline as your e-mail client doesn't
> > quote my answer. Please configure your e-mail client to use some form
> > of quoting (the usual is '>').
> > 
> > 
> I have switched to a web-based email client, so I hope this is better now.

Seems better, thank you


> > > (XEN) Freed 296kB init memory.
> > > (XEN) dom0 IPA 0x0000000088080000
> > > (XEN) P2M @ 0000000803fc3d40 mfn:0x17f0f5
> > > (XEN) 0TH[0x0] = 0x004000017f0f377f
> > > (XEN) 1ST[0x2] = 0x02c00000800006fd
> > > (XEN) Mem access check
> > > (XEN) dom0 IPA 0x0000000088080000
> > > (XEN) P2M @ 0000000803fc3d40 mfn:0x17f0f5
> > > (XEN) 0TH[0x0] = 0x004000017f0f377f
> > > (XEN) 1ST[0x2] = 0x02c00000800006fd
> > > (XEN) Mem access check
> > 
> > The instruction abort issue looks normal as the mapping is marked as
> > non-executable.
> > 
> > Looking at the rest of bits, bits 55:58 indicates the type of mapping
> > used. The value suggest the mapping has been considered to be used
> > p2m_mmio_direct_c (RW cacheable MMIO). This looks wrong to me because
> > RAM should be mapped using p2m_ram_rw.
> > 
> > Looking at your DT, it looks like the region is marked as reserved. On
> > Xen 4.8, reserved-memory region are not correctly handled (IIRC this
> > was only fixed in Xen 4.13). This should be possible to confirm by
> > enable CONFIG_DEVICE_TREE_DEBUG in your .config.
> > 
> > The option will debug more information about the mapping to dom0 on
> > your console.
> > 
> > However, given you are using an old release, you are at risk at keep
> > finding bugs that have been resolved in more recent releases. It would
> > probably better if you switch to Xen 4.14 and report any bug you can
> > find there.
> > 
> Ok. I applied to patch series to 4.14. Enabled EARLY_PRINTK, CONFIG_DEBUG and
> DEVICE_TREE_DEBUG.
> Here's the log...
> 
> ## Flattened Device Tree blob at e3500000
>    Booting using the fdt blob at 0xe3500000
>    reserving fdt memory region: addr=80000000 size=20000
>    reserving fdt memory region: addr=e3500000 size=35000
>    Loading Device Tree to 00000000fc7f8000, end 00000000fc82ffff ... OK
> 
> Starting kernel ...
> 
> - UART enabled -
> - Boot CPU booting -
> - Current EL 00000008 -
> - Initialize CPU -
> - Turning on paging -
> - Zero BSS -
> - Ready -
> (XEN) Invalid size for reg
> (XEN) fdt: node `reserved-memory': parsing failed
> (XEN)
> (XEN) MODULE[0]: 00000000e0000000 - 00000000e014b0c8 Xen
> (XEN) MODULE[1]: 00000000fc7f8000 - 00000000fc82d000 Device Tree
> (XEN)  RESVD[0]: 0000000080000000 - 0000000080020000
> (XEN)  RESVD[1]: 00000000e3500000 - 00000000e3535000
> (XEN)  RESVD[2]: 00000000fc7f8000 - 00000000fc82d000
> (XEN)  RESVD[3]: 0000000040001000 - 000000004003ffff
> (XEN)  RESVD[4]: 00000000b0000000 - 00000000b01fffff
> (XEN)
> (XEN)
> (XEN) Command line: console=dtuart sync_console dom0_mem=128M loglvl=debug
> guest_loglvl=debug console_to_ring
> (XEN) Xen BUG at page_alloc.c:398
> (XEN) ----[ Xen-4.14.0  arm64  debug=y   Not tainted ]----
> (XEN) CPU:    0
> (XEN) PC:     00000000002b7b90 alloc_boot_pages+0x38/0x9c
> (XEN) LR:     00000000002cda04
> (XEN) SP:     0000000000307d40
> (XEN) CPSR:   a00003c9 MODE:64-bit EL2h (Hypervisor, handler)
> (XEN)      X0: 000fc80000002000  X1: 0000000000002000  X2: 0000000000000000
> (XEN)      X3: 000fffffffffffff  X4: ffffffffffffffff  X5: 0000000000000000
> (XEN)      X6: 0000000000307df0  X7: 0000000000000003  X8: 0000000000000008
> (XEN)      X9: fffffffffffffffb X10: 0101010101010101 X11: 0000000000000007
> (XEN)     X12: 0000000000000004 X13: ffffffffffffffff X14: ffffffffff000000
> (XEN)     X15: ffffffffffffffff X16: 0000000000000000 X17: 0000000000000000
> (XEN)     X18: 00000000fc834dd0 X19: 00000000002b5000 X20: 00000000fc7f8000
> (XEN)     X21: 00000000fc7f8000 X22: 0000000000000000 X23: fc80000000000038
> (XEN)     X24: 00000000fed9de28 X25: ffffffffffffffff X26: fc80000002000000
> (XEN)     X27: 0000000002000000 X28: 0000000000000000  FP: 0000000000307d40
> (XEN)
> (XEN)   VTCR_EL2: 80000000
> (XEN)  VTTBR_EL2: 0000000000000000
> (XEN)
> (XEN)  SCTLR_EL2: 30cd183d
> (XEN)    HCR_EL2: 0000000000000038
> (XEN)  TTBR0_EL2: 00000000e0145000
> (XEN)
> (XEN)    ESR_EL2: f2000001
> (XEN)  HPFAR_EL2: 0000000000000000
> (XEN)    FAR_EL2: 0000000000000000
> (XEN)
> (XEN) Xen stack trace from sp=0000000000307d40:
> (XEN)    0000000000307df0 00000000002cf114 0000000000000000 0000000000307d68
> (XEN)    00000000fc7f8000 00000000002ceeb0 0000000000400000 00676e69725f6f74
> (XEN)    ffffffffffffffff 0000000000000000 0000000000000000 0000000000307df0
> (XEN)    0000000000307df0 00000000002cef58 000000003fffffff 00000000fc7f8000
> (XEN)    00000000fc7f8000 000fc80000002000 0000000000400000 0080000000000000
> (XEN)    0000000000000000 000000000003ffff 00000000fc831170 00000000002001b8
> (XEN)    00000000e0000000 00000000dfe00000 00000000fc7f8000 0000000000000000
> (XEN)    0000000000400000 00000000fed9de28 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000400 0000000000000000 0000000000035000
> (XEN)    00000000fc7f8000 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000300000000 0000000000000000 00000040ffffffff
> (XEN)    00000000ffffffff 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
> (XEN)    0000000000000000 0000000000000000 0000000000000000 0000000000000000
> (XEN) Xen call trace:
> (XEN)    [<00000000002b7b90>] alloc_boot_pages+0x38/0x9c (PC)
> (XEN)    [<00000000002cda04>] setup_frametable_mappings+0xb4/0x310 (LR)
> (XEN)    [<00000000002cf114>] start_xen+0x3a0/0xc48
> (XEN)    [<00000000002001b8>] arm64/head.o#primary_switched+0x10/0x30
> (XEN)
> (XEN)
> (XEN) ****************************************
> (XEN) Panic on CPU 0:
> (XEN) Xen BUG at page_alloc.c:398
> (XEN) ****************************************
> (XEN)
> (XEN) Reboot in five seconds...
> 
> There seems to be a problem with the DT in the 'reserved-memory' node.  I
> commented out the fb0-carveout, fb1-carveout sections, recompiled and tried to
> boot again.

Yes, those reserved-memory nodes won't work correctly with Xen
unfortunately: they either use "size" instead of "reg" (vpr-carveout) or
they specify "no-map". Only regular "reg" reserved memory regions
without "no-map" are properly parsed by Xen at the moment.



> This time the log shows the device tree messages (see attached log
> file), but Xen fails at this point...
> 
> (XEN) Allocating PPI 16 for event channel interrupt
> (XEN) Create hypervisor node
> (XEN) Create PSCI node
> (XEN) Create cpus node
> (XEN) Create cpu@0 (logical CPUID: 0) node
> (XEN) Create cpu@1 (logical CPUID: 1) node
> (XEN) Create cpu@2 (logical CPUID: 2) node
> (XEN) Create cpu@3 (logical CPUID: 3) node
> (XEN) Create memory node (reg size 4, nr cells 4)
> (XEN)   Bank 0: 0xe8000000->0xf0000000
> (XEN) Create memory node (reg size 4, nr cells 8)
> (XEN)   Bank 0: 0x40001000->0x40040000
> (XEN)   Bank 1: 0xb0000000->0xb0200000
> (XEN) Loading zImage from 00000000e1000000 to
> 00000000e8080000-00000000ea23c808
> (XEN)
> (XEN) ****************************************
> (XEN) Panic on CPU 0:
> (XEN) Unable to copy the kernel in the hwdom memory
> (XEN) ****************************************
> (XEN)
> 
> Device tree and log file attached. Is there an issue with the DT? Any pointers
> on where I should be looking next?

Is it possible that the kernel image was loaded on a memory area not
recognized as ram?

So xen/arch/arm/guestcopy.c:translate_get_page fails the check
p2m_is_ram?

That would happen for instance if a device or special node is also
covering that address range.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.