Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Oct 2024 17:25:10 GMT
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: b9cd72b06d79 - main - sys: Use the new arm_smccc_invoke macros
Message-ID:  <202410151725.49FHPArt027855@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=b9cd72b06d795a8c7b39df1f520e866ad7f11aa8

commit b9cd72b06d795a8c7b39df1f520e866ad7f11aa8
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2024-10-14 14:33:51 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2024-10-15 17:24:41 +0000

    sys: Use the new arm_smccc_invoke macros
    
    Simplify the calls into the SMCCC firmware with the new
    arm_smccc_invoke* macros.
    
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D46987
---
 sys/arm/qualcomm/qcom_scm_legacy.c            |  4 ++--
 sys/arm64/nvidia/tegra210/tegra210_pmc.c      |  4 ++--
 sys/dev/firmware/arm/scmi_smc.c               |  2 +-
 sys/dev/firmware/xilinx/zynqmp_firmware.c     |  2 +-
 sys/dev/hyperv/vmbus/aarch64/hyperv_machdep.c |  7 +++----
 sys/dev/pci/pci_host_generic_den0115.c        | 14 ++++++--------
 sys/dev/psci/smccc.c                          |  6 +++---
 7 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/sys/arm/qualcomm/qcom_scm_legacy.c b/sys/arm/qualcomm/qcom_scm_legacy.c
index f1566264f00c..b614843b1ce8 100644
--- a/sys/arm/qualcomm/qcom_scm_legacy.c
+++ b/sys/arm/qualcomm/qcom_scm_legacy.c
@@ -73,8 +73,8 @@ qcom_scm_legacy_mp_set_cold_boot_address(vm_offset_t mp_entry_func)
 	    | QCOM_SCM_FLAG_COLDBOOT_CPU3;
 	uint32_t scm_arg2 = pmap_kextract((vm_offset_t)mp_entry_func);
 
-	ret = arm_smccc_smc(scm_arg0, (uint32_t) &context_id, scm_arg1,
-	    scm_arg2, 0, 0, 0, 0, &res);
+	ret = arm_smccc_invoke_smc(scm_arg0, (uint32_t) &context_id, scm_arg1,
+	    scm_arg2, &res);
 
 	if (ret == 0 && res.a0 == 0)
 		return (0);
diff --git a/sys/arm64/nvidia/tegra210/tegra210_pmc.c b/sys/arm64/nvidia/tegra210/tegra210_pmc.c
index 0f0343a317ce..b8b95ca32c40 100644
--- a/sys/arm64/nvidia/tegra210/tegra210_pmc.c
+++ b/sys/arm64/nvidia/tegra210/tegra210_pmc.c
@@ -190,7 +190,7 @@ WR4(struct tegra210_pmc_softc *sc, bus_size_t r, uint32_t v)
 	struct arm_smccc_res res;
 
 	if (sc->secure_access) {
-		arm_smccc_smc(PMC_SMC, PMC_SMC_WRITE, r, v, 0, 0, 0, 0, &res);
+		arm_smccc_invoke_smc(PMC_SMC, PMC_SMC_WRITE, r, v, &res);
 		if (res.a0 != 0)
 			device_printf(sc->dev," PMC SMC write failed: %lu\n",
 			    res.a0);
@@ -205,7 +205,7 @@ RD4(struct tegra210_pmc_softc *sc, bus_size_t r)
 	struct arm_smccc_res res;
 
 	if (sc->secure_access) {
-		arm_smccc_smc(PMC_SMC, PMC_SMC_READ, r, 0, 0, 0, 0, 0, &res);
+		arm_smccc_invoke_smc(PMC_SMC, PMC_SMC_READ, r, &res);
 		if (res.a0 != 0)
 			device_printf(sc->dev," PMC SMC write failed: %lu\n",
 			    res.a0);
diff --git a/sys/dev/firmware/arm/scmi_smc.c b/sys/dev/firmware/arm/scmi_smc.c
index a1621ccffa86..9f0d899233fa 100644
--- a/sys/dev/firmware/arm/scmi_smc.c
+++ b/sys/dev/firmware/arm/scmi_smc.c
@@ -106,7 +106,7 @@ scmi_smc_xfer_msg(device_t dev, struct scmi_msg *msg)
 	if (ret != 0)
 		return (ret);
 
-	arm_smccc_smc(sc->smc_id, 0, 0, 0, 0, 0, 0, 0, NULL);
+	arm_smccc_invoke_smc(sc->smc_id, NULL);
 
 	return (0);
 }
diff --git a/sys/dev/firmware/xilinx/zynqmp_firmware.c b/sys/dev/firmware/xilinx/zynqmp_firmware.c
index 8ee6c9a21377..a6b55a3528a1 100644
--- a/sys/dev/firmware/xilinx/zynqmp_firmware.c
+++ b/sys/dev/firmware/xilinx/zynqmp_firmware.c
@@ -105,7 +105,7 @@ zynqmp_call_smc(uint32_t id, uint32_t a0, uint32_t a1, uint32_t a2, uint32_t a3,
 	args[0] = id | PM_SIP_SVC;
 	args[1] = ((uint64_t)a1 << 32) | a0;
 	args[2] = ((uint64_t)a3 << 32) | a2;
-	arm_smccc_smc(args[0], args[1], args[2], 0, 0, 0, 0, 0, &res);
+	arm_smccc_invoke_smc(args[0], args[1], args[2], &res);
 	if (payload != NULL) {
 		payload[0] = res.a0 & 0xFFFFFFFF;
 		payload[1] = res.a0 >> 32;
diff --git a/sys/dev/hyperv/vmbus/aarch64/hyperv_machdep.c b/sys/dev/hyperv/vmbus/aarch64/hyperv_machdep.c
index dbb6aac2de31..e808cc081535 100644
--- a/sys/dev/hyperv/vmbus/aarch64/hyperv_machdep.c
+++ b/sys/dev/hyperv/vmbus/aarch64/hyperv_machdep.c
@@ -50,10 +50,10 @@
 void
 arm_hv_set_vreg(u32 msr, u64 value)
 {
-	arm_smccc_hvc(HV_FUNC_ID,
+	arm_smccc_invoke_hvc(HV_FUNC_ID,
 	    HVCALL_SET_VP_REGISTERS | HV_HYPERCALL_FAST_BIT |
 		HV_HYPERCALL_REP_COMP_1,
-	    HV_PARTITION_ID_SELF, HV_VP_INDEX_SELF, msr, 0, value, 0, NULL);
+	    HV_PARTITION_ID_SELF, HV_VP_INDEX_SELF, msr, 0, value, NULL);
 }
 
 void
@@ -95,8 +95,7 @@ hypercall_md(volatile void *hc_addr, uint64_t in_val, uint64_t in_paddr,
 {
 	struct arm_smccc_res res;
 
-	arm_smccc_hvc(HV_FUNC_ID, in_val, in_paddr, out_paddr, 0, 0, 0, 0,
-	    &res);
+	arm_smccc_invoke_hvc(HV_FUNC_ID, in_val, in_paddr, out_paddr, &res);
 
 	return (res.a0);
 }
diff --git a/sys/dev/pci/pci_host_generic_den0115.c b/sys/dev/pci/pci_host_generic_den0115.c
index cfef34824965..a14fe84039fe 100644
--- a/sys/dev/pci/pci_host_generic_den0115.c
+++ b/sys/dev/pci/pci_host_generic_den0115.c
@@ -124,8 +124,7 @@ pci_host_acpi_smccc_has_feature(uint32_t pci_func_id)
 {
 	struct arm_smccc_res result;
 
-	if (psci_callfn(SMCCC_PCI_FEATURES, pci_func_id, 0, 0, 0, 0, 0, 0,
-	    &result) < 0) {
+	if (arm_smccc_invoke(SMCCC_PCI_FEATURES, pci_func_id, &result) < 0) {
 		return (false);
 	}
 
@@ -137,7 +136,7 @@ pci_host_acpi_smccc_pci_version(uint32_t *versionp)
 {
 	struct arm_smccc_res result;
 
-	if (psci_callfn(SMCCC_PCI_VERSION, 0, 0, 0, 0, 0, 0, 0, &result) < 0) {
+	if (arm_smccc_invoke(SMCCC_PCI_VERSION, &result) < 0) {
 		return (false);
 	}
 
@@ -185,8 +184,8 @@ pci_host_acpi_smccc_attach(device_t dev)
 		return (error);
 
 	if (pci_host_acpi_smccc_has_feature(SMCCC_PCI_GET_SEG_INFO) &&
-	    psci_callfn(SMCCC_PCI_GET_SEG_INFO, sc->base.ecam, 0, 0, 0, 0, 0,
-	     0, &result) == SMCCC_RET_SUCCESS) {
+	    arm_smccc_invoke(SMCCC_PCI_GET_SEG_INFO, sc->base.ecam,
+	    &result) == SMCCC_RET_SUCCESS) {
 		start = SMCCC_PCI_SEG_START(result.a1);
 		end = SMCCC_PCI_SEG_END(result.a1);
 
@@ -215,8 +214,7 @@ pci_host_acpi_smccc_read_config(device_t dev, u_int bus, u_int slot,
 		return (~0U);
 
 	addr = (sc->base.ecam << 16) | (bus << 8) | (slot << 3) | (func << 0);
-	if (psci_callfn(SMCCC_PCI_READ, addr, reg, bytes, 0, 0, 0, 0,
-	    &result) < 0) {
+	if (arm_smccc_invoke(SMCCC_PCI_READ, addr, reg, bytes, &result) < 0) {
 		return (~0U);
 	}
 
@@ -240,7 +238,7 @@ pci_host_acpi_smccc_write_config(device_t dev, u_int bus, u_int slot,
 		return;
 
 	addr = (sc->base.ecam << 16) | (bus << 8) | (slot << 3) | (func << 0);
-	psci_callfn(SMCCC_PCI_WRITE, addr, reg, bytes, val, 0, 0, 0, &result);
+	arm_smccc_invoke(SMCCC_PCI_WRITE, addr, reg, bytes, val, &result);
 }
 
 static device_method_t generic_pcie_acpi_smccc_methods[] = {
diff --git a/sys/dev/psci/smccc.c b/sys/dev/psci/smccc.c
index 08ad6d84fc3c..21a6bd54e650 100644
--- a/sys/dev/psci/smccc.c
+++ b/sys/dev/psci/smccc.c
@@ -81,7 +81,7 @@ smccc_arch_features(uint32_t smccc_func_id)
 	if (smccc_version == SMCCC_VERSION_1_0)
 		return (PSCI_RETVAL_NOT_SUPPORTED);
 
-	return (psci_call(SMCCC_ARCH_FEATURES, smccc_func_id, 0, 0));
+	return (arm_smccc_invoke(SMCCC_ARCH_FEATURES, smccc_func_id, NULL));
 }
 
 /*
@@ -95,7 +95,7 @@ smccc_arch_workaround_1(void)
 	MPASS(smccc_version != 0);
 	KASSERT(smccc_version != SMCCC_VERSION_1_0,
 	    ("SMCCC arch workaround 1 called with an invalid SMCCC interface"));
-	return (psci_call(SMCCC_ARCH_WORKAROUND_1, 0, 0, 0));
+	return (arm_smccc_invoke(SMCCC_ARCH_WORKAROUND_1, NULL));
 }
 
 int
@@ -105,5 +105,5 @@ smccc_arch_workaround_2(int enable)
 	MPASS(smccc_version != 0);
 	KASSERT(smccc_version != SMCCC_VERSION_1_0,
 	    ("SMCCC arch workaround 2 called with an invalid SMCCC interface"));
-	return (psci_call(SMCCC_ARCH_WORKAROUND_2, enable, 0, 0));
+	return (arm_smccc_invoke(SMCCC_ARCH_WORKAROUND_2, enable, NULL));
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202410151725.49FHPArt027855>