This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM5728: Jailhouse setup

Part Number: AM5728
Other Parts Discussed in Thread: SYSBIOS, TPIC2810, SYSCONFIG

Tool/software: Linux

Hi there,

I'm working with processor-sdk 05.02.00.10. I successfully worked with jailhouse hypervisor on the AM5728 evaluation board.

Now I'm trying to startup jailhouse on a AM5728 based custom board which has only 1GB of DDR3.

After modification to u-boot I was able to start Linux. Now I'm trying to setup jailhouse hypervisor.

Changes I made so far on linux dts files:

Specify only 1 GB of RAM:

diff --git a/arch/arm/boot/dts/am572x-idk-common.dtsi b/arch/arm/boot/dts/am572x-idk-common.dtsi
index f3aaab9..2df158c 100644
--- a/arch/arm/boot/dts/am572x-idk-common.dtsi
+++ b/arch/arm/boot/dts/am572x-idk-common.dtsi
@@ -14,7 +14,7 @@
/ {
memory@0 {
device_type = "memory";
- reg = <0x0 0x80000000 0x0 0x80000000>;
+ reg = <0x0 0x80000000 0x0 0x40000000>;
};

reserved-memory {

Setup hypervisor and jailhouse inmate in valid memory addresses:


diff --git a/arch/arm/boot/dts/am572x-idk-jailhouse.dtsi b/arch/arm/boot/dts/am572x-idk-jailhouse.dtsi
index 8a75306..0d8a9bc 100644
--- a/arch/arm/boot/dts/am572x-idk-jailhouse.dtsi
+++ b/arch/arm/boot/dts/am572x-idk-jailhouse.dtsi
@@ -9,14 +9,14 @@
/ {
model = "TI AM5728 JAILHOUSE IDK";
reserved-memory {
- jailhouse: jailhouse@ef000000 {
- reg = <0x0 0xef000000 0x0 0x1000000>;
+ jailhouse: jailhouse@bec00000 {
+ reg = <0x0 0xbec00000 0x0 0x1000000>;
no-map;
status = "okay";
};

- jh_inmate: jh_inmate@ee000000 {
- reg = <0x0 0xe0000000 0x0 0xf000000>;
+ jh_inmate: jh_inmate@afc00000 {
+ reg = <0x0 0xafc00000 0x0 0xf000000>;
no-map;
status = "okay";
};

 

I fixed the root cell configuration file am57xx-evm.c to match with the relevant memory addresses. (See am57xx-evm.c attached).

 

When trying to enable the root cell I get the following error:

Arago Project http://arago-project.org am57xx-evm ttyS9

Arago 2018.10 am57xx-evm ttyS9

am57xx-evm login: root
Last login: Wed Jul 3 08:23:34 UTC 2019 from 10.4.20.49 on pts/1
root@am57xx-evm:~#
root@am57xx-evm:~# modprobe jailhouse
root@am57xx-evm:~# jailhouse enable ./am57xx-evm.cell

Initializing Jailhouse hypervisor on CPU 1
Code location: 0xf0000040
Page pool usage after early setup: mem 30/4072, remap 32/131072
Initializing processors:
CPU 1... 
OK
CPU 0... 
OK
Page pool usage after late setup: mem 41/4072, remap 38/131072
Activating hypervisor
Unhandled data write at 0xbfd00000(4)
FATAL: unhandled trap (exception class 0x24)
pc=0xc021ebb0 cpsr=0xa00a0013 hsr=0x93820047
r0=0xc1096e28 r1=0x00000001 r2=0x00000000 r3=0xfe600000
r4=0x00000004 r5=0x00000000 r6=0xc1096e28 r7=0xc105f5b8
r8=0xc05c48a0 r9=0xd2912000 r10=0x00000029 r11=0xd2913b94
r12=0xd2913b98 r13=0xd2913b88 r14=0xc02153ec
Parking CPU 1 (Cell: "AM57XX-EVM")
Unhandled data write at 0xbfd00000(4)
FATAL: unhandled trap (exception class 0x24)
pc=0xc021ebb0 cpsr=0xa00f0013 hsr=0x93820047
r0=0x00000000 r1=0x9329d402 r2=0x00000000 r3=0xfe600000
r4=0xd42bcd90 r5=0xfa4867e0 r6=0x484867e0 r7=0xd439f810
r8=0xd42bcdb0 r9=0x9329d402 r10=0xd3af1300 r11=0xd3af7adc
r12=0xd3af7ae0 r13=0xd3af7ad0 r14=0xc02153ec
Parking CPU 0 (Cell: "AM57XX-EVM")

Looking for the address 0xbfd00000 I found a message in kernel startup: (See jh_dmesg.txt attached)

[    0.000000] OMAP4: Map 0x00000000bfd00000 to fe600000 for dram barrier

Printing /proc/iomem, it seems to me the physical address 0xbfd00000, is the first address outside physical memory. (See jh_proc_iomem.txt attached)

According to /proc/iomem on the working evaluation board, System RAM ends at 0xFFCFFFFF, and the same kernel message targets 0xFFD00000, which is also the first address outside the physical memory.

What else can I look for?

Thanks a lot,

Nir.

 

 

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.14.79-rt47-g7dac5fd971 (oe-user@oe-host) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #1 SMP PREEMPT RT Wed Jun 26 06:36:48 UTC 2019
[    0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
[    0.000000] OF: fdt: Machine model: TI AM5728 JAILHOUSE IDK
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB
[    0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB
[    0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created CMA memory pool at 0x000000009d000000, size 32 MiB
[    0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created CMA memory pool at 0x000000009f000000, size 8 MiB
[    0.000000] OF: reserved mem: initialized node dsp2-memory@9f000000, compatible id shared-dma-pool
[    0.000000] cma: Reserved 24 MiB at 0x00000000ae400000
[    0.000000] OMAP4: Map 0x00000000bfd00000 to fe600000 for dram barrier
[    0.000000] On node 0 totalpages: 146688
[    0.000000] free_area_init_node: node 0, pgdat c1058080, node_mem_map d4ea2000
[    0.000000]   DMA zone: 1134 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 129024 pages, LIFO batch:31
[    0.000000]   HighMem zone: 17664 pages, LIFO batch:3
[    0.000000] DRA752 ES2.0
[    0.000000] percpu: Embedded 15 pages/cpu @d4e33000 s29792 r8192 d23456 u61440
[    0.000000] pcpu-alloc: s29792 r8192 d23456 u61440 alloc=15*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 145554
[    0.000000] Kernel command line: console=ttyO9,115200n8 root=PARTUUID=5b37c775-02 rw rootfstype=ext4 rootwait vmalloc=512M
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 376580K/586752K available (8192K kernel code, 359K rwdata, 2620K rodata, 2048K init, 290K bss, 21756K reserved, 188416K cma-reserved, 46080K highmem)
[    0.000000] Virtual kernel memory layout:
                   vector  : 0xffff0000 - 0xffff1000   (   4 kB)
                   fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
                   vmalloc : 0xe0000000 - 0xff800000   ( 504 MB)
                   lowmem  : 0xc0000000 - 0xdf800000   ( 504 MB)
                   pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
                   modules : 0xbf000000 - 0xbfe00000   (  14 MB)
                     .text : 0xc0008000 - 0xc0a00000   (10208 kB)
                     .init : 0xc0e00000 - 0xc1000000   (2048 kB)
                     .data : 0xc1000000 - 0xc1059cc0   ( 360 kB)
                      .bss : 0xc105b000 - 0xc10a3b50   ( 291 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] 	RCU priority boosting: priority 1 delay 500 ms.
[    0.000000] 	No expedited grace period (rcu_normal_after_boot).
[    0.000000] 	Tasks RCU enabled.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] OMAP clockevent source: timer1 at 32786 Hz
[    0.000000] arch_timer: cp15 timer(s) running at 6.14MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x16af5adb9, max_idle_ns: 440795202250 ns
[    0.000004] sched_clock: 56 bits at 6MHz, resolution 162ns, wraps every 4398046511023ns
[    0.000011] Switching to timer-based delay loop, resolution 162ns
[    0.000333] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
[    0.000336] OMAP clocksource: 32k_counter at 32768 Hz
[    0.000808] Console: colour dummy device 80x30
[    0.000931] WARNING: Your 'console=ttyO9' has been replaced by 'ttyS9'
[    0.000933] This ensures that you still see kernel messages. Please
[    0.000935] update your kernel commandline.
[    0.000952] Calibrating delay loop (skipped), value calculated using timer frequency.. 12.29 BogoMIPS (lpj=61475)
[    0.000959] pid_max: default: 32768 minimum: 301
[    0.001080] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.001087] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.001765] CPU: Testing write buffer coherency: ok
[    0.001797] CPU0: Spectre v2: using ICIALLU workaround
[    0.002046] /cpus/cpu@0 missing clock-frequency property
[    0.002085] /cpus/cpu@1 missing clock-frequency property
[    0.002097] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.039926] Setting up static identity map for 0x80200000 - 0x80200060
[    0.079915] Hierarchical SRCU implementation.
[    0.140413] EFI services will not be available.
[    0.160045] smp: Bringing up secondary CPUs ...
[    0.260414] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.260417] CPU1: Spectre v2: using ICIALLU workaround
[    0.260529] smp: Brought up 1 node, 2 CPUs
[    0.260544] SMP: Total of 2 processors activated (24.59 BogoMIPS).
[    0.260552] CPU: All CPU(s) started in HYP mode.
[    0.260559] CPU: Virtualization extensions available.
[    0.261218] devtmpfs: initialized
[    0.292382] random: get_random_u32 called from bucket_table_alloc+0x14c/0x288 with crng_init=0
[    0.292705] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
[    0.292961] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.292980] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.297393] pinctrl core: initialized pinctrl subsystem
[    0.298230] DMI not present or invalid.
[    0.298704] NET: Registered protocol family 16
[    0.301406] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.302382] omap_hwmod: l3_main_2 using broken dt data from ocp
[    0.441471] omap_hwmod: gpu: _wait_target_ready failed: -16
[    0.441487] omap_hwmod: gpu: cannot be enabled for reset (3)
[    0.520596] gpio gpiochip0: (gpio): added GPIO chardev (254:0)
[    0.520714] gpiochip_setup_dev: registered GPIOs 0 to 31 on device: gpiochip0 (gpio)
[    0.520941] OMAP GPIO hardware version 0.1
[    0.521921] gpio gpiochip1: (gpio): added GPIO chardev (254:1)
[    0.522024] gpiochip_setup_dev: registered GPIOs 32 to 63 on device: gpiochip1 (gpio)
[    0.523019] gpio gpiochip2: (gpio): added GPIO chardev (254:2)
[    0.523131] gpiochip_setup_dev: registered GPIOs 64 to 95 on device: gpiochip2 (gpio)
[    0.524173] gpio gpiochip3: (gpio): added GPIO chardev (254:3)
[    0.524282] gpiochip_setup_dev: registered GPIOs 96 to 127 on device: gpiochip3 (gpio)
[    0.525306] gpio gpiochip4: (gpio): added GPIO chardev (254:4)
[    0.525421] gpiochip_setup_dev: registered GPIOs 128 to 159 on device: gpiochip4 (gpio)
[    0.526443] gpio gpiochip5: (gpio): added GPIO chardev (254:5)
[    0.526544] gpiochip_setup_dev: registered GPIOs 160 to 191 on device: gpiochip5 (gpio)
[    0.527558] gpio gpiochip6: (gpio): added GPIO chardev (254:6)
[    0.527668] gpiochip_setup_dev: registered GPIOs 192 to 223 on device: gpiochip6 (gpio)
[    0.555186] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[    0.555198] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.555607] omap4_sram_init:Unable to allocate sram needed to handle errata I688
[    0.555618] omap4_sram_init:Unable to get sram pool needed to handle errata I688
[    0.556941] OMAP DMA hardware revision 0.0
[    0.573233] edma 43300000.edma: memcpy is disabled
[    0.579052] edma 43300000.edma: TI EDMA DMA engine driver
[    0.591724] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
[    0.592491] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-vmain[0]'
[    0.592853] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-v3_3d[0]'
[    0.593253] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-vtt[0]'
[    0.597407] omap-iommu 40d01000.mmu: 40d01000.mmu registered
[    0.597892] omap-iommu 40d02000.mmu: 40d02000.mmu registered
[    0.598465] omap-iommu 58882000.mmu: 58882000.mmu registered
[    0.599019] omap-iommu 55082000.mmu: 55082000.mmu registered
[    0.599745] omap-iommu 41501000.mmu: 41501000.mmu registered
[    0.600220] omap-iommu 41502000.mmu: 41502000.mmu registered
[    0.600761] iommu: Adding device 58820000.ipu to group 1
[    0.600952] iommu: Adding device 55020000.ipu to group 2
[    0.601287] iommu: Adding device 40800000.dsp to group 0
[    0.601860] iommu: Adding device 41000000.dsp to group 3
[    0.604749] palmas 0-0058: Irq flag is 0x00000004
[    0.632545] palmas 0-0058: Muxing GPIO 2b, PWM 0, LED 0
[    0.634270] SMPS12: supplied by regulator-dummy
[    0.636139] SMPS3: supplied by VMAIN
[    0.636540] smps3: Bringing 1500000uV into 1350000-1350000uV
[    0.638727] SMPS45: supplied by regulator-dummy
[    0.640724] SMPS6: supplied by VMAIN
[    0.642784] SMPS7: supplied by VMAIN
[    0.644979] SMPS8: supplied by VMAIN
[    0.646548] SMPS9: supplied by VMAIN
[    0.647807] LDO1: supplied by VMAIN
[    0.651807] LDO2: supplied by VMAIN
[    0.661647] LDO3: supplied by VMAIN
[    0.671686] LDO4: supplied by VMAIN
[    0.681685] LDO5: supplied by regulator-dummy
[    0.682701] LDO6: supplied by regulator-dummy
[    0.683682] LDO7: supplied by regulator-dummy
[    0.684676] LDO8: supplied by regulator-dummy
[    0.685633] LDO9: supplied by VMAIN
[    0.692057] LDOLN: supplied by VMAIN
[    0.701721] LDOUSB: supplied by VMAIN
[    0.714909] gpiochip_find_base: found new base at 504
[    0.715109] gpio gpiochip7: (48070000.i2c:tps659038@58:tps659038_gpio): added GPIO chardev (254:7)
[    0.715214] gpiochip_setup_dev: registered GPIOs 504 to 511 on device: gpiochip7 (48070000.i2c:tps659038@58:tps659038_gpio)
[    0.715893] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz
[    0.716187] media: Linux media interface: v0.10
[    0.716246] Linux video capture interface: v2.00
[    0.716368] pps_core: LinuxPPS API ver. 1 registered
[    0.716377] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.716401] PTP clock support registered
[    0.716438] EDAC MC: Ver: 3.0.0
[    0.716842] dmi: Firmware registration failed.
[    0.717405] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400
[    0.717805] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400
[    0.718378] Advanced Linux Sound Architecture Driver Initialized.
[    0.719503] clocksource: Switched to clocksource arch_sys_counter
[    0.732105] NET: Registered protocol family 2
[    0.732883] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.732936] TCP bind hash table entries: 4096 (order: 4, 114688 bytes)
[    0.733080] TCP: Hash tables configured (established 4096 bind 4096)
[    0.733214] UDP hash table entries: 256 (order: 2, 16384 bytes)
[    0.733248] UDP-Lite hash table entries: 256 (order: 2, 16384 bytes)
[    0.733506] NET: Registered protocol family 1
[    0.734096] RPC: Registered named UNIX socket transport module.
[    0.734108] RPC: Registered udp transport module.
[    0.734118] RPC: Registered tcp transport module.
[    0.734127] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.734140] PCI: CLS 0 bytes, default 64
[    0.735515] hw perfevents: no interrupt-affinity property for /pmu, guessing.
[    0.735841] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
[    0.737705] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[    0.745610] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.746474] NFS: Registering the id_resolver key type
[    0.746526] Key type id_resolver registered
[    0.746536] Key type id_legacy registered
[    0.746611] ntfs: driver 2.1.32 [Flags: R/O].
[    0.748603] bounce: pool size: 64 pages
[    0.748656] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
[    0.748669] io scheduler noop registered
[    0.748679] io scheduler deadline registered
[    0.748828] io scheduler cfq registered (default)
[    0.748840] io scheduler mq-deadline registered
[    0.748851] io scheduler kyber registered
[    0.755357] pinctrl-single 4a003400.pinmux: 282 pins at pa fc003400 size 1128
[    0.759982] dra7-pcie 51000000.pcie: Linked as a consumer to phy-4a094000.pciephy.1
[    0.760228] dra7-pcie 51000000.pcie: GPIO lookup for consumer (null)
[    0.760235] dra7-pcie 51000000.pcie: using device tree for GPIO lookup
[    0.760272] of_get_named_gpiod_flags: parsed 'gpios' property of node '/ocp/axi@0/pcie@51000000[0]' - status (0)
[    0.760545] OF: PCI: host bridge /ocp/axi@0/pcie@51000000 ranges:
[    0.760582] OF: PCI:    IO 0x20003000..0x20012fff -> 0x00000000
[    0.760608] OF: PCI:   MEM 0x20013000..0x2fffffff -> 0x20013000
[    1.759522] dra7-pcie 51000000.pcie: phy link never came up
[    1.759739] dra7-pcie 51000000.pcie: PCI host bridge to bus 0000:00
[    1.759757] pci_bus 0000:00: root bus resource [bus 00-ff]
[    1.759769] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    1.759780] pci_bus 0000:00: root bus resource [mem 0x20013000-0x2fffffff]
[    1.759822] pci 0000:00:00.0: [104c:8888] type 01 class 0x060400
[    1.759855] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff 64bit]
[    1.759926] pci 0000:00:00.0: supports D1
[    1.759933] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[    1.760195] PCI: bus0: Fast back to back transfers disabled
[    1.760334] PCI: bus1: Fast back to back transfers enabled
[    1.760378] pci 0000:00:00.0: BAR 0: assigned [mem 0x20100000-0x201fffff 64bit]
[    1.760397] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    1.761040] pcieport 0000:00:00.0: Signaling PME with IRQ 170
[    1.761333] pcieport 0000:00:00.0: AER enabled with IRQ 170
[    1.767387] V3_3D: supplied by smps9
[    1.767696] vtt_fixed: supplied by V3_3D
[    1.842069] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled
[    1.846756] 4ae2b000.serial: ttyS9 at MMIO 0x4ae2b000 (irq = 44, base_baud = 3000000) is a 8250
[    2.921776] console [ttyS9] enabled
[    2.928000] omap_rng 48090000.rng: Random Number Generator ver. 20
[    2.935501] DSS: OMAP DSS rev 6.1
[    2.941457] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops)
[    2.950243] omapdss_dss 58000000.dss: bound 58040000.encoder (ops hdmi5_component_ops)
[    2.960044] tpd12s015 encoder@0: GPIO lookup for consumer (null)
[    2.960052] tpd12s015 encoder@0: using device tree for GPIO lookup
[    2.960063] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/encoder@0[0]'
[    2.960071] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/encoder@0[0]'
[    2.960078] tpd12s015 encoder@0: using lookup tables for GPIO lookup
[    2.960086] tpd12s015 encoder@0: lookup for GPIO (null) failed
[    2.960094] tpd12s015 encoder@0: GPIO lookup for consumer (null)
[    2.960100] tpd12s015 encoder@0: using device tree for GPIO lookup
[    2.960108] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/encoder@0[1]'
[    2.960116] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/encoder@0[1]'
[    2.960123] tpd12s015 encoder@0: using lookup tables for GPIO lookup
[    2.960130] tpd12s015 encoder@0: lookup for GPIO (null) failed
[    2.960137] tpd12s015 encoder@0: GPIO lookup for consumer (null)
[    2.960143] tpd12s015 encoder@0: using device tree for GPIO lookup
[    2.960174] of_get_named_gpiod_flags: parsed 'gpios' property of node '/encoder@0[2]' - status (0)
[    2.961762] of_get_named_gpiod_flags: can't parse 'hpd-gpios' property of node '/connector@0[0]'
[    2.979303] loop: module loaded
[    2.989045] m25p80 spi0.0: unrecognized JEDEC id bytes: 00, 00, 00
[    2.996218] mdio_bus fixed-0: GPIO lookup for consumer reset
[    2.996226] mdio_bus fixed-0: using lookup tables for GPIO lookup
[    2.996234] mdio_bus fixed-0: lookup for GPIO reset failed
[    2.996259] libphy: Fixed MDIO Bus: probed
[    3.004713] mdio_bus 48485000.mdio: GPIO lookup for consumer reset
[    3.004722] mdio_bus 48485000.mdio: using lookup tables for GPIO lookup
[    3.004729] mdio_bus 48485000.mdio: lookup for GPIO reset failed
[    3.059538] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000
[    3.067235] davinci_mdio 48485000.mdio: detected phy mask fffffffe
[    3.085797] libphy: 48485000.mdio: probed
[    3.089833] davinci_mdio 48485000.mdio: phy[0]: device 48485000.mdio:00, driver Micrel KSZ9031 Gigabit PHY
[    3.100804] cpsw 48484000.ethernet: Detected MACID = 88:3f:4a:4b:c5:82
[    3.107453] cpsw 48484000.ethernet: initialized cpsw ale version 1.4
[    3.113841] cpsw 48484000.ethernet: ALE Table size 1024
[    3.119105] cpsw 48484000.ethernet: device node lookup for pps timer failed
[    3.126139] cpsw 48484000.ethernet: cpts: overflow check period 500 (jiffies)
[    3.134478] cpsw 48484000.ethernet: cpsw: Detected MACID = 88:3f:4a:4b:c5:83
[    3.143652] i2c /dev entries driver
[    3.148565] IR NEC protocol handler initialized
[    3.153121] IR RC5(x/sz) protocol handler initialized
[    3.158198] IR RC6 protocol handler initialized
[    3.162750] IR JVC protocol handler initialized
[    3.167304] IR Sony protocol handler initialized
[    3.171943] IR SANYO protocol handler initialized
[    3.176670] IR Sharp protocol handler initialized
[    3.181456] IR MCE Keyboard/mouse protocol handler initialized
[    3.187317] IR XMP protocol handler initialized
[    3.201594] sdhci: Secure Digital Host Controller Interface driver
[    3.207806] sdhci: Copyright(c) Pierre Ossman
[    3.213082] sdhci-pltfm: SDHCI platform and OF driver helper
[    3.220434] sdhci-omap 4809c000.mmc: GPIO lookup for consumer cd
[    3.220442] sdhci-omap 4809c000.mmc: using device tree for GPIO lookup
[    3.220475] of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/mmc@4809c000[0]' - status (0)
[    3.220495] sdhci-omap 4809c000.mmc: Got CD GPIO
[    3.225138] sdhci-omap 4809c000.mmc: GPIO lookup for consumer wp
[    3.225145] sdhci-omap 4809c000.mmc: using device tree for GPIO lookup
[    3.225154] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@4809c000[0]'
[    3.225164] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@4809c000[0]'
[    3.225170] sdhci-omap 4809c000.mmc: using lookup tables for GPIO lookup
[    3.225177] sdhci-omap 4809c000.mmc: lookup for GPIO wp failed
[    3.226539] sdhci-omap 4809c000.mmc: no pinctrl state for ddr_1_8v mode
[    3.233192] sdhci-omap 4809c000.mmc: no pinctrl state for hs200_1_8v mode
[    3.310867] mmc0: SDHCI controller on 4809c000.mmc [4809c000.mmc] using ADMA
[    3.318287] sdhci-omap 480b4000.mmc: GPIO lookup for consumer wp
[    3.318294] sdhci-omap 480b4000.mmc: using device tree for GPIO lookup
[    3.318304] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@480b4000[0]'
[    3.318313] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@480b4000[0]'
[    3.318319] sdhci-omap 480b4000.mmc: using lookup tables for GPIO lookup
[    3.318326] sdhci-omap 480b4000.mmc: lookup for GPIO wp failed
[    3.379595] mmc1: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA
[    3.389656] of_get_named_gpiod_flags: parsed 'gpios' property of node '/status-leds/cpu0-led[0]' - status (0)
[    3.389695] no flags found for gpios
[    3.389861] of_get_named_gpiod_flags: parsed 'gpios' property of node '/status-leds/usr0-led[0]' - status (0)
[    3.389875] no flags found for gpios
[    3.390015] of_get_named_gpiod_flags: parsed 'gpios' property of node '/status-leds/heartbeat-led[0]' - status (0)
[    3.390028] no flags found for gpios
[    3.390170] of_get_named_gpiod_flags: parsed 'gpios' property of node '/status-leds/cpu1-led[0]' - status (0)
[    3.390183] no flags found for gpios
[    3.390334] of_get_named_gpiod_flags: parsed 'gpios' property of node '/status-leds/usr1-led[0]' - status (0)
[    3.390347] no flags found for gpios
[    3.390489] of_get_named_gpiod_flags: parsed 'gpios' property of node '/status-leds/mmc0-led[0]' - status (0)
[    3.390501] no flags found for gpios
[    3.398785] NET: Registered protocol family 10
[    3.404692] Segment Routing with IPv6
[    3.408463] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    3.415132] NET: Registered protocol family 17
[    3.420052] Key type dns_resolver registered
[    3.424494] omap_voltage_late_init: Voltage driver support not added
[    3.430880] Power Management for TI OMAP4+ devices.
[    3.436107] Registering SWP/SWPB emulation handler
[    3.448414] mmc1: new DDR MMC card at address 0001
[    3.453819] mmcblk1: mmc1:0001 Q2J54A 3.64 GiB 
[    3.469606] mmcblk1boot0: mmc1:0001 Q2J54A partition 1 2.00 MiB
[    3.475856] mmcblk1boot1: mmc1:0001 Q2J54A partition 2 2.00 MiB
[    3.482088] mmcblk1rpmb: mmc1:0001 Q2J54A partition 3 512 KiB
[    3.489314]  mmcblk1: p1 p2
[    3.493202] dmm 4e000000.dmm: workaround for errata i878 in use
[    3.501820] dmm 4e000000.dmm: initialized all PAT entries
[    3.509654] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    3.516306] [drm] No driver support for vblank timestamp query.
[    3.650677] EDID block is all zeroes
[    3.666783] [drm] Enabling DMM ywrap scrolling
[    3.695103] Console: switching to colour frame buffer device 128x48
[    3.708670] omapdrm omapdrm.0: fb0: omapdrm frame buffer device
[    3.715972] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
[    3.723909] hctosys: unable to open rtc device (rtc0)
[    3.730445] ALSA device list:
[    3.733432]   No soundcards found.
[    3.746785] EXT4-fs (mmcblk1p2): recovery complete
[    3.751633] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[    3.759820] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    3.769886] devtmpfs: mounted
[    3.775841] Freeing unused kernel memory: 2048K
[    3.922827] systemd[1]: System time before build time, advancing clock.
[    3.952032] systemd[1]: systemd 234 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN default-hierarchy=hybrid)
[    3.973490] systemd[1]: Detected architecture arm.
[    4.010218] systemd[1]: Set hostname to <am57xx-evm>.
[    4.330383] random: systemd: uninitialized urandom read (16 bytes read)
[    4.337570] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    4.389690] random: systemd: uninitialized urandom read (16 bytes read)
[    4.396709] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    4.439680] random: systemd: uninitialized urandom read (16 bytes read)
[    4.446369] systemd[1]: Reached target Swap.
[    4.479986] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[    4.540676] systemd[1]: Listening on Network Service Netlink Socket.
[    4.580058] systemd[1]: Listening on Journal Socket.
[    4.609872] systemd[1]: Listening on Syslog Socket.
[    4.728532] cryptodev: loading out-of-tree module taints kernel.
[    4.745816] cryptodev: driver 1.9 loaded.
[    4.851230] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
[    4.854158] EDID block is all zeroes
[    5.803535] systemd-journald[123]: Received request to flush runtime journal from PID 1
[    7.289731] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000
[    7.297949] remoteproc remoteproc0: 58820000.ipu is available
[    7.364826] remoteproc remoteproc0: Direct firmware load for dra7-ipu1-fw.xem4 failed with error -2
[    7.376349] remoteproc remoteproc0: powering up 58820000.ipu
[    7.387453] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000
[    7.402128] remoteproc remoteproc1: 55020000.ipu is available
[    7.403093] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000
[    7.406382] remoteproc remoteproc2: 40800000.dsp is available
[    7.407460] omap-rproc 41000000.dsp: assigned reserved memory node dsp2-memory@9f000000
[    7.411120] remoteproc remoteproc3: 41000000.dsp is available
[    7.490748] remoteproc remoteproc0: Direct firmware load for dra7-ipu1-fw.xem4 failed with error -2
[    7.506351] remoteproc remoteproc0: request_firmware failed: -2
[    7.512555] remoteproc remoteproc1: Direct firmware load for dra7-ipu2-fw.xem4 failed with error -2
[    7.531730] remoteproc remoteproc1: powering up 55020000.ipu
[    7.537538] remoteproc remoteproc1: Direct firmware load for dra7-ipu2-fw.xem4 failed with error -2
[    7.546847] remoteproc remoteproc1: request_firmware failed: -2
[    7.553056] remoteproc remoteproc2: Direct firmware load for dra7-dsp1-fw.xe66 failed with error -2
[    7.562465] remoteproc remoteproc2: powering up 40800000.dsp
[    7.568264] remoteproc remoteproc2: Direct firmware load for dra7-dsp1-fw.xe66 failed with error -2
[    7.577624] remoteproc remoteproc2: request_firmware failed: -2
[    7.583739] remoteproc remoteproc3: Direct firmware load for dra7-dsp2-fw.xe66 failed with error -2
[    7.592936] remoteproc remoteproc3: powering up 41000000.dsp
[    7.598770] remoteproc remoteproc3: Direct firmware load for dra7-dsp2-fw.xe66 failed with error -2
[    7.607963] remoteproc remoteproc3: request_firmware failed: -2
[    8.253143] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2
[    8.273639] omap-des 480a5000.des: will run requests pump with realtime priority
[    8.429235] gpiochip_find_base: found new base at 496
[    8.438424] gpio gpiochip8: (tpic2810): added GPIO chardev (254:8)
[    8.452557] gpiochip_setup_dev: registered GPIOs 496 to 503 on device: gpiochip8 (tpic2810)
[    8.454108] ov2659 0-0030: GPIO lookup for consumer pwrdn
[    8.454116] ov2659 0-0030: using device tree for GPIO lookup
[    8.454154] of_get_named_gpiod_flags: parsed 'pwrdn-gpios' property of node '/ocp/i2c@48070000/ov2659@30[0]' - status (0)
[    8.458054] ov2659 0-0030: Sensor detection failed (3030, 0)
[    8.557827] pisosr-gpio spi1.0: GPIO lookup for consumer load
[    8.557838] pisosr-gpio spi1.0: using device tree for GPIO lookup
[    8.557875] of_get_named_gpiod_flags: parsed 'load-gpios' property of node '/ocp/spi@480b8000/sn65hvs882@0[0]' - status (0)
[    8.557914] gpiochip_find_base: found new base at 488
[    8.570948] gpio gpiochip9: (pisosr-gpio): added GPIO chardev (254:9)
[    8.583188] gpiochip_setup_dev: registered GPIOs 488 to 495 on device: gpiochip9 (pisosr-gpio)
[    8.634404] rtc rtc0: 48070000.i2c:tps659038@58:tps659038_rtc: dev (253:0)
[    8.634441] palmas-rtc 48070000.i2c:tps659038@58:tps659038_rtc: rtc core: registered 48070000.i2c:tps659038@58:tps659038_rtc as rtc0
[    8.679864] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: GPIO lookup for consumer id
[    8.679874] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using device tree for GPIO lookup
[    8.679888] of_get_named_gpiod_flags: can't parse 'id-gpios' property of node '/ocp/i2c@48070000/tps659038@58/tps659038_usb[0]'
[    8.679978] of_get_named_gpiod_flags: parsed 'id-gpio' property of node '/ocp/i2c@48070000/tps659038@58/tps659038_usb[0]' - status (0)
[    8.680004] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: GPIO lookup for consumer vbus
[    8.680012] palmas-usb 48070000.i2c:tps659038@58:tps659038_usb: using device tree for GPIO lookup
[    8.680022] of_get_named_gpiod_flags: can't parse 'vbus-gpios' property of node '/ocp/i2c@48070000/tps659038@58/tps659038_usb[0]'
[    8.680052] of_get_named_gpiod_flags: parsed 'vbus-gpio' property of node '/ocp/i2c@48070000/tps659038@58/tps659038_usb[0]' - status (0)
[    8.680078] omap_gpio 48057000.gpio: Could not set line 16 debounce to 20000 microseconds (-22)
[    9.072982] omap_rtc 48838000.rtc: char device (253:1)
[    9.090616] omap_rtc 48838000.rtc: registered as rtc1
[    9.189486] vip 48990000.vip: loading firmware vpdma-1b8.bin
[    9.210478] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin
[    9.219607] vip 48990000.vip: VPDMA firmware loaded
[    9.241358] vpe 489d0000.vpe: Device registered as /dev/video0
[    9.805537] SCSI subsystem initialized
[    9.888468] libata version 3.00 loaded.
[    9.942056] ahci 4a140000.sata: SSS flag set, parallel bus scan disabled
[    9.948823] ahci 4a140000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
[    9.963110] ahci 4a140000.sata: flags: 64bit ncq sntf stag pm led clo only pmp pio slum part ccc apst 
[    9.990375] scsi host0: ahci
[    9.993756] ata1: SATA max UDMA/133 mmio [mem 0x4a140000-0x4a1410ff] port 0x100 irq 77
[   10.048293] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[   10.158557] CAN device driver interface
[   10.162914] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3
[   10.233221] c_can_platform 4ae3c000.can: c_can_platform device registered (regs=fce3c000, irq=85)
[   10.258267] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3
[   10.298507] omap-aes 4b500000.aes: will run requests pump with realtime priority
[   10.354290] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3
[   10.374348] ata1: SATA link down (SStatus 0 SControl 300)
[   10.450224] omap-aes 4b700000.aes: will run requests pump with realtime priority
[   10.563939] net eth1: initializing cpsw version 1.15 (0)
[   10.592394] libphy: PHY 48485000.mdio:01 not found
[   10.597223] net eth1: phy "48485000.mdio:01" not found on slave 1, err -19
[   10.687831] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[   10.826269] net eth0: initializing cpsw version 1.15 (0)
[   10.863919] omap-hdmi-audio omap-hdmi-audio.0.auto: snd-soc-dummy-dai <-> 58040000.encoder mapping ok
[   10.916614] prueth pruss2_eth: unable to get PRU0: -19
[   10.970344] Micrel KSZ9031 Gigabit PHY 48485000.mdio:00: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=48485000.mdio:00, irq=POLL)
[   10.975916] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   11.092989] omap-hdmi-audio omap-hdmi-audio.0.auto: ASoC: no DMI vendor name!
[   11.349630] FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[   13.233417] usbcore: registered new interface driver usbfs
[   13.243129] usbcore: registered new interface driver hub
[   13.250078] usbcore: registered new device driver usb
[   13.283652] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[   13.299662] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 1
[   13.315990] xhci-hcd xhci-hcd.1.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x02010010
[   13.327240] xhci-hcd xhci-hcd.1.auto: irq 176, io mem 0x48890000
[   13.335773] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[   13.343869] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   13.352517] usb usb1: Product: xHCI Host Controller
[   13.357423] usb usb1: Manufacturer: Linux 4.14.79-rt47-g7dac5fd971 xhci-hcd
[   13.366903] usb usb1: SerialNumber: xhci-hcd.1.auto
[   13.375024] hub 1-0:1.0: USB hub found
[   13.378839] hub 1-0:1.0: 1 port detected
[   13.388240] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[   13.395884] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 2
[   13.405615] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0  SuperSpeed
[   13.414502] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[   13.425392] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[   13.433621] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   13.442040] usb usb2: Product: xHCI Host Controller
[   13.446946] usb usb2: Manufacturer: Linux 4.14.79-rt47-g7dac5fd971 xhci-hcd
[   13.456434] usb usb2: SerialNumber: xhci-hcd.1.auto
[   13.464170] hub 2-0:1.0: USB hub found
[   13.467981] hub 2-0:1.0: 1 port detected
[   13.477683] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[   13.485374] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 3
[   13.496225] xhci-hcd xhci-hcd.2.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x02010010
[   13.507362] xhci-hcd xhci-hcd.2.auto: irq 177, io mem 0x488d0000
[   13.515690] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
[   13.523814] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   13.532310] usb usb3: Product: xHCI Host Controller
[   13.537216] usb usb3: Manufacturer: Linux 4.14.79-rt47-g7dac5fd971 xhci-hcd
[   13.546742] usb usb3: SerialNumber: xhci-hcd.2.auto
[   13.553300] hub 3-0:1.0: USB hub found
[   13.557114] hub 3-0:1.0: 1 port detected
[   13.568698] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[   13.576328] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 4
[   13.586309] xhci-hcd xhci-hcd.2.auto: Host supports USB 3.0  SuperSpeed
[   13.595047] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[   13.604855] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003
[   13.612972] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   13.621601] usb usb4: Product: xHCI Host Controller
[   13.626508] usb usb4: Manufacturer: Linux 4.14.79-rt47-g7dac5fd971 xhci-hcd
[   13.635850] usb usb4: SerialNumber: xhci-hcd.2.auto
[   13.643668] hub 4-0:1.0: USB hub found
[   13.647481] hub 4-0:1.0: 1 port detected
[   15.128445] cpsw 48484000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[   15.144306] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

