svn commit: r334827 - in head/sys: amd64/amd64 arm/arm dev/hwpmc i386/i386 kern mips/atheros mips/cavium powerpc/powerpc sys
Mark Johnston
markj at freebsd.org
Fri Jun 8 14:35:08 UTC 2018
On Fri, Jun 08, 2018 at 04:58:03AM +0000, Matt Macy wrote:
> Author: mmacy
> Date: Fri Jun 8 04:58:03 2018
> New Revision: 334827
> URL: https://svnweb.freebsd.org/changeset/base/334827
>
> Log:
> hwpmc: simplify calling convention for hwpmc interrupt handling
>
> pmc_process_interrupt takes 5 arguments when only 3 are needed.
> cpu is always available in curcpu and inuserspace can always be
> derived from the passed trapframe.
>
> While facially a reasonable cleanup this change was motivated
> by the need to workaround a compiler bug.
What is the compiler bug? Do you have disassembly of the subroutines in
question?
>
> core2_intr(cpu, tf) ->
> pmc_process_interrupt(cpu, ring, pmc, tf, inuserspace) ->
> pmc_add_sample(cpu, ring, pm, tf, inuserspace)
>
> In the process of optimizing the tail call the tf pointer was getting
> clobbered:
>
> (kgdb) up
> at /storage/mmacy/devel/freebsd/sys/dev/hwpmc/hwpmc_mod.c:4709
> 4709 pmc_save_kernel_callchain(ps->ps_pc,
> (kgdb) up
> 1205 error = pmc_process_interrupt(cpu, PMC_HR, pm, tf,
>
> resulting in a crash in pmc_save_kernel_callchain.
More information about the svn-src-all
mailing list