From mboxrd@z Thu Jan 1 00:00:00 1970 From: bharat gohil Subject: Re: ARM64:Porting xen to new hardware Date: Wed, 30 Aug 2017 20:00:40 +0530 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1510043587938751960==" Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Tyshchenko Cc: Julien Grall , Stefano Stabellini , Xen Devel List-Id: xen-devel@lists.xenproject.org --===============1510043587938751960== Content-Type: multipart/alternative; boundary="f4030438efd8487fad0557f95f1c" --f4030438efd8487fad0557f95f1c Content-Type: text/plain; charset="UTF-8" Hello Oleksandr, Thank you very much for your input. Yes. agree. I will check by removing A72 core from DT. Thanks, Bharat On Wed, Aug 30, 2017 at 7:44 PM, Oleksandr Tyshchenko wrote: > Hi, > > Not sure that I am a competent person, just my assumptions. > > CCed ARM guys. > > On Tue, Aug 29, 2017 at 5:21 PM, bharat gohil wrote: > > Hello All > > > > I am trying to run Xen on new hardware which has two A35 and one A72 > core. > > Xen booted intially but it hangs at smp_call_function(setup_virt_ > paging_one, > > (void *)val, 1) function call. > > It might be a consequence of that CPU cores are different. And they > might have different set of features, or even settings. > And these features/settings the boot CPU has don't compatible with > other (non-boot) CPUs. > Can you try not to bringup A72 core (remove it from DT or another > way), leave only two A35 and see what will happen. > > > Find following log of Xen booting,same set of features. > > > > - UART enabled - > > - CPU 00000000 booting - > > - Current EL 00000008 - > > - Xen starting at EL2 - > > - Zero BSS - > > - Setting up control registers - > > - Turning on paging - > > - Ready - > > (XEN) Checking for initrd in /chosen > > (XEN) RAM: 0000000040000000 - 00000000bfffffff > > (XEN) > > (XEN) MODULE[0]: 0000000044000000 - 000000004400fd5a Device Tree > > (XEN) > > (XEN) Command line: > Why? Does your device-tree have bootargs? > > > (XEN) Placing Xen at 0x00000000bfe00000-0x00000000c0000000 > > (XEN) Update BOOTMOD_XEN from 0000000040080000-0000000040194e01 => > > 00000000bfe01 > > (XEN) Domain heap initialised > > (XEN) Booting using Device Tree > > (XEN) Platform: Generic System > > (XEN) Taking dtuart configuration from /chosen/stdout-path > > (XEN) Looking for dtuart at "serial0", options "" > > __ __ _ _ _ ___ _ _ _ > > \ \/ /___ _ __ | || | / |/ _ \ _ _ _ __ ___| |_ __ _| |__ | | > ___ > > \ // _ \ '_ \ | || |_ | | | | |__| | | | '_ \/ __| __/ _` | '_ \| |/ > _ \ > > / \ __/ | | | |__ _|| | |_| |__| |_| | | | \__ \ || (_| | |_) | | > __/ > > /_/\_\___|_| |_| |_|(_)_|\___/ \__,_|_| > |_|___/\__\__,_|_.__/|_|\___| > > > > (XEN) Xen version 4.10-unstable (bgohil@) (aarch64-linux-gnu-gcc > > (Ubuntu/Linaro7 > > (XEN) Latest ChangeSet: Fri Aug 11 19:02:51 2017 +0100 git:9053a74-dirty > > (XEN) Processor: 410fd041: "ARM Limited", variant: 0x0, part 0xd04, rev > 0x1 > > (XEN) 64-bit Execution: > > (XEN) Processor Features: 0000000000002222 0000000000000000 > > (XEN) Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32 > > (XEN) Extensions: FloatingPoint AdvancedSIMD > > (XEN) Debug Features: 0000000010305106 0000000000000000 > > (XEN) Auxiliary Features: 0000000000000000 0000000000000000 > > (XEN) Memory Model Features: 0000000000101122 0000000000000000 > > (XEN) ISA Features: 0000000000011120 0000000000000000 > > (XEN) 32-bit Execution: > > (XEN) Processor Features: 00000131:00011011 > > (XEN) Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle > > (XEN) Extensions: GenericTimer Security > > (XEN) Debug Features: 03010066 > > (XEN) Auxiliary Features: 00000000 > > (XEN) Memory Model Features: 10201105 40000000 01260000 02102211 > > (XEN) ISA Features: 02101110 13112111 21232042 01112131 00011142 > 00011121 > > (XEN) Using PSCI-1.0 for SMP bringup > > (XEN) SMP: Allowing 3 CPUs > > (XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 13000 KHz > > (XEN) GICv2: WARNING: The GICC size is too small: 0x1000 expected 0x2000 > Sounds like GIC settings are not completely correct. > Wrong GIC settings might lead to that IPIs won't work as expected. And > boot CPU will > get stuck waiting for another CPU. > Just double check. > > > (XEN) GICv2 initialization: > > (XEN) gic_dist_addr=0000000010510000 > > (XEN) gic_cpu_addr=0000000010520000 > > (XEN) gic_hyp_addr=0000000010540000 > > (XEN) gic_vcpu_addr=0000000010560000 > > (XEN) gic_maintenance_irq=25 > > (XEN) GICv2: 384 lines, 6 cpus, secure (IID 0200143b). > > (XEN) Using scheduler: SMP Credit Scheduler (credit) > > (XEN) Allocated console ring of 32 KiB. > > (XEN) Bringing up CPU1 > > - CPU 00000001 booting - > > - Current EL 00000008 - > > - Xen starting at EL2 - > > - Setting up control registers - > > - Turning on paging - > > - Ready - > > (XEN) CPU 1 booted. > > (XEN) Bringing up CPU2 > > - CPU 00000200 booting - > > - Current EL 00000008 - > > - Xen starting at EL2 - > > - Setting up control registers - > > - Turning on paging - > > - Ready - > > (XEN) CPU 2 booted. > > (XEN) Brought up 3 CPUs > > (XEN) P2M: 40-bit IPA with 40-bit PA and 8-bit VMID > > (XEN) P2M: 3 levels with order-1 root, VTCR 0x80023558 > > > > Can anyone guide me how to debug this problem or what could be wrong > here? > > > > It looks, writing into VTCR_EL2 hang the system. > > > > -- > > Regards, > > Bharat Gohil > > > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xen.org > > https://lists.xen.org/xen-devel > > > > -- > Regards, > > Oleksandr Tyshchenko > -- Regards, Bharat Gohil Sr.Software Engineer bharat.gohil@harman.com +919427054633 --f4030438efd8487fad0557f95f1c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello Oleksandr,
Thank you ve= ry much for your input.

