svn commit: r358972 - stable/12/sys/dev/cxgbe
Navdeep Parhar
np at FreeBSD.org
Sat Mar 14 00:50:00 UTC 2020
Author: np
Date: Sat Mar 14 00:49:59 2020
New Revision: 358972
URL: https://svnweb.freebsd.org/changeset/base/358972
Log:
MFC r355059:
cxgbe(4): sysctl to reset the temperature/voltage sensor.
# sysctl dev.<nexus>.<inst>.reset_sensor=1
# sysctl dev.t6nex.0.reset_sensor=1
Sponsored by: Chelsio Communications
Modified:
stable/12/sys/dev/cxgbe/adapter.h
stable/12/sys/dev/cxgbe/t4_main.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/dev/cxgbe/adapter.h
==============================================================================
--- stable/12/sys/dev/cxgbe/adapter.h Sat Mar 14 00:16:15 2020 (r358971)
+++ stable/12/sys/dev/cxgbe/adapter.h Sat Mar 14 00:49:59 2020 (r358972)
@@ -897,6 +897,7 @@ struct adapter {
int last_op_flags;
int swintr;
+ int sensor_resets;
};
#define ADAPTER_LOCK(sc) mtx_lock(&(sc)->sc_lock)
Modified: stable/12/sys/dev/cxgbe/t4_main.c
==============================================================================
--- stable/12/sys/dev/cxgbe/t4_main.c Sat Mar 14 00:16:15 2020 (r358971)
+++ stable/12/sys/dev/cxgbe/t4_main.c Sat Mar 14 00:49:59 2020 (r358972)
@@ -646,6 +646,7 @@ static int sysctl_autoneg(SYSCTL_HANDLER_ARGS);
static int sysctl_handle_t4_reg64(SYSCTL_HANDLER_ARGS);
static int sysctl_temperature(SYSCTL_HANDLER_ARGS);
static int sysctl_vdd(SYSCTL_HANDLER_ARGS);
+static int sysctl_reset_sensor(SYSCTL_HANDLER_ARGS);
static int sysctl_loadavg(SYSCTL_HANDLER_ARGS);
static int sysctl_cctrl(SYSCTL_HANDLER_ARGS);
static int sysctl_cim_ibq_obq(SYSCTL_HANDLER_ARGS);
@@ -6009,6 +6010,9 @@ t4_sysctls(struct adapter *sc)
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "temperature", CTLTYPE_INT |
CTLFLAG_RD, sc, 0, sysctl_temperature, "I",
"chip temperature (in Celsius)");
+ SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "reset_sensor", CTLTYPE_INT |
+ CTLFLAG_RW, sc, 0, sysctl_reset_sensor, "I",
+ "reset the chip's temperature sensor.");
SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "loadavg", CTLTYPE_STRING |
CTLFLAG_RD, sc, 0, sysctl_loadavg, "A",
@@ -7171,6 +7175,36 @@ sysctl_vdd(SYSCTL_HANDLER_ARGS)
}
return (sysctl_handle_int(oidp, &sc->params.core_vdd, 0, req));
+}
+
+static int
+sysctl_reset_sensor(SYSCTL_HANDLER_ARGS)
+{
+ struct adapter *sc = arg1;
+ int rc, v;
+ uint32_t param, val;
+
+ v = sc->sensor_resets;
+ rc = sysctl_handle_int(oidp, &v, 0, req);
+ if (rc != 0 || req->newptr == NULL || v <= 0)
+ return (rc);
+
+ if (sc->params.fw_vers < FW_VERSION32(1, 24, 7, 0) ||
+ chip_id(sc) < CHELSIO_T5)
+ return (ENOTSUP);
+
+ rc = begin_synchronized_op(sc, NULL, SLEEP_OK | INTR_OK, "t4srst");
+ if (rc)
+ return (rc);
+ param = (V_FW_PARAMS_MNEM(FW_PARAMS_MNEM_DEV) |
+ V_FW_PARAMS_PARAM_X(FW_PARAMS_PARAM_DEV_DIAG) |
+ V_FW_PARAMS_PARAM_Y(FW_PARAM_DEV_DIAG_RESET_TMP_SENSOR));
+ val = 1;
+ rc = -t4_set_params(sc, sc->mbox, sc->pf, 0, 1, ¶m, &val);
+ end_synchronized_op(sc, 0);
+ if (rc == 0)
+ sc->sensor_resets++;
+ return (rc);
}
static int
More information about the svn-src-all
mailing list