Date: Sat, 14 Mar 2020 00:49:59 +0000 (UTC) From: Navdeep Parhar <np@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r358972 - stable/12/sys/dev/cxgbe Message-ID: <202003140049.02E0nxs1010560@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202003140049.02E0nxs1010560>