Yes. agree. I will check by removing A= 72 core from DT.

Thanks,
Bharat

On W= ed, Aug 30, 2017 at 7:44 PM, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote:
Hi,

Not sure that I am a competent person, just my assumptions.

CCed ARM guys.

On Tue, Aug 29, 2017 at 5:21 PM, bharat gohil <
ghl.bhrt@gmail.com> wrote:
> Hello All
>
> I am trying to run Xen on new hardware which has two A35 and one A72 c= ore.
> Xen booted intially but it hangs at smp_call_function(setup_virt_= paging_one,
> (void *)val, 1) function call.

It might be a consequence of that CPU cores are different. And they<= br> might have different set of features, or even settings.
And these features/settings the boot CPU has don't compatible with
other (non-boot) CPUs.
Can you try not to bringup A72 core (remove it from DT or another
way), leave only two A35 and see what will happen.

> Find following log of Xen booting,same set of features.
>
> - UART enabled -
> - CPU 00000000 booting -
> - Current EL 00000008 -
> - Xen starting at EL2 -
> - Zero BSS -
> - Setting up control registers -
> - Turning on paging -
> - Ready -
> (XEN) Checking for initrd in /chosen
> (XEN) RAM: 0000000040000000 - 00000000bfffffff
> (XEN)
> (XEN) MODULE[0]: 0000000044000000 - 000000004400fd5a Device Tree
> (XEN)
> (XEN) Command line: <NULL>
Why? Does your device-tree have bootargs?

