env: use cache line aligned memory for flash read
authorRavi Babu <ravibabu@ti.com>
Mon, 17 Aug 2015 07:59:49 +0000 (13:29 +0530)
committerJagan Teki <jteki@openedev.com>
Mon, 17 Aug 2015 17:59:14 +0000 (23:29 +0530)
Use memalign() with ARCH_DMA_MINALIGN to allocate read buffers.
This is required because, flash drivers may use DMA for read operations
and may have to invalidate the buffer before read.

Signed-off-by: Ravi Babu <ravibabu@ti.com>
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
Tested-by: Jagan Teki <jteki@openedev.com>
common/env_sf.c

index e928f5752cc7c5dddaf13b329a8f1eb67b8b669e..940983124fbbfd529e7dbd928da8b7f6d94dfab9 100644 (file)
@@ -79,7 +79,7 @@ int saveenv(void)
        if (CONFIG_ENV_SECT_SIZE > CONFIG_ENV_SIZE) {
                saved_size = CONFIG_ENV_SECT_SIZE - CONFIG_ENV_SIZE;
                saved_offset = env_new_offset + CONFIG_ENV_SIZE;
-               saved_buffer = malloc(saved_size);
+               saved_buffer = memalign(ARCH_DMA_MINALIGN, saved_size);
                if (!saved_buffer) {
                        ret = 1;
                        goto done;
@@ -142,9 +142,10 @@ void env_relocate_spec(void)
        env_t *tmp_env2 = NULL;
        env_t *ep = NULL;
 
-       tmp_env1 = (env_t *)malloc(CONFIG_ENV_SIZE);
-       tmp_env2 = (env_t *)malloc(CONFIG_ENV_SIZE);
-
+       tmp_env1 = (env_t *)memalign(ARCH_DMA_MINALIGN,
+                       CONFIG_ENV_SIZE);
+       tmp_env2 = (env_t *)memalign(ARCH_DMA_MINALIGN,
+                       CONFIG_ENV_SIZE);
        if (!tmp_env1 || !tmp_env2) {
                set_default_env("!malloc() failed");
                goto out;
@@ -295,7 +296,7 @@ void env_relocate_spec(void)
        int ret;
        char *buf = NULL;
 
-       buf = (char *)malloc(CONFIG_ENV_SIZE);
+       buf = (char *)memalign(ARCH_DMA_MINALIGN, CONFIG_ENV_SIZE);
        env_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
                        CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
        if (!env_flash) {