{ .name = "ip", .type = "INTEGER" },
{ .name = "tsc", .type = "INTEGER" },
{ .name = "walltime", .type = "INTEGER" },
- { .name = "cpu", .type = "INTEGER" }, // 10
+ { .name = "ppin", .type = "INTEGER" }, // 10
+ { .name = "cpu", .type = "INTEGER" },
{ .name = "cpuid", .type = "INTEGER" },
{ .name = "apicid", .type = "INTEGER" },
{ .name = "socketid", .type = "INTEGER" },
- { .name = "cs", .type = "INTEGER" },
- { .name = "bank", .type = "INTEGER" }, //15
+ { .name = "cs", .type = "INTEGER" }, // 15
+ { .name = "bank", .type = "INTEGER" },
{ .name = "cpuvendor", .type = "INTEGER" },
/* Parsed data - will likely change */
{ .name = "bank_name", .type = "TEXT" },
{ .name = "error_msg", .type = "TEXT" },
- { .name = "mcgstatus_msg", .type = "TEXT" },
- { .name = "mcistatus_msg", .type = "TEXT" }, // 20
+ { .name = "mcgstatus_msg", .type = "TEXT" },// 20
+ { .name = "mcistatus_msg", .type = "TEXT" },
{ .name = "mcastatus_msg", .type = "TEXT" },
{ .name = "user_action", .type = "TEXT" },
{ .name = "mc_location", .type = "TEXT" },
sqlite3_bind_int64(priv->stmt_mce_record, 7, ev->ip);
sqlite3_bind_int64(priv->stmt_mce_record, 8, ev->tsc);
sqlite3_bind_int64(priv->stmt_mce_record, 9, ev->walltime);
- sqlite3_bind_int (priv->stmt_mce_record, 10, ev->cpu);
- sqlite3_bind_int (priv->stmt_mce_record, 11, ev->cpuid);
- sqlite3_bind_int (priv->stmt_mce_record, 12, ev->apicid);
- sqlite3_bind_int (priv->stmt_mce_record, 13, ev->socketid);
- sqlite3_bind_int (priv->stmt_mce_record, 14, ev->cs);
- sqlite3_bind_int (priv->stmt_mce_record, 15, ev->bank);
- sqlite3_bind_int (priv->stmt_mce_record, 16, ev->cpuvendor);
-
- sqlite3_bind_text(priv->stmt_mce_record, 17, ev->bank_name, -1, NULL);
- sqlite3_bind_text(priv->stmt_mce_record, 18, ev->error_msg, -1, NULL);
- sqlite3_bind_text(priv->stmt_mce_record, 19, ev->mcgstatus_msg, -1, NULL);
- sqlite3_bind_text(priv->stmt_mce_record, 20, ev->mcistatus_msg, -1, NULL);
- sqlite3_bind_text(priv->stmt_mce_record, 21, ev->mcastatus_msg, -1, NULL);
- sqlite3_bind_text(priv->stmt_mce_record, 22, ev->user_action, -1, NULL);
- sqlite3_bind_text(priv->stmt_mce_record, 23, ev->mc_location, -1, NULL);
+ sqlite3_bind_int64(priv->stmt_mce_record, 10, ev->ppin);
+ sqlite3_bind_int (priv->stmt_mce_record, 11, ev->cpu);
+ sqlite3_bind_int (priv->stmt_mce_record, 12, ev->cpuid);
+ sqlite3_bind_int (priv->stmt_mce_record, 13, ev->apicid);
+ sqlite3_bind_int (priv->stmt_mce_record, 14, ev->socketid);
+ sqlite3_bind_int (priv->stmt_mce_record, 15, ev->cs);
+ sqlite3_bind_int (priv->stmt_mce_record, 16, ev->bank);
+ sqlite3_bind_int (priv->stmt_mce_record, 17, ev->cpuvendor);
+
+ sqlite3_bind_text(priv->stmt_mce_record, 18, ev->bank_name, -1, NULL);
+ sqlite3_bind_text(priv->stmt_mce_record, 19, ev->error_msg, -1, NULL);
+ sqlite3_bind_text(priv->stmt_mce_record, 20, ev->mcgstatus_msg, -1, NULL);
+ sqlite3_bind_text(priv->stmt_mce_record, 21, ev->mcistatus_msg, -1, NULL);
+ sqlite3_bind_text(priv->stmt_mce_record, 22, ev->mcastatus_msg, -1, NULL);
+ sqlite3_bind_text(priv->stmt_mce_record, 23, ev->user_action, -1, NULL);
+ sqlite3_bind_text(priv->stmt_mce_record, 24, ev->mc_location, -1, NULL);
rc = sqlite3_step(priv->stmt_mce_record);
if (rc != SQLITE_OK && rc != SQLITE_DONE)
{
require DBI;
my ($query, $query_handle, $id, $time, $devname, $count, $type, $msg, $label, $mc, $top, $mid, $low, $addr, $grain, $syndrome, $detail, $out);
- my ($mcgcap,$mcgstatus, $status, $misc, $ip, $tsc, $walltime, $cpu, $cpuid, $apicid, $socketid, $cs, $bank, $cpuvendor, $bank_name, $mcgstatus_msg, $mcistatus_msg, $mcastatus_msg, $user_action, $mc_location);
+ my ($mcgcap,$mcgstatus, $status, $misc, $ip, $tsc, $walltime, $ppin, $cpu, $cpuid, $apicid, $socketid, $cs, $bank, $cpuvendor, $bank_name, $mcgstatus_msg, $mcistatus_msg, $mcastatus_msg, $user_action, $mc_location);
my ($timestamp, $etype, $severity, $etype_string, $severity_string, $fru_id, $fru_text, $cper_data);
my ($bus_name, $dev_name, $driver_name, $reporter_name);
my ($dev, $sector, $nr_sector, $error, $rwbs, $cmd);
# MCE mce_record errors
if ($has_mce == 1) {
- $query = "select id, timestamp, mcgcap, mcgstatus, status, addr, misc, ip, tsc, walltime, cpu, cpuid, apicid, socketid, cs, bank, cpuvendor, bank_name, error_msg, mcgstatus_msg, mcistatus_msg, mcastatus_msg, user_action, mc_location from mce_record$conf{opt}{since} order by id";
+ $query = "select id, timestamp, mcgcap, mcgstatus, status, addr, misc, ip, tsc, walltime, ppin, cpu, cpuid, apicid, socketid, cs, bank, cpuvendor, bank_name, error_msg, mcgstatus_msg, mcistatus_msg, mcastatus_msg, user_action, mc_location from mce_record$conf{opt}{since} order by id";
$query_handle = $dbh->prepare($query);
$query_handle->execute();
- $query_handle->bind_columns(\($id, $time, $mcgcap,$mcgstatus, $status, $addr, $misc, $ip, $tsc, $walltime, $cpu, $cpuid, $apicid, $socketid, $cs, $bank, $cpuvendor, $bank_name, $msg, $mcgstatus_msg, $mcistatus_msg, $mcastatus_msg, $user_action, $mc_location));
+ $query_handle->bind_columns(\($id, $time, $mcgcap,$mcgstatus, $status, $addr, $misc, $ip, $tsc, $walltime, $ppin, $cpu, $cpuid, $apicid, $socketid, $cs, $bank, $cpuvendor, $bank_name, $msg, $mcgstatus_msg, $mcistatus_msg, $mcastatus_msg, $user_action, $mc_location));
$out = "";
while($query_handle->fetch()) {
$out .= "$id $time error: $msg";
$out .= sprintf ", ip=0x%08x", $ip if ($ip);
$out .= sprintf ", tsc=0x%08x", $tsc if ($tsc);
$out .= sprintf ", walltime=0x%08x", $walltime if ($walltime);
+ $out .= sprintf ", ppin=0x%08x", $ppin if ($ppin);
$out .= sprintf ", cpu=0x%08x", $cpu if ($cpu);
$out .= sprintf ", cpuid=0x%08x", $cpuid if ($cpuid);
$out .= sprintf ", apicid=0x%08x", $apicid if ($apicid);