> (XEN) Placing Xen at 0x00000000bfe00000-0x00000000c0000000
> (XEN) Update BOOTMOD_XEN from 0000000040080000-0000000040194e01 = =3D>
> 00000000bfe01
> (XEN) Domain heap initialised
> (XEN) Booting using Device Tree
> (XEN) Platform: Generic System
> (XEN) Taking dtuart configuration from /chosen/stdout-path
> (XEN) Looking for dtuart at "serial0", options ""<= br> >=C2=A0 __=C2=A0 __=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 _=C2=A0 _= =C2=A0 =C2=A0 _=C2=A0 ___=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0_=C2=A0 =C2=A0 =C2=A0 =C2=A0 _=C2=A0 =C2=A0 =C2= =A0_
>=C2=A0 \ \/ /___ _ __=C2=A0 =C2=A0| || |=C2=A0 / |/ _ \=C2=A0 =C2=A0 _= =C2=A0 =C2=A0_ _ __=C2=A0 ___| |_ __ _| |__ | | ___
>=C2=A0 =C2=A0\=C2=A0 // _ \ '_ \=C2=A0 | || |_ | | | | |__| | | | &= #39;_ \/ __| __/ _` | '_ \| |/ _ \
>=C2=A0 =C2=A0/=C2=A0 \=C2=A0 __/ | | | |__=C2=A0 =C2=A0_|| | |_| |__| |= _| | | | \__ \ || (_| | |_) | |=C2=A0 __/
>=C2=A0 /_/\_\___|_| |_|=C2=A0 =C2=A0 |_|(_)_|\___/=C2=A0 =C2=A0 \__,_|_= | |_|___/\__\__,_|_.__/|_|\___|
>
> (XEN) Xen version 4.10-unstable (bgohil@) (aarch64-linux-gnu-gcc
> (Ubuntu/Linaro7
> (XEN) Latest ChangeSet: Fri Aug 11 19:02:51 2017 +0100 git:9053a74-dir= ty
> (XEN) Processor: 410fd041: "ARM Limited", variant: 0x0, part= 0xd04, rev 0x1
> (XEN) 64-bit Execution:
> (XEN)=C2=A0 =C2=A0Processor Features: 0000000000002222 000000000000000= 0
> (XEN)=C2=A0 =C2=A0 =C2=A0Exception Levels: EL3:64+32 EL2:64+32 EL1:64+= 32 EL0:64+32
> (XEN)=C2=A0 =C2=A0 =C2=A0Extensions: FloatingPoint AdvancedSIMD
> (XEN)=C2=A0 =C2=A0Debug Features: 0000000010305106 0000000000000000 > (XEN)=C2=A0 =C2=A0Auxiliary Features: 0000000000000000 000000000000000= 0
> (XEN)=C2=A0 =C2=A0Memory Model Features: 0000000000101122 000000000000= 0000
> (XEN)=C2=A0 =C2=A0ISA Features:=C2=A0 0000000000011120 000000000000000= 0
> (XEN) 32-bit Execution:
> (XEN)=C2=A0 =C2=A0Processor Features: 00000131:00011011
> (XEN)=C2=A0 =C2=A0 =C2=A0Instruction Sets: AArch32 A32 Thumb Thumb-2 J= azelle
> (XEN)=C2=A0 =C2=A0 =C2=A0Extensions: GenericTimer Security
> (XEN)=C2=A0 =C2=A0Debug Features: 03010066
> (XEN)=C2=A0 =C2=A0Auxiliary Features: 00000000
> (XEN)=C2=A0 =C2=A0Memory Model Features: 10201105 40000000 01260000 02= 102211
> (XEN)=C2=A0 ISA Features: 02101110 13112111 21232042 01112131 00011142= 00011121
> (XEN) Using PSCI-1.0 for SMP bringup
> (XEN) SMP: Allowing 3 CPUs
> (XEN) Generic Timer IRQ: phys=3D30 hyp=3D26 virt=3D27 Freq: 13000 KHz<= br> > (XEN) GICv2: WARNING: The GICC size is too small: 0x1000 expected 0x20= 00
Sounds like GIC settings are not completely correct.
Wrong GIC settings might lead to that IPIs won't work as expected. And<= br> boot CPU will
get stuck waiting for another CPU.
Just double check.

> (XEN) GICv2 initialization:
> (XEN)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0gic_dist_addr=3D000000001051000= 0
> (XEN)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0gic_cpu_addr=3D0000000010520000=
> (XEN)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0gic_hyp_addr=3D0000000010540000=
> (XEN)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0gic_vcpu_addr=3D000000001056000= 0
> (XEN)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0gic_maintenance_irq=3D25
> (XEN) GICv2: 384 lines, 6 cpus, secure (IID 0200143b).
> (XEN) Using scheduler: SMP Credit Scheduler (credit)
> (XEN) Allocated console ring of 32 KiB.
> (XEN) Bringing up CPU1
> - CPU 00000001 booting -
> - Current EL 00000008 -
> - Xen starting at EL2 -
> - Setting up control registers -
> - Turning on paging -
> - Ready -
> (XEN) CPU 1 booted.
> (XEN) Bringing up CPU2
> - CPU 00000200 booting -
> - Current EL 00000008 -
> - Xen starting at EL2 -
> - Setting up control registers -
> - Turning on paging -
> - Ready -
> (XEN) CPU 2 booted.
> (XEN) Brought up 3 CPUs
> (XEN) P2M: 40-bit IPA with 40-bit PA and 8-bit VMID
> (XEN) P2M: 3 levels with order-1 root, VTCR 0x80023558
>
> Can anyone guide me how to debug this problem or what could be wrong h= ere?
>
> It looks, writing into VTCR_EL2 hang the system.
>
> --
> Regards,
> Bharat Gohil
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org=
> https://lists.xen.org/xen-devel
>

--
Regards,

Oleksandr Tyshchenko



--
<= div>
Regards,
Bharat Gohil
Sr.Software Engineer
=
+919427054633
--f4030438efd8487fad0557f95f1c-- --===============1510043587938751960== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg== --===============1510043587938751960==--