From: Sudeep Holla <sudeep.holla@arm.com>
To: Florian Fainelli <f.fainelli@gmail.com>,
Nikunj Kela <quic_nkela@quicinc.com>
Cc: cristian.marussi@arm.com, Sudeep Holla <sudeep.holla@arm.com>,
robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 2/2] firmware: arm_scmi: Augment SMC/HVC to allow optional parameter
Date: Tue, 18 Apr 2023 10:58:46 +0100 [thread overview]
Message-ID: <20230418095846.4lkncoa4beeih2hj@bogus> (raw)
In-Reply-To: <02b34c80-f37e-deee-29cd-de7db902797d@gmail.com>
On Mon, Apr 17, 2023 at 11:01:13AM -0700, Florian Fainelli wrote:
> On 4/17/23 10:44, Nikunj Kela wrote:
> > This patch add support for passing shmem channel address as parameter
> > in smc/hvc call. This patch is useful when multiple scmi instances are
> > using same smc-id and firmware needs to distiguish among the instances.
>
> Typo: distinguish.
>
> It really would have been a lot clearer and made a whole lot more sense to
> encode a VM ID/channel number within some of the SMCCC parameters, possibly
> as part of the function ID itself.
>
Yes I was about to suggest this but then remembered one main reason I have
been given in the past against that:
If the system launches high number of VMs then that means loads of FID
needs to be reserved for SCMI and the hypervisor needs to support it.
Basically it is not scalable which I agree but not sure if such large
number of VMs are used in reality with SCMI. But I agree with the technical
reasoning.
The other reason why I preferred the shmem address itself instead of some
custom VM ID/channel number is that it can easily becomes vendor specific
for no real good reason and then we need to add support for each such
different parameters. Nikunj suggested getting them from DT which I really
don't like if the sole reason is just to identify the channel. We don't
have standard SCMI SMC/HVC but allowing such deviations with params from
DT will just explode with various combinations for silly/no reason.
[...]
> > @@ -137,6 +144,8 @@ static int smc_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
> > if (ret < 0)
> > return ret;
> > + if (of_device_is_compatible(dev->of_node, "arm,scmi-smc-param"))
> > + scmi_info->param = res.start;
>
> There is not even a check that this is going to be part of the kernel's view
> of memory, that seems a bit brittle and possibly a security hole, too. Your
> hypervisor presumably needs to have carved out some amount of memory in
> order for the messages to be written to/read from, and so would the VM
> kernel, so eventually we should have a 'reserved-memory' entry of some sort,
> no?
>
Not disagreeing here. Just checking if my understanding is correct or not.
IIUC, we need reserved-memory if it is part of the memory presented to the
OS right ? You don't need that if it is dedicated memory like part of SRAM
or something similar.
> > /*
> > * If there is an interrupt named "a2p", then the service and
> > * completion of a message is signaled by an interrupt rather than by
> > @@ -156,6 +165,7 @@ static int smc_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
> > }
> > scmi_info->func_id = func_id;
> > + scmi_info->is_smc64 = ARM_SMCCC_IS_64(func_id);
> > scmi_info->cinfo = cinfo;
> > smc_channel_lock_init(scmi_info);
> > cinfo->transport_info = scmi_info;
> > @@ -188,7 +198,20 @@ static int smc_send_message(struct scmi_chan_info *cinfo,
> > shmem_tx_prepare(scmi_info->shmem, xfer, cinfo);
> > - arm_smccc_1_1_invoke(scmi_info->func_id, 0, 0, 0, 0, 0, 0, 0, &res);
> > +#ifdef CONFIG_ARM64
> > + /*
> > + * if SMC32 convention is used, pass 64 bit address in
> > + * two parameters
> > + */
> > + if (!scmi_info->is_smc64)
>
> There is no need for scmi_info to store is_smc64, just check the func_id
> here and declare is_smc64 as a local variable to the function.
>
+1
> Also, another way to approach this would be to encode the parameters region
> in 4KB units such that event on a 32-bit system with LPAE you are guaranteed
> to fit the region into a 32-bit unsigned long. AFAIR virtualization and LPAE
> are indistinguishable on real CPUs?
>
Agree with the idea. But can a single 4kB be used for multiple shmem across
VMs ? IIUC the hypervisor can deal with that, so I prefer it if it is possible
practically.
--
Regards,
Sudeep
next prev parent reply other threads:[~2023-04-18 9:59 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-09 18:19 [PATCH 0/2] Allow parameter in smc/hvc calls Nikunj Kela
2023-04-09 18:19 ` [PATCH 1/2] dt-bindings: firmware: arm,scmi: support parameter passing in smc/hvc Nikunj Kela
2023-04-10 17:20 ` Krzysztof Kozlowski
2023-04-10 17:33 ` Nikunj Kela
2023-04-11 17:17 ` Krzysztof Kozlowski
2023-04-09 18:19 ` [PATCH 2/2] firmware: arm_scmi: Augment SMC/HVC to allow optional parameters Nikunj Kela
2023-04-09 22:22 ` kernel test robot
2023-04-10 18:20 ` [PATCH v2 0/2] Allow parameter in smc/hvc calls Nikunj Kela
2023-04-10 18:20 ` [PATCH v2 1/2] dt-bindings: firmware: arm,scmi: support parameter passing in smc/hvc Nikunj Kela
2023-04-11 12:54 ` Sudeep Holla
2023-04-11 14:46 ` Nikunj Kela
2023-04-11 17:18 ` Krzysztof Kozlowski
2023-04-11 17:25 ` Nikunj Kela
2023-04-10 18:20 ` [PATCH v2 2/2] firmware: arm_scmi: Augment SMC/HVC to allow optional parameters Nikunj Kela
2023-04-11 13:01 ` [PATCH v2 0/2] Allow parameter in smc/hvc calls Sudeep Holla
2023-04-11 14:42 ` Nikunj Kela
2023-04-12 8:37 ` Sudeep Holla
2023-04-12 14:54 ` Nikunj Kela
2023-04-17 17:43 ` [PATCH v3 " Nikunj Kela
2023-04-17 17:44 ` [PATCH v3 1/2] dt-bindings: firmware: arm,scmi: support for parameter in smc/hvc call Nikunj Kela
2023-04-17 17:44 ` [PATCH v3 2/2] firmware: arm_scmi: Augment SMC/HVC to allow optional parameter Nikunj Kela
2023-04-17 18:01 ` Florian Fainelli
2023-04-17 18:17 ` Nikunj Kela
2023-04-18 9:58 ` Sudeep Holla [this message]
2023-04-18 14:20 ` Nikunj Kela
2023-04-18 16:33 ` Florian Fainelli
2023-04-18 17:07 ` Nikunj Kela
2023-04-18 18:56 ` [PATCH v4 0/2] Allow parameter in smc/hvc calls Nikunj Kela
2023-04-18 18:56 ` [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: support for parameter in smc/hvc call Nikunj Kela
2023-04-25 16:50 ` Rob Herring
2023-04-18 18:56 ` [PATCH v4 2/2] firmware: arm_scmi: Augment SMC/HVC to allow optional parameters Nikunj Kela
2023-05-01 14:39 ` Nikunj Kela
2023-05-02 10:46 ` Sudeep Holla
2023-05-02 14:41 ` Nikunj Kela
2023-04-25 14:01 ` [PATCH v4 0/2] Allow parameter in smc/hvc calls Nikunj Kela
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230418095846.4lkncoa4beeih2hj@bogus \
--to=sudeep.holla@arm.com \
--cc=cristian.marussi@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=f.fainelli@gmail.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=quic_nkela@quicinc.com \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).