20013000-2fffffff : MEM
  20100000-201fffff : 0000:00:00.0
40300000-4037ffff : 40300000.ocmcram
40800000-40847fff : l2ram
40d01000-40d010ff : /ocp/mmu@40d01000
40d02000-40d020ff : /ocp/mmu@40d02000
40e00000-40e07fff : l1pram
40f00000-40f07fff : l1dram
41000000-41047fff : l2ram
41501000-415010ff : /ocp/mmu@41501000
41502000-415020ff : /ocp/mmu@41502000
41600000-41607fff : l1pram
41700000-41707fff : l1dram
43300000-433fffff : edma3_cc
44000000-44ffffff : /ocp
45000000-45000fff : /ocp
48034000-4803407f : /ocp/timer@48034000
48036000-4803607f : /ocp/timer@48036000
4803e000-4803e07f : /ocp/timer@4803e000
48051000-480511ff : /ocp/gpio@48051000
48053000-480531ff : /ocp/gpio@48053000
48055000-480551ff : /ocp/gpio@48055000
48057000-480571ff : /ocp/gpio@48057000
48059000-480591ff : /ocp/gpio@48059000
4805d000-4805d1ff : /ocp/gpio@4805d000
48070000-480700ff : /ocp/i2c@48070000
48086000-4808607f : /ocp/timer@48086000
48088000-4808807f : /ocp/timer@48088000
48090000-48091fff : /ocp/rng@48090000
4809c000-4809c3ff : /ocp/mmc@4809c000
480a5000-480a509f : /ocp/des@480a5000
480b4000-480b43ff : /ocp/mmc@480b4000
480b8000-480b81ff : /ocp/spi@480b8000
4844a000-4844ad1b : /ocp/padconf@4844a000
48484000-48484fff : /ocp/ethernet@48484000
48485000-484850ff : /ocp/ethernet@48484000/mdio@48485000
48485200-48487fff : /ocp/ethernet@48484000
48820000-4882007f : /ocp/timer@48820000
48822000-4882207f : /ocp/timer@48822000
48824000-4882407f : /ocp/timer@48824000
48828000-4882807f : /ocp/timer@48828000
4882a000-4882a07f : /ocp/timer@4882a000
4882c000-4882c07f : /ocp/timer@4882c000
4882e000-4882e07f : /ocp/timer@4882e000
48838000-488380ff : /ocp/rtc@48838000
48840000-488401ff : /ocp/mailbox@48840000
48842000-488421ff : /ocp/mailbox@48842000
48880000-4888ffff : /ocp/omap_dwc3_1@48880000
48890000-48897fff : /ocp/omap_dwc3_1@48880000/usb@48890000
  48890000-48897fff : /ocp/omap_dwc3_1@48880000/usb@48890000
