|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V2 5/6] iommu/arm: Introduce iommu_add_dt_device API
On 13.08.19 16:49, Julien Grall wrote: Hi Oleksandr, Hi Julien On 8/2/19 5:39 PM, Oleksandr Tyshchenko wrote:From: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx> This patch adds new iommu_add_dt_device API for adding DT device to the IOMMU using generic IOMMU DT binding [1] and previously added "iommu_fwspec" support. New function parses the DT binding, prepares "dev->iommu_fwspec" with correct information and calls the IOMMU driver using "add_device" callback to register new DT device.The IOMMU driver's responsibility is to check whether "dev->iommu_fwspec"is initialized and mark that device as protected. The additional benefit here is to avoid to go through the whole DT multiple times in IOMMU driver trying to locate master devices which belong to each IOMMU device being probed. The upcoming IPMMU driver will have "add_device" callback implemented. I hope, this patch won't break SMMU driver's functionality, which doesn't have this callback implemented.The last two sentence does not really belong to the commit message. So I think they should go after ---.Anyway, the only concern for the SMMU is to not break the old bindings. New bindings are not supported, so it does not matter whether they are broken or not. Once this series is merged, we can have a look how new bindings for the SMMU can be supported. Sounds reasonable. [1] https://www.kernel.org/doc/Documentation/devicetree/bindings/iommu/iommu.txtSigned-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx> --- xen/arch/arm/domain_build.c | 12 ++++++++++xen/drivers/passthrough/arm/iommu.c | 45 +++++++++++++++++++++++++++++++++++++xen/include/asm-arm/iommu.h | 3 +++ 3 files changed, 60 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index d983677..d67f7d4 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c@@ -1241,6 +1241,18 @@ static int __init handle_device(struct domain *d, struct dt_device_node *dev,u64 addr, size; bool need_mapping = !dt_device_for_passthrough(dev); + if ( dt_parse_phandle(dev, "iommus", 0) )I don't particularly like this check. dt_parse_phandle is non-trivial to execute.TBH, what we should do is trying to call iommu_add_dt_device if IOMMU is enabled. We can then return a recognizable value to tell the device is not protected. Well. Don't really mind.
Agree. !ops->add_device means that you will not be able to add any device using the new bindings. IOW, the device will be unusable later one as most likely the IOMMU was configured to deny any transaction. Therefore, this should return an error. The initial reason *was* to not break SMMU which hasn't had add_device callback implemented yet. But, I got your point regarding SMMU above (the only concern for the SMMU is to not break the old bindings), so agree here. + + if ( dev_iommu_fwspec_get(dev) ) + return -EEXIST; ++ /* According to the Documentation/devicetree/bindings/iommu/iommu.txt */This file does not exist in Xen, so Linux should at least be mentioned in the comment. Will do.
Hmm, I was thinking how to end up with only one callback re-used (add_device), really didn't want to add a new one (of_xlate). But, I didn't take into the account that this stuff is a really driver-depended. So, likely yes, we need to provide of_xlate callback. May I ask some questions to clarify:1. Do you want me to introduce of_xlate callback in a separate patch (under CONFIG_ARM?)? 2. Can we avoid introducing new API for that callback? iommu_add_dt_device will be able to call it directly. -- Regards, Oleksandr Tyshchenko _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |