From nobody Sun Jan 29 14:59:53 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4P4ZGy1Kjyz3cj3N; Sun, 29 Jan 2023 14:59:54 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P4ZGy0cYmz4C9t; Sun, 29 Jan 2023 14:59:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675004394; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pQel71Bl91pMPJrTpGnQ5QR6IB2g/3YLYUzCCwuZb2Q=; b=CX/lLS0iYkWAmX4jyiAodn3OxhjWMPnzHRL/DD9CDEKLpQfVRcJNqBOetkr+OfahFjMYPs FyxoJCjAdO22r+VlHScNh8KigzNCn2/XGHl1P3PPISX5iJ4vxFcad00hk7ncpzVvcltveZ 3me6k/3jRBYqRXyrHilAsGjic58Y3QrmwDkR1vZYtd8P+gXu2UH+Qu7ZL2gPr52SAAeTO8 aUfWK+DTZvOv/d1UJ9dZqB2MrH3CxbpG+wgHwFngnUY+qCDWx0ml6oGodNBNLM+Ge2ttis S8X/lvZbb46UmsFSPQQDT6JMbcZpBQ+0ugdoiyAPnAZagGT8t173L0nD3KhUvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675004394; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pQel71Bl91pMPJrTpGnQ5QR6IB2g/3YLYUzCCwuZb2Q=; b=ul4luNtdCYK56y7YCG3+rtIZrm8TNCM1oDpjS4vl8aCaaH1l9tx18+ypWxvR5VGRcurhoX 9cPxRmG7ro7oQz3PKxo4+b73GkuonbFCp4XR5CpNkUYgHyYqWNgIc8FEKsw9QzkZ3DfBGi CqkrMEKcFptXYmC8EtSW7gL+U4Ru1tclE+dnIxPJ6o+bSxKAzfd5BBqBtklCOjYCS/KUn5 A/1/9iMlDa3+1Pg3Rgd7hCGWYGRiwjtAHM0W0mP2FlA9uKOJg4yVZ0Z3IZocU3Aq11rEm7 FVKFjBXAq+THnMtWbC7gCT4ezDIc4XMpaCllor3wxdUiHK7FmhUPBeEMrwLhhQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1675004394; a=rsa-sha256; cv=none; b=v96n7OP1YDBozVVajmhgCkE7N0mGRvhuChd1l5+B+S8EJP4Y9o1Heka5Q/oX+ciDVCgLIH sYFDxIvgkrd3BuYj0jWpR3btZ/ITj4vyz3/rPW1EeiinGJm8kuMrq3TZhvfUBbIj5qa2LO 8IwzOZ3hI28CLFS0fuXDcqL1Xc+6wIr6zfRa34eF/fe617MJL669dvvhOCt+gNfeU+l3L2 fgVDHQOLE5uvNxzti+X5SlobnPM/jBq2ftXbjvjb8b7kbSFAhG+xc5cHR/iK3IEDfKZ++K e2wUeobm4MnlczO6lWH7nTcpdRGCOtB/Rie4kzWPYUJ/VWFBNA9Bp+t3rzy7ow== 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 4P4ZGx6g7YzXdh; Sun, 29 Jan 2023 14:59:53 +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 30TExrFb050380; Sun, 29 Jan 2023 14:59:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30TExrKo050379; Sun, 29 Jan 2023 14:59:53 GMT (envelope-from git) Date: Sun, 29 Jan 2023 14:59:53 GMT Message-Id: <202301291459.30TExrKo050379@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 0600af1ff160 - main - Make SMCCC usable by device drivers List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0600af1ff16041f15633b2263a8ad9525eecd2f1 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=0600af1ff16041f15633b2263a8ad9525eecd2f1 commit 0600af1ff16041f15633b2263a8ad9525eecd2f1 Author: Andrew Turner AuthorDate: 2022-06-04 11:13:51 +0000 Commit: Andrew Turner CommitDate: 2023-01-29 14:58:24 +0000 Make SMCCC usable by device drivers To allow device drivers to call into SMCCC we need to initialise it earlier. As it depends on PSCI, and that is detected via ACPI or FDT move the call to smccc_init to the PSCI driver. Add a function for drivers to read the smccc version, or 0 if smccc is not present. --- sys/dev/psci/psci.c | 2 ++ sys/dev/psci/smccc.c | 11 ++++++++--- sys/dev/psci/smccc.h | 2 ++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/sys/dev/psci/psci.c b/sys/dev/psci/psci.c index d7c89bf058f8..41a48e36dec9 100644 --- a/sys/dev/psci/psci.c +++ b/sys/dev/psci/psci.c @@ -344,6 +344,8 @@ psci_attach(device_t dev, psci_initfn_t psci_init, int default_version) if (psci_init(dev, default_version)) return (ENXIO); + smccc_init(); + psci_softc = sc; return (0); diff --git a/sys/dev/psci/smccc.c b/sys/dev/psci/smccc.c index 54673d431d4c..64732d58e2d4 100644 --- a/sys/dev/psci/smccc.c +++ b/sys/dev/psci/smccc.c @@ -47,8 +47,8 @@ __FBSDID("$FreeBSD$"); /* Assume 1.0 until we detect a later version */ static uint32_t smccc_version = SMCCC_VERSION_1_0; -static void -smccc_init(void *dummy) +void +smccc_init(void) { int32_t features; uint32_t ret; @@ -67,7 +67,12 @@ smccc_init(void *dummy) SMCCC_VERSION_MINOR(smccc_version)); } } -SYSINIT(smccc_start, SI_SUB_CONFIGURE, SI_ORDER_ANY, smccc_init, NULL); + +uint32_t +smccc_get_version(void) +{ + return (smccc_version); +} int32_t smccc_arch_features(uint32_t smccc_func_id) diff --git a/sys/dev/psci/smccc.h b/sys/dev/psci/smccc.h index 4dc4c089df65..58b976029a3c 100644 --- a/sys/dev/psci/smccc.h +++ b/sys/dev/psci/smccc.h @@ -82,6 +82,8 @@ struct arm_smccc_res { #define SMCCC_RET_NOT_SUPPORTED -1 #define SMCCC_RET_NOT_REQUIRED -2 +void smccc_init(void); +uint32_t smccc_get_version(void); int32_t smccc_arch_features(uint32_t); int smccc_arch_workaround_1(void); int smccc_arch_workaround_2(int);