Re: [PATCH v2 2/3] firmware: Keem Bay: Add support for Arm Trusted Firmware Service call

From: Michal Simek
Date: Tue Oct 06 2020 - 08:08:53 EST


Hi,

On 02. 10. 20 16:51, Sudeep Holla wrote:
> Hi Michal,
>
> On Fri, Oct 02, 2020 at 03:53:33PM +0200, Michal Simek wrote:
>> Hi Sudeep,
>>
>> On 02. 10. 20 12:58, Sudeep Holla wrote:
>>> Hi Michal,
>>>
>>> On Fri, Oct 02, 2020 at 10:23:02AM +0200, Michal Simek wrote:
>>>> Hi Sudeep,
>>>>
>>>> On 01. 10. 20 17:35, Sudeep Holla wrote:
>>>
>>> [...]
>>>
>>>>>
>>>>> What are the other uses of this KEEMBAY_SIP_* ?
>>>>> For now I tend to move this to the driver making use of it using
>>>>> arm_smccc_1_1_invoke directly if possible. I don't see the need for this
>>>>> to be separate driver. But do let us know the features implemented in the
>>>>> firmware. If it is not v1.1+, reasons for not upgrading as you need v1.1
>>>>> for some CPU errata implementation.
>>>>
>>>> This driver has been created based on my request to move it out the mmc
>>>> driver. It looks quite hacky to have arm_smccc_res and call
>>>> arm_smccc_smc() also with some IDs where it is visible that the part of
>>>> ID is just based on any spec.
>>>
>>> OK, driver is fine but no dt-bindings as it is discoverable. It can
>>> also be just a wrapper library instead as it needs no explicit
>>> initialisation like drivers to setup.
>>
>> I am fine with it. Do we have any example which we can point him to?
>>
>
> You seem to have figured that out already with SOC_ID example.
> That was quick I must say 😄.

I would expect that instead of of

if (arm_smccc_get_version() < ARM_SMCCC_VERSION_1_2)
return 0;

if (arm_smccc_1_1_get_conduit() == SMCCC_CONDUIT_NONE) {
pr_err("%s: invalid SMCCC conduit\n", __func__);
return -EOPNOTSUPP;
}

arm_smccc_1_1_invoke(ARM_SMCCC_ARCH_FEATURES_FUNC_ID,
ARM_SMCCC_ARCH_SOC_ID, &res);


you will simply call

arm_smccc_1_2_invoke(ARM_SMCCC_ARCH_FEATURES_FUNC_ID,
ARM_SMCCC_ARCH_SOC_ID, &res);
...(check ret)

arm_smccc_1_2_invoke(ARM_SMCCC_ARCH_SOC_ID, 0, &res);
...(check ret)


where it is clear from 1_2 that it has to be at least 1.2 version.

<snip>

>
>>
>> BTW: I see you have added soc id reading which you are saying is the
>> part of smcc v1.2 but I can't see any implementation in TF-A. Is this
>> spec publicly available?
>>
>
> Spec is out[1], include/linux/arm-smccc.h points to the latest spec.
> TF-A does have implementation as I tested with it and even reported
> bug that I discovered when I tested with my patches that are now merged
> upstream. Are you referring to master of TF-A or last release version ?
> If latter, it had bug and may not be working. I may be wrong though, as
> I am just telling what was told to me couple of months back and things
> might have changed in TF-A land.

I will read it and take a look when I have time.

Thanks,
Michal