diff options
author | Ahmad Fatoum <a.fatoum@pengutronix.de> | 2021-03-22 14:38:59 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2021-03-23 12:16:25 +0100 |
commit | 24b658c83eb86e269e682b8019691ba3c166e09d (patch) | |
tree | d15783bca079bed15fdd33d2ccc6058f28ff9077 | |
parent | a370dc93f67bf4f35a5c8269fff37510108ad486 (diff) | |
download | barebox-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.c | 5 | ||||
-rw-r--r-- | common/partitions/dos.c | 7 | ||||
-rw-r--r-- | common/partitions/efi.c | 1 |
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> |