The branch stable/14 has been updated by andrew:

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

commit 78b308e5a4a15f1dbf52c289b1f1ad4f4b980184
Author:     Andrew Turner <and...@freebsd.org>
AuthorDate: 2024-10-14 14:33:51 +0000
Commit:     Andrew Turner <and...@freebsd.org>
CommitDate: 2024-10-21 15:03:27 +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
    
    (cherry picked from commit b9cd72b06d795a8c7b39df1f520e866ad7f11aa8)
---
 sys/arm/qualcomm/qcom_scm_legacy.c            |  4 ++--
 sys/arm64/nvidia/tegra210/tegra210_pmc.c      |  4 ++--
 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 +++---
 6 files changed, 17 insertions(+), 20 deletions(-)

diff --git a/sys/arm/qualcomm/qcom_scm_legacy.c 
b/sys/arm/qualcomm/qcom_scm_legacy.c
index 24c62c8181c3..e1c375c922af 100644
--- a/sys/arm/qualcomm/qcom_scm_legacy.c
+++ b/sys/arm/qualcomm/qcom_scm_legacy.c
@@ -74,8 +74,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 5ae5c0e8092c..85c01d7ce7d6 100644
--- a/sys/arm64/nvidia/tegra210/tegra210_pmc.c
+++ b/sys/arm64/nvidia/tegra210/tegra210_pmc.c
@@ -191,7 +191,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);
@@ -206,7 +206,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/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 5c5e140abab1..e8a367bed7d6 100644
--- a/sys/dev/psci/smccc.c
+++ b/sys/dev/psci/smccc.c
@@ -79,7 +79,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));
 }
 
 /*
@@ -92,7 +92,7 @@ smccc_arch_workaround_1(void)
 
        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
@@ -101,5 +101,5 @@ smccc_arch_workaround_2(int enable)
 
        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));
 }

Reply via email to