From owner-dev-commits-src-main@freebsd.org Wed Dec 30 22:09:27 2020 Return-Path: Delivered-To: dev-commits-src-main@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 99C274D05CC; Wed, 30 Dec 2020 22:09:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4D5lnM3xHcz4kfG; Wed, 30 Dec 2020 22:09:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 760BE252E6; Wed, 30 Dec 2020 22:09:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 0BUM9RmU083870; Wed, 30 Dec 2020 22:09:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 0BUM9RPJ083869; Wed, 30 Dec 2020 22:09:27 GMT (envelope-from git) Date: Wed, 30 Dec 2020 22:09:27 GMT Message-Id: <202012302209.0BUM9RPJ083869@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Alfredo Dal'Ava Junior" Subject: git: 6d2254bc922b - main - [POWERPC64LE] fix sysctl dev.opal_sensor.* on little-endian kernel MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: alfredo X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6d2254bc922b4858cd479d8c7133f64143b6cac5 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-main@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: "Commit messages for the main branch of the src repository." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Dec 2020 22:09:27 -0000 The branch main has been updated by alfredo: URL: https://cgit.FreeBSD.org/src/commit/?id=6d2254bc922b4858cd479d8c7133f64143b6cac5 commit 6d2254bc922b4858cd479d8c7133f64143b6cac5 Author: Alfredo Dal'Ava Junior AuthorDate: 2020-12-31 01:00:28 +0000 Commit: Alfredo Dal'Ava Junior CommitDate: 2020-12-31 01:00:28 +0000 [POWERPC64LE] fix sysctl dev.opal_sensor.* on little-endian kernel - fix values returned by 'sysctls dev.opal_sensor.*.sensor' - fix missing 'dev.opal_sensor.*.sensor_[max|min]' on sysctl Reviewed-by: jhibbits Sponsored-by: Eldorado Research Institute (eldorado.org.br) Differential-Revision: https://reviews.freebsd.org/D27365 --- sys/powerpc/powernv/opal.h | 22 ++++++++++++++++++++++ sys/powerpc/powernv/opal_dev.c | 20 +++++++++++++++++--- sys/powerpc/powernv/opal_sensor.c | 7 ++++--- 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/sys/powerpc/powernv/opal.h b/sys/powerpc/powernv/opal.h index 7671ece28122..d7a81e33f809 100644 --- a/sys/powerpc/powernv/opal.h +++ b/sys/powerpc/powernv/opal.h @@ -138,15 +138,37 @@ int opal_call(uint64_t token, ...); #define OPAL_SUCCESS 0 #define OPAL_PARAMETER -1 #define OPAL_BUSY -2 +#define OPAL_PARTIAL -3 +#define OPAL_CONSTRAINED -4 #define OPAL_CLOSED -5 #define OPAL_HARDWARE -6 #define OPAL_UNSUPPORTED -7 +#define OPAL_PERMISSION -8 +#define OPAL_NO_MEM -9 #define OPAL_RESOURCE -10 +#define OPAL_INTERNAL_ERROR -11 #define OPAL_BUSY_EVENT -12 +#define OPAL_HARDWARE_FROZEN -13 +#define OPAL_WRONG_STATE -14 #define OPAL_ASYNC_COMPLETION -15 #define OPAL_EMPTY -16 +#define OPAL_I2C_TIMEOUT -17 +#define OPAL_I2C_INVALID_CMD -18 +#define OPAL_I2C_LBUS_PARITY -19 +#define OPAL_I2C_BKEND_OVERRUN -20 +#define OPAL_I2C_BKEND_ACCESS -21 +#define OPAL_I2C_ARBT_LOST -22 +#define OPAL_I2C_NACK_RCVD -23 +#define OPAL_I2C_STOP_ERR -24 +#define OPAL_XSCOM_PARTIAL_GOOD -25 +#define OPAL_XSCOM_ADDR_ERROR -26 +#define OPAL_XSCOM_CLOCK_ERROR -27 +#define OPAL_XSCOM_PARITY_ERROR -28 +#define OPAL_XSCOM_TIMEOUT -29 +#define OPAL_XSCOM_CTR_OFFLINED -30 #define OPAL_XIVE_PROVISIONING -31 #define OPAL_XIVE_FREE_ACTIVE -32 +#define OPAL_TIMEOUT -33 #define OPAL_TOKEN_ABSENT 0 #define OPAL_TOKEN_PRESENT 1 diff --git a/sys/powerpc/powernv/opal_dev.c b/sys/powerpc/powernv/opal_dev.c index ccd49bac7a68..e23844fde04d 100644 --- a/sys/powerpc/powernv/opal_dev.c +++ b/sys/powerpc/powernv/opal_dev.c @@ -382,8 +382,22 @@ opal_handle_messages(void) rv = opal_call(OPAL_GET_MSG, vtophys(&msg), sizeof(msg)); - if (rv != OPAL_SUCCESS) + switch (rv) { + case OPAL_SUCCESS: + break; + case OPAL_RESOURCE: + /* no available messages - return */ + return; + case OPAL_PARAMETER: + printf("%s error: invalid buffer. Please file a bug report.\n", __func__); + return; + case OPAL_PARTIAL: + printf("%s error: buffer is too small and messages was discarded. Please file a bug report.\n", __func__); return; + default: + printf("%s opal_call returned unknown result <%lu>\n", __func__, rv); + return; + } type = be32toh(msg.msg_type); switch (type) { @@ -406,7 +420,7 @@ opal_handle_messages(void) EVENTHANDLER_DIRECT_INVOKE(OPAL_OCC, &msg); break; default: - printf("Unknown OPAL message type %d\n", type); + printf("%s Unknown OPAL message type %d\n", __func__, type); } } @@ -418,7 +432,7 @@ opal_intr(void *xintr) opal_call(OPAL_HANDLE_INTERRUPT, (uint32_t)(uint64_t)xintr, vtophys(&events)); /* Wake up the heartbeat, if it's been setup. */ - if (events != 0 && opal_hb_proc != NULL) + if (be64toh(events) != 0 && opal_hb_proc != NULL) wakeup(opal_hb_proc); } diff --git a/sys/powerpc/powernv/opal_sensor.c b/sys/powerpc/powernv/opal_sensor.c index dae1f97bc989..a95746472975 100644 --- a/sys/powerpc/powernv/opal_sensor.c +++ b/sys/powerpc/powernv/opal_sensor.c @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -114,7 +115,7 @@ opal_sensor_get_val(struct opal_sensor_softc *sc, uint32_t key, uint64_t *val) SENSOR_UNLOCK(sc); if (rv == OPAL_SUCCESS) - *val = val32; + *val = be32toh(val32); else rv = EIO; @@ -218,7 +219,7 @@ opal_sensor_attach(device_t dev) SYSCTL_ADD_STRING(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "label", CTLFLAG_RD, sc->sc_label, 0, ""); - if (OF_getprop(node, "sensor-data-min", + if (OF_getencprop(node, "sensor-data-min", &sensor_id, sizeof(sensor_id)) > 0) { sc->sc_min_handle = sensor_id; SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, @@ -228,7 +229,7 @@ opal_sensor_attach(device_t dev) "minimum value"); } - if (OF_getprop(node, "sensor-data-max", + if (OF_getencprop(node, "sensor-data-max", &sensor_id, sizeof(sensor_id)) > 0) { sc->sc_max_handle = sensor_id; SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,