* [PATCH 1/2] iommu/tegra: smmu: Simplify allocation at once @ 2012-05-14 19:16 Hiroshi DOYU [not found] ` <1337022975-23999-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 7+ messages in thread From: Hiroshi DOYU @ 2012-05-14 19:16 UTC (permalink / raw) To: hdoyu-DDmLM1+adcrQT0dZR+AlfA Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, Grant Likely, Rob Herring, Joerg Roedel, Thierry Reding, Stephen Warren, linux-kernel-u79uwXL29TY76Z2rM5mHXA, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ To simplify the code, alloc necessary data at once. Signed-off-by: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> --- This patch requires: [PATCH 1/2] iommu/tegra: smmu: Add device tree support for SMMU http://marc.info/?l=linux-tegra&m=133663641107327&w=2 Also the above patch requires: [PATCH 1/1] dt: Add general DMA window parser http://marc.info/?l=linux-tegra&m=133671302703840&w=2 --- drivers/iommu/tegra-smmu.c | 29 +++++++++-------------------- 1 files changed, 9 insertions(+), 20 deletions(-) diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c index dbaba77..e4acd44 100644 --- a/drivers/iommu/tegra-smmu.c +++ b/drivers/iommu/tegra-smmu.c @@ -241,8 +241,6 @@ struct smmu_device { spinlock_t lock; char *name; struct device *dev; - int num_as; - struct smmu_as *as; /* Run-time allocated array */ struct page *avp_vector_page; /* dummy page shared by all AS's */ /* @@ -254,6 +252,9 @@ struct smmu_device { unsigned long asid_security; struct device_node *ahb; + + int num_as; + struct smmu_as as[0]; /* Run-time allocated array */ }; static struct smmu_device *smmu_handle; /* unique for a system */ @@ -902,15 +903,18 @@ static int tegra_smmu_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; int i, asids, err = 0; dma_addr_t base; - size_t size; - const void *prop; + size_t bytes, size; if (smmu_handle) return -EIO; BUILD_BUG_ON(PAGE_SHIFT != SMMU_PAGE_SHIFT); - smmu = devm_kzalloc(dev, sizeof(*smmu), GFP_KERNEL); + if (of_property_read_u32(dev->of_node, "nvidia,#asids", &asids)) + return -ENODEV; + + bytes = sizeof(*smmu) + asids * sizeof(*smmu->as); + smmu = devm_kzalloc(dev, bytes, GFP_KERNEL); if (!smmu) { dev_err(dev, "failed to allocate smmu_device\n"); return -ENOMEM; @@ -939,13 +943,6 @@ static int tegra_smmu_probe(struct platform_device *pdev) if (!size) return -EINVAL; - prop = of_get_property(dev->of_node, "nvidia,#asids", NULL); - if (!prop) - return -ENODEV; - asids = be32_to_cpup(prop); - if (!asids) - return -ENODEV; - smmu->ahb = of_parse_phandle(dev->of_node, "nvidia,ahb", 0); if (!smmu->ahb) return -ENODEV; @@ -960,14 +957,6 @@ static int tegra_smmu_probe(struct platform_device *pdev) smmu->translation_enable_2 = ~0; smmu->asid_security = 0; - smmu->as = devm_kzalloc(dev, - sizeof(smmu->as[0]) * smmu->num_as, GFP_KERNEL); - if (!smmu->as) { - dev_err(dev, "failed to allocate smmu_as\n"); - err = -ENOMEM; - goto fail; - } - for (i = 0; i < smmu->num_as; i++) { struct smmu_as *as = &smmu->as[i]; -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
[parent not found: <1337022975-23999-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH 1/2] iommu/tegra: smmu: Simplify allocation at once [not found] ` <1337022975-23999-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2012-05-14 23:34 ` Stephen Warren [not found] ` <4FB19677.4040702-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> 0 siblings, 1 reply; 7+ messages in thread From: Stephen Warren @ 2012-05-14 23:34 UTC (permalink / raw) To: Hiroshi DOYU Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, Grant Likely, Rob Herring, Joerg Roedel, Thierry Reding, linux-kernel-u79uwXL29TY76Z2rM5mHXA, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ On 05/14/2012 01:16 PM, Hiroshi DOYU wrote: > To simplify the code, alloc necessary data at once. > > Signed-off-by: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> > --- > This patch requires: > > [PATCH 1/2] iommu/tegra: smmu: Add device tree support for SMMU > http://marc.info/?l=linux-tegra&m=133663641107327&w=2 > > Also the above patch requires: > > [PATCH 1/1] dt: Add general DMA window parser > http://marc.info/?l=linux-tegra&m=133671302703840&w=2 I know I've been harping on about dependencies, but you typically only need to mention them if the dependencies are not already checked into the branch you expect this patch to be checked into. > - smmu = devm_kzalloc(dev, sizeof(*smmu), GFP_KERNEL); > + if (of_property_read_u32(dev->of_node, "nvidia,#asids", &asids)) > + return -ENODEV; I believe you need to change the asids variable from int to u32 to avoid a warning here. Aside from that, the series, Acked-by: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <4FB19677.4040702-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>]
* Re: [PATCH 1/2] iommu/tegra: smmu: Simplify allocation at once [not found] ` <4FB19677.4040702-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> @ 2012-05-15 8:06 ` Hiroshi Doyu 2012-05-15 8:12 ` [v2 " Hiroshi DOYU 2012-05-15 8:26 ` [PATCH " Hiroshi Doyu 2 siblings, 0 replies; 7+ messages in thread From: Hiroshi Doyu @ 2012-05-15 8:06 UTC (permalink / raw) To: swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org Cc: grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org, joerg.roedel-5C7GfCeVMHo@public.gmane.org, thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote @ Tue, 15 May 2012 01:34:15 +0200: > On 05/14/2012 01:16 PM, Hiroshi DOYU wrote: > > To simplify the code, alloc necessary data at once. > > > > Signed-off-by: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> > > --- > > This patch requires: > > > > [PATCH 1/2] iommu/tegra: smmu: Add device tree support for SMMU > > http://marc.info/?l=linux-tegra&m=133663641107327&w=2 > > > > Also the above patch requires: > > > > [PATCH 1/1] dt: Add general DMA window parser > > http://marc.info/?l=linux-tegra&m=133671302703840&w=2 > > I know I've been harping on about dependencies, but you typically only > need to mention them if the dependencies are not already checked into > the branch you expect this patch to be checked into. There was a bit time gap. The former one is merged now. The latter dt/DMA window patch isn't checked in. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [v2 1/2] iommu/tegra: smmu: Simplify allocation at once [not found] ` <4FB19677.4040702-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> 2012-05-15 8:06 ` Hiroshi Doyu @ 2012-05-15 8:12 ` Hiroshi DOYU 2012-05-15 8:26 ` [PATCH " Hiroshi Doyu 2 siblings, 0 replies; 7+ messages in thread From: Hiroshi DOYU @ 2012-05-15 8:12 UTC (permalink / raw) To: hdoyu-DDmLM1+adcrQT0dZR+AlfA, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA Cc: Stephen Warren, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Thierry Reding, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Grant Likely, linux-tegra-u79uwXL29TY76Z2rM5mHXA To simplify the code, alloc necessary data at once. Signed-off-by: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> Acked-by: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> --- This patch requires: [PATCH 1/1] dt: Add general DMA window parser http://marc.info/?l=linux-tegra&m=133671302703840&w=2 --- drivers/iommu/tegra-smmu.c | 32 +++++++++++--------------------- 1 files changed, 11 insertions(+), 21 deletions(-) diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c index dbaba77..5eb32b3 100644 --- a/drivers/iommu/tegra-smmu.c +++ b/drivers/iommu/tegra-smmu.c @@ -241,8 +241,6 @@ struct smmu_device { spinlock_t lock; char *name; struct device *dev; - int num_as; - struct smmu_as *as; /* Run-time allocated array */ struct page *avp_vector_page; /* dummy page shared by all AS's */ /* @@ -254,6 +252,9 @@ struct smmu_device { unsigned long asid_security; struct device_node *ahb; + + int num_as; + struct smmu_as as[0]; /* Run-time allocated array */ }; static struct smmu_device *smmu_handle; /* unique for a system */ @@ -900,17 +901,21 @@ static int tegra_smmu_probe(struct platform_device *pdev) { struct smmu_device *smmu; struct device *dev = &pdev->dev; - int i, asids, err = 0; + int i, err = 0; + u32 asids; dma_addr_t base; - size_t size; - const void *prop; + size_t bytes, size; if (smmu_handle) return -EIO; BUILD_BUG_ON(PAGE_SHIFT != SMMU_PAGE_SHIFT); - smmu = devm_kzalloc(dev, sizeof(*smmu), GFP_KERNEL); + if (of_property_read_u32(dev->of_node, "nvidia,#asids", &asids)) + return -ENODEV; + + bytes = sizeof(*smmu) + asids * sizeof(*smmu->as); + smmu = devm_kzalloc(dev, bytes, GFP_KERNEL); if (!smmu) { dev_err(dev, "failed to allocate smmu_device\n"); return -ENOMEM; @@ -939,13 +944,6 @@ static int tegra_smmu_probe(struct platform_device *pdev) if (!size) return -EINVAL; - prop = of_get_property(dev->of_node, "nvidia,#asids", NULL); - if (!prop) - return -ENODEV; - asids = be32_to_cpup(prop); - if (!asids) - return -ENODEV; - smmu->ahb = of_parse_phandle(dev->of_node, "nvidia,ahb", 0); if (!smmu->ahb) return -ENODEV; @@ -960,14 +958,6 @@ static int tegra_smmu_probe(struct platform_device *pdev) smmu->translation_enable_2 = ~0; smmu->asid_security = 0; - smmu->as = devm_kzalloc(dev, - sizeof(smmu->as[0]) * smmu->num_as, GFP_KERNEL); - if (!smmu->as) { - dev_err(dev, "failed to allocate smmu_as\n"); - err = -ENOMEM; - goto fail; - } - for (i = 0; i < smmu->num_as; i++) { struct smmu_as *as = &smmu->as[i]; -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] iommu/tegra: smmu: Simplify allocation at once [not found] ` <4FB19677.4040702-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> 2012-05-15 8:06 ` Hiroshi Doyu 2012-05-15 8:12 ` [v2 " Hiroshi DOYU @ 2012-05-15 8:26 ` Hiroshi Doyu [not found] ` <20120515.112649.411607744957826949.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2 siblings, 1 reply; 7+ messages in thread From: Hiroshi Doyu @ 2012-05-15 8:26 UTC (permalink / raw) To: swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org, rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org, joerg.roedel-5C7GfCeVMHo@public.gmane.org, thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote @ Tue, 15 May 2012 01:34:15 +0200: > On 05/14/2012 01:16 PM, Hiroshi DOYU wrote: > > To simplify the code, alloc necessary data at once. > > > > Signed-off-by: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> > > --- > > This patch requires: > > > > [PATCH 1/2] iommu/tegra: smmu: Add device tree support for SMMU > > http://marc.info/?l=linux-tegra&m=133663641107327&w=2 > > > > Also the above patch requires: > > > > [PATCH 1/1] dt: Add general DMA window parser > > http://marc.info/?l=linux-tegra&m=133671302703840&w=2 > > I know I've been harping on about dependencies, but you typically only > need to mention them if the dependencies are not already checked into > the branch you expect this patch to be checked into. > > > - smmu = devm_kzalloc(dev, sizeof(*smmu), GFP_KERNEL); > > + if (of_property_read_u32(dev->of_node, "nvidia,#asids", &asids)) > > + return -ENODEV; > > I believe you need to change the asids variable from int to u32 to avoid > a warning here. There's no warning but it's allowed because of "-Wno-pointer-sign". It seems that this flag has been used for long in kernel, and there are many places. Is this conversion allowed because it's expeced that the author should know the range of value, or any other reason? *1: -Wno-pointer-sign Don't warn for pointer argument passing or assignment with different signedness. Only useful in the negative form since this warning is enabled by default. This option is only supported for C and Objective-C. ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20120515.112649.411607744957826949.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH 1/2] iommu/tegra: smmu: Simplify allocation at once [not found] ` <20120515.112649.411607744957826949.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2012-05-15 16:09 ` Stephen Warren [not found] ` <4FB27FA9.20106-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> 0 siblings, 1 reply; 7+ messages in thread From: Stephen Warren @ 2012-05-15 16:09 UTC (permalink / raw) To: Hiroshi Doyu Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org, rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org, joerg.roedel-5C7GfCeVMHo@public.gmane.org, thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org On 05/15/2012 02:26 AM, Hiroshi Doyu wrote: > Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote @ Tue, 15 May 2012 01:34:15 +0200: > >> On 05/14/2012 01:16 PM, Hiroshi DOYU wrote: >>> To simplify the code, alloc necessary data at once. >>> >>> Signed-off-by: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> >>> --- >>> This patch requires: >>> >>> [PATCH 1/2] iommu/tegra: smmu: Add device tree support for SMMU >>> http://marc.info/?l=linux-tegra&m=133663641107327&w=2 >>> >>> Also the above patch requires: >>> >>> [PATCH 1/1] dt: Add general DMA window parser >>> http://marc.info/?l=linux-tegra&m=133671302703840&w=2 >> >> I know I've been harping on about dependencies, but you typically only >> need to mention them if the dependencies are not already checked into >> the branch you expect this patch to be checked into. >> >>> - smmu = devm_kzalloc(dev, sizeof(*smmu), GFP_KERNEL); >>> + if (of_property_read_u32(dev->of_node, "nvidia,#asids", &asids)) >>> + return -ENODEV; >> >> I believe you need to change the asids variable from int to u32 to avoid >> a warning here. > > There's no warning but it's allowed because of "-Wno-pointer-sign". It That's odd. I'm sure I have seen this warning recently when calling this API, but you're right, I'm not able to trigger that warning right now, so this is fine. ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <4FB27FA9.20106-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>]
* Re: [PATCH 1/2] iommu/tegra: smmu: Simplify allocation at once [not found] ` <4FB27FA9.20106-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> @ 2012-05-15 18:47 ` Hiroshi Doyu 0 siblings, 0 replies; 7+ messages in thread From: Hiroshi Doyu @ 2012-05-15 18:47 UTC (permalink / raw) To: swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org, rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org, joerg.roedel-5C7GfCeVMHo@public.gmane.org, thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote @ Tue, 15 May 2012 18:09:13 +0200: > On 05/15/2012 02:26 AM, Hiroshi Doyu wrote: > > Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> wrote @ Tue, 15 May 2012 01:34:15 +0200: > > > >> On 05/14/2012 01:16 PM, Hiroshi DOYU wrote: > >>> To simplify the code, alloc necessary data at once. > >>> > >>> Signed-off-by: Hiroshi DOYU <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> > >>> --- > >>> This patch requires: > >>> > >>> [PATCH 1/2] iommu/tegra: smmu: Add device tree support for SMMU > >>> http://marc.info/?l=linux-tegra&m=133663641107327&w=2 > >>> > >>> Also the above patch requires: > >>> > >>> [PATCH 1/1] dt: Add general DMA window parser > >>> http://marc.info/?l=linux-tegra&m=133671302703840&w=2 > >> > >> I know I've been harping on about dependencies, but you typically only > >> need to mention them if the dependencies are not already checked into > >> the branch you expect this patch to be checked into. > >> > >>> - smmu = devm_kzalloc(dev, sizeof(*smmu), GFP_KERNEL); > >>> + if (of_property_read_u32(dev->of_node, "nvidia,#asids", &asids)) > >>> + return -ENODEV; > >> > >> I believe you need to change the asids variable from int to u32 to avoid > >> a warning here. > > > > There's no warning but it's allowed because of "-Wno-pointer-sign". It > > That's odd. I'm sure I have seen this warning recently when calling this > API, but you're right, I'm not able to trigger that warning right now, > so this is fine. Then, either [PATCH v1] or [PATCH v2] would be ok, but v2 may be a bit better because it's exacltly compatible with that function prototype, of_property_read_u32(...u32 *). ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-05-15 18:47 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-05-14 19:16 [PATCH 1/2] iommu/tegra: smmu: Simplify allocation at once Hiroshi DOYU [not found] ` <1337022975-23999-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2012-05-14 23:34 ` Stephen Warren [not found] ` <4FB19677.4040702-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> 2012-05-15 8:06 ` Hiroshi Doyu 2012-05-15 8:12 ` [v2 " Hiroshi DOYU 2012-05-15 8:26 ` [PATCH " Hiroshi Doyu [not found] ` <20120515.112649.411607744957826949.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2012-05-15 16:09 ` Stephen Warren [not found] ` <4FB27FA9.20106-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org> 2012-05-15 18:47 ` Hiroshi Doyu
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).