[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 3/3] xen/arm: Enable switch to hyp mode for OMAP5432
在 2013-8-15,22:09,Andrii Anisov <andrii.anisov@xxxxxxxxxxxxxxx> 写道: > Chen, > > Your changes will not work on OMAP5. You could have a quick check - > just don't switch to hyp in u-boot. Have you tried the latest upstream u-boot? > Changes should look like following: > > > diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S > index 0588d54..b6ccd6a 100644 > --- a/xen/arch/arm/arm32/head.S > +++ b/xen/arch/arm/arm32/head.S > @@ -21,6 +21,8 @@ > #include <asm/page.h> > #include <asm/processor-ca15.h> > #include <asm/asm_defns.h> > +#include <asm/platforms/omap5.h> > + > > #define ZIMAGE_MAGIC_NUMBER 0x016f2818 > > @@ -137,7 +139,6 @@ boot_cpu: > mov r0, r5 > bl putn > PRINT(" -\r\n") > - > /* Check that this CPU has Hyp mode */ > mrc CP32(r0, ID_PFR1) > and r0, r0, #0xf000 /* Bits 12-15 define virt extensions */ > @@ -155,6 +156,9 @@ boot_cpu: > b hyp > 1: > /* Otherwise, it must have been Secure Supervisor mode */ > + ldr r0, =MACH_TYPE_PANDA_NG > + teq r5, r0 /* Are we running on > the panda omap5? */ > + beq 1f /* do not access SCR > from nonsecure state */ > mrc CP32(r0, SCR) > tst r0, #0x1 /* Not-Secure bit set? */ > beq 1f > @@ -166,7 +170,6 @@ boot_cpu: > ldr r0, =enter_hyp_mode /* VA of function */ > adr lr, hyp /* Set return address for call */ > add pc, r0, r10 /* Call PA of function */ > - > hyp: > > /* Zero BSS On the boot CPU to avoid nasty surprises */ > diff --git a/xen/arch/arm/arm32/mode_switch.S > b/xen/arch/arm/arm32/mode_switch.S > index c92a1cf..7a44e67 100644 > --- a/xen/arch/arm/arm32/mode_switch.S > +++ b/xen/arch/arm/arm32/mode_switch.S > @@ -21,6 +21,7 @@ > #include <asm/page.h> > #include <asm/platforms/vexpress.h> > #include <asm/platforms/exynos5.h> > +#include <asm/platforms/omap5.h> > #include <asm/asm_defns.h> > #include <asm/gic.h> > > @@ -34,6 +35,9 @@ kick_cpus: > ldr r0, =MACH_TYPE_SMDK5250 > teq r5, r0 /* Are we running on > the arndale? */ > beq kick_cpus_arndale > + ldr r0, =MACH_TYPE_PANDA_NG > + teq r5, r0 /* Are we running on > the panda omap5? */ > + beq kick_cpus_omap5 > /* otherwise versatile express */ > /* write start paddr to v2m sysreg FLAGSSET register */ > ldr r0, =(V2M_SYS_MMIO_BASE) /* base V2M sysreg MMIO > address */ > @@ -47,6 +51,17 @@ kick_cpus: > dsb > ldr r2, =V2M_GIC_BASE_ADDRESS /* r2 := VE gic base address */ > b kick_cpus_sgi > +kick_cpus_omap5: > + ldr r0, =OMAP_AUX_CORE_BOOT_0 > + ldr r2, =0x20 > + str r2, [r0], #4 /*Update the AuxCoreBoot0 with boot state > for secondary core.*/ > + dsb > + ldr r2, =start > + add r2, r2, r10 > + str r2, [r0] /* Write the address of secondary startup > to the AuxCoreBoot1 */ > + dsb > + sev > + mov pc, lr > kick_cpus_arndale: > /* write start paddr to CPU 1 sysreg register */ > ldr r0, =(S5P_PA_SYSRAM) > @@ -82,6 +97,10 @@ kick_cpus_sgi: > > .globl enter_hyp_mode > enter_hyp_mode: > + ldr r0, =MACH_TYPE_PANDA_NG > + teq r5, r0 /* Are we running on > the panda omap5? */ > + beq start_hypervisor_gp > + > mov r3, lr /* Put return address in non-banked reg > */ > cpsid aif, #0x16 /* Enter Monitor mode */ > mrc CP32(r0, SCR) > @@ -152,6 +171,23 @@ skip_spis: > msr spsr_cxsf, r0 /* into the SPSR */ > movs pc, r3 /* Exception-return into Hyp mode */ > > +start_hypervisor_gp: > + adr r0, save > + stmea r0, {r4-r13,lr} > + ldr r12, =0x102 > + adr r0, hyp_return > + dsb > + isb > + dmb > + smc #0 > +hyp_return: > + adr r0, save > + ldmfd r0, {r4-r13,pc} > +save: > + .rept 11 > + .word 0 > + .endr > + > /* > * Local variables: > * mode: ASM > > Sincerely, > Andrii Anisov. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |