All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] part_mac: dcache: allocate cacheline-aligned buffers
Date: Fri, 13 Jul 2012 21:31:03 +0200 (CEST)	[thread overview]
Message-ID: <1167777613.1339389.1342207863387.JavaMail.root@advansee.com> (raw)

This patch forces the correct alignment for DMA operations of buffers used by
part_mac.c.

Signed-off-by: Beno?t Th?baudeau <benoit.thebaudeau@advansee.com>
Cc: Wolfgang Denk <wd@denx.de>
---
 {u-boot.orig => u-boot}/disk/part_mac.c |   68 +++++++++++++++----------------
 1 file changed, 34 insertions(+), 34 deletions(-)

diff --git u-boot.orig/disk/part_mac.c u-boot/disk/part_mac.c
index c1afc8c..cb443ac 100644
--- u-boot.orig/disk/part_mac.c
+++ u-boot/disk/part_mac.c
@@ -60,23 +60,23 @@ static int part_mac_read_pdb (block_dev_desc_t *dev_desc, int part, mac_partitio
  */
 int test_part_mac (block_dev_desc_t *dev_desc)
 {
-	mac_driver_desc_t	ddesc;
-	mac_partition_t		mpart;
+	ALLOC_CACHE_ALIGN_BUFFER(mac_driver_desc_t, ddesc, 1);
+	ALLOC_CACHE_ALIGN_BUFFER(mac_partition_t, mpart, 1);
 	ulong i, n;
 
-	if (part_mac_read_ddb (dev_desc, &ddesc)) {
+	if (part_mac_read_ddb (dev_desc, ddesc)) {
 		/* error reading Driver Desriptor Block, or no valid Signature */
 		return (-1);
 	}
 
 	n = 1;	/* assuming at least one partition */
 	for (i=1; i<=n; ++i) {
-		if ((dev_desc->block_read(dev_desc->dev, i, 1, (ulong *)&mpart) != 1) ||
-		    (mpart.signature != MAC_PARTITION_MAGIC) ) {
+		if ((dev_desc->block_read(dev_desc->dev, i, 1, (ulong *)mpart) != 1) ||
+		    (mpart->signature != MAC_PARTITION_MAGIC) ) {
 			return (-1);
 		}
 		/* update partition count */
-		n = mpart.map_count;
+		n = mpart->map_count;
 	}
 	return (0);
 }
@@ -85,20 +85,20 @@ int test_part_mac (block_dev_desc_t *dev_desc)
 void print_part_mac (block_dev_desc_t *dev_desc)
 {
 	ulong i, n;
-	mac_driver_desc_t	ddesc;
-	mac_partition_t		mpart;
+	ALLOC_CACHE_ALIGN_BUFFER(mac_driver_desc_t, ddesc, 1);
+	ALLOC_CACHE_ALIGN_BUFFER(mac_partition_t, mpart, 1);
 	ldiv_t mb, gb;
 
-	if (part_mac_read_ddb (dev_desc, &ddesc)) {
+	if (part_mac_read_ddb (dev_desc, ddesc)) {
 		/* error reading Driver Desriptor Block, or no valid Signature */
 		return;
 	}
 
-	n  = ddesc.blk_count;
+	n  = ddesc->blk_count;
 
-	mb = ldiv(n, ((1024 * 1024) / ddesc.blk_size)); /* MB */
+	mb = ldiv(n, ((1024 * 1024) / ddesc->blk_size)); /* MB */
 	/* round to 1 digit */
-	mb.rem *= 10 * ddesc.blk_size;
+	mb.rem *= 10 * ddesc->blk_size;
 	mb.rem += 512 * 1024;
 	mb.rem /= 1024 * 1024;
 
@@ -112,10 +112,10 @@ void print_part_mac (block_dev_desc_t *dev_desc)
 		"DeviceType=0x%x, DeviceId=0x%x\n\n"
 		"   #:                 type name"
 		"                   length   base       (size)\n",
-		ddesc.blk_size,
-		ddesc.blk_count,
+		ddesc->blk_size,
+		ddesc->blk_count,
 		mb.quot, mb.rem, gb.quot, gb.rem,
-		ddesc.dev_type, ddesc.dev_id
+		ddesc->dev_type, ddesc->dev_id
 		);
 
 	n = 1;	/* assuming at least one partition */
@@ -124,25 +124,25 @@ void print_part_mac (block_dev_desc_t *dev_desc)
 		char c;
 
 		printf ("%4ld: ", i);
-		if (dev_desc->block_read (dev_desc->dev, i, 1, (ulong *)&mpart) != 1) {
+		if (dev_desc->block_read (dev_desc->dev, i, 1, (ulong *)mpart) != 1) {
 			printf ("** Can't read Partition Map on %d:%ld **\n",
 				dev_desc->dev, i);
 			return;
 		}
 
-		if (mpart.signature != MAC_PARTITION_MAGIC) {
+		if (mpart->signature != MAC_PARTITION_MAGIC) {
 			printf ("** Bad Signature on %d:%ld - "
 				"expected 0x%04x, got 0x%04x\n",
-				dev_desc->dev, i, MAC_PARTITION_MAGIC, mpart.signature);
+				dev_desc->dev, i, MAC_PARTITION_MAGIC, mpart->signature);
 			return;
 		}
 
 		/* update partition count */
-		n = mpart.map_count;
+		n = mpart->map_count;
 
 		c      = 'k';
-		bytes  = mpart.block_count;
-		bytes /= (1024 / ddesc.blk_size);  /* kB; assumes blk_size == 512 */
+		bytes  = mpart->block_count;
+		bytes /= (1024 / ddesc->blk_size);  /* kB; assumes blk_size == 512 */
 		if (bytes >= 1024) {
 			bytes >>= 10;
 			c = 'M';
@@ -153,10 +153,10 @@ void print_part_mac (block_dev_desc_t *dev_desc)
 		}
 
 		printf ("%20.32s %-18.32s %10u @ %-10u (%3ld%c)\n",
-			mpart.type,
-			mpart.name,
-			mpart.block_count,
-			mpart.start_block,
+			mpart->type,
+			mpart->name,
+			mpart->block_count,
+			mpart->start_block,
 			bytes, c
 			);
 	}
@@ -231,23 +231,23 @@ static int part_mac_read_pdb (block_dev_desc_t *dev_desc, int part, mac_partitio
 
 int get_partition_info_mac (block_dev_desc_t *dev_desc, int part, disk_partition_t *info)
 {
-	mac_driver_desc_t	ddesc;
-	mac_partition_t		mpart;
+	ALLOC_CACHE_ALIGN_BUFFER(mac_driver_desc_t, ddesc, 1);
+	ALLOC_CACHE_ALIGN_BUFFER(mac_partition_t, mpart, 1);
 
-	if (part_mac_read_ddb (dev_desc, &ddesc)) {
+	if (part_mac_read_ddb (dev_desc, ddesc)) {
 		return (-1);
 	}
 
-	info->blksz = ddesc.blk_size;
+	info->blksz = ddesc->blk_size;
 
-	if (part_mac_read_pdb (dev_desc, part, &mpart)) {
+	if (part_mac_read_pdb (dev_desc, part, mpart)) {
 		return (-1);
 	}
 
-	info->start = mpart.start_block;
-	info->size  = mpart.block_count;
-	memcpy (info->type, mpart.type, sizeof(info->type));
-	memcpy (info->name, mpart.name, sizeof(info->name));
+	info->start = mpart->start_block;
+	info->size  = mpart->block_count;
+	memcpy (info->type, mpart->type, sizeof(info->type));
+	memcpy (info->name, mpart->name, sizeof(info->name));
 
 	return (0);
 }

             reply	other threads:[~2012-07-13 19:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-13 19:31 Benoît Thébaudeau [this message]
2012-08-03 23:05 ` [U-Boot] [PATCH] part_mac: dcache: allocate cacheline-aligned buffers Benoît Thébaudeau
2012-08-10 14:39   ` Benoît Thébaudeau
2012-09-02 15:08 ` Wolfgang Denk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1167777613.1339389.1342207863387.JavaMail.root@advansee.com \
    --to=benoit.thebaudeau@advansee.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.