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