Hello,
We are trying to port OV on Versatile Express (Core Tile CA9x4) board. We are using DS5 to flash the otzone.elf file. After changing MPIC, L2CC, timer and Uart addresses in sw_board.h file we got Secure kernel prints however in monitor.S file after execution of movs pc,lr instruction the mode doesn't change to SVC. CPSR still shows monitor mode. PC is loaded with 0x80000000 address where Linux kernel is. But when a jump is made to 0x80008000 address we get a memory violation abort.
karapas
Thu, 08/23/2012 - 03:33
Permalink
By default, NS world cannot
By default, NS world cannot access the 1 GB of DDR2 RAM. You have to enable it, by enabling the corresponding signal in the TZPC:
TZPCDECPROT1[6]
Other parts of the system that are going to be accessed by Linux are also locked down by the TZPC, so I would suggest that, in the beginning, you just enable ALL the TZPC signals (i.e. set all the bits to 1).
Also the start of the DDR2 RAM is at 0x60000000 so I think it might be better to place the linux kernel there.
ayankumarh
Fri, 08/24/2012 - 05:26
Permalink
Hi Karapas,
Hi Karapas,
I have tried further and please find my analysis as follows:-
1. In board.txt:- The SCC register is configured as SCC: 0x004 0x00003F09 (which enables TZASC ) , this is not required as of now.
2. In secure_main() :- I have added the following code before calling sw_meminfo_init():-
sw_writel(0xff,(void*)0x100E6804 /*TZPCDECPROT0Set */);
sw_writel(0xff,(void*)0x100E6810 /*TZPCDECPROT1Set */);
sw_writel(0xff,(void*)0x100E681C/*TZPCDECPROT2Set */);
With these changes , I was able to change the mode from MON to SVC, while switching to normal linux.
Do I need to make any other changes for booting of normal linux ?
3. I have changed the addresses in sw_board.h as follows:-
#define NORMAL_WORLD_RAM_START 0x60000000
#define SECURE_WORLD_RAM_START 0x68000000
#define SECURE_WORLD_RAM_END 0x6C0FFFFF
4. I have changed the address in linker.ld as follows:-
PHYS_OFFSET = 0x68000000;
KERN_PHYS_OFFSET = 0x60000000;
5. For linux, we have used the Cortex-A9 original memory map( enable CONFIG_VEXPRESS_ORIGINAL_MEMORY_MAP ).
With these changes I compiled linux-otz and tzone_sdk.
The normal.elf got booted till it had to halt for finding rootfs(/dev/mmcblk0).
But for otzone.elf, the execution seemed to be proper till the last instruction of otzone ie
movs pc, lr
where it loaded 0x60000000 in pc. But an abort occurred at 0x60000068 with the following logs:-
Execution stopped at: 0x60000068
0x60000068 DCD 0xE5801024
wait
step
Execution stopped at: 0xF7FFFEEC
ERROR(CMD256-TAD10-NAL18):
! Unable to display contents at location "0xF7FFFEEC"
! Failed to read 4 bytes from address 0xF7FFFEEC
! Bus error on memory operation.
Target Message: Memory access caused precise abort.
Debug Precise Abort Registers : DFSR = 0x00000008, DFAR = 0xF7FFFEEC
Target Message: Memory access caused precise abort.
Debug Precise Abort Registers : DFSR = 0x00000008, DFAR = 0xF7FFFEEC
It seems that the configuration of TZPC is incorrect for allocation of secure and non-secure memory regions. Please help me to understand the correct configuration.
Regards,
Ayan Kumar Halder
karapas
Sat, 08/25/2012 - 07:56
Permalink
Hi,
Hi,
A couple of thoughts:
- By default TZASC block NS accesses to the memory regions that it protects. Thus, if you haven't configured it yet, it's better to disable it completely by reverting the SCC register value to the original.
- TZPC has more that 8 signals in TZPCDECPROT0 and TZPCDECPROT1. So in order to enable them all, write 0xffff instead of 0xff in all three registers.
- Try building Linux without SMP. Even though OV configures the system in such a way (sets the NS_SMP bit in NSACR register) that Linux should be allowed to set the SMP bit in the A9 cores, due to the fact that the version of Cortex-A9 that comes with the Coretile is quite old, the NS_SMP bit in the NSACR register is unimplemented thus the OV configuration is not realized and Linux cannot turn on SMP. In any case OV doesn't support SMP yet so just build a UP linux kernel.
In general if you try to debug the Linux kernel while it's booting using DS-5 you should be able to trace all these kind of problems. For example DS-5 allows you to configure various exceptions (data abort, undefined etc) to be caught by DS-5 and this will give you information about the instruction that caused the problem, the kind of problem etc.
Regards
ayankumarh
Sun, 08/26/2012 - 09:51
Permalink
Hi,
Hi,
Thanks for your great help.
I have disabled TZASC on my Versatile Express.
I have written 0xffff in all the three registers of TZPC.
With these changes, I was able to proceed further from last time.( The last time I had got a "Bus Error" at pc=0x0x60000068)
Now I do not get any error on my DS-5 debugger.
But I do not see any linux kernel bootup logs.
Sometimes the linux kernel gives the following error “Fatal Error: unhandled exception – Reset” on the console.
At other times, I do not see any linux kernel logs.
When I debugged further, I found that the execution went smoothly till pc = 0x60008074
[bne 60008060 ] from where it would again jump to pc = 0x60008060
[str r3, [r0], #4] and the cycle would go on………………..( I did not debug further)
My linux kernel load address is 0x60000000.
Please help me to understand where I am going wrong.
Regards,
Ayan Kumar Halder
karapas
Mon, 08/27/2012 - 03:41
Permalink
Which linux kernel are you
Which linux kernel are you using? Did you compile with SMP disabled?
ayankumarh
Mon, 08/27/2012 - 08:03
Permalink
Hi,
Hi,
I have build linux [ ver 2.6.38.7 , the default one for OV ] with uniprocessor support enabled. For this I disabled the following options in the VE_V7 config file:-
CONFIG_USE_GENERIC_SMP_HELPERS=N
CONFIG_SMP=N
CONFIG_SMP_ON_UP==N
And for linux, I used sp-804 timer. With these changes I compiled linux, and was able to boot up the normal.elf.
While building otzone.elf , I changed NSACR_REG_VAL to 0x20000[NS_SMP bit is set to 0].
But during booting of otzone (secure kernel), it got stuck(It did not throw any exception but could not proceed ahead) in the instruction “ldr lr, =kernel”(in monitor.s). This was the strange behavior observed when DS-5 was using “Debug cortex A9_0” configuration.
When I build linux with SMP support, the normal.elf boots.
And when I build otzone.elf [with NSACR_REG_VAL = 0x60000 for SMP], the non-secure linux does not show any boot-up logs. It does not show any exception either.
Regards,
Ayan
karapas
Wed, 08/29/2012 - 03:17
Permalink
In DS-5 and while having the
In DS-5 and while having the debugger connected to DSTREAM, go to the breakpoints tab. On the upper right of the tab you ll find a small triangular arrow pointing downwards. If you click on it, you ll get a menu. Click on the "Manage Signals" item. Then you ll be presented with a list of all the processor exceptions and for each of them you have the option to have DS-5 print and/or stop execution when it occurs. Try selecting both stop and print for some of the Non-Secure world exceptions, specifically Data abort, Prefetch abort and Undefined. This will help you start tracing the problems that the Linux kernel encounters in the very early stage of its boot.
amit
Tue, 08/28/2012 - 23:07
Permalink
Hello,
Hello,
I am using linux kernel - 2.6.38.7 as suggested in the SDK makefile. The ael.diff patch suggests that VE board uses Original memory map which loads the kernel at 0x60000000 address.
The motherboard.h file in the kernel source code lists the addresses of the peripherals.
eg. UART0 address is 0x1009000 and so on. I have changed the peripheral addresses in sw_board.h file depending on these addresses which got my secure kernel running.
I have certain questions related to the booting of normal kernel. I have made the changes suggested by you in the previous posts related to TZPC.
1. While creating section entries in file ve/board.c is an entry required for TZPC, as other peripherals have an entry?
2. The NS bit is 0 while creating the entries. My understanding is that NS = 0 means secure access. So while creating entry for normal world RAM the NS bit should be 1, as also for the sharable device like UART0. Please correct me if I am wrong.
Regards
karapas
Wed, 08/29/2012 - 03:25
Permalink
Hi,
Hi,
1. In this particular case, it doesn't really matter whether you should add an entry for the TZPC or not, because its memory address is already "covered" by the sections that are already created for the other peripepherals. Nevertheless, for completeness, you could add a section entry for TZPC, but actually no new entry will be created, because it will have already been created by one of the already existing peripherals.
2. Each world has it's own set of page tables. The page tables created in the ve/board.c file are for the Secure world, and OV chooses to access those addresses using secure accesses, which is fine. This has nothing to do with Linux, Linux page tables, or how Linux accesses those areas. Linux will create its own, completely independent page tables.
amit
Fri, 08/31/2012 - 01:51
Permalink
Regarding Timer issue
Hello,
By looking into source code I found that secure kernel initializes only free running Timer not the Tick timer. Also the free running timer value is initailised to 0xFFFFFFFF. I would like to know why Tick Timer is not initialised in secure kernel. While running otzone.elf when control reaches the normal kernel after movs pc,lr instruction sometimes I get "Update jiffies" message. Is it due to the fact that Tick timer is not initialised. Also I would like to know why the free running timer is initialised to 0xFFFFFFFF value?
gopu
Tue, 09/04/2012 - 22:41
Permalink
trigger_tick function in cpu
trigger_tick function in cpu_api.c will enable the tick timer and it is a oneshot timer. This will be a part of the software timer framework.
timer_event_start function of sw_timer.c will invoke the trigger_tick function. Refer echo_task.c for usage details.
amit
Thu, 09/06/2012 - 08:32
Permalink
L2CC controller init failed while booting normal Linux
Hello,
I am using linux-kernel 3.5.3 for as non-secure component. I am flashing the otzone.elf file via DS-5 version 5.8. While booting normal linux I got bus error in ct-ca9x4_init function when
writel(0, l2x0_base + L2X0_TAG_LATENCY_CTRL) instruction is executed. Looking into trm for L2CC controller I found that the control registers of L2CC are not writable in non-secure mode. Please let me know what could be the probable cause. The logs for normal.elf and otzone.elf are as follows
Log for normal.elf
/******************************************************************************/
ARM Versatile Express Boot Monitor
Version: V4.0.4
Build Date: Mar 28 2011
Daughterboard Site 1: V2P-CA9 Cortex A9
Daughterboard Site 2: V2F-2XV6
> Initializing cgroup subsys cpuset
Linux version 3.0.42 (amit@amit-VirtualBox) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202) ) #7 SMP Thu Sep 6 18:28:08 IST 2012
CPU: ARMv7 Processor [410fc091] revision 1 (ARMv7), cr=10c53c7d
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: ARM-Versatile Express
bootconsole [earlycon0] enabled
Memory policy: ECC disabled, Data cache writealloc
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
PERCPU: Embedded 7 pages/cpu @805d0000 s4832 r8192 d15648 u32768
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
Kernel command line: root=/dev/mmcblk0 rootwait ip=none mem=128M console=ttyAMA0 earlyprintk
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 128MB = 128MB total
Memory: 124892k/124892k available, 6180k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
vmalloc : 0x88800000 - 0xf8000000 (1784 MB)
lowmem : 0x80000000 - 0x88000000 ( 128 MB)
modules : 0x7f000000 - 0x80000000 ( 16 MB)
.init : 0x80008000 - 0x80034000 ( 176 kB)
.text : 0x80034000 - 0x8048aee4 (4444 kB)
.data : 0x8048c000 - 0x804aeec0 ( 140 kB)
.bss : 0x804aeee4 - 0x804ccadc ( 119 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Hierarchical RCU implementation.
NR_IRQS:128
Console: colour dummy device 80x30
Calibrating delay loop... 795.44 BogoMIPS (lpj=3977216)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
Calibrating local timer... 199.90MHz.
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
CPU1: failed to boot: -38
CPU2: failed to boot: -38
CPU3: failed to boot: -38
Brought up 1 CPUs
SMP: Total of 1 processors activated (795.44 BogoMIPS).
NET: Registered protocol family 16
L310 cache controller enabled
l2x0: 8 ways, CACHE_ID 0x410000c3, AUX_CTRL 0x02460000, Cache size: 524288 B
hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step.
------------[ cut here ]------------
WARNING: at arch/arm/kernel/hw_breakpoint.c:242 enable_monitor_mode+0x98/0xa8()
halting debug mode enabled. Unable to access hardware resources.
Modules linked in:
[<80041884>] (unwind_backtrace+0x0/0xfc) from [<800572bc>] (warn_slowpath_common+0x54/0x64)
[<800572bc>] (warn_slowpath_common+0x54/0x64) from [<80057360>] (warn_slowpath_fmt+0x30/0x40)
[<80057360>] (warn_slowpath_fmt+0x30/0x40) from [<800422f0>] (enable_monitor_mode+0x98/0xa8)
[<800422f0>] (enable_monitor_mode+0x98/0xa8) from [<80042350>] (reset_ctrl_regs+0x50/0x118)
[<80042350>] (reset_ctrl_regs+0x50/0x118) from [<80088414>] (on_each_cpu+0x24/0x30)
[<80088414>] (on_each_cpu+0x24/0x30) from [<8000b61c>] (arch_hw_breakpoint_init+0xac/0x208)
[<8000b61c>] (arch_hw_breakpoint_init+0xac/0x208) from [<800345d8>] (do_one_initcall+0x34/0x180)
[<800345d8>] (do_one_initcall+0x34/0x180) from [<80008498>] (kernel_init+0x124/0x1b0)
[<80008498>] (kernel_init+0x124/0x1b0) from [<8003b980>] (kernel_thread_exit+0x0/0x8)
---[ end trace 1b75b31a2719ed1c ]---
hw-breakpoint: halting debug mode enabled. Assuming maximum watchpoint size of 4 bytes.
Serial: AMBA PL011 UART driver
mb:uart0: ttyAMA0 at MMIO 0x10009000 (irq = 37) is a PL011 rev2
console [ttyAMA0] enabled, bootconsole disabled
console [ttyAMA0] enabled, bootconsole disabled
mb:uart1: ttyAMA1 at MMIO 0x1000a000 (irq = 38) is a PL011 rev2
mb:uart2: ttyAMA2 at MMIO 0x1000b000 (irq = 39) is a PL011 rev2
mb:uart3: ttyAMA3 at MMIO 0x1000c000 (irq = 40) is a PL011 rev2
bio: create slab at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Version 1.0.24.
Switching to clocksource v2m-timer1
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
UDP hash table entries: 128 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 128 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
PMU: registered new PMU device of type 0
JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
msgmni has been set to 243
io scheduler noop registered (default)
clcd-pl11x ct:clcd: PL111 rev1 at 0x10020000
clcd-pl11x ct:clcd: CT-CA9X4 hardware, XVGA display
v2m_cfg_write: writing 03c8eee0 to 00110001
v2m_cfg_write: writing 00000000 to 00710000
v2m_cfg_write: writing 00000002 to 00b10000
Console: switching to colour frame buffer device 128x48
smsc911x: Driver version 2008-10-21
smsc911x-mdio: probed
smsc911x smsc911x: eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:01, irq=-1)
smsc911x smsc911x: eth0: MAC Address: 00:02:f7:00:45:b9
isp1760 isp1760: NXP ISP1760 USB Host Controller
isp1760 isp1760: new USB bus registered, assigned bus number 1
isp1760 isp1760: bus width: 32, oc: digital
isp1760 isp1760: irq 48, io mem 0x4f000000
isp1760 isp1760: USB ISP 1761 HW rev. 1 started
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: NXP ISP1760 USB Host Controller
usb usb1: Manufacturer: Linux 3.0.42 isp1760-hcd
usb usb1: SerialNumber: isp1760
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ISP1760 USB device initialised
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
mousedev: PS/2 mouse device common for all mice
rtc-pl031 mb:rtc: rtc core: registered pl031 as rtc0
mmci-pl18x mb:mmci: mmc0: PL180 manf 41 rev0 at 0x10005000 irq 41,42 (pio)
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
aaci-pl041 mb:aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 43
aaci-pl041 mb:aaci: FIFO 512 entries
ALSA device list:
#0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 43
oprofile: using arm/armv7-ca9
TCP cubic registered
NET: Registered protocol family 17
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 0
rtc-pl031 mb:rtc: setting system clock to 2004-02-22 20:57:17 UTC (1077483437)
isp1760 isp1760: port 1 high speed
usb 1-1: new high speed USB device number 2 using isp1760
isp1760 isp1760: port 1 high speed
usb 1-1: New USB device found, idVendor=0471, idProduct=3526
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1: Product: ISP1520
usb 1-1: Manufacturer: Philips Semiconductors
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 3 ports detected
atkbd serio0: keyboard reset failed on mb:kmi0
Waiting for root device /dev/mmcblk0...
atkbd serio1: keyboard reset failed on mb:kmi1
atkbd serio0: keyboard reset failed on mb:kmi0
atkbd serio1: keyboard reset failed on mb:kmi1
/*************************************************************************************/
--------------------------------------------------------------------------------------------------------------------------
LOGS FOR OTZONE
ARM Versatile Express Boot Monitor
Version: V4.0.4
Build Date: Mar 28 2011
Daughterboard Site 1: V2P-CA9 Cortex A9
Daughterboard Site 2: V2F-2XV6
> gic security register 0x1 and value ffffffff
gic security register 0x2 and value ffffffff
dispatch task id 0x0
Booting Linux on physical CPU 0
Initializing cgroup subsys cpuset
Linux version 3.5.3 (root@amit-VirtualBox) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202) ) #19 Thu Sep 6 12:32:54 IST 2012
CPU: ARMv7 Processor [410fc091] revision 1 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: ARM-Versatile Express
bootconsole [earlycon0] enabled
Memory policy: ECC disabled, Data cache writeback
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
Kernel command line: root=/dev/mmcblk0 rootwait ip=none mem=128M console=ttyAMA0 earlyprintk
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 128MB = 128MB total
Memory: 125140k/125140k available, 5932k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
vmalloc : 0x88800000 - 0xff000000 (1896 MB)
lowmem : 0x80000000 - 0x88000000 ( 128 MB)
modules : 0x7f000000 - 0x80000000 ( 16 MB)
.text : 0x80008000 - 0x804357c8 (4278 kB)
.init : 0x80436000 - 0x8045a254 ( 145 kB)
.data : 0x8045c000 - 0x80488720 ( 178 kB)
.bss : 0x80488744 - 0x804a5c34 ( 118 kB)
SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:256
Console: colour dummy device 80x30
Calibrating delay loop... 795.44 BogoMIPS (lpj=3977216)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
Setting up static identity map for 0x6033b060 - 0x6033b0b8
NET: Registered protocol family 16
Unhandled fault: imprecise external abort (0xc06) at 0x8d0435cb
Internal error: : c06 [#1] ARM
Modules linked in:
CPU: 0 Not tainted (3.5.3 #19)
PC is at ct_ca9x4_init+0x5c/0xc0
LR is at 0x80464048
pc : [<8043c5b4>] lr : [<80464048>] psr: 60000013
sp : 8782df68 ip : 00000012 fp : 00000000
r10: 00000080 r9 : 80459d20 r8 : 80438884
r7 : 00000000 r6 : 80488780 r5 : 804537a4 r4 : 88804000
r3 : 00000000 r2 : 00000653 r1 : 00000000 r0 : 88804000
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 10c53c7d Table: 60004059 DAC: 00000015
Process swapper (pid: 1, stack limit = 0x8782c2e8)
Stack: (0x8782df68 to 0x8782e000)
df60: 00000028 804537a4 80488780 8043c370 8043c2e8 80488780
df80: 00000004 804388a4 8782c000 800085b8 803c17e4 00000001 00000003 00000003
dfa0: 00000000 80452464 80452464 00000004 80488780 804361ac 80452478 00000080
dfc0: 00000000 80436370 00000003 00000003 804361ac 00000000 00000000 8043622c
dfe0: 8000f928 00000013 00000000 00000000 00000000 8000f928 7887edff 94f3ccc3
[<8043c5b4>] (ct_ca9x4_init+0x5c/0xc0) from [<8043c370>] (v2m_init+0x88/0xa0)
[<8043c370>] (v2m_init+0x88/0xa0) from [<804388a4>] (customize_machine+0x20/0x28)
[<804388a4>] (customize_machine+0x20/0x28) from [<800085b8>] (do_one_initcall+0x34/0x180)
[<800085b8>] (do_one_initcall+0x34/0x180) from [<80436370>] (kernel_init+0x144/0x1f0)
[<80436370>] (kernel_init+0x144/0x1f0) from [<8000f928>] (kernel_thread_exit+0x0/0x8)
Code: e12fff33 e3a01000 e5841108 f57ff04f (e3040050)
---[ end trace 1b75b31a2719ed1c ]---
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
---------------------------------------------------------------------------------------------------------------------------------
karapas
Sun, 09/09/2012 - 08:08
Permalink
Since the L2CC is not
Since the L2CC is not configurable by the Normal state, there are two options:
1. Move the initialization of the L2CC from Linux to OV.
2. Don't use the L2CC at all, i.e. compile the Linux kernel without L2 cache support.
amit
Mon, 09/10/2012 - 00:24
Permalink
Hello,
Hello,
Thanks for your reply. I have a couple of more doubts.
1. When I enable L2CC in OV by writing to CTRL, TAG_LATENCY,DATA_LATENCY and AUXILIARY_CONTROL registers OV hangs in enable branch prediction function of main_secure.c
Following are the values of these registers
a. DATA and TAG_LATENCY (offset 0x108 and 0x10C)register value = 0
b. ACTRL register (offset 0x104)= 0x02460000
c CTRL register (offset 0x100) = 1 - to enable L2CC
I also tried to just enable L2CC by writing to CTRL register just before invoke_ns_kernel function but OV hangs in the instruction movs pc,lr in monitor.S in call_non_secure_kernel function.
2. If I disable L2CC completely then I am able to boot Linux.
Regards,
Amit.
amit
Mon, 09/10/2012 - 00:29
Permalink
Issue while booting Linux kernel on Versatile Express
Hello,
While running otzone.elf on Versatile express with linux kernel (3.5.3) I observe the following content in the boot log of linux
***********************************************************
........
Setting up static identity map for 0x6033ac60 - 0x6033acb8
NET: Registered protocol family 16
------------[ cut here ]------------
WARNING: at arch/arm/kernel/hw_breakpoint.c:234 enable_monitor_mode+0xa4/0xb4()
halting debug mode enabled. Unable to access hardware resources.
Modules linked in:
[<80014b10>] (unwind_backtrace+0x0/0xfc) from [<8001fbf8>] (warn_slowpath_common+0x54/0x64)
[<8001fbf8>] (warn_slowpath_common+0x54/0x64) from [<8001fc9c>] (warn_slowpath_fmt+0x30/0x40)
[<8001fc9c>] (warn_slowpath_fmt+0x30/0x40) from [<800157c8>] (enable_monitor_mode+0xa4/0xb4)
[<800157c8>] (enable_monitor_mode+0xa4/0xb4) from [<80015830>] (reset_ctrl_regs+0x58/0x174)
[<80015830>] (reset_ctrl_regs+0x58/0x174) from [<804395f4>] (arch_hw_breakpoint_init+0xb0/0x22c)
[<804395f4>] (arch_hw_breakpoint_init+0xb0/0x22c) from [<800085b8>] (do_one_initcall+0x34/0x180)
[<800085b8>] (do_one_initcall+0x34/0x180) from [<80436370>] (kernel_init+0x144/0x1f0)
[<80436370>] (kernel_init+0x144/0x1f0) from [<8000f928>] (kernel_thread_exit+0x0/0x8)
---[ end trace 1b75b31a2719ed1c ]---
..............
***********************************************************************************
Please help regarding this issue.
Regards,
Amit.
ayankumarh
Mon, 09/10/2012 - 09:10
Permalink
Kernel panic occurs while loading rootfs for otzone.elf..
Hi ,
I have build linux and otzone with l2 cache controller disabled in linux. The normal.elf boots up properly, it takes the filesystem (armv5t_min_VE_V7.image) from nfs and boots till the linux command prompt.
But otzone.elf crashes immediately after loading of the rootfs(armv5t_min_VE_V7.image) from nfs with the following logs:-
atkbd serio0: keyboard reset failed on mb:kmi0
.atkbd serio1: keyboard reset failed on mb:kmi1
atkbd serio0: keyboard reset failed on mb:kmi0
atkbd serio1: keyboard reset failed on mb:kmi1
., OK
IP-Config: Got DHCP answer from 0.0.0.0, my address is 172.16.34.190
IP-Config: Complete:
device=eth0, addr=172.16.34.190, mask=255.255.254.0, gw=172.16.34.1
host=172.16.34.190, domain=open-silicon.com, nis-domain=(none)
bootserver=0.0.0.0, rootserver=172.16.34.116, rootpath=
ALSA device list:
#0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 43
Waiting 5sec before mounting root device...
VFS: Mounted root (nfs filesystem) readonly on device 0:10.
Freeing init memory: 144K
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
[<80014b10>] (unwind_backtrace+0x0/0xfc) from [<80339078>] (panic+0x80/0x1b8)
[<80339078>] (panic+0x80/0x1b8) from [<80025a88>] (do_exit+0x684/0x718)
[<80025a88>] (do_exit+0x684/0x718) from [<80025b64>] (do_group_exit+0x48/0xa4)
[<80025b64>] (do_group_exit+0x48/0xa4) from [<80030030>] (get_signal_to_deliver+0x1c4/0x4a8)
[<80030030>] (get_signal_to_deliver+0x1c4/0x4a8) from [<8001181c>] (do_signal+0x6c/0x52c)
[<8001181c>] (do_signal+0x6c/0x52c) from [<80011d38>] (do_notify_resume+0x5c/0x68)
[<80011d38>] (do_notify_resume+0x5c/0x68) from [<8000e9dc>] (work_pending+0x28/0x2c)
Can anyone shed some light on this error?
Thanks and Regards,
Ayan
jessepku
Thu, 03/14/2013 - 01:58
Permalink
the problem i met in port ov on vte
Control: 10c53c7d Table: 60004059 DAC: 00000015
Process swapper (pid: 1, stack limit = 0x8782c2e8)
Stack: (0x8782dee0 to 0x8782e000)
dee0: 00002665 87874cc0 00000003 8789b264 00000003 801869f0 8042f0b8 00000001
df00: 8042ee60 87874cc0 00000003 801872d0 8782df2c 8042f0b8 80453cd0 87803000
df20: 00000000 00000001 00000000 80453ef4 8043e4c0 8043e4c0 803ff134 00000080
df40: 00000000 803fe96c 00000000 00000001 00000002 803fee98 803918b8 00000000
df60: 80453928 00000000 8782c000 803fe2bc 80377fbc 8043e4c0 80410204 80410204
df80: 00000005 80008694 803cfa98 00000005 00000005 800335cc 00000000 804101e0
dfa0: 80410204 00000005 804090b0 803ed220 804090c0 00000080 00000000 803ed8e8
dfc0: 00000005 00000005 803ed220 00000013 00000000 00000000 00000000 803ed798
dfe0: 8000efb0 00000013 00000000 00000000 00000000 8000efb0 17f7bbf2 fc8bcecb
[<800923f8>] (kmem_cache_alloc+0x28/0xc4) from [<801869f0>] (con_insert_unipair+0xb8/0x104)
[<801869f0>] (con_insert_unipair+0xb8/0x104) from [<801872d0>] (con_set_default_unimap+0xec/0x170)
[<801872d0>] (con_set_default_unimap+0xec/0x170) from [<803fe96c>] (console_map_init+0x40/0x50)
[<803fe96c>] (console_map_init+0x40/0x50) from [<803fee98>] (vty_init+0x194/0x1a4)
[<803fee98>] (vty_init+0x194/0x1a4) from [<803fe2bc>] (tty_init+0x12c/0x144)
[<803fe2bc>] (tty_init+0x12c/0x144) from [<80008694>] (do_one_initcall+0x118/0x170)
[<80008694>] (do_one_initcall+0x118/0x170) from [<803ed8e8>] (kernel_init+0x150/0x1ec)
[<803ed8e8>] (kernel_init+0x150/0x1ec) from [<8000efb0>] (kernel_thread_exit+0x0/0x8)
Code: e5935000 e3550000 0a000019 e5943014 (e795c003)
---[ end trace 1b75b31a2719ed1d ]---
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
why?pls help