From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH 3/3] xen/arm: implement smp initialization callbacks for omap5 Date: Wed, 23 Oct 2013 14:59:21 +0100 Message-ID: <5267D639.9050705@linaro.org> References: <1381826731-7044-1-git-send-email-baozich@gmail.com> <1381826731-7044-4-git-send-email-baozich@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1381826731-7044-4-git-send-email-baozich@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Chen Baozi , Xen Developer List Cc: Ian Campbell List-Id: xen-devel@lists.xenproject.org On 10/15/2013 09:45 AM, Chen Baozi wrote: > > Signed-off-by: Chen Baozi If you don't modify the patch in the next version: Acked-by: Julien Grall > --- > xen/arch/arm/platforms/omap5.c | 34 ++++++++++++++++++++++++++++++++++ > xen/include/asm-arm/platforms/omap5.h | 3 +++ > 2 files changed, 37 insertions(+) > > diff --git a/xen/arch/arm/platforms/omap5.c b/xen/arch/arm/platforms/omap5.c > index a583e2b..b90e570 100644 > --- a/xen/arch/arm/platforms/omap5.c > +++ b/xen/arch/arm/platforms/omap5.c > @@ -121,6 +121,38 @@ static int omap5_specific_mapping(struct domain *d) > return 0; > } > > +static int __init omap5_smp_init(void) > +{ > + void __iomem *wugen_base; > + > + wugen_base = ioremap_nocache(OMAP5_WKUPGEN_BASE, PAGE_SIZE); > + if ( !wugen_base ) > + { > + dprintk(XENLOG_ERR, "Unable to map omap5 MMIO\n"); > + return -EFAULT; > + } > + > + printk("Set AuxCoreBoot1 to %"PRIpaddr" (%p)\n", > + __pa(init_secondary), init_secondary); > + writel(__pa(init_secondary), wugen_base + OMAP_AUX_CORE_BOOT_1_OFFSET); > + > + printk("Set AuxCoreBoot0 to 0x20\n"); > + writel(0x20, wugen_base + OMAP_AUX_CORE_BOOT_0_OFFSET); > + > + iounmap(wugen_base); > + > + return 0; > +} > + > +static int __init omap5_cpu_up(int cpu) > +{ > + /* Nothing to do here, the generic sev() will suffice to kick CPUs > + * out of either the firmware or our own smp_up_cpu gate, > + * depending on where they have ended up. */ > + > + return 0; > +} > + > static uint32_t omap5_quirks(void) > { > return PLATFORM_QUIRK_DOM0_MAPPING_11 | > @@ -137,6 +169,8 @@ PLATFORM_START(omap5, "TI OMAP5") > .compatible = omap5_dt_compat, > .init_time = omap5_init_time, > .specific_mapping = omap5_specific_mapping, > + .smp_init = omap5_smp_init, > + .cpu_up = omap5_cpu_up, > .quirks = omap5_quirks, > PLATFORM_END > > diff --git a/xen/include/asm-arm/platforms/omap5.h b/xen/include/asm-arm/platforms/omap5.h > index dd8c6ca..c559c84 100644 > --- a/xen/include/asm-arm/platforms/omap5.h > +++ b/xen/include/asm-arm/platforms/omap5.h > @@ -17,6 +17,9 @@ > #define OMAP5_WKUPGEN_BASE 0x48281000 > #define OMAP5_SRAM_PA 0x40300000 > > +#define OMAP_AUX_CORE_BOOT_0_OFFSET 0x800 > +#define OMAP_AUX_CORE_BOOT_1_OFFSET 0x804 > + > #endif /* __ASM_ARM_PLATFORMS_OMAP5_H */ > > /* > -- Julien Grall