[SLOF] [PATCH 2/2] Increase temporary buffer size of ibm, client-architecture-support call

Thomas Huth thuth at redhat.com
Mon Jan 4 20:23:41 AEDT 2016


On 23.12.2015 06:26, Nikunj A Dadhania wrote:
> Thomas Huth <thuth at redhat.com> writes:
> 
>> The buffer size that we currently use for the client-architecture-
>> support call currently only works if there is not more than 1 TiB
>> of hot-pluggable RAM for the guest. This will likely not be enough
>> in the near future, so increase the buffer size from 128 kiB to 2 MiB
>> instead. That should be enough to accomodate for 16 TiB of hot-pluggable
>> memory.
>> While we're at it, also rename the "size" variable to something more
>> specific (since it is put into the namespace of the root node), and
>> add a proper error message in case the alloc-mem fails.
>>
>> Signed-off-by: Thomas Huth <thuth at redhat.com>
>> ---
>>  board-qemu/slof/archsupport.fs | 13 +++++++------
>>  1 file changed, 7 insertions(+), 6 deletions(-)
>>
>> diff --git a/board-qemu/slof/archsupport.fs b/board-qemu/slof/archsupport.fs
>> index f564ab4..a8ace3c 100644
>> --- a/board-qemu/slof/archsupport.fs
>> +++ b/board-qemu/slof/archsupport.fs
>> @@ -10,15 +10,16 @@
>>  \ *     IBM Corporation - initial implementation
>>  \ ****************************************************************************/
>>
>> -\ 128KB FDT buffer size is enough to accommodate 255 CPU cores and 1TB of
>> -\ maxmem specification.
>> -20000 VALUE size
>> +\ 2 MiB FDT buffer size is enough to accommodate 255 CPU cores
>> +\ and 16 TiB of maxmem specification.
>> +200000 CONSTANT cas-buffer-size
>>  : ibm,client-architecture-support         ( vec -- err? )
>>      \ Store require parameters in nvram
>>      \ to come back to right boot device
>>      \ Allocate memory for H_CALL
>> -    size alloc-mem                        ( vec memaddr )
>> -    swap over size                        ( memaddr vec memaddr size )
>> +    cas-buffer-size alloc-mem             ( vec memaddr )
>> +    dup 0= IF ." out of memory during ibm,client-architecture-support" cr THEN
> 
> And return error back to the client in place of going forward.

Right ... anyway, in the long run, we need to do something different
here, since alloc-mem does not scale. Any ideas how this could be fixed
in a better way? I really dislike the idea of using a hypercall with a
fixed buffer size... I haven't looked at this
ibm,client-architecture-support in details yet, but maybe qemu could
also provide the properties by default right from the start, and then
SLOF would simply remove them again during the
ibm,client-architecture-support call when they are not needed? Would
that work, too?
Or maybe it would be sufficient to pass a template for one node, and
SLOF would then iterate over all other device tree nodes?
Or if everything else fails, we should maybe use "claim" to allocate the
memory instead - assuming that the client program has not claimed all
memory yet, and we can get bigger buffers this way?

 Thomas




More information about the SLOF mailing list