4889c100-488a6fff : /ocp/omap_dwc3_1@48880000/usb@48890000
488c0000-488cffff : /ocp/omap_dwc3_2@488c0000
488d0000-488d7fff : /ocp/omap_dwc3_2@488c0000/usb@488d0000
  488d0000-488d7fff : /ocp/omap_dwc3_2@488c0000/usb@488d0000
488dc100-488e6fff : /ocp/omap_dwc3_2@488c0000/usb@488d0000
48990000-48990113 : vip
48995500-489955d7 : parser0
48995700-48995717 : csc0
48995800-4899587f : sc0
48995a00-48995ad7 : parser1
48995c00-48995c17 : csc1
48995d00-48995d7f : sc1
489d0700-489d077f : sc
489d5700-489d5717 : csc
4a0021e0-4a0021eb : /ocp/bandgap@4a0021e0
4a00232c-4a002337 : /ocp/bandgap@4a0021e0
4a002380-4a0023ab : /ocp/bandgap@4a0021e0
4a0023c0-4a0023fb : /ocp/bandgap@4a0021e0
4a00246c-4a00246f : ldo-address
4a002470-4a002473 : ldo-address
4a002554-4a002557 : gmii-sel
4a002564-4a00256b : /ocp/bandgap@4a0021e0
4a002574-4a0025c3 : /ocp/bandgap@4a0021e0
4a002b78-4a002c73 : /ocp/l4@4a000000/scm@2000/dma-router@b78
4a002c78-4a002cf3 : /ocp/l4@4a000000/scm@2000/dma-router@c78
4a003400-4a003867 : pinctrl-single
4a056000-4a056fff : omap_dma_system.0
  4a056000-4a056fff : /ocp/dma-controller@4a056000
