summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2021-03-22 14:38:59 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2021-03-23 12:16:25 +0100
commit24b658c83eb86e269e682b8019691ba3c166e09d (patch)
treed15783bca079bed15fdd33d2ccc6058f28ff9077
parenta370dc93f67bf4f35a5c8269fff37510108ad486 (diff)
downloadbarebox-24b658c83eb86e269e682b8019691ba3c166e09d.tar.gz
barebox-24b658c83eb86e269e682b8019691ba3c166e09d.tar.xz
partitions: don't allocate dma capable memory
While block drivers may do DMA, they always use block caching chunks as bounce buffer. No dma is every done directly to the block_read data argument, so it doesn't need to be allocated with dma_alloc. The buffer also need not be zeroed, as block_read will either overwrite it completely or fail. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--common/partitions.c5
-rw-r--r--common/partitions/dos.c7
-rw-r--r--common/partitions/efi.c1
3 files changed, 5 insertions, 8 deletions
diff --git a/common/partitions.c b/common/partitions.c
index 1f0c544c60..deb931f329 100644
--- a/common/partitions.c
+++ b/common/partitions.c
@@ -17,7 +17,6 @@
#include <asm/unaligned.h>
#include <disks.h>
#include <filetype.h>
-#include <dma.h>
#include <linux/err.h>
#include "partitions/parser.h"
@@ -120,7 +119,7 @@ int parse_partition_table(struct block_device *blk)
uint8_t *buf;
pdesc = xzalloc(sizeof(*pdesc));
- buf = dma_alloc(SECTOR_SIZE * 2);
+ buf = malloc(2 * SECTOR_SIZE);
rc = block_read(blk, buf, 0, 2);
if (rc != 0) {
@@ -149,7 +148,7 @@ int parse_partition_table(struct block_device *blk)
}
on_error:
- dma_free(buf);
+ free(buf);
free(pdesc);
return rc;
}
diff --git a/common/partitions/dos.c b/common/partitions/dos.c
index 488c2936f7..0012c48756 100644
--- a/common/partitions/dos.c
+++ b/common/partitions/dos.c
@@ -16,7 +16,6 @@
#include <disks.h>
#include <init.h>
#include <asm/unaligned.h>
-#include <dma.h>
#include <linux/err.h>
#include "parser.h"
@@ -64,7 +63,7 @@ static uint64_t disk_guess_size(struct device_d *dev,
static void *read_mbr(struct block_device *blk)
{
- void *buf = dma_alloc(SECTOR_SIZE);
+ void *buf = malloc(SECTOR_SIZE);
int ret;
ret = block_read(blk, buf, 0, 1);
@@ -135,7 +134,7 @@ static int dos_get_disk_signature(struct param_d *p, void *_priv)
static void dos_extended_partition(struct block_device *blk, struct partition_desc *pd,
struct partition *partition, uint32_t signature)
{
- uint8_t *buf = dma_alloc(SECTOR_SIZE);
+ uint8_t *buf = malloc(SECTOR_SIZE);
uint32_t ebr_sector = partition->first_sec;
struct partition_entry *table = (struct partition_entry *)&buf[0x1be];
unsigned partno = 5;
@@ -185,7 +184,7 @@ static void dos_extended_partition(struct block_device *blk, struct partition_de
}
out:
- dma_free(buf);
+ free(buf);
return;
}
diff --git a/common/partitions/efi.c b/common/partitions/efi.c
index f20fd0d9b9..437c3d64f8 100644
--- a/common/partitions/efi.c
+++ b/common/partitions/efi.c
@@ -16,7 +16,6 @@
#include <disks.h>
#include <init.h>
#include <asm/unaligned.h>
-#include <dma.h>
#include <crc.h>
#include <linux/ctype.h>