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

Re: [Embedded-pv-devel] Xen bring up on TI DRA7xxx (J6) EVM



Hi Julien,

Thanks a lot for your suggestions. Actually, I found that MMIO regions were not mapped for some registers. For OMAP5 EVM, some registers are mapped in Xen itself in the .specific_mapping function. But this was not done for J6. Following change was needed in the Xen source to get rid of the crash -
diff --git a/xen/arch/arm/platforms/omap5.c b/xen/arch/arm/platforms/omap5.c
index 9d6e504..4ee899b 100644
--- a/xen/arch/arm/platforms/omap5.c
+++ b/xen/arch/arm/platforms/omap5.c
@@ -182,6 +182,7 @@ PLATFORM_START(dra7, "TI DRA7")
ÂÂÂÂ .init_time = omap5_init_time,
ÂÂÂÂ .cpu_up = cpu_up_send_sgi,
ÂÂÂÂ .smp_init = omap5_smp_init,
+ÂÂÂ .specific_mapping = omap5_specific_mapping,
Â
ÂÂÂÂ .dom0_gnttab_start = 0x4b000000,
ÂÂÂÂ .dom0_gnttab_size = 0x20000,

Had to disable few drivers in the kernel to finally get Dom0 booting on J6 EVM.

--

Thanks,
Akshay


On Mon, May 25, 2015 at 6:16 PM, akshay bhat <akshayabhat@xxxxxxxxx> wrote:
Hi Julien/Andril,

Now I am able to place all boot modules and boot reserves over 0xC000000 so that there is a clean 1:1 mapping from 0x80000000 to 0xC0000000 to DOM0. Still I see the CPU0 power domain registration crash. Here is the latest log (simplified) -
Starting kernel ...

- UART enabled -
- CPU 00000000 booting -
.
.
(XEN) Checking for initrd in /chosen
(XEN) RAM: 0000000080000000 - 00000000dfffffff
(XEN)
(XEN) MODULE[0]: 00000000c0000000 - 00000000c0017000 Device Tree
(XEN) MODULE[1]: 00000000cf000000 - 00000000cf4b0000 Kernel
(XEN)Â RESVD[0]: 00000000c0000000 - 00000000c0017000

(XEN)
(XEN) Command line: dom0_mem=1G sync_console console=dtuart dtuart=serial0
(XEN) Placing Xen at 0x00000000dfe00000-0x00000000e0000000
(XEN) Update BOOTMOD_XEN from 0000000080200000-00000000802f1701 => 00000000dfe00000-00000000dfef1701
(XEN) Xen heap: 00000000da000000-00000000de000000 (16384 pages)
(XEN) Dom heap: 376832 pages
(XEN) Domain heap initialised
.
.
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Xen starting in Hyp mode -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 1 booted.
(XEN) Brought up 2 CPUs
(XEN) P2M: 40-bit IPA
(XEN) P2M: 3 levels with order-1 root, VTCR 0x80003558
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading kernel from boot module @ 00000000cf000000
(XEN) Allocating 1:1 mappings totalling 1024MB for dom0:
(XEN) BANK[0] 0x00000080000000-0x000000c0000000 (1024MB)
(XEN) Loading zImage from 00000000cf000000 to 0000000087a00000-0000000087e98d28
(XEN) Loading dom0 DTB to 0x0000000088000000-0x0000000088015904
(XEN) Scrubbing Free RAM on 1 nodes using 2 CPUs
(XEN) ......done.
(XEN) Initial low memory virq threshold set at 0x4000 pages.
.
.
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen)
(XEN) Freed 252kB init memory.
Booting Linux on physical CPU 0x0
Linux version 3.12.25-28678-gbe43a19-dirty (akshay@akshay-desktop) (gcc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) ) #18 SMP PREEMPT Mon May 25 18:02:45 IST 2015
CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
Machine: Jacinto6 evm board, model: TI DRA7
.
.
psci: probing function IDs from device-tree
Unhandled fault: terminal exception (0x002) at
Internal error: : 2 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.25-28678-gbe43a19-dirty #18
task: 808faa20 ti: 808f0000 task.ti: 808f0000
PC is at omap4_prminst_read_inst_reg+0x28/0x40
LR is at omap4_pwrdm_wait_transition+0x48/0x7c
pc : [<800378dc>]ÂÂÂ lr : [<80030d10>]ÂÂÂ psr: a00001d3
sp : 808f1ee8Â ip : 808f1ef8Â fp : 808f1ef4
r10: 00000001 r9 : 0000000b r8 : 808fe924
r7 : 8093f740Â r6 : 000186a1Â r5 : 809035c4Â r4 : 00000001
r3 : fa243000Â r2 : fa243404Â r1 : 00000400Â r0 : 00000005
Flags: NzCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment kernel
Control: 10c5387d Table: 8000406a DAC: 00000015
Process swapper (pid: 0, stack limit = 0x808f0248)
Stack: (0x808f1ee8 to 0x808f2000)
1ee0:ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 808f1f14 808f1ef8 80030d10 800378c0 8097676c 809035c4
1f00: 00000000 808de74c 808f1f44 808f1f18 80038d84 80030cd4 8097676c 80975680
1f20: 808f849c 808d530c 00000002 808f8530 80938758 808fb90c 808f1f54 808f1f48
1f40: 808a849c 80038c28 808f1f64 808f1f58 808a09a8 808a848c 808f1fb4 808f1f68
1f60: 8089b4d4 808a0948 00000000 10c5387d 00000000 00000000 00000000 00000001
1f80: 00000000 00000000 807c3614 00000001 80974bc0 00000000 ffffffff ffffffff
1fa0: 412fc0f2 00000000 808f1ff4 808f1fb8 808978b0 8089ad18 00000000 00000000
1fc0: 00000000 00000000 00000000 808d7398 00000000 10c5387d 808f8494 808d7394
1fe0: 808fba14 8000406a 00000000 808f1ff8 80008074 80897840 00000000 00000000
Backtrace:
[<800378b4>] (omap4_prminst_read_inst_reg+0x0/0x40) from [<80030d10>] (omap4_pwrdm_wait_transition+0x48/0x7c)
[<80030cc8>] (omap4_pwrdm_wait_transition+0x0/0x7c) from [<80038d84>] (pwrdm_register_pwrdms+0x168/0x1c4)
Âr7:808de74c r6:00000000 r5:809035c4 r4:8097676c
[<80038c1c>] (pwrdm_register_pwrdms+0x0/0x1c4) from [<808a849c>] (dra7xx_powerdomains_init+0x1c/0x2c)
[<808a8480>] (dra7xx_powerdomains_init+0x0/0x2c) from [<808a09a8>] (dra7xx_init_early+0x6c/0x90)