4a080000-4a08001f : /ocp/ocp2scp@4a080000
4a084000-4a0843ff : /ocp/ocp2scp@4a080000/phy@4a084000
4a084c00-4a084c3f : pll_ctrl
4a085000-4a0853ff : /ocp/ocp2scp@4a080000/phy@4a085000
4a090000-4a09001f : /ocp/ocp2scp@4a090000
4a094000-4a09407f : phy_rx
4a094400-4a094463 : phy_tx
4a096800-4a09683f : pll_ctrl
4a140000-4a1410ff : /ocp/sata@4a141100
4ae07ddc-4ae07ddf : setup-address
4ae07de0-4ae07de3 : control-address
4ae07de4-4ae07de7 : setup-address
4ae07de8-4ae07deb : control-address
4ae07e20-4ae07e23 : control-address
4ae07e24-4ae07e27 : control-address
4ae07e30-4ae07e33 : setup-address
4ae07e34-4ae07e37 : setup-address
4ae0c154-4ae0c157 : ldo-address
4ae0c158-4ae0c15b : ldo-address
4ae10000-4ae101ff : /ocp/gpio@4ae10000
4ae14000-4ae1407f : /ocp/wdt@4ae14000
4ae20000-4ae2007f : /ocp/timer@4ae20000
4ae2b000-4ae2b01f : serial
4ae3c000-4ae3dfff : /ocp/can@4ae3c000
4b101000-4b1012ff : /ocp/sham@53100000
4b300000-4b3000ff : qspi_base
4b500000-4b50009f : /ocp/aes@4b500000
4b700000-4b70009f : /ocp/aes@4b700000
55020000-5502ffff : l2ram
55082000-550820ff : /ocp/mmu@55082000
58000000-5800007f : dss
58001000-58001fff : /ocp/dss@58000000/dispc@58001000
58004054-58004057 : pll1_clkctrl
58004300-5800431f : pll1
58009054-58009057 : pll2_clkctrl
58009300-5800931f : pll2
58040000-580401ff : wp
58040200-5804027f : pll
58040300-5804037f : phy
58060000-58078fff : core
58820000-5882ffff : l2ram
58882000-588820ff : /ocp/mmu@58882000
80000000-9fffffff : System RAM
  80008000-80dfffff : Kernel code
  81000000-810a3b4f : Kernel data
