|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 5/7] xen: arm: rewrite start of day page table and cpu bring up
On 09/17/2013 02:40 AM, Ian Campbell wrote:
> void platform_reset(void)
> {
> if ( platform && platform->reset )
> diff --git a/xen/arch/arm/platforms/vexpress.c
> b/xen/arch/arm/platforms/vexpress.c
> index 6f7dc2c..2d8d905 100644
> --- a/xen/arch/arm/platforms/vexpress.c
> +++ b/xen/arch/arm/platforms/vexpress.c
> @@ -21,6 +21,7 @@
> #include <asm/platform.h>
> #include <xen/mm.h>
> #include <xen/vmap.h>
> +#include <asm/gic.h>
>
> #define DCC_SHIFT 26
> #define FUNCTION_SHIFT 20
> @@ -119,6 +120,41 @@ static void vexpress_reset(void)
> iounmap(sp810);
> }
>
> +#ifdef CONFIG_ARM_32
> +static int vexpress_cpu_up(int cpu)
> +{
> + static int have_set_sysflags = 0;
> +
> + /* XXX separate init hook? */
> + if ( !have_set_sysflags )
> + {
> + void __iomem *sysflags;
> +
> + sysflags = ioremap_nocache(V2M_SYS_MMIO_BASE, PAGE_SIZE);
The device should contains a node with compatible "arm,vexpress-sysreg".
Can you use this node instead of hardcoding value?
> + if ( !sysflags )
> + {
> + dprintk(XENLOG_ERR, "Unable to map vexpress MMIO\n");
> + return -EFAULT;
> + }
> +
> + printk("Set SYS_FLAGS to %"PRIpaddr" (%p)\n",
> + __pa(init_secondary), init_secondary);
> + iowritel(sysflags + V2M_SYS_FLAGSCLR, ~0);
> + iowritel(sysflags + V2M_SYS_FLAGSSET,
> + __pa(init_secondary));
> +
> + iounmap(sysflags);
> +
> + have_set_sysflags = 1;
> + }
> +
> + printk("Waking CPU%d\n", cpu);
> + send_SGI_mask(cpumask_of(cpu), GIC_SGI_EVENT_CHECK);
> +
> + return 0;
> +}
> +#endif
> +
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |