[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



Hi, Julien

I finally succeed booting xen on newer version of FVP(Fastmodels)
The problem is wrong memory size setting in command line option. 

I left my command line for others who will face the same problem like me and I marked bold memory setting part in command line.
NOTE: If you want to configure size of memory for domain 0, you should use command as below for linux command line and xen command line(see the BOLD). 
            If any you configure different size of memory, you may see the data abort error(e.g. HSR: 0x90000045 xxxx).
            In my case, domain0(mem=2048) has lager memory size than xen configuration(dom0_mem=128M)

1. For FVP_VE_Cortex-A15x124-A7x124 

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

                         -a coretile.cluster1.*=./linux-system-semi.axf \

                         -C motherboard.smsc_91c111.enabled=1 -C motherboard.hostbridge.userNetworking=1 \

                         -C coretile.dualclustersystemconfigurationblock.CFG_ACTIVECLUSTER=0x3 \

                         -C coretile.cluster0.cpu0.semihosting-cmd_line=" \

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

                            --module ../linux/arch/arm/boot/zImage console=ttyAMA0 earlyprintk=xen debug mem=128M root=/dev/nfs nfsroot=192.168.0.8:/srv/nfsroot/ rw ip=dhcp \

                            --dtb rtsm_ve-cortex_a15x4_a7x4.dtb -- earlyprintk dom0_mem=128M"

2. For FVP_VE_Cortex-A15x124

FVP_VE_Cortex-A15x4      -a ./linux-system-semi.axf \

                                           -C motherboard.smsc_91c111.enabled=1 -C motherboard.hostbridge.userNetworking=1 \

                                           -C cluster.cpu0.semihosting-cmd_line=" \

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

                                           --module ../linux/arch/arm/boot/zImage console=ttyAMA0 earlyprintk=xen debug root=/dev/nfs nfsroot=192.168.0.8:/srv/nfsroot/ rw ip=dhcp \

                                          --dtb rtsm_ve-cortex_a15x4.dtb -- earlyprintk console=ttyAMA0"



Thanks,
Wonseok


Thanks,
Wonseok.

2016-07-12 20:56 GMT+09:00 Wonseok Ko <magicyaba@xxxxxxxxx>:
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®.