From mboxrd@z Thu Jan 1 00:00:00 1970 From: York Sun Date: Wed, 23 Aug 2017 15:01:28 +0000 Subject: [U-Boot] [PATCH] blk: Remove various places that do flush cache after read References: <1503373600-20847-1-git-send-email-bmeng.cn@gmail.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 08/22/2017 03:53 PM, Bin Meng wrote: > Hi York, > > On Wed, Aug 23, 2017 at 12:49 AM, York Sun wrote: >> On 08/21/2017 08:42 PM, Bin Meng wrote: >>> All these places seem to inherit the codes from the MMC driver where >>> a FIXME was put in the comment. However the correct operation after >>> read should be cache invalidate, not flush. >>> >>> The underlying drivers should be responsible for the cache operation. >>> Remove these codes completely. >>> >>> Signed-off-by: Bin Meng >>> --- >>> >>> arch/arm/cpu/armv8/fsl-layerscape/ppa.c | 15 --------------- >>> board/toradex/common/tdx-cfg-block.c | 2 -- >>> cmd/mmc.c | 2 -- >>> drivers/block/blk-uclass.c | 3 --- >>> drivers/block/blk_legacy.c | 3 --- >>> drivers/net/fm/fm.c | 2 -- >>> drivers/net/phy/cortina.c | 2 -- >>> drivers/qe/qe.c | 2 -- >>> 8 files changed, 31 deletions(-) >>> >>> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c >>> index 24ddb5d..bbf8bba 100644 >>> --- a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c >>> +++ b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c >>> @@ -107,9 +107,6 @@ int ppa_init(void) >>> return -EIO; >>> } >>> >>> - /* flush cache after read */ >>> - flush_cache((ulong)fitp, cnt * 512); >>> - >> >> NACK here. >> >> >>> ret = fdt_check_header(fitp); >>> if (ret) { >>> free(fitp); >>> @@ -134,9 +131,6 @@ int ppa_init(void) >>> } >>> debug("Read PPA header to 0x%p\n", ppa_hdr_ddr); >>> >>> - /* flush cache after read */ >>> - flush_cache((ulong)ppa_hdr_ddr, cnt * 512); >>> - >>> ppa_esbc_hdr = (uintptr_t)ppa_hdr_ddr; >>> #endif >>> >>> @@ -164,9 +158,6 @@ int ppa_init(void) >>> return -EIO; >>> } >>> >>> - /* flush cache after read */ >>> - flush_cache((ulong)ppa_fit_addr, cnt * 512); >>> - >>> #elif defined(CONFIG_SYS_LS_PPA_FW_IN_NAND) >>> struct fdt_header fit; >>> >>> @@ -208,9 +199,6 @@ int ppa_init(void) >>> } >>> debug("Read PPA header to 0x%p\n", ppa_hdr_ddr); >>> >>> - /* flush cache after read */ >>> - flush_cache((ulong)ppa_hdr_ddr, fw_length); >>> - >>> ppa_esbc_hdr = (uintptr_t)ppa_hdr_ddr; >>> #endif >>> >>> @@ -232,9 +220,6 @@ int ppa_init(void) >>> CONFIG_SYS_LS_PPA_FW_ADDR); >>> return -EIO; >>> } >>> - >>> - /* flush cache after read */ >>> - flush_cache((ulong)ppa_fit_addr, fw_length); >>> #else >>> #error "No CONFIG_SYS_LS_PPA_FW_IN_xxx defined" >>> #endif >> >> Hold on for ppa.c. We need to flush the cache after reading PPA image >> and it header after loading. These images need to be flushed into main >> memory. I will need to confirm with our team if we can remove flushing here. >> > > For the first 3 parts in this ppa.c file, I see they are all reading > PPA image from MMC while MMC driver is using DMA so this is wrong (as > I mentioned in the commit message I suspect they are all copy/paste > from the MMC driver). > > The only questionable change is the last one which is reading > something from NAND and if NAND driver is not using DMA, that cache > flush is needed as you pointed out. > Bin, Our internal team agrees with the removing flushing for MMC. Give me some time to test NAND. York