[<808a093c>] (dra7xx_init_early+0x0/0x90) from [<8089b4d4>] (setup_arch+0x7c8/0x894)
[<8089ad0c>] (setup_arch+0x0/0x894) from [<808978b0>] (start_kernel+0x7c/0x310)
[<80897834>] (start_kernel+0x0/0x310) from [<80008074>] (0x80008074)
Âr8:8000406a r7:808fba14 r6:808d7394 r5:808f8494 r4:10c5387d
Code: e59f301c e7933100 e3530000 0a000003 (e0822001)
---[ end trace 1b75b31a2719ed1c ]---
Kernel panic - not syncing: Attempted to kill the idle task!

Is it still a mapping issue? FYI, the hardware has 1.5GB of physical RAM. Are you saying that the kernel is attempting to access some address (harcoded) which is above 0xC0000000 in this case?

Thanks,
Akshay


On Mon, May 25, 2015 at 3:08 PM, Julien Grall <julien.grall@xxxxxxxxxx> wrote:
Hi,


On 25/05/2015 09:36, akshay bhat wrote:
(XEN) 3... 2... 1...
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch
input to Xen)
(XEN) Freed 252kB init memory.
Booting Linux on physical CPU 0x0
Linux version 3.12.25-28678-gbe43a19-dirty (akshay@akshay-desktop) (gcc
version 4.7.3 20130226 (prerelease) (crosstool-NG
linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) ) #13 SMP
PREEMPT Mon May 25 12:44:25 IST 2015
CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
Machine: Jacinto6 evm board, model: TI DRA7
debug: ignoring loglevel setting.
cma: CMA: reserved 64 MiB at 99000000
cma: CMA: reserved 56 MiB at 95800000
cma: CMA: reserved 8 MiB at 9f000000
cma: CMA: reserved 32 MiB at 9d000000
cma: CMA: reserved 24 MiB at ae000000
Memory policy: ECC disabled, Data cache writealloc
OMAP4: Map 0xcfe00000 to 0xfe600000 for dram barrier
On node 0 totalpages: 260608
free_area_init_node: node 0, pgdat c09732c0, node_mem_map c09b5000
 ÂNormal zone: 1520 pages used for memmap
 ÂNormal zone: 0 pages reserved
 ÂNormal zone: 160768 pages, LIFO batch:31
 ÂHighMem zone: 1040 pages used for memmap
 ÂHighMem zone: 99840 pages, LIFO batch:31
psci: probing function IDs from device-tree
*clockdomain: mpu0_clkdm: powerdomain cpu0_pwrdm does not exist
clockdomain: mpu1_clkdm: powerdomain cpu1_pwrdm does not exist*

PERCPU: Embedded 8 pages/cpu @c13e3000 s8704 r8192 d15872 u32768
pcpu-alloc: s8704 r8192 d15872 u32768 alloc=8*4096
pcpu-alloc: [0] 0 [0] 1
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 259088
Kernel command line: console=hvc0 earlyprintk=xen debug ignore_loglevel
root=/dev/mmcblk0p2 rw rootwait fixrtc
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 834380K/1042432K available (6539K kernel code, 530K rwdata,
2220K rodata, 352K init, 253K bss, 208052K reserved, 399360K highmem)
Virtual kernel memory layout:
  Âvector : 0xffff0000 - 0xffff1000 Â( Â4 kB)
  Âfixmap : 0xfff00000 - 0xfffe0000 Â( 896 kB)
  Âvmalloc : 0xf0000000 - 0xff000000 Â( 240 MB)
  Âlowmem : 0xc0000000 - 0xef800000 Â( 760 MB)
  Âpkmap Â: 0xbfe00000 - 0xc0000000 Â( Â2 MB)
  Âmodules : 0xbf000000 - 0xbfe00000 Â( 14 MB)
   Â.text : 0xc0008000 - 0xc08960ac Â(8761 kB)
   Â.init : 0xc0897000 - 0xc08ef200 Â( 353 kB)
   Â.data : 0xc08f0000 - 0xc0974ba8 Â( 531 kB)
    .bss : 0xc0974bb4 - 0xc09b403c Â( 254 kB)
Preemptible hierarchical RCU implementation.
NR_IRQS:16 nr_irqs:16 16
Unhandled fault: terminal exception (0x002) at 0xfa281010

It's usually because an MMIO region has not been mapped in DOM0.
Please give a look in the kernel to see what he is trying to map.

Regards,

--
Julien Grall





_______________________________________________
Embedded-pv-devel mailing list
Embedded-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/embedded-pv-devel

 


Rackspace

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