Update to 1.0pre3
PR: ports/171866 Submitted by: koitsu
This commit is contained in:
parent
fbde072cb7
commit
fd2c7f38fa
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=304858
@ -6,7 +6,7 @@
|
||||
#
|
||||
|
||||
PORTNAME= mcelog
|
||||
DISTVERSION= 1.0pre2
|
||||
DISTVERSION= 1.0pre3
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES= ftp://ftp.kernel.org/pub/linux/utils/cpu/mce/ \
|
||||
http://147.52.159.12/mirrors/ftp.kernel.org/pub/linux/utils/cpu/mce/ \
|
||||
|
@ -1,2 +1,2 @@
|
||||
SHA256 (mcelog-1.0pre2.tar.gz) = 39bec2a19e2548afe9dbc80f6f9dcee6664fffa7ccc142aeb5e1f8c217c1705c
|
||||
SIZE (mcelog-1.0pre2.tar.gz) = 174553
|
||||
SHA256 (mcelog-1.0pre3.tar.gz) = 0782e0aa952fa4bd641071e6b501774a63993a813a4f494ffd7819521a13c50c
|
||||
SIZE (mcelog-1.0pre3.tar.gz) = 176649
|
||||
|
@ -1,5 +1,5 @@
|
||||
--- ./Makefile.orig 2009-12-15 07:18:40.000000000 -0500
|
||||
+++ ./Makefile 2011-10-14 22:36:47.000000000 -0400
|
||||
--- Makefile.orig 2010-01-20 18:36:52.000000000 -0800
|
||||
+++ Makefile 2012-09-22 01:50:21.019688386 -0700
|
||||
@@ -1,5 +1,5 @@
|
||||
CFLAGS := -g -Os
|
||||
-prefix := /usr
|
||||
@ -7,7 +7,7 @@
|
||||
etcprefix :=
|
||||
# Define appropiately for your distribution
|
||||
# DOCDIR := /usr/share/doc/packages/mcelog
|
||||
@@ -28,10 +28,18 @@
|
||||
@@ -28,11 +28,18 @@
|
||||
|
||||
.PHONY: install clean depend
|
||||
|
||||
@ -15,9 +15,10 @@
|
||||
OBJ := p4.o k8.o mcelog.o dmi.o tsc.o core2.o bitfield.o intel.o \
|
||||
nehalem.o dunnington.o tulsa.o config.o memutil.o msg.o \
|
||||
- eventloop.o leaky-bucket.o memdb.o server.o trigger.o \
|
||||
- client.o cache.o sysfs.o yellow.o page.o rbtree.o
|
||||
- client.o cache.o sysfs.o yellow.o page.o rbtree.o \
|
||||
- xeon75xx.o
|
||||
+ eventloop.o leaky-bucket.o memdb.o server.o client.o \
|
||||
+ cache.o rbtree.o
|
||||
+ cache.o rbtree.o xeon75xx.o
|
||||
+ifndef FREEBSD
|
||||
+OBJ += page.o trigger.o sysfs.o yellow.o
|
||||
+endif
|
||||
@ -28,7 +29,7 @@
|
||||
DISKDB_OBJ := diskdb.o dimm.o db.o
|
||||
CLEAN := mcelog dmi tsc dbquery .depend .depend.X dbquery.o ${DISKDB_OBJ}
|
||||
DOC := mce.pdf
|
||||
@@ -47,7 +55,7 @@
|
||||
@@ -48,7 +55,7 @@
|
||||
|
||||
SRC := $(OBJ:.o=.c)
|
||||
|
||||
@ -37,7 +38,7 @@
|
||||
|
||||
# dbquery intentionally not installed by default
|
||||
install: mcelog
|
||||
@@ -81,8 +89,6 @@
|
||||
@@ -82,8 +89,6 @@
|
||||
.depend: ${SRC}
|
||||
${CC} -MM -I. ${SRC} > .depend.X && mv .depend.X .depend
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
--- ./config.c.orig 2009-12-15 07:18:40.000000000 -0500
|
||||
+++ ./config.c 2011-10-14 22:36:47.000000000 -0400
|
||||
--- config.c.orig 2010-01-20 18:36:52.000000000 -0800
|
||||
+++ config.c 2012-09-22 02:32:52.718116009 -0700
|
||||
@@ -18,6 +18,9 @@
|
||||
Author: Andi Kleen
|
||||
*/
|
||||
@ -10,7 +10,7 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
@@ -126,6 +129,21 @@
|
||||
@@ -127,6 +130,21 @@
|
||||
return s;
|
||||
}
|
||||
|
||||
@ -32,3 +32,16 @@
|
||||
int parse_config_file(const char *fn)
|
||||
{
|
||||
FILE *f;
|
||||
@@ -304,7 +322,12 @@
|
||||
s = config_string(header, name);
|
||||
if (s) {
|
||||
/* no $PATH */
|
||||
+#ifdef __Linux_
|
||||
if (trigger_check(s) != 0) {
|
||||
+#endif
|
||||
+#ifdef __FreeBSD__
|
||||
+ if (access(s, R_OK|X_OK) != 0) {
|
||||
+#endif
|
||||
SYSERRprintf("Trigger `%s' not executable\n", s);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
--- ./eventloop.c.orig 2009-12-15 07:18:40.000000000 -0500
|
||||
+++ ./eventloop.c 2011-10-14 22:36:47.000000000 -0400
|
||||
--- eventloop.c.orig 2010-01-20 18:36:52.000000000 -0800
|
||||
+++ eventloop.c 2012-09-22 02:25:13.281116126 -0700
|
||||
@@ -38,7 +38,9 @@
|
||||
static struct pollfd pollfds[MAX_POLLFD];
|
||||
static struct pollcb pollcbs[MAX_POLLFD];
|
||||
@ -18,17 +18,25 @@
|
||||
int event_signal(int sig)
|
||||
{
|
||||
static int first = 1;
|
||||
@@ -111,11 +114,17 @@
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
@@ -126,17 +129,25 @@
|
||||
|
||||
static int (*ppoll_vec)(struct pollfd *, nfds_t, const struct timespec
|
||||
*, const sigset_t *);
|
||||
+#endif
|
||||
|
||||
void eventloop(void)
|
||||
{
|
||||
+#ifdef __Linux__
|
||||
#if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 5 || __GLIBC__ > 2
|
||||
ppoll_vec = ppoll;
|
||||
#endif
|
||||
if (!ppoll_vec)
|
||||
ppoll_vec = ppoll_fallback;
|
||||
+#endif
|
||||
|
||||
for (;;) {
|
||||
+#ifdef __Linux__
|
||||
int n = ppoll(pollfds, max_pollfd, NULL, &event_sigs);
|
||||
int n = ppoll_vec(pollfds, max_pollfd, NULL, &event_sigs);
|
||||
+#endif
|
||||
+#ifdef __FreeBSD__
|
||||
+ int n = poll(pollfds, max_pollfd, -1);
|
||||
|
@ -1,21 +1,30 @@
|
||||
--- ./intel.c.orig 2009-12-15 07:18:40.000000000 -0500
|
||||
+++ ./intel.c 2011-10-14 22:36:47.000000000 -0400
|
||||
@@ -38,7 +38,7 @@
|
||||
--- intel.c.orig 2010-01-20 18:36:52.000000000 -0800
|
||||
+++ intel.c 2012-09-22 01:58:40.204115724 -0700
|
||||
@@ -43,7 +43,7 @@
|
||||
return CPU_CORE2;
|
||||
else if (model == 0x1d)
|
||||
return CPU_DUNNINGTON;
|
||||
- else if (model == 0x1a)
|
||||
+ else if (model == 0x1a || model == 0x2c) /* Nehalem/Westmere */
|
||||
return CPU_NEHALEM;
|
||||
|
||||
if (model >= 0x1a)
|
||||
@@ -79,7 +79,9 @@
|
||||
else if (model == 0x2e)
|
||||
return CPU_XEON75XX;
|
||||
@@ -94,14 +94,18 @@
|
||||
if (recordlen > offsetof(struct mce, mcgcap) && m->mcgcap & MCG_CMCI_P)
|
||||
corr_err_cnt = EXTRACT(m->status, 38, 52);
|
||||
memory_error(m, channel, dimm, corr_err_cnt, recordlen);
|
||||
|
||||
memory_error(m, channel[0], dimm[0], corr_err_cnt, recordlen);
|
||||
+#ifdef __Linux__
|
||||
account_page_error(m, channel, dimm, corr_err_cnt);
|
||||
account_page_error(m, channel[0], dimm[0]);
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* When both DIMMs have a error account the error twice to the page.
|
||||
*/
|
||||
if (channel[1] != -1) {
|
||||
memory_error(m, channel[1], dimm[1], corr_err_cnt, recordlen);
|
||||
+#ifdef __Linux__
|
||||
account_page_error(m, channel[1], dimm[1]);
|
||||
+#endif
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -1,12 +1,13 @@
|
||||
--- ./mcelog.c.orig 2009-12-15 07:18:40.000000000 -0500
|
||||
+++ ./mcelog.c 2011-10-14 22:37:22.000000000 -0400
|
||||
@@ -20,8 +20,21 @@
|
||||
--- mcelog.c.orig 2010-01-20 18:36:52.000000000 -0800
|
||||
+++ mcelog.c 2012-09-22 02:34:19.182116917 -0700
|
||||
@@ -20,9 +20,22 @@
|
||||
#define _GNU_SOURCE 1
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
+#ifdef __Linux__
|
||||
#include <asm/types.h>
|
||||
#include <asm/ioctls.h>
|
||||
#include <linux/limits.h>
|
||||
+#endif
|
||||
+#ifdef __FreeBSD__
|
||||
+#include <sys/types.h>
|
||||
@ -22,22 +23,22 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
@@ -57,9 +70,25 @@
|
||||
@@ -58,9 +71,25 @@
|
||||
#include "yellow.h"
|
||||
#include "page.h"
|
||||
|
||||
+struct mca_record {
|
||||
+ uint64_t mr_status;
|
||||
+ uint64_t mr_addr;
|
||||
+ uint64_t mr_misc;
|
||||
+ uint64_t mr_tsc;
|
||||
+ int mr_apic_id;
|
||||
+ int mr_bank;
|
||||
+ uint64_t mr_mcg_cap;
|
||||
+ uint64_t mr_mcg_status;
|
||||
+ int mr_cpu_id;
|
||||
+ int mr_cpu_vendor_id;
|
||||
+ int mr_cpu;
|
||||
+ uint64_t mr_status;
|
||||
+ uint64_t mr_addr;
|
||||
+ uint64_t mr_misc;
|
||||
+ uint64_t mr_tsc;
|
||||
+ int mr_apic_id;
|
||||
+ int mr_bank;
|
||||
+ uint64_t mr_mcg_cap;
|
||||
+ uint64_t mr_mcg_status;
|
||||
+ int mr_cpu_id;
|
||||
+ int mr_cpu_vendor_id;
|
||||
+ int mr_cpu;
|
||||
+};
|
||||
+
|
||||
enum cputype cputype = CPU_GENERIC;
|
||||
@ -48,7 +49,7 @@
|
||||
|
||||
int ignore_nodev;
|
||||
int filter_bogus = 1;
|
||||
@@ -70,12 +99,18 @@
|
||||
@@ -71,12 +100,18 @@
|
||||
int dump_raw_ascii;
|
||||
int daemon_mode;
|
||||
static char *inputfile;
|
||||
@ -67,7 +68,7 @@
|
||||
|
||||
static void check_cpu(void);
|
||||
|
||||
@@ -388,6 +423,7 @@
|
||||
@@ -393,6 +428,7 @@
|
||||
Wprintf("\n");
|
||||
}
|
||||
|
||||
@ -75,7 +76,7 @@
|
||||
void check_cpu(void)
|
||||
{
|
||||
enum {
|
||||
@@ -455,7 +491,44 @@
|
||||
@@ -460,7 +496,45 @@
|
||||
} else
|
||||
Eprintf("warning: Cannot open /proc/cpuinfo\n");
|
||||
}
|
||||
@ -92,6 +93,7 @@
|
||||
+
|
||||
+ if (checked)
|
||||
+ return;
|
||||
+
|
||||
+ checked = 1;
|
||||
+
|
||||
+ do_cpuid(0, regs);
|
||||
@ -104,23 +106,23 @@
|
||||
+ cpu_id = regs[0];
|
||||
+ family = CPUID_TO_FAMILY(cpu_id);
|
||||
+ model = CPUID_TO_MODEL(cpu_id);
|
||||
|
||||
+ if (cpu_forced)
|
||||
+
|
||||
+ if (cpu_forced)
|
||||
+ ;
|
||||
+ else if (!strcmp(vendor,"AuthenticAMD") &&
|
||||
+ else if (!strcmp(vendor,"AuthenticAMD") &&
|
||||
+ (family == 15 || family == 16 || family == 17))
|
||||
+ cputype = CPU_K8;
|
||||
+ else if (!strcmp(vendor,"GenuineIntel"))
|
||||
+ cputype = select_intel_cputype(family, model);
|
||||
+ /* Add checks for other CPUs here */
|
||||
+ /* Add checks for other CPUs here */
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
|
||||
+#ifdef __Linux__
|
||||
static char *skipspace(char *s)
|
||||
{
|
||||
while (isspace(*s))
|
||||
@@ -479,6 +552,7 @@
|
||||
@@ -484,6 +558,7 @@
|
||||
}
|
||||
return skipspace(s);
|
||||
}
|
||||
@ -128,15 +130,15 @@
|
||||
|
||||
static void dump_mce_final(struct mce *m, char *symbol, int missing, int recordlen,
|
||||
int dseen)
|
||||
@@ -501,6 +575,7 @@
|
||||
if (recordlen < endof_field(struct mce, f)) \
|
||||
@@ -507,6 +582,7 @@
|
||||
recordlen = endof_field(struct mce, f)
|
||||
|
||||
+#ifdef __Linux__
|
||||
/* Decode ASCII input for fatal messages */
|
||||
+#ifdef __Linux__
|
||||
static void decodefatal(FILE *inf)
|
||||
{
|
||||
@@ -646,6 +721,227 @@
|
||||
struct mce m;
|
||||
@@ -651,6 +727,227 @@
|
||||
if (data)
|
||||
dump_mce_final(&m, symbol, missing, recordlen, disclaimer_seen);
|
||||
}
|
||||
@ -364,18 +366,18 @@
|
||||
|
||||
static void remove_pidfile(void)
|
||||
{
|
||||
@@ -686,6 +982,10 @@
|
||||
@@ -709,6 +1006,10 @@
|
||||
" mcelog [options] --ascii < log\n"
|
||||
" mcelog [options] --ascii --file log\n"
|
||||
"Decode machine check ASCII output from kernel logs\n"
|
||||
+#ifdef __FreeBSD__
|
||||
+#ifdef __FreeBSD_
|
||||
+" mcelog [options] -M vmcore -N kernel\n"
|
||||
+"Decode machine check error records from kernel crashdump.\n"
|
||||
+#endif
|
||||
"Options:\n"
|
||||
"--cpu CPU Set CPU type CPU to decode (see below for valid types)\n"
|
||||
"--cpumhz MHZ Set CPU Mhz to decode time (output unreliable, not needed on new kernels)\n"
|
||||
@@ -866,6 +1166,14 @@
|
||||
@@ -889,6 +1190,14 @@
|
||||
case O_CONFIG_FILE:
|
||||
/* parsed in config.c */
|
||||
break;
|
||||
@ -390,7 +392,7 @@
|
||||
case 0:
|
||||
break;
|
||||
default:
|
||||
@@ -900,8 +1208,10 @@
|
||||
@@ -923,8 +1232,10 @@
|
||||
|
||||
static void general_setup(void)
|
||||
{
|
||||
@ -401,7 +403,7 @@
|
||||
config_cred("global", "run-credentials", &runcred);
|
||||
if (config_bool("global", "filter-memory-errors") == 1)
|
||||
filter_memory_errors = 1;
|
||||
@@ -924,6 +1234,7 @@
|
||||
@@ -947,6 +1258,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -409,7 +411,7 @@
|
||||
static void process(int fd, unsigned recordlen, unsigned loglen, char *buf)
|
||||
{
|
||||
int i;
|
||||
@@ -964,6 +1275,173 @@
|
||||
@@ -987,6 +1299,173 @@
|
||||
if (finish)
|
||||
exit(0);
|
||||
}
|
||||
@ -583,7 +585,7 @@
|
||||
|
||||
static void noargs(int ac, char **av)
|
||||
{
|
||||
@@ -1022,22 +1500,30 @@
|
||||
@@ -1045,22 +1524,30 @@
|
||||
char *buf;
|
||||
};
|
||||
|
||||
@ -607,16 +609,15 @@
|
||||
|
||||
parse_config(av);
|
||||
|
||||
- while ((opt = getopt_long(ac, av, "", options, NULL)) != -1) {
|
||||
+#ifdef __FreeBSD__
|
||||
+ while ((opt = getopt_long(ac, av, "M:N:", options, NULL)) != -1) {
|
||||
+ while ((opt = getopt_long(ac, av, "M:N:", options, NULL)) != -1) {
|
||||
+#else
|
||||
+ while ((opt = getopt_long(ac, av, "", options, NULL)) != -1) {
|
||||
while ((opt = getopt_long(ac, av, "", options, NULL)) != -1) {
|
||||
+#endif
|
||||
if (opt == '?') {
|
||||
usage();
|
||||
} else if (combined_modifier(opt) > 0) {
|
||||
@@ -1057,13 +1543,21 @@
|
||||
@@ -1080,13 +1567,21 @@
|
||||
} else if (opt == 0)
|
||||
break;
|
||||
}
|
||||
@ -638,7 +639,7 @@
|
||||
fd = open(logfn, O_RDONLY);
|
||||
if (fd < 0) {
|
||||
if (ignore_nodev)
|
||||
@@ -1078,24 +1572,39 @@
|
||||
@@ -1101,24 +1596,39 @@
|
||||
err("MCE_GET_LOG_LEN");
|
||||
|
||||
d.buf = xalloc(d.recordlen * d.loglen);
|
||||
|
@ -1,5 +1,5 @@
|
||||
--- ./server.c.orig 2009-12-15 07:18:40.000000000 -0500
|
||||
+++ ./server.c 2011-10-14 22:36:47.000000000 -0400
|
||||
--- server.c.orig 2010-01-20 18:36:52.000000000 -0800
|
||||
+++ server.c 2012-09-22 02:39:04.991117023 -0700
|
||||
@@ -101,7 +101,9 @@
|
||||
|
||||
static void dispatch_pages(FILE *fh)
|
||||
@ -77,3 +77,16 @@
|
||||
|
||||
cc = xalloc(sizeof(struct clientcon));
|
||||
if (register_pollcb(nfd, POLLIN, client_event, cc) < 0) {
|
||||
@@ -300,7 +336,12 @@
|
||||
sigaction(SIGALRM, &sa, &oldsa);
|
||||
if (sigsetjmp(ping_timeout_ctx, 1) == 0) {
|
||||
alarm(initial_ping_timeout);
|
||||
+#ifdef __Linux__
|
||||
if (connect(fd, un, sizeof(struct sockaddr_un)) < 0)
|
||||
+#endif
|
||||
+#ifdef __FreeBSD__
|
||||
+ if (connect(fd, (struct sockaddr *) un, sizeof(struct sockaddr_un)) < 0)
|
||||
+#endif
|
||||
goto cleanup;
|
||||
if (write(fd, PAIR("ping\n")) < 0)
|
||||
goto cleanup;
|
@ -4,9 +4,12 @@ produces human-readable output.
|
||||
|
||||
This software is heavily patched to work on FreeBSD systems,
|
||||
and thus provides an extremely limited subset of features as
|
||||
of this writing. The primary purpose is to provide a way to
|
||||
decode MCE output from the FreeBSD kernel into something more
|
||||
human-readable using the command 'mcelog --no-dmi --ascii'
|
||||
of this writing (for example, daemon mode is not currently
|
||||
supported).
|
||||
|
||||
The primary purpose is to provide a way to decode MCE output
|
||||
from the FreeBSD kernel into something more human-readable
|
||||
using the command 'mcelog --no-dmi --ascii'.
|
||||
|
||||
FreeBSD conversion patches were originally written by John
|
||||
Baldwin <jhb@freebsd.org> and later incorporated into this
|
||||
|
@ -1,7 +1,12 @@
|
||||
=================================================
|
||||
You can decode MCE output from the FreeBSD kernel
|
||||
by using the following command:
|
||||
======================================================
|
||||
You can decode MCE output from the FreeBSD kernel by
|
||||
using the following command:
|
||||
|
||||
mcelog --no-dmi --ascii --file /path/to/log
|
||||
mcelog --no-dmi --ascii --file /path/to/log
|
||||
|
||||
=================================================
|
||||
Or if you wish to paste the MCE via stdin:
|
||||
|
||||
mcelog --no-dmi --ascii
|
||||
{...paste MCE and send EOF/press Ctrl-D...}
|
||||
|
||||
======================================================
|
||||
|
Loading…
Reference in New Issue
Block a user