Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Feb 2016 00:26:24 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 207068] hwpmc wrap around/sign extension
Message-ID:  <bug-207068-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D207068

            Bug ID: 207068
           Summary: hwpmc wrap around/sign extension
           Product: Base System
           Version: 10.2-STABLE
          Hardware: amd64
                OS: Any
            Status: New
          Keywords: hwpmc
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: joss.upton@yahoo.com
                CC: freebsd-amd64@FreeBSD.org, joss.upton@yahoo.com
                CC: freebsd-amd64@FreeBSD.org

hwpmc_intel writes the old value of a counter back to the counter value
register during a context switch in.  However, those registers ignore the u=
pper
32 bits (EDX) and instead sign extended to the register width based on EAX[=
31].
 This is the behavior on all machines not supporting "full width writes"
(indicated by CPUID2_PDCM being set && and IA32_PERF_CAPABILITIES(0x345) &
FW_WRITE(bit 13) being set).

If full width writes are supported, full-width aliases for IA32_PMCn exist
0x400 MSRs higher (e.g. IA32_PMC0 =3D=3D 0xC1 and IA32_A_PMC0 =3D 0x4C1).

This affects processes monitoring CPU_CLK for processes running more than a
second or two.  Using this counter quickly runs into a "negative increment"
assertion in hwpmc_mod.c because of the sign extension.  Attached is the le=
ast
invasive patch I could come up with and it's against 10.2-R.

It also fixes a few debugging PMCDBGs and adjusts the size of
PMC_DEFAULT_DEBUG_FLAGS to match the size of the structure.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-207068-8>