Index: head/sysutils/mcelog/Makefile =================================================================== --- head/sysutils/mcelog/Makefile (revision 492867) +++ head/sysutils/mcelog/Makefile (revision 492868) @@ -1,42 +1,42 @@ # Created by: Jeremy Chadwick # $FreeBSD$ PORTNAME= mcelog -PORTVERSION= 161 +PORTVERSION= 162 DISTVERSIONPREFIX= v CATEGORIES= sysutils MAINTAINER= ultima@FreeBSD.org COMMENT= Collects and decodes Machine Check Exception data LICENSE= GPLv2 ONLY_FOR_ARCHS= amd64 i386 TEST_DEPENDS= bash:shells/bash USES= alias gmake shebangfix USE_GITHUB= yes GH_ACCOUNT= andikleen SHEBANG_FILES= tests/cache/inject tests/memdb/inject tests/page/inject \ tests/pfa/inject tests/server/inject tests/socket/inject \ tests/trigger tests/unknown/inject MAKE_ENV+= FREEBSD=1 MAKE_ARGS+= CFLAGS="${CFLAGS}" prefix="${PREFIX}" LDFLAGS+= -lkvm PLIST_FILES= bin/mcelog man/man8/mcelog.8.gz post-patch: @${ECHO} "${DISTVERSIONPREFIX}${PORTVERSION}" >${WRKSRC}/.os_version @${CP} ${FILESDIR}/memstream.c ${WRKSRC}/memstream.c @${REINPLACE_CMD} 's/\"unknown\"/\"${PORTVERSION}\"/' \ ${WRKSRC}/Makefile do-install: ${INSTALL_PROGRAM} ${WRKSRC}/mcelog ${STAGEDIR}${PREFIX}/bin ${INSTALL_MAN} ${WRKSRC}/mcelog.8 ${STAGEDIR}${MANPREFIX}/man/man8 .include Index: head/sysutils/mcelog/distinfo =================================================================== --- head/sysutils/mcelog/distinfo (revision 492867) +++ head/sysutils/mcelog/distinfo (revision 492868) @@ -1,3 +1,3 @@ -TIMESTAMP = 1540433813 -SHA256 (andikleen-mcelog-v161_GH0.tar.gz) = 485f5be8f2d5ff8ec1382b54033f75f88b2960ef18f1d87bcf865bb1c094dbd5 -SIZE (andikleen-mcelog-v161_GH0.tar.gz) = 308227 +TIMESTAMP = 1550099603 +SHA256 (andikleen-mcelog-v162_GH0.tar.gz) = 875e98572e86240ea319ab1f69ee6d744eb8b73ac5d700e474f6410d0f52d3fc +SIZE (andikleen-mcelog-v162_GH0.tar.gz) = 308347 Index: head/sysutils/mcelog/files/patch-p4.c =================================================================== --- head/sysutils/mcelog/files/patch-p4.c (revision 492867) +++ head/sysutils/mcelog/files/patch-p4.c (revision 492868) @@ -1,81 +1,81 @@ ---- p4.c.orig 2016-10-10 22:08:11 UTC +--- p4.c.orig 2019-02-05 19:57:07 UTC +++ p4.c -@@ -176,8 +176,10 @@ static int decode_mca(u64 status, u64 mi +@@ -177,8 +177,10 @@ static int decode_mca(u64 status, u64 misc, u64 track, levelnum = mca & 3; level = get_LL_str(levelnum); Wprintf("%s Generic cache hierarchy error\n", level); +#ifdef __Linux__ if (track == 2) run_yellow_trigger(cpu, -1, levelnum, "unknown", level, socket); +#endif } else if (test_prefix(4, mca)) { unsigned levelnum, typenum; char *level, *type; -@@ -186,8 +188,10 @@ static int decode_mca(u64 status, u64 mi +@@ -187,8 +189,10 @@ static int decode_mca(u64 status, u64 misc, u64 track, levelnum = (mca & TLB_LL_MASK) >> TLB_LL_SHIFT; level = get_LL_str(levelnum); Wprintf("%s TLB %s Error\n", type, level); +#ifdef __Linux__ if (track == 2) run_yellow_trigger(cpu, typenum, levelnum, type, level, socket); +#endif } else if (test_prefix(8, mca)) { unsigned typenum = (mca & CACHE_TT_MASK) >> CACHE_TT_SHIFT; unsigned levelnum = (mca & CACHE_LL_MASK) >> CACHE_LL_SHIFT; -@@ -196,8 +200,10 @@ static int decode_mca(u64 status, u64 mi +@@ -197,8 +201,10 @@ static int decode_mca(u64 status, u64 misc, u64 track, Wprintf("%s CACHE %s %s Error\n", type, level, get_RRRR_str((mca & CACHE_RRRR_MASK) >> CACHE_RRRR_SHIFT)); +#ifdef __Linux__ if (track == 2) run_yellow_trigger(cpu, typenum, levelnum, type, level,socket); +#endif - } else if (test_prefix(10, mca)) { - if (mca == 0x400) - Wprintf("Internal Timer error\n"); -@@ -216,7 +222,9 @@ static int decode_mca(u64 status, u64 mi + } else if (test_prefix(9, mca) && EXTRACT(mca, 7, 8) == 1) { + Wprintf("Memory as cache: "); + decode_memory_controller(mca, bank); +@@ -220,7 +226,9 @@ static int decode_mca(u64 status, u64 misc, u64 track, Wprintf("BUS error: %d %d %s %s %s %s %s\n", socket, cpu, level, pp, rrrr, ii, timeout); +#ifdef __Linux__ run_bus_trigger(socket, cpu, level, pp, rrrr, ii, timeout); +#endif /* IO MCA - reported as bus/interconnect with specific PP,T,RRRR,II,LL values * and MISCV set. MISC register points to root port that reported the error * need to cross check with AER logs for more details. -@@ -232,7 +240,9 @@ static int decode_mca(u64 status, u64 mi +@@ -236,7 +244,9 @@ static int decode_mca(u64 status, u64 misc, u64 track, fn = EXTRACT(misc, 16, 18); Wprintf("IO MCA reported by root port %x:%02x:%02x.%x\n", seg, bus, dev, fn); +#ifdef __Linux__ run_iomca_trigger(socket, cpu, seg, bus, dev, fn); +#endif } } else if (test_prefix(7, mca)) { decode_memory_controller(mca, bank); -@@ -382,19 +392,25 @@ static void decode_thermal(struct mce *l +@@ -386,19 +396,25 @@ static void decode_thermal(struct mce *log, int cpu) void decode_intel_mc(struct mce *log, int cputype, int *ismemerr, unsigned size) { +#ifdef __Linux__ int socket = size > offsetof(struct mce, socketid) ? (int)log->socketid : -1; +#endif int cpu = log->extcpu ? log->extcpu : log->cpu; if (log->bank == MCE_THERMAL_BANK) { decode_thermal(log, cpu); +#ifdef __Linux__ run_unknown_trigger(socket, cpu, log); +#endif return; } decode_mcg(log->mcgstatus); +#ifdef __Linux__ if (decode_mci(log->status, log->misc, cpu, log->mcgcap, ismemerr, socket, log->bank)) run_unknown_trigger(socket, cpu, log); +#endif if (test_prefix(11, (log->status & 0xffffL))) { switch (cputype) {