2022-01-12 12:33:43

by Xianting Tian

[permalink] [raw]
Subject: [PATCH] drm/msm: Fix wrong size calculation

For example, memory-region in .dts as below,
reg = <0x0 0x50000000 0x0 0x20000000>

We can get below values,
struct resource r;
r.start = 0x50000000;
r.end = 0x6fffffff;

So the size should be:
size = r.end - r.start + 1 = 0x20000000

Signed-off-by: Xianting Tian <[email protected]>
---
drivers/gpu/drm/msm/msm_drv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 892c04365..f04a2337d 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -466,7 +466,7 @@ static int msm_init_vram(struct drm_device *dev)
of_node_put(node);
if (ret)
return ret;
- size = r.end - r.start;
+ size = r.end - r.start + 1;
DRM_INFO("using VRAM carveout: %lx@%pa\n", size, &r.start);

/* if we have no IOMMU, then we need to use carveout allocator.
--
2.17.1



2022-01-25 08:46:45

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH] drm/msm: Fix wrong size calculation

On 12/01/2022 15:33, Xianting Tian wrote:
> For example, memory-region in .dts as below,
> reg = <0x0 0x50000000 0x0 0x20000000>
>
> We can get below values,
> struct resource r;
> r.start = 0x50000000;
> r.end = 0x6fffffff;
>
> So the size should be:
> size = r.end - r.start + 1 = 0x20000000
>
> Signed-off-by: Xianting Tian <[email protected]>

Fixes: 072f1f9168ed ("drm/msm: add support for "stolen" mem")
Reviewed-by: Dmitry Baryshkov <[email protected]>

> ---
> drivers/gpu/drm/msm/msm_drv.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index 892c04365..f04a2337d 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -466,7 +466,7 @@ static int msm_init_vram(struct drm_device *dev)
> of_node_put(node);
> if (ret)
> return ret;
> - size = r.end - r.start;
> + size = r.end - r.start + 1;
> DRM_INFO("using VRAM carveout: %lx@%pa\n", size, &r.start);
>
> /* if we have no IOMMU, then we need to use carveout allocator.


--
With best wishes
Dmitry