From: Julien Grall <julien@xen.org>
To: Stefano Stabellini <sstabellini@kernel.org>,
xen-devel@lists.xenproject.org
Cc: Bertrand.Marquis@arm.com, Volodymyr_Babchuk@epam.com,
rahul.singh@arm.com, brian.woods@xilinx.com,
Stefano Stabellini <stefano.stabellini@xilinx.com>
Subject: Re: [PATCH v5 2/4] xen: do not return -EEXIST if iommu_add_dt_device is called twice
Date: Fri, 23 Jul 2021 10:13:13 +0100 [thread overview]
Message-ID: <acd7e7b6-7c2b-24d5-da80-042396aee5e8@xen.org> (raw)
In-Reply-To: <20210722233642.22515-2-sstabellini@kernel.org>
Hi Stefano,
On 23/07/2021 00:36, Stefano Stabellini wrote:
> If both legacy IOMMU bindings and generic bindings are present,
> iommu_add_dt_device can be called twice. Do not return error in that
> case, that way there is no need to check for -EEXIST at the call sites.
> Remove the one existing -EEXIT check, now unneeded.
The commit message implies that we already support both legacy and
generic bindings. However, this is not yet implemented.
So how about:
"
iommu_add_dt_device() will returns -EEXIST if the device was already
registered.
At the moment, this can only happen if the device was already assigned
to a domain (either dom0 at boot or via XEN_DOMCTL_assign_device).
In a follow-up patch, we will convert the SMMU driver to use the FW
spec. When the legacy bindings are used, all the devices will be
registered at probe. Therefore, iommu_add_dt_device() will always
returns -EEXIST.
Currently, one caller (XEN_DOMCTL_assign_device) will check the return
and ignore -EEXIST. All the other will fail because it was technically a
programming error.
However, there is no harm to call iommu_add_dt_device() twice, so we can
simply return 0.
With that in place the caller doesn't need to check -EEXIST anymore, so
remove the check.
"
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
> ---
> Changes in v5:
> - new patch
> ---
> xen/drivers/passthrough/device_tree.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/xen/drivers/passthrough/device_tree.c b/xen/drivers/passthrough/device_tree.c
> index 999b831d90..32526ecabb 100644
> --- a/xen/drivers/passthrough/device_tree.c
> +++ b/xen/drivers/passthrough/device_tree.c
> @@ -140,8 +140,13 @@ int iommu_add_dt_device(struct dt_device_node *np)
> if ( !ops )
> return -EINVAL;
>
> + /*
> + * Some Device Trees may expose both legacy SMMU and generic
> + * IOMMU bindings together. If both are present, the device
> + * can be already added.
Wouldn't this also happen when there is just generic bindings? If so,
shouldn't this patch be first in the series to avoid breaking bisection?
> + */
My point on the previous version is this is not the only reasons why
dev_iommu_fwspec_get(). So either we want to write all the reasons
(AFAICT, there is only two) or we want to write a generic message.
> if ( dev_iommu_fwspec_get(dev) )
> - return -EEXIST;
> + return 0;
>
> /*
> * According to the Documentation/devicetree/bindings/iommu/iommu.txt
> @@ -254,7 +259,7 @@ int iommu_do_dt_domctl(struct xen_domctl *domctl, struct domain *d,
> * already added to the IOMMU (positive result). Such happens after
> * re-creating guest domain.
> */
This comment on top is now stale.
> - if ( ret < 0 && ret != -EEXIST )
> + if ( ret < 0 )
> {
> printk(XENLOG_G_ERR "Failed to add %s to the IOMMU\n",
> dt_node_full_name(dev));
>
Cheers,
--
Julien Grall
next prev parent reply other threads:[~2021-07-23 9:13 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-22 23:35 [PATCH v5 0/4] Generic SMMU Bindings Stefano Stabellini
2021-07-22 23:36 ` [PATCH v5 1/4] arm,smmu: switch to using iommu_fwspec functions Stefano Stabellini
2021-07-22 23:36 ` [PATCH v5 2/4] xen: do not return -EEXIST if iommu_add_dt_device is called twice Stefano Stabellini
2021-07-23 6:31 ` Jan Beulich
2021-07-23 9:28 ` Julien Grall
2021-07-23 13:02 ` Jan Beulich
2021-07-26 15:45 ` Julien Grall
2021-08-03 6:57 ` Jan Beulich
2021-08-03 9:31 ` Julien Grall
2021-07-23 9:13 ` Julien Grall [this message]
2021-07-23 20:16 ` Stefano Stabellini
2021-07-26 15:53 ` Julien Grall
2021-07-30 21:57 ` Stefano Stabellini
2021-08-02 15:05 ` Julien Grall
2021-08-03 0:18 ` Stefano Stabellini
2021-07-22 23:36 ` [PATCH v5 3/4] arm,smmu: restructure code in preparation to new bindings support Stefano Stabellini
2021-07-22 23:36 ` [PATCH v5 4/4] arm,smmu: add support for generic DT bindings. Implement add_device and dt_xlate Stefano Stabellini
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=acd7e7b6-7c2b-24d5-da80-042396aee5e8@xen.org \
--to=julien@xen.org \
--cc=Bertrand.Marquis@arm.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=brian.woods@xilinx.com \
--cc=rahul.singh@arm.com \
--cc=sstabellini@kernel.org \
--cc=stefano.stabellini@xilinx.com \
--cc=xen-devel@lists.xenproject.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.