ac000000-afbfffff : System RAM
bfc00000-bfcfffff : System RAM

 

MemTotal:         567044 kB
MemFree:          450508 kB
MemAvailable:     497368 kB
Buffers:            5860 kB
Cached:            61820 kB
SwapCached:            0 kB
Active:            35424 kB
Inactive:          49432 kB
Active(anon):      18812 kB
Inactive(anon):    19644 kB
Active(file):      16612 kB
Inactive(file):    29788 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:         70656 kB
HighFree:           3644 kB
LowTotal:         496388 kB
LowFree:          446864 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                40 kB
Writeback:             0 kB
AnonPages:         17252 kB
Mapped:            16072 kB
Shmem:             21276 kB
Slab:              23092 kB
SReclaimable:      10612 kB
SUnreclaim:        12480 kB
KernelStack:        1176 kB
PageTables:          560 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      283520 kB
Committed_AS:     110904 kB
VmallocTotal:     516096 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
CmaTotal:         188416 kB
CmaFree:          166908 kB

 

/*
 * Jailhouse, a Linux-based partitioning hypervisor
 *
 * Copyright (c) Texas Insturments. Inc, 2016
 *
 * Authors:
 *  Vitaly Andrianov <vitalya@ti.com>
 *
 * This work is licensed under the terms of the GNU GPL, version 2.  See
 * the COPYING file in the top-level directory.
 */

#include <jailhouse/types.h>
#include <jailhouse/cell-config.h>

#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])

