[OpenBIOS] [commit] r1268 - trunk/openbios-devel/libopenbios
repository service
svn at openbios.org
Sun Feb 16 17:26:44 CET 2014
Author: mcayland
Date: Sun Feb 16 17:26:43 2014
New Revision: 1268
URL: http://tracker.coreboot.org/trac/openbios/changeset/1268
Log:
OFMEM: ensure minimum alignment of PAGE_SIZE
NextStep appears to request an alignment of 4 for some of its large memory
ranges, and since this is an exact power of 2 then the code to ensure a
minimum alignment of PAGE_SIZE is accidentally bypassed. Move this to a
separate check so we can guarantee the minimum alignment requirement is always
observed.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
Modified:
trunk/openbios-devel/libopenbios/ofmem_common.c
Modified: trunk/openbios-devel/libopenbios/ofmem_common.c
==============================================================================
--- trunk/openbios-devel/libopenbios/ofmem_common.c Sun Feb 16 17:26:40 2014 (r1267)
+++ trunk/openbios-devel/libopenbios/ofmem_common.c Sun Feb 16 17:26:43 2014 (r1268)
@@ -428,13 +428,20 @@
{
phys_addr_t base = min;
range_t *r2;
- ucell old_align;
+ ucell old_align = align;
int i;
+ if( (align < PAGE_SIZE) ) {
+
+ /* Minimum alignment is page size */
+ align = PAGE_SIZE;
+
+ OFMEM_TRACE("warning: bad alignment " FMT_ucellx " rounded up to " FMT_ucellx "\n", old_align, align);
+ }
+
if( (align & (align-1)) ) {
/* As per IEEE1275 specification, round up to the nearest power of 2 */
- old_align = align;
if (old_align <= PAGE_SIZE) {
align = PAGE_SIZE;
} else {
@@ -447,8 +454,6 @@
OFMEM_TRACE("warning: bad alignment " FMT_ucellx " rounded up to " FMT_ucellx "\n", old_align, align);
}
- if( !align )
- align = PAGE_SIZE;
base = reverse ? max - size : min;
r2 = reverse ? NULL : r;
More information about the OpenBIOS
mailing list