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

Re: [Xen-devel] Data Abort while in booting when using latest version on arm32 fastmodels



Thank you for your help, Julien

I found the memory overlapping problem between Kernel and Device Tree in bootwrapper.
The problem came from INITRD_OFFSET and PHYS_OFFSET macro(0x00d00000)
I fixed these offsets from 0x00d00000 to 0x00e00000 and then I avoided the memory overlapping problem:
 
(XEN) MODULE[0]: 0000000080e0230c - 0000000080e04731 Device Tree  
(XEN) MODULE[1]: 0000000080a00000 - 0000000080d904b8 Kernel       console=hvc0 earlyprintk=xen debug mem=2048M root=/dev/mmcblk0 rw ip=dhcp               

However, I've got another error as below:

(XEN) Checking for initrd in /chosen
(XEN) RAM: 0000000080000000 - 00000000ffffffff
(XEN) 
(XEN) MODULE[0]: 0000000080e0230c - 0000000080e04731 Device Tree  
(XEN) MODULE[1]: 0000000080a00000 - 0000000080d904b8 Kernel       console=hvc0 earlyprintk=xen debug mem=2048M root=/dev/mmcblk0 rw ip=dhcp                            
(XEN) 
(XEN) Command line: earlyprintk console=ttyAMA0
(XEN) Placing Xen at 0x00000000ffe00000-0x0000000100000000
(XEN) Update BOOTMOD_XEN from 0000000080200000-00000000802fd781 => 00000000ffe00000-00000000ffefd781
(XEN) Xen heap: 00000000fa000000-00000000fe000000 (16384 pages)
(XEN) Dom heap: 507904 pages
(XEN) Domain heap initialised
(XEN) Platform: VERSATILE EXPRESS
(XEN) Bad console= option 'ttyAMA0'
 Xen 4.8-unstable
(XEN) Xen version 4.8-unstable (wonseok@) (arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) 4.7.3 20130226 (prerelease)) debug=y Tue Jul 12 19:59:29 KST 2016
(XEN) Latest ChangeSet: Thu Jun 30 14:01:02 2016 +0200 git:bb4f41b-dirty
(XEN) Processor: 412fc0f0: "ARM Limited", variant: 0x2, part 0xc0f, rev 0x0
(XEN) 32-bit Execution:
(XEN)   Processor Features: 00001131:00011011
(XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 ThumbEE Jazelle
(XEN)     Extensions: GenericTimer Security
(XEN)   Debug Features: 02010555
(XEN)   Auxiliary Features: 00000000
(XEN)   Memory Model Features: 10201105 20000000 01240000 02102211
(XEN)  ISA Features: 02101110 13112111 21232041 11112131 10011142 00000000
(XEN) Set SYS_FLAGS to 00000000ffe0004c (0020004c)
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 24000 KHz
(XEN) GICv2 initialization:
(XEN)         gic_dist_addr=000000002c001000
(XEN)         gic_cpu_addr=000000002c002000
(XEN)         gic_hyp_addr=000000002c004000
(XEN)         gic_vcpu_addr=000000002c006000
(XEN)         gic_maintenance_irq=25
(XEN) GICv2: 128 lines, 8 cpus, secure (IID 3902043b).
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Allocated console ring of 64 KiB.
(XEN) VFP implementer 0x41 architecture 4 part 0x30 variant 0xf rev 0x0
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Xen starting in Hyp mode -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 2 booted.
(XEN) Bringing up CPU3
- CPU 00000003 booting -
- Xen starting in Hyp mode -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 3 booted.
(XEN) Bringing up CPU4
- CPU 00000100 booting -
- Xen starting in Hyp mode -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 4 booted.
(XEN) Bringing up CPU5
- CPU 00000101 booting -
- Xen starting in Hyp mode -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 5 booted.
(XEN) Bringing up CPU6
- CPU 00000102 booting -
- Xen starting in Hyp mode -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 6 booted.
(XEN) Bringing up CPU7
(XEN) CPU7 never came online
(XEN) Failed to bring up CPU 7 (error -5)
(XEN) Brought up 7 CPUs
(XEN) P2M: 40-bit IPA
(XEN) P2M: 3 levels with order-1 root, VTCR 0x80003558
(XEN) I/O virtualisation disabled
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading kernel from boot module @ 0000000080a00000
(XEN) Allocating 1:1 mappings totalling 128MB for dom0:
(XEN) BANK[0] 0x00000088000000-0x00000090000000 (128MB)
(XEN) Grant table range: 0x000000ffe00000-0x000000ffe5d000
(XEN) Loading zImage from 0000000080a00000 to 000000008fc00000-000000008ff904b8
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Loading dom0 DTB to 0x000000008fa00000-0x000000008fa0220e
(XEN) Scrubbing Free RAM on 1 nodes using 7 CPUs
(XEN) ...done.
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Std. Loglevel: All
(XEN) Guest Loglevel: All
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen)
(XEN) Freed 268kB init memory.
(XEN) traps.c:2506:d0v0 HSR=0x90000045 pc=0x80341924 gva=0xefffe000 gpa=0x000000f7ffe000