struct {
	struct jailhouse_system header;
	__u64 cpus[1];
	struct jailhouse_memory mem_regions[18];
	struct jailhouse_irqchip irqchips[2];
} __attribute__((packed)) config = {
	.header = {
		.signature = JAILHOUSE_SYSTEM_SIGNATURE,
		.revision = JAILHOUSE_CONFIG_REVISION,
		.hypervisor_memory = {
			.phys_start = 0xBEC00000,
			.size = 0x1000000,
		},
		.debug_console = {
			.address = 0x4AE2B000,
			.size = 0x1000,
			/* .divider = 26, */
			.flags = JAILHOUSE_CON1_TYPE_8250 |
				JAILHOUSE_CON1_ACCESS_MMIO |
				JAILHOUSE_CON1_REGDIST_4 |
				JAILHOUSE_CON2_TYPE_ROOTPAGE,
		},
		.platform_info.arm = {
			.gic_version = 2,
			.gicd_base = 0x48211000,
			.gicc_base = 0x48212000,
			.gich_base = 0x48214000,
			.gicv_base = 0x48216000,
			.maintenance_irq = 25,
		},
		.root_cell = {
			.name = "AM57XX-EVM",
			.cpu_set_size = sizeof(config.cpus),
			.num_memory_regions = ARRAY_SIZE(config.mem_regions),
			.num_irqchips = ARRAY_SIZE(config.irqchips),
		},
	},

	.cpus = {
		0x3,
	},

	.mem_regions = {
		/* PCI */ {
			.phys_start = 0x20000000,
			.virt_start = 0x20000000,
			.size = 0x10000000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* OCMCRAM */ {
			.phys_start = 0x40300000,
			.virt_start = 0x40300000,
			.size = 0x80000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* 0x40380000 - 0x48020000 */ {
			.phys_start = 0x40380000,
			.virt_start = 0x40380000,
			.size = 0x7ca0000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* UART... */ {
			.phys_start = 0x48020000,
			.virt_start = 0x48020000,
			.size = 0xe0000,//0x00001000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* 0x48100000 - 0x48281000 */ {
			.phys_start = 0x48100000,
			.virt_start = 0x48100000,
			.size = 0x110000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/*
		 * Leave gap for GIC controller 0x48210000 - 0x41220000
		 */
		/* 0x48220000 - 0x48281000 */ {
			.phys_start = 0x48220000,
			.virt_start = 0x48220000,
			.size = 0x610000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* OMAP WakeupGen */ {
			.phys_start = 0x48281000,
			.virt_start = 0x48281000,
			.size = 0x1000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* PRCM MPU */ {
			.phys_start = 0x48243000,
			.virt_start = 0x48243000,
			.size = 0x1000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* 0x48400000 - 0x48424000 */ {
			.phys_start = 0x48400000,
			.virt_start = 0x48400000,
			.size = 0x24000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* UART... */ {
			.phys_start = 0x48424000,
			.virt_start = 0x48424000,
			.size = 0x2000,//0x00001000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},

		/* 0x48426000 - 0x48826000 */ {
			.phys_start = 0x48426000,
			.virt_start = 0x48426000,
			.size = 0x400000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* 0x48826000 - 0x48828000 */ {
			.phys_start = 0x48826000,
			.virt_start = 0x48826000,
			.size = 0x2000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* 0x48828000 - 0x4B300000 */ {
			.phys_start = 0x48828000,
			.virt_start = 0x48828000,
			.size = 0x2ad8000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},

		/* 0x4B500000 - 0x58000000 */ {
			.phys_start = 0x4B500000,
			.virt_start = 0x4B500000,
			.size = 0xCB00000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* Display Subsystem & ...*/ {
			.phys_start = 0x58000000,
			.virt_start = 0x58000000,
			.size = 0x8000000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* RAM */ {
			.phys_start = 0x80000000,
			.virt_start = 0x80000000,
			.size = 0x2FB00000,/*0x6EF00000,*/
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_EXECUTE,
		},
		/* communication region */ {
			.phys_start = 0xAFB00000,/*0xEEF00000,*/
			.virt_start = 0xAFB00000,/*0xEEF00000,*/
			.size = 0x00100000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_IO,
		},
		/* Leave hole for hypervisor */

		/* RAM */ {
			.phys_start = 0xBFC00000,
			.virt_start = 0xBFC00000,
			.size = 0x100000,
			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
				JAILHOUSE_MEM_EXECUTE,
		},
	},
	.irqchips = {
		/* GIC */ {
			.address = 0x48211000,
			.pin_base = 32,
			.pin_bitmap = {
				0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
			},
		},
		/* GIC */ {
			.address = 0x48211000,
			.pin_base = 160,
			.pin_bitmap = {
				0xffffffff, 0, 0, 0
			},
		},
	},

};

  • Hi Nir,

    Thanks for posting the details. I will look at this issue early next week - the next two days are holidays in US. Sorry for the delay.

  • Hi,

    I made some progress and now jailhouse is running properly on the custom board.

    I decided to position jailhouse related memory chunks in the middle of the address space of the physical RAM (0xA0000000) instead of the end, like the example supplied by TI, and the "Unhandled data write" error doesn't come up anymore.

    Fixes to arch/arm/boot/dts/am572x-idk-jailhouse.dtsi

    diff --git a/arch/arm/boot/dts/am572x-idk-jailhouse.dtsi b/arch/arm/boot/dts/am572x-idk-jailhouse.dtsi
    index 8a75306..0d8a9bc 100644
    --- a/arch/arm/boot/dts/am572x-idk-jailhouse.dtsi
    +++ b/arch/arm/boot/dts/am572x-idk-jailhouse.dtsi
    @@ -9,14 +9,14 @@
    / {
    model = "TI AM5728 JAILHOUSE IDK";
    reserved-memory {
    - jailhouse: jailhouse@ef000000 {
    - reg = <0x0 0xef000000 0x0 0x1000000>;
    + jailhouse: jailhouse@af000000 {
    + reg = <0x0 0xaf000000 0x0 0x1000000>;
    no-map;
    status = "okay";
    };

    - jh_inmate: jh_inmate@ee000000 {
    - reg = <0x0 0xe0000000 0x0 0xf000000>;
    + jh_inmate: jh_inmate@a0000000 {
    + reg = <0x0 0xa0000000 0x0 0xf000000>;
    no-map;
    status = "okay";
    };

    The root cell configuration was adapted to this memory layout. See attached am57xx-evm.c

    In the inmate cell config I also changed relevant addresses:

    /* RAM loader */ {
    - .phys_start = 0xed000000,
    + .phys_start = 0xad000000,
    .virt_start = 0x0,
    .size = 0x10000,
    .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE,
    },
    /* RAM RTOS 224MB*/ {
    - .phys_start = 0xe0000000,
    + .phys_start = 0xa0000000,
    .virt_start = 0x80000000,
    .size = 0xd000000,
    .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE,
    },
    /* communication region */ {
    - .phys_start = 0xEEF00000,
    - .virt_start = 0xEEF00000,
    + .phys_start = 0xAEF00000,
    + .virt_start = 0xAEF00000,
    .size = 0x00100000,
    .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED,

    Thanks,

    Nir.

    /*
     * Jailhouse, a Linux-based partitioning hypervisor
     *
     * Copyright (c) Texas Insturments. Inc, 2016
     *
     * Authors:
     *  Vitaly Andrianov <vitalya@ti.com>
     *
     * This work is licensed under the terms of the GNU GPL, version 2.  See
     * the COPYING file in the top-level directory.
     */
    
    #include <jailhouse/types.h>
    #include <jailhouse/cell-config.h>
    
    #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
    
    struct {
    	struct jailhouse_system header;
    	__u64 cpus[1];
    	struct jailhouse_memory mem_regions[18];
    	struct jailhouse_irqchip irqchips[2];
    } __attribute__((packed)) config = {
    	.header = {
    		.signature = JAILHOUSE_SYSTEM_SIGNATURE,
    		.revision = JAILHOUSE_CONFIG_REVISION,
    		.hypervisor_memory = {
    			.phys_start = 0xAF000000,
    			.size = 0x1000000,
    		},
    		.debug_console = {
    			.address = 0x4AE2B000,
    			.size = 0x1000,
    			/* .divider = 26, */
    			.flags = JAILHOUSE_CON1_TYPE_8250 |
    				JAILHOUSE_CON1_ACCESS_MMIO |
    				JAILHOUSE_CON1_REGDIST_4 |
    				JAILHOUSE_CON2_TYPE_ROOTPAGE,
    		},
    		.platform_info.arm = {
    			.gic_version = 2,
    			.gicd_base = 0x48211000,
    			.gicc_base = 0x48212000,
    			.gich_base = 0x48214000,
    			.gicv_base = 0x48216000,
    			.maintenance_irq = 25,
    		},
    		.root_cell = {
    			.name = "AM57XX-EVM",
    			.cpu_set_size = sizeof(config.cpus),
    			.num_memory_regions = ARRAY_SIZE(config.mem_regions),
    			.num_irqchips = ARRAY_SIZE(config.irqchips),
    		},
    	},
    
    	.cpus = {
    		0x3,
    	},
    
    	.mem_regions = {
    		/* PCI */ {
    			.phys_start = 0x20000000,
    			.virt_start = 0x20000000,
    			.size = 0x10000000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* OCMCRAM */ {
    			.phys_start = 0x40300000,
    			.virt_start = 0x40300000,
    			.size = 0x80000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* 0x40380000 - 0x48020000 */ {
    			.phys_start = 0x40380000,
    			.virt_start = 0x40380000,
    			.size = 0x7ca0000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* UART... */ {
    			.phys_start = 0x48020000,
    			.virt_start = 0x48020000,
    			.size = 0xe0000,//0x00001000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* 0x48100000 - 0x48281000 */ {
    			.phys_start = 0x48100000,
    			.virt_start = 0x48100000,
    			.size = 0x110000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/*
    		 * Leave gap for GIC controller 0x48210000 - 0x41220000
    		 */
    		/* 0x48220000 - 0x48281000 */ {
    			.phys_start = 0x48220000,
    			.virt_start = 0x48220000,
    			.size = 0x610000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* OMAP WakeupGen */ {
    			.phys_start = 0x48281000,
    			.virt_start = 0x48281000,
    			.size = 0x1000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* PRCM MPU */ {
    			.phys_start = 0x48243000,
    			.virt_start = 0x48243000,
    			.size = 0x1000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* 0x48400000 - 0x48424000 */ {
    			.phys_start = 0x48400000,
    			.virt_start = 0x48400000,
    			.size = 0x24000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* UART... */ {
    			.phys_start = 0x48424000,
    			.virt_start = 0x48424000,
    			.size = 0x2000,//0x00001000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    
    		/* 0x48426000 - 0x48826000 */ {
    			.phys_start = 0x48426000,
    			.virt_start = 0x48426000,
    			.size = 0x400000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* 0x48826000 - 0x48828000 */ {
    			.phys_start = 0x48826000,
    			.virt_start = 0x48826000,
    			.size = 0x2000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* 0x48828000 - 0x4B300000 */ {
    			.phys_start = 0x48828000,
    			.virt_start = 0x48828000,
    			.size = 0x2ad8000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    
    		/* 0x4B500000 - 0x58000000 */ {
    			.phys_start = 0x4B500000,
    			.virt_start = 0x4B500000,
    			.size = 0xCB00000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* Display Subsystem & ...*/ {
    			.phys_start = 0x58000000,
    			.virt_start = 0x58000000,
    			.size = 0x8000000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/* RAM */ {
    			.phys_start = 0x80000000,
    			.virt_start = 0x80000000,
    			.size = 0x2EF00000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_EXECUTE,
    		},
    		/* communication region */ {
    			.phys_start = 0xAEF00000,
    			.virt_start = 0xAEF00000,
    			.size = 0x00100000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_IO,
    		},
    		/*
    		 * Leave hole for hypervisor
    		 * jh inmate: start 0xa0000000, size 0x0f000000
    		 * hypervisor: start 0xaf000000, size 0x01000000
    		 * End at 0xb0000000
    		 *
    		 * RAM and comm region overlap with jh inmate, and that's the way it is
    		 * intended to be. The inmate cell configuration takes care of that.
    		 */
    
    		/* RAM */ {
    			.phys_start = 0xB0000000,
    			.virt_start = 0xB0000000,
    			.size = 0x10000000,
    			.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
    				JAILHOUSE_MEM_EXECUTE,
    		},
    	},
    	.irqchips = {
    		/* GIC */ {
    			.address = 0x48211000,
    			.pin_base = 32,
    			.pin_bitmap = {
    				0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
    			},
    		},
    		/* GIC */ {
    			.address = 0x48211000,
    			.pin_base = 160,
    			.pin_bitmap = {
    				0xffffffff, 0, 0, 0
    			},
    		},
    	},
    
    };
    

  • Thanks for sharing the solution.

  • Hi,

    I was able to port pdk example NIMU_BasicExample_idkAm572x_armExample into a jailhouse inmate and run it properly.

    Now I'm trying to port a custom sysbios project to a jailhouse inmate and I'm running into some errors.

    Upon startup of the TI-RTOS app invokes GPIO_init(), then GPIO_setConfig_v1() iterates over a list of gpios defined in our borad_cfg.h and sets their direction and the output value.

    Not on all gpios but on most of them I get a dump from the kernel:

    [ 482.853148] ------------[ cut here ]------------
    [ 482.857813] WARNING: CPU: 0 PID: 28 at /home/stx-ti/Projects/tisdk/build/arago-tmp-external-linaro-toolchain/work-shared/am57xx-evm/kernel-source/drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x254/0x370
    [ 482.876436] 44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4_WKUP (Idle): Data Access in User mode during Functional access
    [ 482.887808] Modules linked in: jailhouse(O) sha512_generic sha512_arm sha256_generic sha1_generic sha1_arm md5 cbc xhci_plat_hcd xhci_hcd usbcore dwc3 udc_core usb_common ti_prueth pru_rproc pruss pruss_intc snd_soc_omap_hdmi_audio omap_aes_driver c_can_platform c_can pruss_soc_bus can_dev omap_sham ahci_platform libahci_platform libahci phy_omap_usb2 omap_wdt libata scsi_mod ti_vpe ti_vip ti_sc ti_csc ti_vpdma dwc3_omap rtc_omap gpio_pisosr extcon_palmas rtc_palmas omap_des des_generic crypto_engine omap_crypto gpio_tpic2810 ov2659 v4l2_fwnode omap_remoteproc virtio_rpmsg_bus rpmsg_core remoteproc sch_fq_codel cryptodev(O)
    [ 482.943469] CPU: 0 PID: 28 Comm: irq/23-l3-app-i Tainted: G W O 4.14.79-rt47-g7dac5fd971 #2
    [ 482.943472] Hardware name: Generic DRA74X (Flattened Device Tree)
    [ 482.943474] Backtrace:
    [ 482.943493] [<c010b808>] (dump_backtrace) from [<c010baec>] (show_stack+0x18/0x1c)
    [ 482.943500] r7:00000009 r6:600f0013 r5:00000000 r4:c0d57d60
    [ 482.943508] [<c010bad4>] (show_stack) from [<c082d1fc>] (dump_stack+0x90/0xa4)
    [ 482.943519] [<c082d16c>] (dump_stack) from [<c012aea0>] (__warn+0xec/0x104)
    [ 482.943524] r7:00000009 r6:c0ad8c40 r5:00000000 r4:d4a31e40
    [ 482.943534] [<c012adb4>] (__warn) from [<c012aef8>] (warn_slowpath_fmt+0x40/0x48)
    [ 482.943539] r9:00000010 r8:d4a16950 r7:c0ad8aac r6:00000000 r5:c0ad8b6c r4:c0ad8c10
    [ 482.943548] [<c012aebc>] (warn_slowpath_fmt) from [<c041e5cc>] (l3_interrupt_handler+0x254/0x370)
    [ 482.943552] r3:d4a167c0 r2:c0ad8c10
    [ 482.943554] r4:80080003
    [ 482.943563] [<c041e378>] (l3_interrupt_handler) from [<c0181dd8>] (irq_forced_thread_fn+0x28/0x7c)
    [ 482.943568] r10:c0181db0 r9:d4a16cc0 r8:d49e1100 r7:00000001 r6:00000000 r5:d49e1100
    [ 482.943570] r4:d4a16cc0
    [ 482.943577] [<c0181db0>] (irq_forced_thread_fn) from [<c0182130>] (irq_thread+0x130/0x208)
    [ 482.943581] r7:00000001 r6:00000000 r5:ffffe000 r4:d4a16ce4
    [ 482.943589] [<c0182000>] (irq_thread) from [<c0149368>] (kthread+0x164/0x16c)
    [ 482.943594] r10:d4871b20 r9:c0182000 r8:d4a16cc0 r7:d4a30000 r6:00000000 r5:d4a16d00
    [ 482.943596] r4:d49e3080
    [ 482.943604] [<c0149204>] (kthread) from [<c0107a90>] (ret_from_fork+0x14/0x24)
    [ 482.943609] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c0149204
    [ 482.943611] r4:d4a16d00
    [ 482.943613] ---[ end trace 0000000000000004 ]---

    Why does it happen and how can I fix this?

    Thanks a lot,

    Nir.

  • Nir,

    Please ensure the corresponding GPIO module, which GPIO pins are used in inmate, is disabled in dts of the root cell Linux.

  • Hi,

    At the moment I disabled GPIO_init. We'll get back to it later.

    I'm booting linux from eMMC and now I'm trying to pass the sdcard to the ti-rtos jailhouse inmate.

    In arch/arm/boot/dts/am572x-idk-jailhouse.dtsi I disabled mmc1. In the inmate cell config file I added the address space of mmc1.

    During FileSysInit() the code reaches all the way to HSMMCSDSoftReset() that writes to MMCHS_SYSCONFIG (0x4809c110)

    then I get a dump from the linux kernel:

    [ 553.691209] ------------[ cut here ]------------
    [ 553.695876] WARNING: CPU: 0 PID: 28 at /home/stx-ti/Projects/tisdk/build/arago-tmp-external-linaro-toolchain/work-shared/am57xx-evm/kernel-source/drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x254/0x370
    [ 553.714500] 44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4_PER1_P3 (Read): Data Access in User mode during Functional access
    [ 553.726133] Modules linked in: jailhouse(O) sha512_generic sha512_arm sha256_generic sha1_generic sha1_arm md5 cbc xhci_plat_hcd xhci_hcd usbcore dwc3 udc_core usb_common ti_prueth pru_rproc pruss pruss_intc snd_soc_omap_hdmi_audio omap_aes_driver c_can_platform c_can can_dev omap_sham pruss_soc_bus ahci_platform omap_wdt libahci_platform libahci libata scsi_mod phy_omap_usb2 ti_vip ti_vpe ti_sc ti_csc ti_vpdma dwc3_omap rtc_omap gpio_pisosr extcon_palmas rtc_palmas omap_des gpio_tpic2810 ov2659 v4l2_fwnode des_generic crypto_engine omap_crypto omap_remoteproc virtio_rpmsg_bus rpmsg_core remoteproc sch_fq_codel cryptodev(O)
    [ 553.781797] CPU: 0 PID: 28 Comm: irq/23-l3-app-i Tainted: G O 4.14.79-rt47-g7dac5fd971 #2
    [ 553.781800] Hardware name: Generic DRA74X (Flattened Device Tree)
    [ 553.781802] Backtrace:
    [ 553.781817] [<c010b808>] (dump_backtrace) from [<c010baec>] (show_stack+0x18/0x1c)
    [ 553.781823] r7:00000009 r6:600f0013 r5:00000000 r4:c0d57d60
    [ 553.781832] [<c010bad4>] (show_stack) from [<c082d1fc>] (dump_stack+0x90/0xa4)
    [ 553.781842] [<c082d16c>] (dump_stack) from [<c012aea0>] (__warn+0xec/0x104)
    [ 553.781847] r7:00000009 r6:c0ad8c40 r5:00000000 r4:d4a31e40
    [ 553.781857] [<c012adb4>] (__warn) from [<c012aef8>] (warn_slowpath_fmt+0x40/0x48)
    [ 553.781862] r9:00000006 r8:d4a16950 r7:c0ad8aac r6:00000002 r5:c0ad8b6c r4:c0ad8c10
    [ 553.781872] [<c012aebc>] (warn_slowpath_fmt) from [<c041e5cc>] (l3_interrupt_handler+0x254/0x370)
    [ 553.781875] r3:d4a167c0 r2:c0ad8c10
    [ 553.781878] r4:80080003
    [ 553.781886] [<c041e378>] (l3_interrupt_handler) from [<c0181dd8>] (irq_forced_thread_fn+0x28/0x7c)
    [ 553.781892] r10:c0181db0 r9:d4a16cc0 r8:d49e1100 r7:00000001 r6:00000000 r5:d49e1100
    [ 553.781894] r4:d4a16cc0
    [ 553.781900] [<c0181db0>] (irq_forced_thread_fn) from [<c0182130>] (irq_thread+0x130/0x208)
    [ 553.781904] r7:00000001 r6:00000000 r5:ffffe000 r4:d4a16ce4
    [ 553.781912] [<c0182000>] (irq_thread) from [<c0149368>] (kthread+0x164/0x16c)
    [ 553.781917] r10:d4871b20 r9:c0182000 r8:d4a16cc0 r7:d4a30000 r6:00000000 r5:d4a16d00
    [ 553.781920] r4:d49e3080
    [ 553.781928] [<c0149204>] (kthread) from [<c0107a90>] (ret_from_fork+0x14/0x24)
    [ 553.781933] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c0149204
    [ 553.781935] r4:d4a16d00
    [ 553.781937] ---[ end trace 0000000000000002 ]---

    Not sure if this is relevant, but in /proc/iomem I see

    4a003400-4a003867 : pinctrl-single

    
    root@am57xx-evm:~# cat /proc/iomem
    20013000-2fffffff : MEM
      20100000-201fffff : 0000:00:00.0
    40300000-4037ffff : 40300000.ocmcram
    40800000-40847fff : l2ram
    40d01000-40d010ff : /ocp/mmu@40d01000
    40d02000-40d020ff : /ocp/mmu@40d02000
    40e00000-40e07fff : l1pram
    40f00000-40f07fff : l1dram
    41000000-41047fff : l2ram
    41501000-415010ff : /ocp/mmu@41501000
    41502000-415020ff : /ocp/mmu@41502000
    41600000-41607fff : l1pram
    41700000-41707fff : l1dram
    43300000-433fffff : edma3_cc
    44000000-44ffffff : /ocp
    45000000-45000fff : /ocp
    48034000-4803407f : /ocp/timer@48034000
    48036000-4803607f : /ocp/timer@48036000
    4803e000-4803e07f : /ocp/timer@4803e000
    48051000-480511ff : /ocp/gpio@48051000
    48053000-480531ff : /ocp/gpio@48053000
    48055000-480551ff : /ocp/gpio@48055000
    48057000-480571ff : /ocp/gpio@48057000
    48059000-480591ff : /ocp/gpio@48059000
    4805d000-4805d1ff : /ocp/gpio@4805d000
    48070000-480700ff : /ocp/i2c@48070000
    48086000-4808607f : /ocp/timer@48086000
    48088000-4808807f : /ocp/timer@48088000
    48090000-48091fff : /ocp/rng@48090000
    480a5000-480a509f : /ocp/des@480a5000
    480b4000-480b43ff : /ocp/mmc@480b4000
    480b8000-480b81ff : /ocp/spi@480b8000
    4844a000-4844ad1b : /ocp/padconf@4844a000
    48484000-48484fff : /ocp/ethernet@48484000
    48485000-484850ff : /ocp/ethernet@48484000/mdio@48485000
    48485200-48487fff : /ocp/ethernet@48484000
    48820000-4882007f : /ocp/timer@48820000
    48822000-4882207f : /ocp/timer@48822000
    48824000-4882407f : /ocp/timer@48824000
    48828000-4882807f : /ocp/timer@48828000
    4882a000-4882a07f : /ocp/timer@4882a000
    4882c000-4882c07f : /ocp/timer@4882c000
    4882e000-4882e07f : /ocp/timer@4882e000
    48838000-488380ff : /ocp/rtc@48838000
    48840000-488401ff : /ocp/mailbox@48840000
    48842000-488421ff : /ocp/mailbox@48842000
    48880000-4888ffff : /ocp/omap_dwc3_1@48880000
    48890000-48897fff : /ocp/omap_dwc3_1@48880000/usb@48890000
      48890000-48897fff : /ocp/omap_dwc3_1@48880000/usb@48890000
    4889c100-488a6fff : /ocp/omap_dwc3_1@48880000/usb@48890000
    488c0000-488cffff : /ocp/omap_dwc3_2@488c0000
    488d0000-488d7fff : /ocp/omap_dwc3_2@488c0000/usb@488d0000
      488d0000-488d7fff : /ocp/omap_dwc3_2@488c0000/usb@488d0000
    488dc100-488e6fff : /ocp/omap_dwc3_2@488c0000/usb@488d0000
    48990000-48990113 : vip
    48995500-489955d7 : parser0
    48995700-48995717 : csc0
    48995800-4899587f : sc0
    48995a00-48995ad7 : parser1
    48995c00-48995c17 : csc1
    48995d00-48995d7f : sc1
    489d0700-489d077f : sc
    489d5700-489d5717 : csc
    4a0021e0-4a0021eb : /ocp/bandgap@4a0021e0
    4a00232c-4a002337 : /ocp/bandgap@4a0021e0
    4a002380-4a0023ab : /ocp/bandgap@4a0021e0
    4a0023c0-4a0023fb : /ocp/bandgap@4a0021e0
    4a00246c-4a00246f : ldo-address
    4a002470-4a002473 : ldo-address
    4a002554-4a002557 : gmii-sel
    4a002564-4a00256b : /ocp/bandgap@4a0021e0
    4a002574-4a0025c3 : /ocp/bandgap@4a0021e0
    4a002b78-4a002c73 : /ocp/l4@4a000000/scm@2000/dma-router@b78
    4a002c78-4a002cf3 : /ocp/l4@4a000000/scm@2000/dma-router@c78
    4a003400-4a003867 : pinctrl-single
    4a056000-4a056fff : omap_dma_system.0
      4a056000-4a056fff : /ocp/dma-controller@4a056000
    4a080000-4a08001f : /ocp/ocp2scp@4a080000
    4a084000-4a0843ff : /ocp/ocp2scp@4a080000/phy@4a084000
    4a084c00-4a084c3f : pll_ctrl
    4a085000-4a0853ff : /ocp/ocp2scp@4a080000/phy@4a085000
    4a090000-4a09001f : /ocp/ocp2scp@4a090000
    4a094000-4a09407f : phy_rx
    4a094400-4a094463 : phy_tx
    4a096800-4a09683f : pll_ctrl
    4a140000-4a1410ff : /ocp/sata@4a141100
    4ae07ddc-4ae07ddf : setup-address
    4ae07de0-4ae07de3 : control-address
    4ae07de4-4ae07de7 : setup-address
    4ae07de8-4ae07deb : control-address
    4ae07e20-4ae07e23 : control-address
    4ae07e24-4ae07e27 : control-address
    4ae07e30-4ae07e33 : setup-address
    4ae07e34-4ae07e37 : setup-address
    4ae0c154-4ae0c157 : ldo-address
    4ae0c158-4ae0c15b : ldo-address
    4ae10000-4ae101ff : /ocp/gpio@4ae10000
    4ae14000-4ae1407f : /ocp/wdt@4ae14000
    4ae20000-4ae2007f : /ocp/timer@4ae20000
    4ae2b000-4ae2b01f : serial
    4ae3c000-4ae3dfff : /ocp/can@4ae3c000
    4b101000-4b1012ff : /ocp/sham@53100000
    4b300000-4b3000ff : qspi_base
    4b500000-4b50009f : /ocp/aes@4b500000
    4b700000-4b70009f : /ocp/aes@4b700000
    55020000-5502ffff : l2ram
    55082000-550820ff : /ocp/mmu@55082000
    58000000-5800007f : dss
    58001000-58001fff : /ocp/dss@58000000/dispc@58001000
    58004054-58004057 : pll1_clkctrl
    58004300-5800431f : pll1
    58009054-58009057 : pll2_clkctrl
    58009300-5800931f : pll2
    58040000-580401ff : wp
    58040200-5804027f : pll
    58040300-5804037f : phy
    58060000-58078fff : core
    58820000-5882ffff : l2ram
    58882000-588820ff : /ocp/mmu@58882000
    80000000-9fffffff : System RAM
      80008000-80bfffff : Kernel code
      80d00000-80da2c8f : Kernel data
    af000000-afffffff : Jailhouse hypervisor
    b0000000-bfdfffff : System RAM
    

    I understand that CTRL_CORE_PAD_MMC1_SDCD (0x4A00376C) is set to mmc1_sdcd.

    I guess I can't completely disable GPIO6 on the linux side because it will probably break the functionality of the board.


    Can you please explain what causes this dump, and what am I missing in the configuration that will pass the sdcard (mmc1) properly to the ti-rtos inmate?

    Thanks,

    Nir.

  • Hi,

    I'm still struggling with passing MMC1 to the RTOS inmate. I disabled mmc1 in the kernel dts and allowed the inmate access to its memory address space in the cell config file.

    In the kernel dts I also removed the reg configuration which pacified the kernel dump I mentioned in my previous post. Now the inmate can touch the mmc1 registers without the linux kernel complaining.

    arch/arm/boot/dts/dra7.dtsi, line 1108

    - reg = <0x4089c000 0x400>;

    CM_L3INIT_MMC1_CLKCTRL_REG seems to be configured fine, set to 0x03040002

    Checking /sys/kernel/debug/pinctrl/4a003400.pinmux/pins, the pinmux is also configured properly.

    Still, OSAL_FileSysInit() fails in MMCSD_v1_initSd()

    1082 if(MMCSD_OK == ret)
    1083 {
    1084     /* CMD0 - reset card */
    1085     transaction.cmd = MMCSD_CMD(0U);
    1086     transaction.flags = MMCSD_CMDRSP_NONE;
    1087     transaction.arg = 0U;
    1088     ret = MMCSD_v1_transfer(handle, &transaction);
    1089 }
    1090
    1091 if(MMCSD_OK == ret)
    1092 {
    1093     /* APP cmd should be preceeded by a CMD55 */
    1094     transaction.cmd = MMCSD_CMD(55U);
    1095     transaction.flags = 0U;
    1096     transaction.arg = object->rca << 16U;
    1097     ret = MMCSD_v1_transfer(handle, &transaction);
    1098 }

    First invoke of MMCSD_v1_transfer() returns with success. The second fails because MMCSD_v1_cmdStatusFxn() returns with interrupt status register

    0x4809 C230 MMCHS_STAT = 0x00018000 which means a timeout occurred.

    Can you explain what might cause this error? Could this be a configuration issue?

    Needless to mention, when enabled in the kernel dts the sdcard (mmc1) works properly, and when the project that I ported to a jailhouse inmate is run as a native rtos app, the sdcard is also functional.

    Thanks a lot,

    Nir.

  • Hi,

    In CTRL_CORE_CONTROL_PBIAS (0x4A00 2E00) I had to make sure that SDCARD_IO_PWRDNZ (bit 26) and SDCARD_BIAS_PWRDNZ (bit 27)

    are set to 1.

    Now I have MMC1 functional on the jailhouse inmate side.

    Thanks a lot,

    Nir.