* [PATCH v3 1/5] remoteproc: fix the wrong default value of is_iomem @ 2021-08-05 3:32 ` Dong Aisheng 0 siblings, 0 replies; 28+ messages in thread From: Dong Aisheng @ 2021-08-05 3:32 UTC (permalink / raw) To: linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger, peng.fan, Dong Aisheng Currently the is_iomem is a random value in the stack which may be default to true even on those platforms that not use iomem to store firmware. Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Fixes: 40df0a91b2a5 ("remoteproc: add is_iomem to da_to_va") Reviewed-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- v2->v3: * no changes v1->v2: * update rproc_copy_segment as well --- drivers/remoteproc/remoteproc_coredump.c | 2 +- drivers/remoteproc/remoteproc_elf_loader.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/remoteproc/remoteproc_coredump.c b/drivers/remoteproc/remoteproc_coredump.c index aee657cc08c6..c892f433a323 100644 --- a/drivers/remoteproc/remoteproc_coredump.c +++ b/drivers/remoteproc/remoteproc_coredump.c @@ -152,8 +152,8 @@ static void rproc_copy_segment(struct rproc *rproc, void *dest, struct rproc_dump_segment *segment, size_t offset, size_t size) { + bool is_iomem = false; void *ptr; - bool is_iomem; if (segment->dump) { segment->dump(rproc, segment, dest, offset, size); diff --git a/drivers/remoteproc/remoteproc_elf_loader.c b/drivers/remoteproc/remoteproc_elf_loader.c index e8078efb3dec..3cd1798f17a3 100644 --- a/drivers/remoteproc/remoteproc_elf_loader.c +++ b/drivers/remoteproc/remoteproc_elf_loader.c @@ -178,8 +178,8 @@ int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw) u64 filesz = elf_phdr_get_p_filesz(class, phdr); u64 offset = elf_phdr_get_p_offset(class, phdr); u32 type = elf_phdr_get_p_type(class, phdr); + bool is_iomem = false; void *ptr; - bool is_iomem; if (type != PT_LOAD) continue; -- 2.25.1 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 1/5] remoteproc: fix the wrong default value of is_iomem @ 2021-08-05 3:32 ` Dong Aisheng 0 siblings, 0 replies; 28+ messages in thread From: Dong Aisheng @ 2021-08-05 3:32 UTC (permalink / raw) To: linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger, peng.fan, Dong Aisheng Currently the is_iomem is a random value in the stack which may be default to true even on those platforms that not use iomem to store firmware. Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Fixes: 40df0a91b2a5 ("remoteproc: add is_iomem to da_to_va") Reviewed-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- v2->v3: * no changes v1->v2: * update rproc_copy_segment as well --- drivers/remoteproc/remoteproc_coredump.c | 2 +- drivers/remoteproc/remoteproc_elf_loader.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/remoteproc/remoteproc_coredump.c b/drivers/remoteproc/remoteproc_coredump.c index aee657cc08c6..c892f433a323 100644 --- a/drivers/remoteproc/remoteproc_coredump.c +++ b/drivers/remoteproc/remoteproc_coredump.c @@ -152,8 +152,8 @@ static void rproc_copy_segment(struct rproc *rproc, void *dest, struct rproc_dump_segment *segment, size_t offset, size_t size) { + bool is_iomem = false; void *ptr; - bool is_iomem; if (segment->dump) { segment->dump(rproc, segment, dest, offset, size); diff --git a/drivers/remoteproc/remoteproc_elf_loader.c b/drivers/remoteproc/remoteproc_elf_loader.c index e8078efb3dec..3cd1798f17a3 100644 --- a/drivers/remoteproc/remoteproc_elf_loader.c +++ b/drivers/remoteproc/remoteproc_elf_loader.c @@ -178,8 +178,8 @@ int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw) u64 filesz = elf_phdr_get_p_filesz(class, phdr); u64 offset = elf_phdr_get_p_offset(class, phdr); u32 type = elf_phdr_get_p_type(class, phdr); + bool is_iomem = false; void *ptr; - bool is_iomem; if (type != PT_LOAD) continue; -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type 2021-08-05 3:32 ` Dong Aisheng @ 2021-08-05 3:32 ` Dong Aisheng -1 siblings, 0 replies; 28+ messages in thread From: Dong Aisheng @ 2021-08-05 3:32 UTC (permalink / raw) To: linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger, peng.fan, Dong Aisheng is_iomem was introduced in the commit 40df0a91b2a5 ("remoteproc: add is_iomem to da_to_va"), but the driver seemed missed to provide the io type correctly. This patch updates remoteproc driver to indicate the TCM on IMX are io memories. Without the change, remoteproc kick will fail. Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Peng Fan <peng.fan@nxp.com> Fixes: 79806d32d5aa ("remoteproc: imx_rproc: support i.MX8MN/P") Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- ChangeLog: v2->v3: * fix commit message typo and drop imx8ulp fixes tag Patch content unchanged. v1->v2: * using ioremap_wc for non TCM memory --- drivers/remoteproc/imx_rproc.c | 35 ++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index d88f76f5305e..71dcc6dd32e4 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -71,6 +71,7 @@ struct imx_rproc_mem { /* att flags */ /* M4 own area. Can be mapped at probe */ #define ATT_OWN BIT(1) +#define ATT_IOMEM BIT(2) /* address translation table */ struct imx_rproc_att { @@ -117,7 +118,7 @@ struct imx_rproc { static const struct imx_rproc_att imx_rproc_att_imx8mn[] = { /* dev addr , sys addr , size , flags */ /* ITCM */ - { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN }, + { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM }, /* OCRAM_S */ { 0x00180000, 0x00180000, 0x00009000, 0 }, /* OCRAM */ @@ -131,7 +132,7 @@ static const struct imx_rproc_att imx_rproc_att_imx8mn[] = { /* DDR (Code) - alias */ { 0x10000000, 0x40000000, 0x0FFE0000, 0 }, /* DTCM */ - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM }, /* OCRAM_S - alias */ { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, /* OCRAM */ @@ -147,7 +148,7 @@ static const struct imx_rproc_att imx_rproc_att_imx8mn[] = { static const struct imx_rproc_att imx_rproc_att_imx8mq[] = { /* dev addr , sys addr , size , flags */ /* TCML - alias */ - { 0x00000000, 0x007e0000, 0x00020000, 0 }, + { 0x00000000, 0x007e0000, 0x00020000, ATT_IOMEM}, /* OCRAM_S */ { 0x00180000, 0x00180000, 0x00008000, 0 }, /* OCRAM */ @@ -159,9 +160,9 @@ static const struct imx_rproc_att imx_rproc_att_imx8mq[] = { /* DDR (Code) - alias */ { 0x10000000, 0x80000000, 0x0FFE0000, 0 }, /* TCML */ - { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN }, + { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM}, /* TCMU */ - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM}, /* OCRAM_S */ { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, /* OCRAM */ @@ -199,12 +200,12 @@ static const struct imx_rproc_att imx_rproc_att_imx7d[] = { /* OCRAM_PXP (Code) - alias */ { 0x00940000, 0x00940000, 0x00008000, 0 }, /* TCML (Code) */ - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, /* DDR (Code) - alias, first part of DDR (Data) */ { 0x10000000, 0x80000000, 0x0FFF0000, 0 }, /* TCMU (Data) */ - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, /* OCRAM (Data) */ { 0x20200000, 0x00900000, 0x00020000, 0 }, /* OCRAM_EPDC (Data) */ @@ -218,18 +219,18 @@ static const struct imx_rproc_att imx_rproc_att_imx7d[] = { static const struct imx_rproc_att imx_rproc_att_imx6sx[] = { /* dev addr , sys addr , size , flags */ /* TCML (M4 Boot Code) - alias */ - { 0x00000000, 0x007F8000, 0x00008000, 0 }, + { 0x00000000, 0x007F8000, 0x00008000, ATT_IOMEM }, /* OCRAM_S (Code) */ { 0x00180000, 0x008F8000, 0x00004000, 0 }, /* OCRAM_S (Code) - alias */ { 0x00180000, 0x008FC000, 0x00004000, 0 }, /* TCML (Code) */ - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, /* DDR (Code) - alias, first part of DDR (Data) */ { 0x10000000, 0x80000000, 0x0FFF8000, 0 }, /* TCMU (Data) */ - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, /* OCRAM_S (Data) - alias? */ { 0x208F8000, 0x008F8000, 0x00004000, 0 }, /* DDR (Data) */ @@ -341,7 +342,7 @@ static int imx_rproc_stop(struct rproc *rproc) } static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da, - size_t len, u64 *sys) + size_t len, u64 *sys, bool *is_iomem) { const struct imx_rproc_dcfg *dcfg = priv->dcfg; int i; @@ -354,6 +355,8 @@ static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da, unsigned int offset = da - att->da; *sys = att->sa + offset; + if (is_iomem) + *is_iomem = att->flags & ATT_IOMEM; return 0; } } @@ -377,7 +380,7 @@ static void *imx_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *i * On device side we have many aliases, so we need to convert device * address (M4) to system bus address first. */ - if (imx_rproc_da_to_sys(priv, da, len, &sys)) + if (imx_rproc_da_to_sys(priv, da, len, &sys, is_iomem)) return NULL; for (i = 0; i < IMX_RPROC_MEM_MAX; i++) { @@ -553,8 +556,12 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, if (b >= IMX_RPROC_MEM_MAX) break; - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, - att->sa, att->size); + if (att->flags & ATT_IOMEM) + priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, + att->sa, att->size); + else + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, + att->sa, att->size); if (!priv->mem[b].cpu_addr) { dev_err(dev, "failed to remap %#x bytes from %#x\n", att->size, att->sa); return -ENOMEM; -- 2.25.1 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type @ 2021-08-05 3:32 ` Dong Aisheng 0 siblings, 0 replies; 28+ messages in thread From: Dong Aisheng @ 2021-08-05 3:32 UTC (permalink / raw) To: linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger, peng.fan, Dong Aisheng is_iomem was introduced in the commit 40df0a91b2a5 ("remoteproc: add is_iomem to da_to_va"), but the driver seemed missed to provide the io type correctly. This patch updates remoteproc driver to indicate the TCM on IMX are io memories. Without the change, remoteproc kick will fail. Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Peng Fan <peng.fan@nxp.com> Fixes: 79806d32d5aa ("remoteproc: imx_rproc: support i.MX8MN/P") Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- ChangeLog: v2->v3: * fix commit message typo and drop imx8ulp fixes tag Patch content unchanged. v1->v2: * using ioremap_wc for non TCM memory --- drivers/remoteproc/imx_rproc.c | 35 ++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index d88f76f5305e..71dcc6dd32e4 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -71,6 +71,7 @@ struct imx_rproc_mem { /* att flags */ /* M4 own area. Can be mapped at probe */ #define ATT_OWN BIT(1) +#define ATT_IOMEM BIT(2) /* address translation table */ struct imx_rproc_att { @@ -117,7 +118,7 @@ struct imx_rproc { static const struct imx_rproc_att imx_rproc_att_imx8mn[] = { /* dev addr , sys addr , size , flags */ /* ITCM */ - { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN }, + { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM }, /* OCRAM_S */ { 0x00180000, 0x00180000, 0x00009000, 0 }, /* OCRAM */ @@ -131,7 +132,7 @@ static const struct imx_rproc_att imx_rproc_att_imx8mn[] = { /* DDR (Code) - alias */ { 0x10000000, 0x40000000, 0x0FFE0000, 0 }, /* DTCM */ - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM }, /* OCRAM_S - alias */ { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, /* OCRAM */ @@ -147,7 +148,7 @@ static const struct imx_rproc_att imx_rproc_att_imx8mn[] = { static const struct imx_rproc_att imx_rproc_att_imx8mq[] = { /* dev addr , sys addr , size , flags */ /* TCML - alias */ - { 0x00000000, 0x007e0000, 0x00020000, 0 }, + { 0x00000000, 0x007e0000, 0x00020000, ATT_IOMEM}, /* OCRAM_S */ { 0x00180000, 0x00180000, 0x00008000, 0 }, /* OCRAM */ @@ -159,9 +160,9 @@ static const struct imx_rproc_att imx_rproc_att_imx8mq[] = { /* DDR (Code) - alias */ { 0x10000000, 0x80000000, 0x0FFE0000, 0 }, /* TCML */ - { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN }, + { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM}, /* TCMU */ - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM}, /* OCRAM_S */ { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, /* OCRAM */ @@ -199,12 +200,12 @@ static const struct imx_rproc_att imx_rproc_att_imx7d[] = { /* OCRAM_PXP (Code) - alias */ { 0x00940000, 0x00940000, 0x00008000, 0 }, /* TCML (Code) */ - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, /* DDR (Code) - alias, first part of DDR (Data) */ { 0x10000000, 0x80000000, 0x0FFF0000, 0 }, /* TCMU (Data) */ - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, /* OCRAM (Data) */ { 0x20200000, 0x00900000, 0x00020000, 0 }, /* OCRAM_EPDC (Data) */ @@ -218,18 +219,18 @@ static const struct imx_rproc_att imx_rproc_att_imx7d[] = { static const struct imx_rproc_att imx_rproc_att_imx6sx[] = { /* dev addr , sys addr , size , flags */ /* TCML (M4 Boot Code) - alias */ - { 0x00000000, 0x007F8000, 0x00008000, 0 }, + { 0x00000000, 0x007F8000, 0x00008000, ATT_IOMEM }, /* OCRAM_S (Code) */ { 0x00180000, 0x008F8000, 0x00004000, 0 }, /* OCRAM_S (Code) - alias */ { 0x00180000, 0x008FC000, 0x00004000, 0 }, /* TCML (Code) */ - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, /* DDR (Code) - alias, first part of DDR (Data) */ { 0x10000000, 0x80000000, 0x0FFF8000, 0 }, /* TCMU (Data) */ - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, /* OCRAM_S (Data) - alias? */ { 0x208F8000, 0x008F8000, 0x00004000, 0 }, /* DDR (Data) */ @@ -341,7 +342,7 @@ static int imx_rproc_stop(struct rproc *rproc) } static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da, - size_t len, u64 *sys) + size_t len, u64 *sys, bool *is_iomem) { const struct imx_rproc_dcfg *dcfg = priv->dcfg; int i; @@ -354,6 +355,8 @@ static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da, unsigned int offset = da - att->da; *sys = att->sa + offset; + if (is_iomem) + *is_iomem = att->flags & ATT_IOMEM; return 0; } } @@ -377,7 +380,7 @@ static void *imx_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *i * On device side we have many aliases, so we need to convert device * address (M4) to system bus address first. */ - if (imx_rproc_da_to_sys(priv, da, len, &sys)) + if (imx_rproc_da_to_sys(priv, da, len, &sys, is_iomem)) return NULL; for (i = 0; i < IMX_RPROC_MEM_MAX; i++) { @@ -553,8 +556,12 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, if (b >= IMX_RPROC_MEM_MAX) break; - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, - att->sa, att->size); + if (att->flags & ATT_IOMEM) + priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, + att->sa, att->size); + else + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, + att->sa, att->size); if (!priv->mem[b].cpu_addr) { dev_err(dev, "failed to remap %#x bytes from %#x\n", att->size, att->sa); return -ENOMEM; -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 28+ messages in thread
* RE: [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type 2021-08-05 3:32 ` Dong Aisheng @ 2021-08-05 9:59 ` Peng Fan -1 siblings, 0 replies; 28+ messages in thread From: Peng Fan @ 2021-08-05 9:59 UTC (permalink / raw) To: Aisheng Dong, linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger > Subject: [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type > > is_iomem was introduced in the commit 40df0a91b2a5 ("remoteproc: add > is_iomem to da_to_va"), but the driver seemed missed to provide the io type > correctly. > This patch updates remoteproc driver to indicate the TCM on IMX are io > memories. Without the change, remoteproc kick will fail. > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Peng Fan <peng.fan@nxp.com> > Fixes: 79806d32d5aa ("remoteproc: imx_rproc: support i.MX8MN/P") > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Tested-by: Peng Fan <peng.fan@nxp.com> > --- > ChangeLog: > v2->v3: > * fix commit message typo and drop imx8ulp fixes tag > Patch content unchanged. > v1->v2: > * using ioremap_wc for non TCM memory > --- > drivers/remoteproc/imx_rproc.c | 35 ++++++++++++++++++++-------------- > 1 file changed, 21 insertions(+), 14 deletions(-) > > diff --git a/drivers/remoteproc/imx_rproc.c > b/drivers/remoteproc/imx_rproc.c index d88f76f5305e..71dcc6dd32e4 > 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -71,6 +71,7 @@ struct imx_rproc_mem { > /* att flags */ > /* M4 own area. Can be mapped at probe */ > #define ATT_OWN BIT(1) > +#define ATT_IOMEM BIT(2) > > /* address translation table */ > struct imx_rproc_att { > @@ -117,7 +118,7 @@ struct imx_rproc { > static const struct imx_rproc_att imx_rproc_att_imx8mn[] = { > /* dev addr , sys addr , size , flags */ > /* ITCM */ > - { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN }, > + { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM }, > /* OCRAM_S */ > { 0x00180000, 0x00180000, 0x00009000, 0 }, > /* OCRAM */ > @@ -131,7 +132,7 @@ static const struct imx_rproc_att > imx_rproc_att_imx8mn[] = { > /* DDR (Code) - alias */ > { 0x10000000, 0x40000000, 0x0FFE0000, 0 }, > /* DTCM */ > - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, > + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM }, > /* OCRAM_S - alias */ > { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, > /* OCRAM */ > @@ -147,7 +148,7 @@ static const struct imx_rproc_att > imx_rproc_att_imx8mn[] = { static const struct imx_rproc_att > imx_rproc_att_imx8mq[] = { > /* dev addr , sys addr , size , flags */ > /* TCML - alias */ > - { 0x00000000, 0x007e0000, 0x00020000, 0 }, > + { 0x00000000, 0x007e0000, 0x00020000, ATT_IOMEM}, > /* OCRAM_S */ > { 0x00180000, 0x00180000, 0x00008000, 0 }, > /* OCRAM */ > @@ -159,9 +160,9 @@ static const struct imx_rproc_att > imx_rproc_att_imx8mq[] = { > /* DDR (Code) - alias */ > { 0x10000000, 0x80000000, 0x0FFE0000, 0 }, > /* TCML */ > - { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN }, > + { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM}, > /* TCMU */ > - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, > + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM}, > /* OCRAM_S */ > { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, > /* OCRAM */ > @@ -199,12 +200,12 @@ static const struct imx_rproc_att > imx_rproc_att_imx7d[] = { > /* OCRAM_PXP (Code) - alias */ > { 0x00940000, 0x00940000, 0x00008000, 0 }, > /* TCML (Code) */ > - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, > + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, > /* DDR (Code) - alias, first part of DDR (Data) */ > { 0x10000000, 0x80000000, 0x0FFF0000, 0 }, > > /* TCMU (Data) */ > - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, > + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, > /* OCRAM (Data) */ > { 0x20200000, 0x00900000, 0x00020000, 0 }, > /* OCRAM_EPDC (Data) */ > @@ -218,18 +219,18 @@ static const struct imx_rproc_att > imx_rproc_att_imx7d[] = { static const struct imx_rproc_att > imx_rproc_att_imx6sx[] = { > /* dev addr , sys addr , size , flags */ > /* TCML (M4 Boot Code) - alias */ > - { 0x00000000, 0x007F8000, 0x00008000, 0 }, > + { 0x00000000, 0x007F8000, 0x00008000, ATT_IOMEM }, > /* OCRAM_S (Code) */ > { 0x00180000, 0x008F8000, 0x00004000, 0 }, > /* OCRAM_S (Code) - alias */ > { 0x00180000, 0x008FC000, 0x00004000, 0 }, > /* TCML (Code) */ > - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, > + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, > /* DDR (Code) - alias, first part of DDR (Data) */ > { 0x10000000, 0x80000000, 0x0FFF8000, 0 }, > > /* TCMU (Data) */ > - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, > + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, > /* OCRAM_S (Data) - alias? */ > { 0x208F8000, 0x008F8000, 0x00004000, 0 }, > /* DDR (Data) */ > @@ -341,7 +342,7 @@ static int imx_rproc_stop(struct rproc *rproc) } > > static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da, > - size_t len, u64 *sys) > + size_t len, u64 *sys, bool *is_iomem) > { > const struct imx_rproc_dcfg *dcfg = priv->dcfg; > int i; > @@ -354,6 +355,8 @@ static int imx_rproc_da_to_sys(struct imx_rproc *priv, > u64 da, > unsigned int offset = da - att->da; > > *sys = att->sa + offset; > + if (is_iomem) > + *is_iomem = att->flags & ATT_IOMEM; > return 0; > } > } > @@ -377,7 +380,7 @@ static void *imx_rproc_da_to_va(struct rproc *rproc, > u64 da, size_t len, bool *i > * On device side we have many aliases, so we need to convert device > * address (M4) to system bus address first. > */ > - if (imx_rproc_da_to_sys(priv, da, len, &sys)) > + if (imx_rproc_da_to_sys(priv, da, len, &sys, is_iomem)) > return NULL; > > for (i = 0; i < IMX_RPROC_MEM_MAX; i++) { @@ -553,8 +556,12 @@ > static int imx_rproc_addr_init(struct imx_rproc *priv, > if (b >= IMX_RPROC_MEM_MAX) > break; > > - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, > - att->sa, att->size); > + if (att->flags & ATT_IOMEM) > + priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, > + att->sa, att->size); > + else > + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, > + att->sa, att->size); > if (!priv->mem[b].cpu_addr) { > dev_err(dev, "failed to remap %#x bytes from %#x\n", att->size, > att->sa); > return -ENOMEM; > -- > 2.25.1 ^ permalink raw reply [flat|nested] 28+ messages in thread
* RE: [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type @ 2021-08-05 9:59 ` Peng Fan 0 siblings, 0 replies; 28+ messages in thread From: Peng Fan @ 2021-08-05 9:59 UTC (permalink / raw) To: Aisheng Dong, linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger > Subject: [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type > > is_iomem was introduced in the commit 40df0a91b2a5 ("remoteproc: add > is_iomem to da_to_va"), but the driver seemed missed to provide the io type > correctly. > This patch updates remoteproc driver to indicate the TCM on IMX are io > memories. Without the change, remoteproc kick will fail. > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Peng Fan <peng.fan@nxp.com> > Fixes: 79806d32d5aa ("remoteproc: imx_rproc: support i.MX8MN/P") > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Tested-by: Peng Fan <peng.fan@nxp.com> > --- > ChangeLog: > v2->v3: > * fix commit message typo and drop imx8ulp fixes tag > Patch content unchanged. > v1->v2: > * using ioremap_wc for non TCM memory > --- > drivers/remoteproc/imx_rproc.c | 35 ++++++++++++++++++++-------------- > 1 file changed, 21 insertions(+), 14 deletions(-) > > diff --git a/drivers/remoteproc/imx_rproc.c > b/drivers/remoteproc/imx_rproc.c index d88f76f5305e..71dcc6dd32e4 > 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -71,6 +71,7 @@ struct imx_rproc_mem { > /* att flags */ > /* M4 own area. Can be mapped at probe */ > #define ATT_OWN BIT(1) > +#define ATT_IOMEM BIT(2) > > /* address translation table */ > struct imx_rproc_att { > @@ -117,7 +118,7 @@ struct imx_rproc { > static const struct imx_rproc_att imx_rproc_att_imx8mn[] = { > /* dev addr , sys addr , size , flags */ > /* ITCM */ > - { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN }, > + { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM }, > /* OCRAM_S */ > { 0x00180000, 0x00180000, 0x00009000, 0 }, > /* OCRAM */ > @@ -131,7 +132,7 @@ static const struct imx_rproc_att > imx_rproc_att_imx8mn[] = { > /* DDR (Code) - alias */ > { 0x10000000, 0x40000000, 0x0FFE0000, 0 }, > /* DTCM */ > - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, > + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM }, > /* OCRAM_S - alias */ > { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, > /* OCRAM */ > @@ -147,7 +148,7 @@ static const struct imx_rproc_att > imx_rproc_att_imx8mn[] = { static const struct imx_rproc_att > imx_rproc_att_imx8mq[] = { > /* dev addr , sys addr , size , flags */ > /* TCML - alias */ > - { 0x00000000, 0x007e0000, 0x00020000, 0 }, > + { 0x00000000, 0x007e0000, 0x00020000, ATT_IOMEM}, > /* OCRAM_S */ > { 0x00180000, 0x00180000, 0x00008000, 0 }, > /* OCRAM */ > @@ -159,9 +160,9 @@ static const struct imx_rproc_att > imx_rproc_att_imx8mq[] = { > /* DDR (Code) - alias */ > { 0x10000000, 0x80000000, 0x0FFE0000, 0 }, > /* TCML */ > - { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN }, > + { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM}, > /* TCMU */ > - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, > + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM}, > /* OCRAM_S */ > { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, > /* OCRAM */ > @@ -199,12 +200,12 @@ static const struct imx_rproc_att > imx_rproc_att_imx7d[] = { > /* OCRAM_PXP (Code) - alias */ > { 0x00940000, 0x00940000, 0x00008000, 0 }, > /* TCML (Code) */ > - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, > + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, > /* DDR (Code) - alias, first part of DDR (Data) */ > { 0x10000000, 0x80000000, 0x0FFF0000, 0 }, > > /* TCMU (Data) */ > - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, > + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, > /* OCRAM (Data) */ > { 0x20200000, 0x00900000, 0x00020000, 0 }, > /* OCRAM_EPDC (Data) */ > @@ -218,18 +219,18 @@ static const struct imx_rproc_att > imx_rproc_att_imx7d[] = { static const struct imx_rproc_att > imx_rproc_att_imx6sx[] = { > /* dev addr , sys addr , size , flags */ > /* TCML (M4 Boot Code) - alias */ > - { 0x00000000, 0x007F8000, 0x00008000, 0 }, > + { 0x00000000, 0x007F8000, 0x00008000, ATT_IOMEM }, > /* OCRAM_S (Code) */ > { 0x00180000, 0x008F8000, 0x00004000, 0 }, > /* OCRAM_S (Code) - alias */ > { 0x00180000, 0x008FC000, 0x00004000, 0 }, > /* TCML (Code) */ > - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, > + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, > /* DDR (Code) - alias, first part of DDR (Data) */ > { 0x10000000, 0x80000000, 0x0FFF8000, 0 }, > > /* TCMU (Data) */ > - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, > + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, > /* OCRAM_S (Data) - alias? */ > { 0x208F8000, 0x008F8000, 0x00004000, 0 }, > /* DDR (Data) */ > @@ -341,7 +342,7 @@ static int imx_rproc_stop(struct rproc *rproc) } > > static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da, > - size_t len, u64 *sys) > + size_t len, u64 *sys, bool *is_iomem) > { > const struct imx_rproc_dcfg *dcfg = priv->dcfg; > int i; > @@ -354,6 +355,8 @@ static int imx_rproc_da_to_sys(struct imx_rproc *priv, > u64 da, > unsigned int offset = da - att->da; > > *sys = att->sa + offset; > + if (is_iomem) > + *is_iomem = att->flags & ATT_IOMEM; > return 0; > } > } > @@ -377,7 +380,7 @@ static void *imx_rproc_da_to_va(struct rproc *rproc, > u64 da, size_t len, bool *i > * On device side we have many aliases, so we need to convert device > * address (M4) to system bus address first. > */ > - if (imx_rproc_da_to_sys(priv, da, len, &sys)) > + if (imx_rproc_da_to_sys(priv, da, len, &sys, is_iomem)) > return NULL; > > for (i = 0; i < IMX_RPROC_MEM_MAX; i++) { @@ -553,8 +556,12 @@ > static int imx_rproc_addr_init(struct imx_rproc *priv, > if (b >= IMX_RPROC_MEM_MAX) > break; > > - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, > - att->sa, att->size); > + if (att->flags & ATT_IOMEM) > + priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, > + att->sa, att->size); > + else > + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, > + att->sa, att->size); > if (!priv->mem[b].cpu_addr) { > dev_err(dev, "failed to remap %#x bytes from %#x\n", att->size, > att->sa); > return -ENOMEM; > -- > 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type 2021-08-05 9:59 ` Peng Fan @ 2021-08-05 16:34 ` Mathieu Poirier -1 siblings, 0 replies; 28+ messages in thread From: Mathieu Poirier @ 2021-08-05 16:34 UTC (permalink / raw) To: Peng Fan Cc: Aisheng Dong, linux-remoteproc, linux-arm-kernel, ohad, dongas86, bjorn.andersson, cleger On Thu, Aug 05, 2021 at 09:59:00AM +0000, Peng Fan wrote: > > Subject: [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type > > > > is_iomem was introduced in the commit 40df0a91b2a5 ("remoteproc: add > > is_iomem to da_to_va"), but the driver seemed missed to provide the io type > > correctly. > > This patch updates remoteproc driver to indicate the TCM on IMX are io > > memories. Without the change, remoteproc kick will fail. > > > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > > Cc: Peng Fan <peng.fan@nxp.com> > > Fixes: 79806d32d5aa ("remoteproc: imx_rproc: support i.MX8MN/P") > > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Peng added his RB tag during V2 but it wasn't carried here. > > Tested-by: Peng Fan <peng.fan@nxp.com> > > > --- > > ChangeLog: > > v2->v3: > > * fix commit message typo and drop imx8ulp fixes tag > > Patch content unchanged. > > v1->v2: > > * using ioremap_wc for non TCM memory > > --- > > drivers/remoteproc/imx_rproc.c | 35 ++++++++++++++++++++-------------- > > 1 file changed, 21 insertions(+), 14 deletions(-) > > > > diff --git a/drivers/remoteproc/imx_rproc.c > > b/drivers/remoteproc/imx_rproc.c index d88f76f5305e..71dcc6dd32e4 > > 100644 > > --- a/drivers/remoteproc/imx_rproc.c > > +++ b/drivers/remoteproc/imx_rproc.c > > @@ -71,6 +71,7 @@ struct imx_rproc_mem { > > /* att flags */ > > /* M4 own area. Can be mapped at probe */ > > #define ATT_OWN BIT(1) > > +#define ATT_IOMEM BIT(2) > > > > /* address translation table */ > > struct imx_rproc_att { > > @@ -117,7 +118,7 @@ struct imx_rproc { > > static const struct imx_rproc_att imx_rproc_att_imx8mn[] = { > > /* dev addr , sys addr , size , flags */ > > /* ITCM */ > > - { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN }, > > + { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM }, > > /* OCRAM_S */ > > { 0x00180000, 0x00180000, 0x00009000, 0 }, > > /* OCRAM */ > > @@ -131,7 +132,7 @@ static const struct imx_rproc_att > > imx_rproc_att_imx8mn[] = { > > /* DDR (Code) - alias */ > > { 0x10000000, 0x40000000, 0x0FFE0000, 0 }, > > /* DTCM */ > > - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, > > + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM }, > > /* OCRAM_S - alias */ > > { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, > > /* OCRAM */ > > @@ -147,7 +148,7 @@ static const struct imx_rproc_att > > imx_rproc_att_imx8mn[] = { static const struct imx_rproc_att > > imx_rproc_att_imx8mq[] = { > > /* dev addr , sys addr , size , flags */ > > /* TCML - alias */ > > - { 0x00000000, 0x007e0000, 0x00020000, 0 }, > > + { 0x00000000, 0x007e0000, 0x00020000, ATT_IOMEM}, > > /* OCRAM_S */ > > { 0x00180000, 0x00180000, 0x00008000, 0 }, > > /* OCRAM */ > > @@ -159,9 +160,9 @@ static const struct imx_rproc_att > > imx_rproc_att_imx8mq[] = { > > /* DDR (Code) - alias */ > > { 0x10000000, 0x80000000, 0x0FFE0000, 0 }, > > /* TCML */ > > - { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN }, > > + { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM}, > > /* TCMU */ > > - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, > > + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM}, > > /* OCRAM_S */ > > { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, > > /* OCRAM */ > > @@ -199,12 +200,12 @@ static const struct imx_rproc_att > > imx_rproc_att_imx7d[] = { > > /* OCRAM_PXP (Code) - alias */ > > { 0x00940000, 0x00940000, 0x00008000, 0 }, > > /* TCML (Code) */ > > - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, > > + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, > > /* DDR (Code) - alias, first part of DDR (Data) */ > > { 0x10000000, 0x80000000, 0x0FFF0000, 0 }, > > > > /* TCMU (Data) */ > > - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, > > + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, > > /* OCRAM (Data) */ > > { 0x20200000, 0x00900000, 0x00020000, 0 }, > > /* OCRAM_EPDC (Data) */ > > @@ -218,18 +219,18 @@ static const struct imx_rproc_att > > imx_rproc_att_imx7d[] = { static const struct imx_rproc_att > > imx_rproc_att_imx6sx[] = { > > /* dev addr , sys addr , size , flags */ > > /* TCML (M4 Boot Code) - alias */ > > - { 0x00000000, 0x007F8000, 0x00008000, 0 }, > > + { 0x00000000, 0x007F8000, 0x00008000, ATT_IOMEM }, > > /* OCRAM_S (Code) */ > > { 0x00180000, 0x008F8000, 0x00004000, 0 }, > > /* OCRAM_S (Code) - alias */ > > { 0x00180000, 0x008FC000, 0x00004000, 0 }, > > /* TCML (Code) */ > > - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, > > + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, > > /* DDR (Code) - alias, first part of DDR (Data) */ > > { 0x10000000, 0x80000000, 0x0FFF8000, 0 }, > > > > /* TCMU (Data) */ > > - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, > > + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, > > /* OCRAM_S (Data) - alias? */ > > { 0x208F8000, 0x008F8000, 0x00004000, 0 }, > > /* DDR (Data) */ > > @@ -341,7 +342,7 @@ static int imx_rproc_stop(struct rproc *rproc) } > > > > static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da, > > - size_t len, u64 *sys) > > + size_t len, u64 *sys, bool *is_iomem) > > { > > const struct imx_rproc_dcfg *dcfg = priv->dcfg; > > int i; > > @@ -354,6 +355,8 @@ static int imx_rproc_da_to_sys(struct imx_rproc *priv, > > u64 da, > > unsigned int offset = da - att->da; > > > > *sys = att->sa + offset; > > + if (is_iomem) > > + *is_iomem = att->flags & ATT_IOMEM; > > return 0; > > } > > } > > @@ -377,7 +380,7 @@ static void *imx_rproc_da_to_va(struct rproc *rproc, > > u64 da, size_t len, bool *i > > * On device side we have many aliases, so we need to convert device > > * address (M4) to system bus address first. > > */ > > - if (imx_rproc_da_to_sys(priv, da, len, &sys)) > > + if (imx_rproc_da_to_sys(priv, da, len, &sys, is_iomem)) > > return NULL; > > > > for (i = 0; i < IMX_RPROC_MEM_MAX; i++) { @@ -553,8 +556,12 @@ > > static int imx_rproc_addr_init(struct imx_rproc *priv, > > if (b >= IMX_RPROC_MEM_MAX) > > break; > > > > - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, > > - att->sa, att->size); > > + if (att->flags & ATT_IOMEM) > > + priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, > > + att->sa, att->size); > > + else > > + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, > > + att->sa, att->size); > > if (!priv->mem[b].cpu_addr) { > > dev_err(dev, "failed to remap %#x bytes from %#x\n", att->size, > > att->sa); > > return -ENOMEM; > > -- > > 2.25.1 > ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type @ 2021-08-05 16:34 ` Mathieu Poirier 0 siblings, 0 replies; 28+ messages in thread From: Mathieu Poirier @ 2021-08-05 16:34 UTC (permalink / raw) To: Peng Fan Cc: Aisheng Dong, linux-remoteproc, linux-arm-kernel, ohad, dongas86, bjorn.andersson, cleger On Thu, Aug 05, 2021 at 09:59:00AM +0000, Peng Fan wrote: > > Subject: [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type > > > > is_iomem was introduced in the commit 40df0a91b2a5 ("remoteproc: add > > is_iomem to da_to_va"), but the driver seemed missed to provide the io type > > correctly. > > This patch updates remoteproc driver to indicate the TCM on IMX are io > > memories. Without the change, remoteproc kick will fail. > > > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > > Cc: Peng Fan <peng.fan@nxp.com> > > Fixes: 79806d32d5aa ("remoteproc: imx_rproc: support i.MX8MN/P") > > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Peng added his RB tag during V2 but it wasn't carried here. > > Tested-by: Peng Fan <peng.fan@nxp.com> > > > --- > > ChangeLog: > > v2->v3: > > * fix commit message typo and drop imx8ulp fixes tag > > Patch content unchanged. > > v1->v2: > > * using ioremap_wc for non TCM memory > > --- > > drivers/remoteproc/imx_rproc.c | 35 ++++++++++++++++++++-------------- > > 1 file changed, 21 insertions(+), 14 deletions(-) > > > > diff --git a/drivers/remoteproc/imx_rproc.c > > b/drivers/remoteproc/imx_rproc.c index d88f76f5305e..71dcc6dd32e4 > > 100644 > > --- a/drivers/remoteproc/imx_rproc.c > > +++ b/drivers/remoteproc/imx_rproc.c > > @@ -71,6 +71,7 @@ struct imx_rproc_mem { > > /* att flags */ > > /* M4 own area. Can be mapped at probe */ > > #define ATT_OWN BIT(1) > > +#define ATT_IOMEM BIT(2) > > > > /* address translation table */ > > struct imx_rproc_att { > > @@ -117,7 +118,7 @@ struct imx_rproc { > > static const struct imx_rproc_att imx_rproc_att_imx8mn[] = { > > /* dev addr , sys addr , size , flags */ > > /* ITCM */ > > - { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN }, > > + { 0x00000000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM }, > > /* OCRAM_S */ > > { 0x00180000, 0x00180000, 0x00009000, 0 }, > > /* OCRAM */ > > @@ -131,7 +132,7 @@ static const struct imx_rproc_att > > imx_rproc_att_imx8mn[] = { > > /* DDR (Code) - alias */ > > { 0x10000000, 0x40000000, 0x0FFE0000, 0 }, > > /* DTCM */ > > - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, > > + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM }, > > /* OCRAM_S - alias */ > > { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, > > /* OCRAM */ > > @@ -147,7 +148,7 @@ static const struct imx_rproc_att > > imx_rproc_att_imx8mn[] = { static const struct imx_rproc_att > > imx_rproc_att_imx8mq[] = { > > /* dev addr , sys addr , size , flags */ > > /* TCML - alias */ > > - { 0x00000000, 0x007e0000, 0x00020000, 0 }, > > + { 0x00000000, 0x007e0000, 0x00020000, ATT_IOMEM}, > > /* OCRAM_S */ > > { 0x00180000, 0x00180000, 0x00008000, 0 }, > > /* OCRAM */ > > @@ -159,9 +160,9 @@ static const struct imx_rproc_att > > imx_rproc_att_imx8mq[] = { > > /* DDR (Code) - alias */ > > { 0x10000000, 0x80000000, 0x0FFE0000, 0 }, > > /* TCML */ > > - { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN }, > > + { 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN | ATT_IOMEM}, > > /* TCMU */ > > - { 0x20000000, 0x00800000, 0x00020000, ATT_OWN }, > > + { 0x20000000, 0x00800000, 0x00020000, ATT_OWN | ATT_IOMEM}, > > /* OCRAM_S */ > > { 0x20180000, 0x00180000, 0x00008000, ATT_OWN }, > > /* OCRAM */ > > @@ -199,12 +200,12 @@ static const struct imx_rproc_att > > imx_rproc_att_imx7d[] = { > > /* OCRAM_PXP (Code) - alias */ > > { 0x00940000, 0x00940000, 0x00008000, 0 }, > > /* TCML (Code) */ > > - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, > > + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, > > /* DDR (Code) - alias, first part of DDR (Data) */ > > { 0x10000000, 0x80000000, 0x0FFF0000, 0 }, > > > > /* TCMU (Data) */ > > - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, > > + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, > > /* OCRAM (Data) */ > > { 0x20200000, 0x00900000, 0x00020000, 0 }, > > /* OCRAM_EPDC (Data) */ > > @@ -218,18 +219,18 @@ static const struct imx_rproc_att > > imx_rproc_att_imx7d[] = { static const struct imx_rproc_att > > imx_rproc_att_imx6sx[] = { > > /* dev addr , sys addr , size , flags */ > > /* TCML (M4 Boot Code) - alias */ > > - { 0x00000000, 0x007F8000, 0x00008000, 0 }, > > + { 0x00000000, 0x007F8000, 0x00008000, ATT_IOMEM }, > > /* OCRAM_S (Code) */ > > { 0x00180000, 0x008F8000, 0x00004000, 0 }, > > /* OCRAM_S (Code) - alias */ > > { 0x00180000, 0x008FC000, 0x00004000, 0 }, > > /* TCML (Code) */ > > - { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN }, > > + { 0x1FFF8000, 0x007F8000, 0x00008000, ATT_OWN | ATT_IOMEM }, > > /* DDR (Code) - alias, first part of DDR (Data) */ > > { 0x10000000, 0x80000000, 0x0FFF8000, 0 }, > > > > /* TCMU (Data) */ > > - { 0x20000000, 0x00800000, 0x00008000, ATT_OWN }, > > + { 0x20000000, 0x00800000, 0x00008000, ATT_OWN | ATT_IOMEM }, > > /* OCRAM_S (Data) - alias? */ > > { 0x208F8000, 0x008F8000, 0x00004000, 0 }, > > /* DDR (Data) */ > > @@ -341,7 +342,7 @@ static int imx_rproc_stop(struct rproc *rproc) } > > > > static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da, > > - size_t len, u64 *sys) > > + size_t len, u64 *sys, bool *is_iomem) > > { > > const struct imx_rproc_dcfg *dcfg = priv->dcfg; > > int i; > > @@ -354,6 +355,8 @@ static int imx_rproc_da_to_sys(struct imx_rproc *priv, > > u64 da, > > unsigned int offset = da - att->da; > > > > *sys = att->sa + offset; > > + if (is_iomem) > > + *is_iomem = att->flags & ATT_IOMEM; > > return 0; > > } > > } > > @@ -377,7 +380,7 @@ static void *imx_rproc_da_to_va(struct rproc *rproc, > > u64 da, size_t len, bool *i > > * On device side we have many aliases, so we need to convert device > > * address (M4) to system bus address first. > > */ > > - if (imx_rproc_da_to_sys(priv, da, len, &sys)) > > + if (imx_rproc_da_to_sys(priv, da, len, &sys, is_iomem)) > > return NULL; > > > > for (i = 0; i < IMX_RPROC_MEM_MAX; i++) { @@ -553,8 +556,12 @@ > > static int imx_rproc_addr_init(struct imx_rproc *priv, > > if (b >= IMX_RPROC_MEM_MAX) > > break; > > > > - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, > > - att->sa, att->size); > > + if (att->flags & ATT_IOMEM) > > + priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, > > + att->sa, att->size); > > + else > > + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, > > + att->sa, att->size); > > if (!priv->mem[b].cpu_addr) { > > dev_err(dev, "failed to remap %#x bytes from %#x\n", att->size, > > att->sa); > > return -ENOMEM; > > -- > > 2.25.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 3/5] remoteproc: imx_rproc: fix ignoring mapping vdev regions 2021-08-05 3:32 ` Dong Aisheng @ 2021-08-05 3:32 ` Dong Aisheng -1 siblings, 0 replies; 28+ messages in thread From: Dong Aisheng @ 2021-08-05 3:32 UTC (permalink / raw) To: linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger, peng.fan, Dong Aisheng vdev regions are typically named vdev0buffer, vdev0ring0, vdev0ring1 and etc. Change to strncmp to cover them all. Fixes: 8f2d8961640f ("remoteproc: imx_rproc: ignore mapping vdev regions") Reviewed-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- v1->v3: * no changes --- drivers/remoteproc/imx_rproc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index 71dcc6dd32e4..abfeac0b1738 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -582,8 +582,8 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, struct resource res; node = of_parse_phandle(np, "memory-region", a); - /* Not map vdev region */ - if (!strcmp(node->name, "vdev")) + /* Not map vdevbuffer, vdevring region */ + if (!strncmp(node->name, "vdev", strlen("vdev"))) continue; err = of_address_to_resource(node, 0, &res); if (err) { -- 2.25.1 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 3/5] remoteproc: imx_rproc: fix ignoring mapping vdev regions @ 2021-08-05 3:32 ` Dong Aisheng 0 siblings, 0 replies; 28+ messages in thread From: Dong Aisheng @ 2021-08-05 3:32 UTC (permalink / raw) To: linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger, peng.fan, Dong Aisheng vdev regions are typically named vdev0buffer, vdev0ring0, vdev0ring1 and etc. Change to strncmp to cover them all. Fixes: 8f2d8961640f ("remoteproc: imx_rproc: ignore mapping vdev regions") Reviewed-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- v1->v3: * no changes --- drivers/remoteproc/imx_rproc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index 71dcc6dd32e4..abfeac0b1738 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -582,8 +582,8 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, struct resource res; node = of_parse_phandle(np, "memory-region", a); - /* Not map vdev region */ - if (!strcmp(node->name, "vdev")) + /* Not map vdevbuffer, vdevring region */ + if (!strncmp(node->name, "vdev", strlen("vdev"))) continue; err = of_address_to_resource(node, 0, &res); if (err) { -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 28+ messages in thread
* RE: [PATCH v3 3/5] remoteproc: imx_rproc: fix ignoring mapping vdev regions 2021-08-05 3:32 ` Dong Aisheng @ 2021-08-05 9:59 ` Peng Fan -1 siblings, 0 replies; 28+ messages in thread From: Peng Fan @ 2021-08-05 9:59 UTC (permalink / raw) To: Aisheng Dong, linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger > Subject: [PATCH v3 3/5] remoteproc: imx_rproc: fix ignoring mapping vdev > regions > > vdev regions are typically named vdev0buffer, vdev0ring0, vdev0ring1 and etc. > Change to strncmp to cover them all. > > Fixes: 8f2d8961640f ("remoteproc: imx_rproc: ignore mapping vdev regions") > Reviewed-by: Peng Fan <peng.fan@nxp.com> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Tested-by: Peng Fan <peng.fan@nxp.com> > --- > v1->v3: > * no changes > --- > drivers/remoteproc/imx_rproc.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/remoteproc/imx_rproc.c > b/drivers/remoteproc/imx_rproc.c index 71dcc6dd32e4..abfeac0b1738 > 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -582,8 +582,8 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, > struct resource res; > > node = of_parse_phandle(np, "memory-region", a); > - /* Not map vdev region */ > - if (!strcmp(node->name, "vdev")) > + /* Not map vdevbuffer, vdevring region */ > + if (!strncmp(node->name, "vdev", strlen("vdev"))) > continue; > err = of_address_to_resource(node, 0, &res); > if (err) { > -- > 2.25.1 ^ permalink raw reply [flat|nested] 28+ messages in thread
* RE: [PATCH v3 3/5] remoteproc: imx_rproc: fix ignoring mapping vdev regions @ 2021-08-05 9:59 ` Peng Fan 0 siblings, 0 replies; 28+ messages in thread From: Peng Fan @ 2021-08-05 9:59 UTC (permalink / raw) To: Aisheng Dong, linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger > Subject: [PATCH v3 3/5] remoteproc: imx_rproc: fix ignoring mapping vdev > regions > > vdev regions are typically named vdev0buffer, vdev0ring0, vdev0ring1 and etc. > Change to strncmp to cover them all. > > Fixes: 8f2d8961640f ("remoteproc: imx_rproc: ignore mapping vdev regions") > Reviewed-by: Peng Fan <peng.fan@nxp.com> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Tested-by: Peng Fan <peng.fan@nxp.com> > --- > v1->v3: > * no changes > --- > drivers/remoteproc/imx_rproc.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/remoteproc/imx_rproc.c > b/drivers/remoteproc/imx_rproc.c index 71dcc6dd32e4..abfeac0b1738 > 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -582,8 +582,8 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, > struct resource res; > > node = of_parse_phandle(np, "memory-region", a); > - /* Not map vdev region */ > - if (!strcmp(node->name, "vdev")) > + /* Not map vdevbuffer, vdevring region */ > + if (!strncmp(node->name, "vdev", strlen("vdev"))) > continue; > err = of_address_to_resource(node, 0, &res); > if (err) { > -- > 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 4/5] remoteproc: imx_rproc: fix rsc-table name 2021-08-05 3:32 ` Dong Aisheng @ 2021-08-05 3:32 ` Dong Aisheng -1 siblings, 0 replies; 28+ messages in thread From: Dong Aisheng @ 2021-08-05 3:32 UTC (permalink / raw) To: linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger, peng.fan, Dong Aisheng Usually the dash '-' is preferred in node name. So far, not dts in upstream kernel, so we just update node name in driver. Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Fixes: 5e4c1243071d ("remoteproc: imx_rproc: support remote cores booted before Linux Kernel") Reviewed-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- v1->v3: * no changes --- drivers/remoteproc/imx_rproc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index abfeac0b1738..ff620688fad9 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -604,7 +604,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, } priv->mem[b].sys_addr = res.start; priv->mem[b].size = resource_size(&res); - if (!strcmp(node->name, "rsc_table")) + if (!strcmp(node->name, "rsc-table")) priv->rsc_table = priv->mem[b].cpu_addr; b++; } -- 2.25.1 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 4/5] remoteproc: imx_rproc: fix rsc-table name @ 2021-08-05 3:32 ` Dong Aisheng 0 siblings, 0 replies; 28+ messages in thread From: Dong Aisheng @ 2021-08-05 3:32 UTC (permalink / raw) To: linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger, peng.fan, Dong Aisheng Usually the dash '-' is preferred in node name. So far, not dts in upstream kernel, so we just update node name in driver. Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Fixes: 5e4c1243071d ("remoteproc: imx_rproc: support remote cores booted before Linux Kernel") Reviewed-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- v1->v3: * no changes --- drivers/remoteproc/imx_rproc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index abfeac0b1738..ff620688fad9 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -604,7 +604,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, } priv->mem[b].sys_addr = res.start; priv->mem[b].size = resource_size(&res); - if (!strcmp(node->name, "rsc_table")) + if (!strcmp(node->name, "rsc-table")) priv->rsc_table = priv->mem[b].cpu_addr; b++; } -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 28+ messages in thread
* RE: [PATCH v3 4/5] remoteproc: imx_rproc: fix rsc-table name 2021-08-05 3:32 ` Dong Aisheng @ 2021-08-05 9:59 ` Peng Fan -1 siblings, 0 replies; 28+ messages in thread From: Peng Fan @ 2021-08-05 9:59 UTC (permalink / raw) To: Aisheng Dong, linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger > Subject: [PATCH v3 4/5] remoteproc: imx_rproc: fix rsc-table name > > Usually the dash '-' is preferred in node name. > So far, not dts in upstream kernel, so we just update node name in driver. > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Fixes: 5e4c1243071d ("remoteproc: imx_rproc: support remote cores booted > before Linux Kernel") > Reviewed-by: Peng Fan <peng.fan@nxp.com> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Tested-by: Peng Fan <peng.fan@nxp.com> > --- > v1->v3: > * no changes > --- > drivers/remoteproc/imx_rproc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/remoteproc/imx_rproc.c > b/drivers/remoteproc/imx_rproc.c index abfeac0b1738..ff620688fad9 > 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -604,7 +604,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, > } > priv->mem[b].sys_addr = res.start; > priv->mem[b].size = resource_size(&res); > - if (!strcmp(node->name, "rsc_table")) > + if (!strcmp(node->name, "rsc-table")) > priv->rsc_table = priv->mem[b].cpu_addr; > b++; > } > -- > 2.25.1 ^ permalink raw reply [flat|nested] 28+ messages in thread
* RE: [PATCH v3 4/5] remoteproc: imx_rproc: fix rsc-table name @ 2021-08-05 9:59 ` Peng Fan 0 siblings, 0 replies; 28+ messages in thread From: Peng Fan @ 2021-08-05 9:59 UTC (permalink / raw) To: Aisheng Dong, linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger > Subject: [PATCH v3 4/5] remoteproc: imx_rproc: fix rsc-table name > > Usually the dash '-' is preferred in node name. > So far, not dts in upstream kernel, so we just update node name in driver. > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Fixes: 5e4c1243071d ("remoteproc: imx_rproc: support remote cores booted > before Linux Kernel") > Reviewed-by: Peng Fan <peng.fan@nxp.com> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Tested-by: Peng Fan <peng.fan@nxp.com> > --- > v1->v3: > * no changes > --- > drivers/remoteproc/imx_rproc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/remoteproc/imx_rproc.c > b/drivers/remoteproc/imx_rproc.c index abfeac0b1738..ff620688fad9 > 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -604,7 +604,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, > } > priv->mem[b].sys_addr = res.start; > priv->mem[b].size = resource_size(&res); > - if (!strcmp(node->name, "rsc_table")) > + if (!strcmp(node->name, "rsc-table")) > priv->rsc_table = priv->mem[b].cpu_addr; > b++; > } > -- > 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for dram 2021-08-05 3:32 ` Dong Aisheng @ 2021-08-05 3:32 ` Dong Aisheng -1 siblings, 0 replies; 28+ messages in thread From: Dong Aisheng @ 2021-08-05 3:32 UTC (permalink / raw) To: linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger, peng.fan, Dong Aisheng DRAM is not io memory, so changed to ioremap_wc. This is also aligned with core io accessories. e.g. memcpy/memset and cpu direct access. Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Peng Fan <peng.fan@nxp.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- v2->v3: * patch content unchanged. Only drop the wrong tag in v2 Tested on MX8MQ and MX8MP, MX7ULP. v1->v2: * new patch --- drivers/remoteproc/imx_rproc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index ff620688fad9..4ae416ba5080 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -597,7 +597,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, break; /* Not use resource version, because we might share region */ - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, res.start, resource_size(&res)); + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, res.start, resource_size(&res)); if (!priv->mem[b].cpu_addr) { dev_err(dev, "failed to remap %pr\n", &res); return -ENOMEM; -- 2.25.1 ^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for dram @ 2021-08-05 3:32 ` Dong Aisheng 0 siblings, 0 replies; 28+ messages in thread From: Dong Aisheng @ 2021-08-05 3:32 UTC (permalink / raw) To: linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger, peng.fan, Dong Aisheng DRAM is not io memory, so changed to ioremap_wc. This is also aligned with core io accessories. e.g. memcpy/memset and cpu direct access. Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Peng Fan <peng.fan@nxp.com> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> --- v2->v3: * patch content unchanged. Only drop the wrong tag in v2 Tested on MX8MQ and MX8MP, MX7ULP. v1->v2: * new patch --- drivers/remoteproc/imx_rproc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index ff620688fad9..4ae416ba5080 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -597,7 +597,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, break; /* Not use resource version, because we might share region */ - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, res.start, resource_size(&res)); + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, res.start, resource_size(&res)); if (!priv->mem[b].cpu_addr) { dev_err(dev, "failed to remap %pr\n", &res); return -ENOMEM; -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 28+ messages in thread
* RE: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for dram 2021-08-05 3:32 ` Dong Aisheng @ 2021-08-05 9:57 ` Peng Fan (OSS) -1 siblings, 0 replies; 28+ messages in thread From: Peng Fan (OSS) @ 2021-08-05 9:57 UTC (permalink / raw) To: Aisheng Dong, linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger > Subject: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for > dram > > DRAM is not io memory, so changed to ioremap_wc. This is also aligned with > core io accessories. e.g. memcpy/memset and cpu direct access. > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Peng Fan <peng.fan@nxp.com> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> > --- > v2->v3: > * patch content unchanged. > Only drop the wrong tag in v2 > Tested on MX8MQ and MX8MP, MX7ULP. > v1->v2: > * new patch > --- > drivers/remoteproc/imx_rproc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/remoteproc/imx_rproc.c > b/drivers/remoteproc/imx_rproc.c index ff620688fad9..4ae416ba5080 > 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -597,7 +597,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, > break; > > /* Not use resource version, because we might share region */ > - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, res.start, > resource_size(&res)); > + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, > res.start, > +resource_size(&res)); > if (!priv->mem[b].cpu_addr) { > dev_err(dev, "failed to remap %pr\n", &res); > return -ENOMEM; > -- > 2.25.1 ^ permalink raw reply [flat|nested] 28+ messages in thread
* RE: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for dram @ 2021-08-05 9:57 ` Peng Fan (OSS) 0 siblings, 0 replies; 28+ messages in thread From: Peng Fan (OSS) @ 2021-08-05 9:57 UTC (permalink / raw) To: Aisheng Dong, linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger > Subject: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for > dram > > DRAM is not io memory, so changed to ioremap_wc. This is also aligned with > core io accessories. e.g. memcpy/memset and cpu direct access. > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Peng Fan <peng.fan@nxp.com> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> > --- > v2->v3: > * patch content unchanged. > Only drop the wrong tag in v2 > Tested on MX8MQ and MX8MP, MX7ULP. > v1->v2: > * new patch > --- > drivers/remoteproc/imx_rproc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/remoteproc/imx_rproc.c > b/drivers/remoteproc/imx_rproc.c index ff620688fad9..4ae416ba5080 > 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -597,7 +597,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, > break; > > /* Not use resource version, because we might share region */ > - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, res.start, > resource_size(&res)); > + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, > res.start, > +resource_size(&res)); > if (!priv->mem[b].cpu_addr) { > dev_err(dev, "failed to remap %pr\n", &res); > return -ENOMEM; > -- > 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for dram 2021-08-05 9:57 ` Peng Fan (OSS) @ 2021-08-05 16:36 ` Mathieu Poirier -1 siblings, 0 replies; 28+ messages in thread From: Mathieu Poirier @ 2021-08-05 16:36 UTC (permalink / raw) To: Peng Fan (OSS) Cc: Aisheng Dong, linux-remoteproc, linux-arm-kernel, ohad, dongas86, bjorn.andersson, cleger On Thu, Aug 05, 2021 at 09:57:10AM +0000, Peng Fan (OSS) wrote: > > Subject: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for > > dram > > > > DRAM is not io memory, so changed to ioremap_wc. This is also aligned with > > core io accessories. e.g. memcpy/memset and cpu direct access. > > > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > > Cc: Peng Fan <peng.fan@nxp.com> > > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> > > Reviewed-by: Peng Fan <peng.fan@nxp.com> > Did you test this one as well? > > --- > > v2->v3: > > * patch content unchanged. > > Only drop the wrong tag in v2 > > Tested on MX8MQ and MX8MP, MX7ULP. > > v1->v2: > > * new patch > > --- > > drivers/remoteproc/imx_rproc.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/remoteproc/imx_rproc.c > > b/drivers/remoteproc/imx_rproc.c index ff620688fad9..4ae416ba5080 > > 100644 > > --- a/drivers/remoteproc/imx_rproc.c > > +++ b/drivers/remoteproc/imx_rproc.c > > @@ -597,7 +597,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, > > break; > > > > /* Not use resource version, because we might share region */ > > - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, res.start, > > resource_size(&res)); > > + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, > > res.start, > > +resource_size(&res)); > > if (!priv->mem[b].cpu_addr) { > > dev_err(dev, "failed to remap %pr\n", &res); > > return -ENOMEM; > > -- > > 2.25.1 > ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for dram @ 2021-08-05 16:36 ` Mathieu Poirier 0 siblings, 0 replies; 28+ messages in thread From: Mathieu Poirier @ 2021-08-05 16:36 UTC (permalink / raw) To: Peng Fan (OSS) Cc: Aisheng Dong, linux-remoteproc, linux-arm-kernel, ohad, dongas86, bjorn.andersson, cleger On Thu, Aug 05, 2021 at 09:57:10AM +0000, Peng Fan (OSS) wrote: > > Subject: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for > > dram > > > > DRAM is not io memory, so changed to ioremap_wc. This is also aligned with > > core io accessories. e.g. memcpy/memset and cpu direct access. > > > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > > Cc: Peng Fan <peng.fan@nxp.com> > > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> > > Reviewed-by: Peng Fan <peng.fan@nxp.com> > Did you test this one as well? > > --- > > v2->v3: > > * patch content unchanged. > > Only drop the wrong tag in v2 > > Tested on MX8MQ and MX8MP, MX7ULP. > > v1->v2: > > * new patch > > --- > > drivers/remoteproc/imx_rproc.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/remoteproc/imx_rproc.c > > b/drivers/remoteproc/imx_rproc.c index ff620688fad9..4ae416ba5080 > > 100644 > > --- a/drivers/remoteproc/imx_rproc.c > > +++ b/drivers/remoteproc/imx_rproc.c > > @@ -597,7 +597,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, > > break; > > > > /* Not use resource version, because we might share region */ > > - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, res.start, > > resource_size(&res)); > > + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, > > res.start, > > +resource_size(&res)); > > if (!priv->mem[b].cpu_addr) { > > dev_err(dev, "failed to remap %pr\n", &res); > > return -ENOMEM; > > -- > > 2.25.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 28+ messages in thread
* RE: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for dram 2021-08-05 16:36 ` Mathieu Poirier @ 2021-09-10 8:57 ` Peng Fan -1 siblings, 0 replies; 28+ messages in thread From: Peng Fan @ 2021-09-10 8:57 UTC (permalink / raw) To: Mathieu Poirier, Peng Fan (OSS) Cc: Aisheng Dong, linux-remoteproc, linux-arm-kernel, ohad, dongas86, bjorn.andersson, cleger > -----Original Message----- > From: Mathieu Poirier [mailto:mathieu.poirier@linaro.org] > Sent: 2021年8月6日 0:37 > To: Peng Fan (OSS) <peng.fan@oss.nxp.com> > Cc: Aisheng Dong <aisheng.dong@nxp.com>; > linux-remoteproc@vger.kernel.org; linux-arm-kernel@lists.infradead.org; > ohad@wizery.com; dongas86@gmail.com; bjorn.andersson@linaro.org; > cleger@kalray.eu > Subject: Re: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc > for dram > > On Thu, Aug 05, 2021 at 09:57:10AM +0000, Peng Fan (OSS) wrote: > > > Subject: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc > > > for dram > > > > > > DRAM is not io memory, so changed to ioremap_wc. This is also > > > aligned with core io accessories. e.g. memcpy/memset and cpu direct > access. > > > > > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > > > Cc: Peng Fan <peng.fan@nxp.com> > > > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> > > > > Reviewed-by: Peng Fan <peng.fan@nxp.com> > > > > Did you test this one as well? Yes, Tested-by: Peng Fan <peng.fan@nxp.com> I'll take the pachset, respin the tags and send a v4. Thanks, Peng. > > > > --- > > > v2->v3: > > > * patch content unchanged. > > > Only drop the wrong tag in v2 > > > Tested on MX8MQ and MX8MP, MX7ULP. > > > v1->v2: > > > * new patch > > > --- > > > drivers/remoteproc/imx_rproc.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/remoteproc/imx_rproc.c > > > b/drivers/remoteproc/imx_rproc.c index ff620688fad9..4ae416ba5080 > > > 100644 > > > --- a/drivers/remoteproc/imx_rproc.c > > > +++ b/drivers/remoteproc/imx_rproc.c > > > @@ -597,7 +597,7 @@ static int imx_rproc_addr_init(struct imx_rproc > *priv, > > > break; > > > > > > /* Not use resource version, because we might share region */ > > > - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, res.start, > > > resource_size(&res)); > > > + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, > > > res.start, > > > +resource_size(&res)); > > > if (!priv->mem[b].cpu_addr) { > > > dev_err(dev, "failed to remap %pr\n", &res); > > > return -ENOMEM; > > > -- > > > 2.25.1 > > ^ permalink raw reply [flat|nested] 28+ messages in thread
* RE: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for dram @ 2021-09-10 8:57 ` Peng Fan 0 siblings, 0 replies; 28+ messages in thread From: Peng Fan @ 2021-09-10 8:57 UTC (permalink / raw) To: Mathieu Poirier, Peng Fan (OSS) Cc: Aisheng Dong, linux-remoteproc, linux-arm-kernel, ohad, dongas86, bjorn.andersson, cleger > -----Original Message----- > From: Mathieu Poirier [mailto:mathieu.poirier@linaro.org] > Sent: 2021年8月6日 0:37 > To: Peng Fan (OSS) <peng.fan@oss.nxp.com> > Cc: Aisheng Dong <aisheng.dong@nxp.com>; > linux-remoteproc@vger.kernel.org; linux-arm-kernel@lists.infradead.org; > ohad@wizery.com; dongas86@gmail.com; bjorn.andersson@linaro.org; > cleger@kalray.eu > Subject: Re: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc > for dram > > On Thu, Aug 05, 2021 at 09:57:10AM +0000, Peng Fan (OSS) wrote: > > > Subject: [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc > > > for dram > > > > > > DRAM is not io memory, so changed to ioremap_wc. This is also > > > aligned with core io accessories. e.g. memcpy/memset and cpu direct > access. > > > > > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > > > Cc: Peng Fan <peng.fan@nxp.com> > > > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> > > > > Reviewed-by: Peng Fan <peng.fan@nxp.com> > > > > Did you test this one as well? Yes, Tested-by: Peng Fan <peng.fan@nxp.com> I'll take the pachset, respin the tags and send a v4. Thanks, Peng. > > > > --- > > > v2->v3: > > > * patch content unchanged. > > > Only drop the wrong tag in v2 > > > Tested on MX8MQ and MX8MP, MX7ULP. > > > v1->v2: > > > * new patch > > > --- > > > drivers/remoteproc/imx_rproc.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/remoteproc/imx_rproc.c > > > b/drivers/remoteproc/imx_rproc.c index ff620688fad9..4ae416ba5080 > > > 100644 > > > --- a/drivers/remoteproc/imx_rproc.c > > > +++ b/drivers/remoteproc/imx_rproc.c > > > @@ -597,7 +597,7 @@ static int imx_rproc_addr_init(struct imx_rproc > *priv, > > > break; > > > > > > /* Not use resource version, because we might share region */ > > > - priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, res.start, > > > resource_size(&res)); > > > + priv->mem[b].cpu_addr = devm_ioremap_wc(&pdev->dev, > > > res.start, > > > +resource_size(&res)); > > > if (!priv->mem[b].cpu_addr) { > > > dev_err(dev, "failed to remap %pr\n", &res); > > > return -ENOMEM; > > > -- > > > 2.25.1 > > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 28+ messages in thread
* RE: [PATCH v3 1/5] remoteproc: fix the wrong default value of is_iomem 2021-08-05 3:32 ` Dong Aisheng @ 2021-08-05 9:58 ` Peng Fan (OSS) -1 siblings, 0 replies; 28+ messages in thread From: Peng Fan (OSS) @ 2021-08-05 9:58 UTC (permalink / raw) To: Aisheng Dong, linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger > Subject: [PATCH v3 1/5] remoteproc: fix the wrong default value of is_iomem > > Currently the is_iomem is a random value in the stack which may be default > to true even on those platforms that not use iomem to store firmware. > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Fixes: 40df0a91b2a5 ("remoteproc: add is_iomem to da_to_va") > Reviewed-by: Peng Fan <peng.fan@nxp.com> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Tested-by: Peng Fan <peng.fan@nxp.com> with https://patchwork.kernel.org/project/linux-remoteproc/patch/20210629014752.5659-1-peng.fan@oss.nxp.com/ > --- > v2->v3: > * no changes > v1->v2: > * update rproc_copy_segment as well > --- > drivers/remoteproc/remoteproc_coredump.c | 2 +- > drivers/remoteproc/remoteproc_elf_loader.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/remoteproc/remoteproc_coredump.c > b/drivers/remoteproc/remoteproc_coredump.c > index aee657cc08c6..c892f433a323 100644 > --- a/drivers/remoteproc/remoteproc_coredump.c > +++ b/drivers/remoteproc/remoteproc_coredump.c > @@ -152,8 +152,8 @@ static void rproc_copy_segment(struct rproc *rproc, > void *dest, > struct rproc_dump_segment *segment, > size_t offset, size_t size) > { > + bool is_iomem = false; > void *ptr; > - bool is_iomem; > > if (segment->dump) { > segment->dump(rproc, segment, dest, offset, size); diff --git > a/drivers/remoteproc/remoteproc_elf_loader.c > b/drivers/remoteproc/remoteproc_elf_loader.c > index e8078efb3dec..3cd1798f17a3 100644 > --- a/drivers/remoteproc/remoteproc_elf_loader.c > +++ b/drivers/remoteproc/remoteproc_elf_loader.c > @@ -178,8 +178,8 @@ int rproc_elf_load_segments(struct rproc *rproc, > const struct firmware *fw) > u64 filesz = elf_phdr_get_p_filesz(class, phdr); > u64 offset = elf_phdr_get_p_offset(class, phdr); > u32 type = elf_phdr_get_p_type(class, phdr); > + bool is_iomem = false; > void *ptr; > - bool is_iomem; > > if (type != PT_LOAD) > continue; > -- > 2.25.1 ^ permalink raw reply [flat|nested] 28+ messages in thread
* RE: [PATCH v3 1/5] remoteproc: fix the wrong default value of is_iomem @ 2021-08-05 9:58 ` Peng Fan (OSS) 0 siblings, 0 replies; 28+ messages in thread From: Peng Fan (OSS) @ 2021-08-05 9:58 UTC (permalink / raw) To: Aisheng Dong, linux-remoteproc Cc: linux-arm-kernel, ohad, dongas86, bjorn.andersson, mathieu.poirier, cleger > Subject: [PATCH v3 1/5] remoteproc: fix the wrong default value of is_iomem > > Currently the is_iomem is a random value in the stack which may be default > to true even on those platforms that not use iomem to store firmware. > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Fixes: 40df0a91b2a5 ("remoteproc: add is_iomem to da_to_va") > Reviewed-by: Peng Fan <peng.fan@nxp.com> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Tested-by: Peng Fan <peng.fan@nxp.com> with https://patchwork.kernel.org/project/linux-remoteproc/patch/20210629014752.5659-1-peng.fan@oss.nxp.com/ > --- > v2->v3: > * no changes > v1->v2: > * update rproc_copy_segment as well > --- > drivers/remoteproc/remoteproc_coredump.c | 2 +- > drivers/remoteproc/remoteproc_elf_loader.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/remoteproc/remoteproc_coredump.c > b/drivers/remoteproc/remoteproc_coredump.c > index aee657cc08c6..c892f433a323 100644 > --- a/drivers/remoteproc/remoteproc_coredump.c > +++ b/drivers/remoteproc/remoteproc_coredump.c > @@ -152,8 +152,8 @@ static void rproc_copy_segment(struct rproc *rproc, > void *dest, > struct rproc_dump_segment *segment, > size_t offset, size_t size) > { > + bool is_iomem = false; > void *ptr; > - bool is_iomem; > > if (segment->dump) { > segment->dump(rproc, segment, dest, offset, size); diff --git > a/drivers/remoteproc/remoteproc_elf_loader.c > b/drivers/remoteproc/remoteproc_elf_loader.c > index e8078efb3dec..3cd1798f17a3 100644 > --- a/drivers/remoteproc/remoteproc_elf_loader.c > +++ b/drivers/remoteproc/remoteproc_elf_loader.c > @@ -178,8 +178,8 @@ int rproc_elf_load_segments(struct rproc *rproc, > const struct firmware *fw) > u64 filesz = elf_phdr_get_p_filesz(class, phdr); > u64 offset = elf_phdr_get_p_offset(class, phdr); > u32 type = elf_phdr_get_p_type(class, phdr); > + bool is_iomem = false; > void *ptr; > - bool is_iomem; > > if (type != PT_LOAD) > continue; > -- > 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 1/5] remoteproc: fix the wrong default value of is_iomem 2021-08-05 3:32 ` Dong Aisheng @ 2021-08-05 16:37 ` Mathieu Poirier -1 siblings, 0 replies; 28+ messages in thread From: Mathieu Poirier @ 2021-08-05 16:37 UTC (permalink / raw) To: Dong Aisheng Cc: linux-remoteproc, linux-arm-kernel, ohad, dongas86, bjorn.andersson, cleger, peng.fan Please respin this set with all the RB and TB tags. Thanks, Mathieu On Thu, Aug 05, 2021 at 11:32:02AM +0800, Dong Aisheng wrote: > Currently the is_iomem is a random value in the stack which may > be default to true even on those platforms that not use iomem to > store firmware. > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Fixes: 40df0a91b2a5 ("remoteproc: add is_iomem to da_to_va") > Reviewed-by: Peng Fan <peng.fan@nxp.com> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> > --- > v2->v3: > * no changes > v1->v2: > * update rproc_copy_segment as well > --- > drivers/remoteproc/remoteproc_coredump.c | 2 +- > drivers/remoteproc/remoteproc_elf_loader.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/remoteproc/remoteproc_coredump.c b/drivers/remoteproc/remoteproc_coredump.c > index aee657cc08c6..c892f433a323 100644 > --- a/drivers/remoteproc/remoteproc_coredump.c > +++ b/drivers/remoteproc/remoteproc_coredump.c > @@ -152,8 +152,8 @@ static void rproc_copy_segment(struct rproc *rproc, void *dest, > struct rproc_dump_segment *segment, > size_t offset, size_t size) > { > + bool is_iomem = false; > void *ptr; > - bool is_iomem; > > if (segment->dump) { > segment->dump(rproc, segment, dest, offset, size); > diff --git a/drivers/remoteproc/remoteproc_elf_loader.c b/drivers/remoteproc/remoteproc_elf_loader.c > index e8078efb3dec..3cd1798f17a3 100644 > --- a/drivers/remoteproc/remoteproc_elf_loader.c > +++ b/drivers/remoteproc/remoteproc_elf_loader.c > @@ -178,8 +178,8 @@ int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw) > u64 filesz = elf_phdr_get_p_filesz(class, phdr); > u64 offset = elf_phdr_get_p_offset(class, phdr); > u32 type = elf_phdr_get_p_type(class, phdr); > + bool is_iomem = false; > void *ptr; > - bool is_iomem; > > if (type != PT_LOAD) > continue; > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 1/5] remoteproc: fix the wrong default value of is_iomem @ 2021-08-05 16:37 ` Mathieu Poirier 0 siblings, 0 replies; 28+ messages in thread From: Mathieu Poirier @ 2021-08-05 16:37 UTC (permalink / raw) To: Dong Aisheng Cc: linux-remoteproc, linux-arm-kernel, ohad, dongas86, bjorn.andersson, cleger, peng.fan Please respin this set with all the RB and TB tags. Thanks, Mathieu On Thu, Aug 05, 2021 at 11:32:02AM +0800, Dong Aisheng wrote: > Currently the is_iomem is a random value in the stack which may > be default to true even on those platforms that not use iomem to > store firmware. > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Fixes: 40df0a91b2a5 ("remoteproc: add is_iomem to da_to_va") > Reviewed-by: Peng Fan <peng.fan@nxp.com> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> > --- > v2->v3: > * no changes > v1->v2: > * update rproc_copy_segment as well > --- > drivers/remoteproc/remoteproc_coredump.c | 2 +- > drivers/remoteproc/remoteproc_elf_loader.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/remoteproc/remoteproc_coredump.c b/drivers/remoteproc/remoteproc_coredump.c > index aee657cc08c6..c892f433a323 100644 > --- a/drivers/remoteproc/remoteproc_coredump.c > +++ b/drivers/remoteproc/remoteproc_coredump.c > @@ -152,8 +152,8 @@ static void rproc_copy_segment(struct rproc *rproc, void *dest, > struct rproc_dump_segment *segment, > size_t offset, size_t size) > { > + bool is_iomem = false; > void *ptr; > - bool is_iomem; > > if (segment->dump) { > segment->dump(rproc, segment, dest, offset, size); > diff --git a/drivers/remoteproc/remoteproc_elf_loader.c b/drivers/remoteproc/remoteproc_elf_loader.c > index e8078efb3dec..3cd1798f17a3 100644 > --- a/drivers/remoteproc/remoteproc_elf_loader.c > +++ b/drivers/remoteproc/remoteproc_elf_loader.c > @@ -178,8 +178,8 @@ int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw) > u64 filesz = elf_phdr_get_p_filesz(class, phdr); > u64 offset = elf_phdr_get_p_offset(class, phdr); > u32 type = elf_phdr_get_p_type(class, phdr); > + bool is_iomem = false; > void *ptr; > - bool is_iomem; > > if (type != PT_LOAD) > continue; > -- > 2.25.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2021-09-10 9:01 UTC | newest] Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-08-05 3:32 [PATCH v3 1/5] remoteproc: fix the wrong default value of is_iomem Dong Aisheng 2021-08-05 3:32 ` Dong Aisheng 2021-08-05 3:32 ` [PATCH v3 2/5] remoteproc: imx_rproc: fix TCM io memory type Dong Aisheng 2021-08-05 3:32 ` Dong Aisheng 2021-08-05 9:59 ` Peng Fan 2021-08-05 9:59 ` Peng Fan 2021-08-05 16:34 ` Mathieu Poirier 2021-08-05 16:34 ` Mathieu Poirier 2021-08-05 3:32 ` [PATCH v3 3/5] remoteproc: imx_rproc: fix ignoring mapping vdev regions Dong Aisheng 2021-08-05 3:32 ` Dong Aisheng 2021-08-05 9:59 ` Peng Fan 2021-08-05 9:59 ` Peng Fan 2021-08-05 3:32 ` [PATCH v3 4/5] remoteproc: imx_rproc: fix rsc-table name Dong Aisheng 2021-08-05 3:32 ` Dong Aisheng 2021-08-05 9:59 ` Peng Fan 2021-08-05 9:59 ` Peng Fan 2021-08-05 3:32 ` [PATCH v3 5/5] remoteproc: imx_rproc: change to ioremap_wc for dram Dong Aisheng 2021-08-05 3:32 ` Dong Aisheng 2021-08-05 9:57 ` Peng Fan (OSS) 2021-08-05 9:57 ` Peng Fan (OSS) 2021-08-05 16:36 ` Mathieu Poirier 2021-08-05 16:36 ` Mathieu Poirier 2021-09-10 8:57 ` Peng Fan 2021-09-10 8:57 ` Peng Fan 2021-08-05 9:58 ` [PATCH v3 1/5] remoteproc: fix the wrong default value of is_iomem Peng Fan (OSS) 2021-08-05 9:58 ` Peng Fan (OSS) 2021-08-05 16:37 ` Mathieu Poirier 2021-08-05 16:37 ` Mathieu Poirier
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.