Could you please explain the reason why the above fault?

Thanks, 
Wonseok



Thanks,
Wonseok.

2016-07-12 19:09 GMT+09:00 Julien Grall <julien.grall@xxxxxxx>:


On 12/07/16 06:20, Wonseok Ko wrote:
Hi, All

Hello,

I founded the previous post to solve the problem as the same as mine,
the patch was applied in latest version, but I've got the data abort.
previous post:
https://lists.xen.org/archives/html/xen-devel/2013-09/msg00606.html and I referred
to the wiki page:
http://wiki.xen.org/wiki/Xen_ARM_with_Virtualization_Extensions/FastModels

This page has not been updated for a while for ARM32. It might be possible that the page is out-of-date for the newer models.

I build the latest version of Xen with command as below:
# make distclean; XEN_TARGET_ARCH=arm32
CROSS_COMPILE=arm-linux-gnueabihf- debug=y CONFIG_EARLY_PRINTK=fastmodel
./configure
# make xen XEN_TARGET_ARCH=arm32 CROSS_COMPILE=arm-linux-gnueabihf-
debug=y CONFIG_EARLY_PRINTK=fastmodel -j 8

My fastmodels command as below:

FVP_VE_Cortex-A15x4-A7x4 -acoretile.cluster0.*=./linux-system-semi.axf \

-acoretile.cluster1.*=./linux-system-semi.axf \

-Cmotherboard.smsc_91c111.enabled=1-Cmotherboard.hostbridge.userNetworking=1\

-Ccoretile.dualclustersystemconfigurationblock.CFG_ACTIVECLUSTER=0x3 \

-Ccoretile.cluster0.cpu0.semihosting-cmd_line="\

                             --kernel ../xen/xen/xen \

                             --module ../linux/arch/arm/boot/zImage \

                             --dtb rtsm_ve-cortex_a15x4_a7x4.dtb \

                             -- earlyprintk console=ttyAMA0 mem=2048M
root=/dev/nfs nfsroot=192.168.0.8:/srv/nfsroot/ rw ip=dhcp"

This should be the Xen command line and not Linux one.



Does anybody help me to fix it? or If I did something wrong, please let
me know.

here is log:

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

- UART enabled -

- CPU 00000000 booting -

- Xen starting in Hyp mode -

- Zero BSS -

- Setting up control registers -

- Turning on paging -

- Ready -

(XEN) Checking for initrd in /chosen

(XEN) RAM: 0000000080000000 - 00000000ffffffff

(XEN)

(XEN) MODULE[0]: 0000000080d0230c - 0000000080d0473d Device Tree

(XEN) MODULE[1]: 0000000080a00000 - 0000000080d904b8 Kernel
console=ttyAMA0

If I am not mistaken, the Device Tree and the Kernel overlaps in the memory. So Xen will try to free twice the same page, hence the data abort later one.

I would look into the bootwrapper to find out why the addresses overlap.

[...]

(XEN) Xen call trace:

(XEN)    [<0021be40>] page_alloc.c#free_heap_pages+0x2c0/0x428 (PC)

(XEN)    [<0021be18>] page_alloc.c#free_heap_pages+0x298/0x428 (LR)

(XEN)    [<0021cbb8>] page_alloc.c#init_heap_pages+0x100/0x118

(XEN)    [<0021ce78>] init_domheap_pages+0xb0/0xb4

(XEN)    [<002549e8>] dt_unreserved_regions+0xf4/0xfc

(XEN)    [<0028b378>] discard_initial_modules+0x138/0x178

(XEN)    [<0024b1b0>] construct_dom0+0xb24/0xc8c

(XEN)    [<0028c12c>] start_xen+0xd38/0xeb0

(XEN)    [<00200550>] arm32/head.o#paging+0x94/0xd8

Regards,

--
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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