part_mac: dcache: allocate cacheline-aligned buffers
PATCH 1/1 part_mac: dcache: allocate cacheline-aligned buffers
This patch forces the correct alignment for DMA operations of buffers used by part_mac.c.
---
{u-boot.orig => u-boot}/disk/part_mac.c | 68 +++++++++++++++----------------
1 file changed, 34 insertions(+), 34 deletions(-)disk/part_mac.c +34 -34
@@ -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_partitioint 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 ); }
PATCH 1/1 part_mac: dcache: allocate cacheline-aligned buffers
Quoted 176 lines · Beno?t Th?baudeau
This patch forces the correct alignment for DMA operations of buffers used by
part_mac.c.Signed-off-by Beno?t Th?baudeau <[email protected]>Cc Wolfgang Denk <[email protected]>--- {u-boot.orig => u-boot}/disk/part_mac.c | 68 +++++++++++++++---------------- 1 file changed, 34 insertions(+), 34 deletions(-)disk/part_mac.c +3
-4@@ -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) ||
disk/part_mac.c +1
-1- (mpart.signature != MAC_PARTITION_MAGIC) ) { + if ((dev_desc->block_read(dev_desc->dev, i, 1, (ulong *)mpart) !=1) ||
disk/part_mac.c +11
-10+ (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 );disk/part_mac.c +4
-6n =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 */
disk/part_mac.c +2
-0+ bytes = mpart->block_count; + bytes /= (1024 / ddesc->blk_size);/* kB; assumes blk_size == 512 */
disk/part_mac.c +4
-4if (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 );disk/part_mac.c +9
-9}@@ -231,23 +231,23 @@ static int part_mac_read_pdb (block_dev_desc_t *dev_desc, int part, mac_partitioint 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));
Quoted 3 lines
return (0);
}
Ping?
Beno?t
PATCH 1/1 part_mac: dcache: allocate cacheline-aligned buffers
Quoted 187 lines · Beno?t Th?baudeau
Quoted 186 lines · Beno?t Th?baudeau
This patch forces the correct alignment for DMA operations of buffers
used bypart_mac.c.Signed-off-by Beno?t Th?baudeau <[email protected]>Cc Wolfgang Denk <[email protected]>--- {u-boot.orig => u-boot}/disk/part_mac.c | 68 +++++++++++++++---------------- 1 file changed, 34 insertions(+), 34 deletions(-)disk/part_mac.c +3
-4@@ -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) ||disk/part_mac.c +1
-1- (mpart.signature != MAC_PARTITION_MAGIC) ) { + if ((dev_desc->block_read(dev_desc->dev, i, 1, (ulong *)mpart)!=
1) ||disk/part_mac.c +11
-10+ (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 );disk/part_mac.c +0
-1n =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) {disk/part_mac.c +1
-0+ if (dev_desc->block_read (dev_desc->dev, i, 1, (ulong *)mpart)!=
1) {disk/part_mac.c +3
-5printf ("** 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
*/disk/part_mac.c +2
-0+ bytes = mpart->block_count; + bytes /= (1024 / ddesc->blk_size);/* kB; assumes blk_size == 512
*/disk/part_mac.c +4
-4if (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 );disk/part_mac.c +0
-0}@@ -231,23 +231,23 @@ static int part_mac_read_pdb(
block_dev_desc_t*dev_desc, int part,mac_partitioint
get_partition_info_mac(block_dev_desc_t*dev_desc, int part,disk_partition_t*info)
{disk/part_mac.c +9
-9-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));
Quoted 5 lines
Quoted 3 lines
return (0);
}Ping?
Can someone answer, please?
Best regards,
Beno?t
Wolfgang Denk
AppliedPATCH 1/1 part_mac: dcache: allocate cacheline-aligned buffers
In reply to Benoît ThébaudeauDear Beno?t Th?baudeau,
Quoted 9 lines · In message <[email protected]> you…
This patch forces the correct alignment for DMA operations of buffers used = by
part_mac.c.Signed-off-by Beno?t Th?baudeau <[email protected]>Cc Wolfgang Denk <[email protected]>---
{u-boot.orig =>u-boot}/disk/part_mac.c| 68 +++++++++++++++----------> ------1 file changed, 34 insertions(+), 34 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
Signature · 5 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de The nice thing about standards is that there are so many to choose from. - Andrew S. Tanenbaum