svn commit: r339316 - projects/power8_bringup_hacks/sys/powerpc/powerpc

Justin Hibbits chmeeedalf at gmail.com
Thu Oct 11 20:08:12 UTC 2018


On Thu, 11 Oct 2018 19:18:06 +0000 (UTC)
Leandro Lupori <luporl at FreeBSD.org> wrote:

> Author: luporl
> Date: Thu Oct 11 19:18:06 2018
> New Revision: 339316
> URL: https://svnweb.freebsd.org/changeset/base/339316
> 
> Log:
>   Initialize SPRG0 before its first possible use.
> 
> Modified:
>   projects/power8_bringup_hacks/sys/powerpc/powerpc/machdep.c
> 
> Modified: projects/power8_bringup_hacks/sys/powerpc/powerpc/machdep.c
> ==============================================================================
> ---
> projects/power8_bringup_hacks/sys/powerpc/powerpc/machdep.c
> Thu Oct 11 19:06:54 2018	(r339315) +++
> projects/power8_bringup_hacks/sys/powerpc/powerpc/machdep.c
> Thu Oct 11 19:18:06 2018	(r339316) @@ -383,12 +383,12 @@
> powerpc_init(vm_offset_t fdt, vm_offset_t toc, vm_offs if
> (platform_smp_get_bsp(&bsp) != 0) bsp.cr_cpuid = 0; pc =
> &__pcpu[bsp.cr_cpuid];
> +	__asm __volatile("mtsprg 0, %0" :: "r"(pc));
>  	pcpu_init(pc, bsp.cr_cpuid, sizeof(struct pcpu));
>  	pc->pc_curthread = &thread0;
>  	thread0.td_oncpu = bsp.cr_cpuid;
>  	pc->pc_cpuid = bsp.cr_cpuid;
>  	pc->pc_hwref = bsp.cr_hwref;
> -	__asm __volatile("mtsprg 0, %0" :: "r"(pc));
>  
>  	/*
>  	 * Init KDB
> 

Wow, that's quite some sleuthing!

Consider this approved by me, and email re@ to get it into head.  Then
hop on IRC and give me the play-by-play on how you figured it out.  I'm
really curious!

At first I thought it was a fairly innocuous change, because "nothing"
could be doing a PCPU_GET() for pcpu[0], right?  Then I saw AIM's
cpu_pcpu_init() doing a memcpy() from PCPU_GET(aim.slb).  So, with this
change you're making a memcpy() overwrite itself (which, I hope, is a
real nop in code?).

- Justin


More information about the svn-src-projects mailing list