> >          u32 s = en->start, e = end;
> >          if (!highram_start) {
> > +            if (e > BUILD_MAX_HIGHTABLE * 16)
> > +                highram_size = BUILD_MAX_HIGHTABLE;
> >              u32 newe = ALIGN_DOWN(e - highram_size, MALLOC_MIN_ALIGN);
> >              if (newe <= e && newe >= s) {
> >                  highram_start = newe;
> 
> Thanks.  At a high-level, it looks fine.  However, I think the above
> might introduce a corner case where a fragmented e820 might fail to
> find any ZoneHigh.

Looking at the size instead of the end address should fix that, i.e.

        if (e - s > BUILD_MAX_HIGHTABLE * 16)

(no difference for qemu because there is a single e820 ram region
with start=0 below 4G)

take care,
  Gerd

_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to