[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC 6/6] acpi:arm64: Add support for parsing IORT table
On 9/12/2017 5:25 AM, Julien Grall wrote: > Hi Sameer, > > On 28/08/17 23:21, Goel, Sameer wrote: >> On 6/12/2017 7:24 AM, Julien Grall wrote: >>>> static int arm_smmu_iort_xlate(struct device *dev, u32 streamid, >>>> struct fwnode_handle *fwnode, >>>> const struct iommu_ops *ops) >>>> @@ -523,29 +563,24 @@ static int arm_smmu_iort_xlate(struct device *dev, >>>> u32 streamid, >>>> return ret; >>>> } >>>> >>>> -static const struct iommu_ops *iort_iommu_xlate(struct device *dev, >>>> - struct acpi_iort_node *node, >>>> - u32 streamid) >>>> +static int iort_iommu_xlate(struct device *dev, struct acpi_iort_node >>>> *node, >>>> + u32 streamid) >>>> { >>>> - const struct iommu_ops *ops = NULL; >>>> int ret = -ENODEV; >>>> struct fwnode_handle *iort_fwnode; >>>> >>>> if (node) { >>>> iort_fwnode = iort_get_fwnode(node); >>>> if (!iort_fwnode) >>>> - return NULL; >>>> - >>>> - ops = iommu_ops_from_fwnode(iort_fwnode); >>>> - if (!ops) >>>> - return NULL; >>>> + return ret; >>>> >>>> - ret = arm_smmu_iort_xlate(dev, streamid, iort_fwnode, ops); >>>> + ret = arm_smmu_iort_xlate(dev, streamid, iort_fwnode, NULL); >>> >>> Why don't you get the IOMMU ops here? This would avoid unecessary change. >> From the linux definition it seems that there will be eventually used to >> override the ops >> set by the bus. I did not find a use for this here, so removed it to >> simplify code. I can >> add these back, but see this as dead code. > > You will always have dead code if you import code as it is from Linux. This > is the price to pay to help rebase the code in the future. > > In that specific case, I think return the ops is the right thing to do. > Potentially it will allow us to support different IOMMU at the same time. > Agreed. > [...] > >>>> #define IORT_IRQ_MASK(irq) (irq & 0xffffffffULL) >>>> #define IORT_IRQ_TRIGGER_MASK(irq) ((irq >> 32) & 0xffffffffULL) >>>> >>>> int iort_register_domain_token(int trans_id, struct fwnode_handle >>>> *fw_node); >>>> void iort_deregister_domain_token(int trans_id); >>>> struct fwnode_handle *iort_find_domain_token(int trans_id); >>>> -#ifdef CONFIG_ACPI_IORT >>>> +#endif >>>> + >>>> +#ifdef CONFIG_ARM_64 >>> >>> Why #ifdef CONFIG_ARM_64? >> Was trying to keep the impact low for this RFC iteration (My use-case is >> arm64 only). Looking for the right recommendation? > > IORT is not specific to ARM64. Even though ACPI is only supported for ARM64 > on Xen today, we try to keep the code as generic as possible. > > In that case, you could turn CONFIG_ACPI_IORT on in the Kconfig when ACPI is > enabled. Agreed. I will add the new config in the next patch set. > > [...] > >>> >>> [...] >>> >>>> diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h >>>> index 995a85a..3785fae 100644 >>>> --- a/xen/include/xen/lib.h >>>> +++ b/xen/include/xen/lib.h >>>> @@ -9,7 +9,12 @@ >>>> #include <asm/bug.h> >>>> >>>> #define BUG_ON(p) do { if (unlikely(p)) BUG(); } while (0) >>>> -#define WARN_ON(p) do { if (unlikely(p)) WARN(); } while (0) >>>> +#define WARN_ON(p) ({ \ >>>> + int __ret_warn_on = !!(p); \ >>>> + if (unlikely(__ret_warn_on)) \ >>>> + WARN(); \ >>>> + unlikely(__ret_warn_on); \ >>>> +}) >>> >>> hmmmm. Why this change? >> Was getting a compilation error when I was using WARN_ON as a conditional >> in an if statement regarding the return value. So removed the loop. This >> looks similar to Linux now. > > This should belong to a separate patch with a commit message explaining why > the change. Agreed. Since this is more of a Linux compat function, I do not want to change the system-wide behavior. I will move this in the IORT code. > > Cheers, > -- Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |