> On 14 Nov 2018, at 8:28, Gerd Hoffmann <kra...@redhat.com> wrote:
> 
>  Hi,
> 
>>> There is only a tiny amount of ram available in the permanent "low"
>>> area of ram (typically less that 64K).  If the code has exhausted the
>>> permanent "high" ram (typically 256K) then it is likely to rapidly
>>> exhaust the low ram and cause a worse failure when code that requires
>>> a tiny amount of "low" space fails.
>> 
>> I disagree with “likely”.
> 
> So it currently fails with 16 controllers.  This patch brings it how
> far?  20 controllers?  It's not like this patch scales things up much.

That’s true.

> 
>>> Typical work arounds are to extend the amount of high ram available
>>> (see BUILD_MAX_HIGHTABLE) or to use malloc_tmphigh() and manually
>>> reserve the space in the e820 map.
>> 
>> I think this patch is good regardless if modifying BUILD_MAX_HIGHTABLE can 
>> be served as a workaround.
>> (Also if it is a typical workaround, why isn’t it configurable as a Makefile 
>> parameter?)
> 
> Making this configurable (via kconfig) makes sense indeed.

Ok. Will create such a patch.

> 
>> I find it odd to allocate from malloc_tmphigh() and manually reserve
>> the space in the e820 map.  As it basically undermines the definition
>> of the Temporary High-Zone which should not be reserved from OS and
>> therefore must not be accessed after SeaBIOS initialisation phase.
> 
> pmm (see src/pmm.c) does this for large allocations.
> 
>> Also, it is kinda hard to put the finger on which code you would
>> change to use malloc_tmphigh() like this all the time. Will you do
>> this change for example in pvscsi.c code?
> 
> The logic in pmm could be moved to malloc.c.  Probably needs some
> refinements then, the current code is meant to handle rare and very
> large (megabytes) allocations.  In case we run out of space on small
> allocations it probably makes sense to grab a block from the tmphigh
> zone, reserve it in the e820 map and add it to the high zone pool
> instead.  So effectively the high zone can grow dynamically.


If you agree to do the logic you suggested inside malloc_high() internally
without caller being bothered with these details, then I agree this is a 
solution
that scales better and I will create such a patch.

Thanks!
-Liran

> 
> cheers,
>  Gerd
> 


_______________________________________________
SeaBIOS mailing list
SeaBIOS@seabios.org
https://mail.coreboot.org/mailman/listinfo/seabios

Reply via email to