Add support for AMD Family 17h.

This commit is contained in:
maxv 2019-05-29 17:09:17 +00:00
parent 1688ecda31
commit 0acc4e3e94
3 changed files with 64 additions and 13 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: tprof_x86_amd.c,v 1.2 2018/07/24 09:47:35 maxv Exp $ */
/* $NetBSD: tprof_x86_amd.c,v 1.3 2019/05/29 17:09:17 maxv Exp $ */
/*
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@ -56,7 +56,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: tprof_x86_amd.c,v 1.2 2018/07/24 09:47:35 maxv Exp $");
__KERNEL_RCSID(0, "$NetBSD: tprof_x86_amd.c,v 1.3 2019/05/29 17:09:17 maxv Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@ -205,6 +205,7 @@ tprof_amd_ident(void)
switch (CPUID_TO_FAMILY(ci->ci_signature)) {
case 0x10:
case 0x17:
return TPROF_IDENT_AMD_GENERIC;
}

View File

@ -1,7 +1,7 @@
/* $NetBSD: tprof_x86.c,v 1.7 2018/11/26 23:20:57 knakahara Exp $ */
/* $NetBSD: tprof_x86.c,v 1.8 2019/05/29 17:09:18 maxv Exp $ */
/*
* Copyright (c) 2018 The NetBSD Foundation, Inc.
* Copyright (c) 2018-2019 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@ -654,11 +654,57 @@ static struct event_table amd_f10h = {
.next = NULL
};
static struct event_table *
init_amd_f10h(void)
{
return &amd_f10h;
}
/*
* AMD Family 17h
*/
static struct name_to_event amd_f17h_names[] = {
{ "FpRetx87FpOps", 0x02, __BITS(2,0), true },
{ "FpRetSseAvxOps", 0x03, __BITS(7,0), true },
{ "FpRetiredSerOps", 0x05, __BITS(3,0), true },
{ "LsL1DTlbMiss", 0x45, __BITS(7,0), true },
{ "LsTableWalker", 0x46, __BITS(3,0), true },
{ "LsMisalAccesses", 0x47, 0x00, true },
{ "LsInefSwPref", 0x52, __BITS(1,0), true },
{ "LsNotHaltedCyc", 0x76, 0x00, true },
{ "IcFw32", 0x80, 0x00, true },
{ "IcFw32Miss", 0x81, 0x00, true },
{ "IcCacheFillL2", 0x82, 0x00, true },
{ "IcCacheFillSys", 0x83, 0x00, true },
{ "IcFetchStall", 0x87, __BITS(2,0), true },
{ "IcCacheInval", 0x8C, __BITS(1,0), true },
{ "BpL1TlbMissL2Hit", 0x84, 0x00, true },
{ "BpL1TlbMissL2Miss", 0x85, 0x00, true },
{ "BpSnpReSync", 0x86, 0x00, true },
{ "BpL1BTBCorrect", 0x8A, 0x00, true },
{ "BpL2BTBCorrect", 0x8B, 0x00, true },
{ "BpTlbRel", 0x99, 0x00, true },
{ "ExRetInstr", 0xC0, 0x00, true },
{ "ExRetCops", 0xC1, 0x00, true },
{ "ExRetBrn", 0xC2, 0x00, true },
{ "ExRetBrnMisp", 0xC3, 0x00, true },
{ "ExRetBrnTkn", 0xC4, 0x00, true },
{ "ExRetBrnTknMisp", 0xC5, 0x00, true },
{ "ExRetBrnFar", 0xC6, 0x00, true },
{ "ExRetBrnResync", 0xC7, 0x00, true },
{ "ExRetBrnIndMisp", 0xCA, 0x00, true },
{ "ExRetNearRet", 0xC8, 0x00, true },
{ "ExRetNearRetMispred", 0xC9, 0x00, true },
{ "ExRetMmxFpInstr@X87", 0xCB, __BIT(0), true },
{ "ExRetMmxFpInstr@Mmx", 0xCB, __BIT(1), true },
{ "ExRetMmxFpInstr@Sse", 0xCB, __BIT(2), true },
{ "ExRetCond", 0xD1, 0x00, true },
{ "ExRetCondMisp", 0xD2, 0x00, true },
{ "ExDivBusy", 0xD3, 0x00, true },
{ "ExDivCount", 0xD4, 0x00, true },
};
static struct event_table amd_f17h = {
.tablename = "AMD Family 17h",
.names = amd_f17h_names,
.nevents = sizeof(amd_f17h_names) /
sizeof(struct name_to_event),
.next = NULL
};
static struct event_table *
init_amd_generic(void)
@ -673,7 +719,9 @@ init_amd_generic(void)
switch (CPUID_TO_FAMILY(eax)) {
case 0x10:
return init_amd_f10h();
return &amd_f10h;
case 0x17:
return &amd_f17h;
}
return NULL;

View File

@ -1,4 +1,4 @@
.\" $NetBSD: tprof.8,v 1.13 2018/11/26 23:20:56 knakahara Exp $
.\" $NetBSD: tprof.8,v 1.14 2019/05/29 17:09:17 maxv Exp $
.\"
.\" Copyright (c)2011 YAMAMOTO Takashi,
.\" All rights reserved.
@ -24,7 +24,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd November 27, 2018
.Dd May 29, 2019
.Dt TPROF 8
.Os
.Sh NAME
@ -130,6 +130,8 @@ ARMv8
.It
x86 AMD Family 10h
.It
x86 AMD Family 17h
.It
x86 Intel Generic (all Intel CPUs)
.It
x86 Intel Skylake/Kabylake
@ -168,7 +170,7 @@ were dropped.
.An -nosplit
The
.Nm
utility is written by
utility was written by
.An YAMAMOTO Takashi .
It was revamped by
.An Maxime Villard