Module Name: src Committed By: maxv Date: Wed May 29 17:09:18 UTC 2019
Modified Files: src/sys/dev/tprof: tprof_x86_amd.c src/usr.sbin/tprof: tprof.8 src/usr.sbin/tprof/arch: tprof_x86.c Log Message: Add support for AMD Family 17h. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/dev/tprof/tprof_x86_amd.c cvs rdiff -u -r1.13 -r1.14 src/usr.sbin/tprof/tprof.8 cvs rdiff -u -r1.7 -r1.8 src/usr.sbin/tprof/arch/tprof_x86.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/tprof/tprof_x86_amd.c diff -u src/sys/dev/tprof/tprof_x86_amd.c:1.2 src/sys/dev/tprof/tprof_x86_amd.c:1.3 --- src/sys/dev/tprof/tprof_x86_amd.c:1.2 Tue Jul 24 09:47:35 2018 +++ src/sys/dev/tprof/tprof_x86_amd.c Wed May 29 17:09:17 2019 @@ -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; } Index: src/usr.sbin/tprof/tprof.8 diff -u src/usr.sbin/tprof/tprof.8:1.13 src/usr.sbin/tprof/tprof.8:1.14 --- src/usr.sbin/tprof/tprof.8:1.13 Mon Nov 26 23:20:56 2018 +++ src/usr.sbin/tprof/tprof.8 Wed May 29 17:09:17 2019 @@ -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 Index: src/usr.sbin/tprof/arch/tprof_x86.c diff -u src/usr.sbin/tprof/arch/tprof_x86.c:1.7 src/usr.sbin/tprof/arch/tprof_x86.c:1.8 --- src/usr.sbin/tprof/arch/tprof_x86.c:1.7 Mon Nov 26 23:20:57 2018 +++ src/usr.sbin/tprof/arch/tprof_x86.c Wed May 29 17:09:18 2019 @@ -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;