lkml.org 
[lkml]   [2020]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [RFC PATCH 2/3] firmware: Add support for PSA FF-A transport for VM partitions
    On Mon, Jun 1, 2020 at 2:45 AM Sudeep Holla <sudeep.holla@arm.com> wrote:
    >
    > Initial support for PSA FF-A interface providing APIs for non-secure VM
    > partitions.
    >
    ...
    > diff --git a/drivers/firmware/arm_psa_ffa/Kconfig b/drivers/firmware/arm_psa_ffa/Kconfig
    > new file mode 100644
    > index 000000000000..ba699ec68ec4
    > --- /dev/null
    > +++ b/drivers/firmware/arm_psa_ffa/Kconfig
    > @@ -0,0 +1,15 @@
    > +# SPDX-License-Identifier: GPL-2.0-only
    > +config ARM_PSA_FFA_TRANSPORT
    > + tristate "Arm Platform Security Architecture Firmware Framework for Armv8-A"
    > + depends on ARM64 && HAVE_ARM_SMCCC_DISCOVERY

    Most of this driver should be usable on any platform, so it would be
    better to only depend on ARM64 in the component that has the arm64
    specific implementation of your low level conduit.

    ...
    > diff --git a/drivers/firmware/arm_psa_ffa/driver.c b/drivers/firmware/arm_psa_ffa/driver.c
    > new file mode 100644
    > index 000000000000..700bd5850746
    > --- /dev/null
    > +++ b/drivers/firmware/arm_psa_ffa/driver.c
    ...
    > +
    > +typedef struct arm_smccc_res
    > +(arm_psa_ffa_fn)(unsigned long, unsigned long, unsigned long, unsigned long,
    > + unsigned long, unsigned long, unsigned long, unsigned long);
    > +static arm_psa_ffa_fn *invoke_arm_psa_ffa_fn;
    > +
    ...
    > +struct arm_smccc_res
    > +__arm_psa_ffa_fn_smc(unsigned long function_id,unsigned long arg0,
    ...
    > +struct arm_smccc_res
    > +__arm_psa_ffa_fn_hvc(unsigned long function_id,unsigned long arg0,

    Can these two functions move out of this file so this driver only
    depends on a function matching the arm_psa_ffa_fn type?

    ...
    > +static int psa_ffa_probe(struct platform_device *pdev)
    > +{
    > + int ret;
    > + enum arm_smccc_conduit conduit;
    > +
    > + if (arm_smccc_get_version() < ARM_SMCCC_VERSION_1_2)
    > + return 0;
    > +
    > + conduit = arm_smccc_1_1_get_conduit();

    If you make this device a child device of the conduit, then you don't
    need this here. Other conduits can be added to for instance support
    other architectures without adding entries to this enum and modifying
    this driver.

    --
    Arve Hjønnevåg

    \
     
     \ /
      Last update: 2020-07-10 00:17    [W:8.268 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site